diff --git a/packages/vite/package.json b/packages/vite/package.json index 710e06dbcbbf6d..aeef277ff670a3 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -97,7 +97,7 @@ "http-proxy": "^1.18.1", "json5": "^2.2.1", "launch-editor-middleware": "^2.6.0", - "magic-string": "^0.26.5", + "magic-string": "^0.26.6", "micromatch": "^4.0.5", "mlly": "^0.5.16", "mrmime": "^1.0.1", diff --git a/packages/vite/src/node/plugins/asset.ts b/packages/vite/src/node/plugins/asset.ts index 3839b54ef3365b..a7a8f2554bf0a1 100644 --- a/packages/vite/src/node/plugins/asset.ts +++ b/packages/vite/src/node/plugins/asset.ts @@ -95,9 +95,7 @@ export function renderAssetUrlInJS( typeof replacement === 'string' ? JSON.stringify(replacement).slice(1, -1) : `"+${replacement.runtime}+"` - s.overwrite(match.index, match.index + full.length, replacementString, { - contentOnly: true - }) + s.update(match.index, match.index + full.length, replacementString) } // Replace __VITE_PUBLIC_ASSET__5aa0ddc0__ with absolute paths @@ -119,9 +117,7 @@ export function renderAssetUrlInJS( typeof replacement === 'string' ? JSON.stringify(replacement).slice(1, -1) : `"+${replacement.runtime}+"` - s.overwrite(match.index, match.index + full.length, replacementString, { - contentOnly: true - }) + s.update(match.index, match.index + full.length, replacementString) } return s diff --git a/packages/vite/src/node/plugins/assetImportMetaUrl.ts b/packages/vite/src/node/plugins/assetImportMetaUrl.ts index de946614620866..c21c1a0c29e4f8 100644 --- a/packages/vite/src/node/plugins/assetImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/assetImportMetaUrl.ts @@ -61,11 +61,10 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin { // target so we use the global location here. It can be // window.location or self.location in case it is used in a Web Worker. // @see https://developer.mozilla.org/en-US/docs/Web/API/Window/self - s.overwrite( + s.update( index, index + exp.length, - `new URL((import.meta.glob(${pattern}, { eager: true, import: 'default', as: 'url' }))[${rawUrl}], self.location)`, - { contentOnly: true } + `new URL((import.meta.glob(${pattern}, { eager: true, import: 'default', as: 'url' }))[${rawUrl}], self.location)` ) continue } @@ -111,11 +110,10 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin { ) builtUrl = url } - s.overwrite( + s.update( index, index + exp.length, - `new URL(${JSON.stringify(builtUrl)}, self.location)`, - { contentOnly: true } + `new URL(${JSON.stringify(builtUrl)}, self.location)` ) } if (s) { diff --git a/packages/vite/src/node/plugins/define.ts b/packages/vite/src/node/plugins/define.ts index 0448327d660ed6..e683ba4d0175db 100644 --- a/packages/vite/src/node/plugins/define.ts +++ b/packages/vite/src/node/plugins/define.ts @@ -139,7 +139,7 @@ export function definePlugin(config: ResolvedConfig): Plugin { const start = match.index const end = start + match[0].length const replacement = '' + replacements[match[1]] - s.overwrite(start, end, replacement, { contentOnly: true }) + s.update(start, end, replacement) } if (!hasReplaced) { diff --git a/packages/vite/src/node/plugins/html.ts b/packages/vite/src/node/plugins/html.ts index 5285fab26cd0b4..ad2f3abd39af32 100644 --- a/packages/vite/src/node/plugins/html.ts +++ b/packages/vite/src/node/plugins/html.ts @@ -216,11 +216,10 @@ export function overwriteAttrValue( } const wrapOffset = valueStart[1] === '"' || valueStart[1] === "'" ? 1 : 0 const valueOffset = valueStart.index! + valueStart[0].length - 1 - s.overwrite( + s.update( sourceCodeLocation.startOffset + valueOffset + wrapOffset, sourceCodeLocation.endOffset - wrapOffset, - newValue, - { contentOnly: true } + newValue ) return s } @@ -487,11 +486,10 @@ export function buildHtmlPlugin(config: ResolvedConfig): Plugin { js += `\nimport "${id}?html-proxy&inline-css&index=${inlineModuleIndex}.css"` const hash = getHash(cleanUrl(id)) // will transform in `applyHtmlTransforms` - s.overwrite( + s.update( styleNode.sourceCodeLocation!.startOffset, styleNode.sourceCodeLocation!.endOffset, - `__VITE_INLINE_CSS__${hash}_${inlineModuleIndex}__`, - { contentOnly: true } + `__VITE_INLINE_CSS__${hash}_${inlineModuleIndex}__` ) } @@ -546,16 +544,9 @@ export function buildHtmlPlugin(config: ResolvedConfig): Plugin { // emit asset for (const { start, end, url } of scriptUrls) { if (!isExcludedUrl(url)) { - s.overwrite( - start, - end, - await urlToBuiltUrl(url, id, config, this), - { contentOnly: true } - ) + s.update(start, end, await urlToBuiltUrl(url, id, config, this)) } else if (checkPublicFile(url, config)) { - s.overwrite(start, end, toOutputPublicFilePath(url), { - contentOnly: true - }) + s.update(start, end, toOutputPublicFilePath(url)) } } @@ -780,12 +771,7 @@ export function buildHtmlPlugin(config: ResolvedConfig): Plugin { s ||= new MagicString(result) const { 0: full, 1: scopedName } = match const cssTransformedCode = htmlProxyResult.get(scopedName)! - s.overwrite( - match.index, - match.index + full.length, - cssTransformedCode, - { contentOnly: true } - ) + s.update(match.index, match.index + full.length, cssTransformedCode) } if (s) { result = s.toString() diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index 849b71c4cdcd64..d1eaa6437a6962 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -350,9 +350,7 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { if (!rewriteDone) { let rewrittenUrl = JSON.stringify(file) if (!isDynamicImport) rewrittenUrl = rewrittenUrl.slice(1, -1) - str().overwrite(start, end, rewrittenUrl, { - contentOnly: true - }) + str().update(start, end, rewrittenUrl) } } } @@ -374,9 +372,7 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { !(bareImportRE.test(specifier) && !specifier.includes('/')) ) { const url = specifier.replace(/\?|$/, (m) => `?used${m ? '&' : ''}`) - str().overwrite(start, end, isDynamicImport ? `'${url}'` : url, { - contentOnly: true - }) + str().update(start, end, isDynamicImport ? `'${url}'` : url) } } @@ -405,12 +401,7 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { const s = new MagicString(code) let match: RegExpExecArray | null while ((match = re.exec(code))) { - s.overwrite( - match.index, - match.index + isModernFlag.length, - isModern, - { contentOnly: true } - ) + s.update(match.index, match.index + isModernFlag.length, isModern) } return { code: s.toString(), @@ -505,9 +496,7 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { hasRemovedPureCssChunk = true } - s.overwrite(expStart, expEnd, 'Promise.resolve({})', { - contentOnly: true - }) + s.update(expStart, expEnd, 'Promise.resolve({})') } } } @@ -582,11 +571,10 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { ) } - s.overwrite( + s.update( markerStartPos, markerStartPos + preloadMarkerWithQuote.length, - `[${renderedDeps.join(',')}]`, - { contentOnly: true } + `[${renderedDeps.join(',')}]` ) rewroteMarkerStartPos.add(markerStartPos) } @@ -598,11 +586,10 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { let markerStartPos = code.indexOf(preloadMarkerWithQuote) while (markerStartPos >= 0) { if (!rewroteMarkerStartPos.has(markerStartPos)) { - s.overwrite( + s.update( markerStartPos, markerStartPos + preloadMarkerWithQuote.length, - 'void 0', - { contentOnly: true } + 'void 0' ) } diff --git a/packages/vite/src/node/plugins/worker.ts b/packages/vite/src/node/plugins/worker.ts index b645d178f6f645..02d0dd3d74ece4 100644 --- a/packages/vite/src/node/plugins/worker.ts +++ b/packages/vite/src/node/plugins/worker.ts @@ -356,14 +356,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin { typeof replacement === 'string' ? JSON.stringify(replacement).slice(1, -1) : `"+${replacement.runtime}+"` - s.overwrite( - match.index, - match.index + full.length, - replacementString, - { - contentOnly: true - } - ) + s.update(match.index, match.index + full.length, replacementString) } } return result() diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts index b0173b6b03ca6e..a2c4e22038b672 100644 --- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts @@ -141,11 +141,10 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { builtUrl = injectQuery(builtUrl, WORKER_FILE_ID) builtUrl = injectQuery(builtUrl, `type=${workerType}`) } - s.overwrite( + s.update( urlIndex, urlIndex + exp.length, - `new URL(${JSON.stringify(builtUrl)}, self.location)`, - { contentOnly: true } + `new URL(${JSON.stringify(builtUrl)}, self.location)` ) } diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index 8c036629bcf26e..736fc316ee3011 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -184,11 +184,10 @@ const devHtmlHook: IndexHtmlTransformHook = async ( if (module) { server?.moduleGraph.invalidateModule(module) } - s.overwrite( + s.update( node.sourceCodeLocation!.startOffset, node.sourceCodeLocation!.endOffset, - ``, - { contentOnly: true } + `` ) } diff --git a/packages/vite/src/node/ssr/ssrTransform.ts b/packages/vite/src/node/ssr/ssrTransform.ts index fe24dddac2e79a..12c3bb354b6c9e 100644 --- a/packages/vite/src/node/ssr/ssrTransform.ts +++ b/packages/vite/src/node/ssr/ssrTransform.ts @@ -196,11 +196,10 @@ async function ssrTransformScript( ) } else { // anonymous default exports - s.overwrite( + s.update( node.start, node.start + 14 /* 'export default'.length */, - `${ssrModuleExportsKey}.default =`, - { contentOnly: true } + `${ssrModuleExportsKey}.default =` ) } } @@ -247,16 +246,14 @@ async function ssrTransformScript( s.prependRight(topNode.start, `const ${id.name} = ${binding};\n`) } } else { - s.overwrite(id.start, id.end, binding, { contentOnly: true }) + s.update(id.start, id.end, binding) } }, onImportMeta(node) { - s.overwrite(node.start, node.end, ssrImportMetaKey, { contentOnly: true }) + s.update(node.start, node.end, ssrImportMetaKey) }, onDynamicImport(node) { - s.overwrite(node.start, node.start + 6, ssrDynamicImportKey, { - contentOnly: true - }) + s.update(node.start, node.start + 6, ssrDynamicImportKey) if (node.type === 'ImportExpression' && node.source.type === 'Literal') { dynamicDeps.add(node.source.value as string) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3004290db3fc8..93f7aa14a41e63 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -243,7 +243,7 @@ importers: http-proxy: ^1.18.1 json5: ^2.2.1 launch-editor-middleware: ^2.6.0 - magic-string: ^0.26.5 + magic-string: ^0.26.6 micromatch: ^4.0.5 mlly: ^0.5.16 mrmime: ^1.0.1 @@ -308,7 +308,7 @@ importers: http-proxy: 1.18.1_debug@4.3.4 json5: 2.2.1 launch-editor-middleware: 2.6.0 - magic-string: 0.26.5 + magic-string: 0.26.6 micromatch: 4.0.5 mlly: 0.5.16 mrmime: 1.0.1 @@ -6246,6 +6246,13 @@ packages: dependencies: sourcemap-codec: 1.4.8 + /magic-string/0.26.6: + resolution: {integrity: sha512-6d+3bFybzyQFJYSoRsl9ZC0wheze8M1LrQC7tNMRqXR4izUTDOLMd9BtSuExK9iAukFh+s5K0WAhc/dlQ+HKYA==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + /make-dir/2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -7661,7 +7668,7 @@ packages: rollup: ^2.55 typescript: ^4.1 dependencies: - magic-string: 0.26.5 + magic-string: 0.26.6 rollup: 2.79.1 typescript: 4.8.2 optionalDependencies: @@ -7695,7 +7702,7 @@ packages: commenting: 1.1.0 glob: 7.2.0 lodash: 4.17.21 - magic-string: 0.26.5 + magic-string: 0.26.6 mkdirp: 1.0.4 moment: 2.29.3 package-name-regex: 2.0.6 @@ -8601,7 +8608,7 @@ packages: globby: 13.1.2 hookable: 5.3.0 jiti: 1.14.0 - magic-string: 0.26.5 + magic-string: 0.26.6 mkdirp: 1.0.4 mkdist: 0.3.13_typescript@4.8.2 mlly: 0.5.16