From bf729fa50adbc422b858ba2dcb138357b6a5f7f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Thu, 29 Jan 2026 19:27:20 +0100 Subject: [PATCH] strip out git askpass sourcemap footer (#291673) fixes #282020 --- build/lib/extensions.ts | 23 +++++++++++++++++----- extensions/git/extension.webpack.config.js | 2 ++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts index 24462a3b26e..e06f1510a66 100644 --- a/build/lib/extensions.ts +++ b/build/lib/extensions.ts @@ -98,14 +98,22 @@ function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string, const result = es.through(); const packagedDependencies: string[] = []; + const stripOutSourceMaps: string[] = []; const packageJsonConfig = require(path.join(extensionPath, 'package.json')); if (packageJsonConfig.dependencies) { - const webpackRootConfig = require(path.join(extensionPath, webpackConfigFileName)).default; + const webpackConfig = require(path.join(extensionPath, webpackConfigFileName)); + const webpackRootConfig = webpackConfig.default; for (const key in webpackRootConfig.externals) { if (key in packageJsonConfig.dependencies) { packagedDependencies.push(key); } } + + if (webpackConfig.StripOutSourceMaps) { + for (const filePath of webpackConfig.StripOutSourceMaps) { + stripOutSourceMaps.push(filePath); + } + } } // TODO: add prune support based on packagedDependencies to vsce.PackageManager.Npm similar @@ -177,10 +185,15 @@ function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string, // * rewrite sourceMappingURL // * save to disk so that upload-task picks this up if (path.extname(data.basename) === '.js') { - const contents = (data.contents as Buffer).toString('utf8'); - data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) { - return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`; - }), 'utf8'); + if (stripOutSourceMaps.indexOf(data.relative) >= 0) { // remove source map + const contents = (data.contents as Buffer).toString('utf8'); + data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, ''), 'utf8'); + } else { + const contents = (data.contents as Buffer).toString('utf8'); + data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) { + return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`; + }), 'utf8'); + } } this.emit('data', data); diff --git a/extensions/git/extension.webpack.config.js b/extensions/git/extension.webpack.config.js index 15cf273015b..34f801e2eca 100644 --- a/extensions/git/extension.webpack.config.js +++ b/extensions/git/extension.webpack.config.js @@ -13,3 +13,5 @@ export default withDefaults({ ['git-editor-main']: './src/git-editor-main.ts' } }); + +export const StripOutSourceMaps = ['dist/askpass-main.js'];