diff --git a/build/gulpfile.editor.js b/build/gulpfile.editor.js index c8308a0d190b7..41dbfe647aefc 100644 --- a/build/gulpfile.editor.js +++ b/build/gulpfile.editor.js @@ -235,6 +235,9 @@ const appendJSToESMImportsTask = task.define('append-js-to-esm-imports', () => { } }); +/** + * @param {string} contents + */ function toExternalDTS(contents) { let lines = contents.split(/\r\n|\r|\n/); let killNextCloseCurlyBrace = false; @@ -278,6 +281,9 @@ function toExternalDTS(contents) { return lines.join('\n').replace(/\n\n\n+/g, '\n\n'); } +/** + * @param {{ (path: string): boolean }} testFunc + */ function filterStream(testFunc) { return es.through(function (data) { if (!testFunc(data.relative)) { @@ -479,6 +485,8 @@ function createTscCompileTask(watch) { }); let errors = []; let reporter = createReporter('monaco'); + + /** @type {NodeJS.ReadWriteStream | undefined} */ let report; // eslint-disable-next-line no-control-regex let magic = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index 89517f86fef8e..cdc02cba74b4c 100644 --- a/build/gulpfile.extensions.js +++ b/build/gulpfile.extensions.js @@ -239,6 +239,9 @@ const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions gulp.task(watchWebExtensionsTask); exports.watchWebExtensionsTask = watchWebExtensionsTask; +/** + * @param {boolean} isWatch + */ async function buildWebExtensions(isWatch) { const webpackConfigLocations = await nodeUtil.promisify(glob)( path.join(extensionsPath, '**', 'extension-browser.webpack.config.js'), diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index 838fc661eb568..a9691fcb0d879 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -9,6 +9,9 @@ const path = require('path'); const task = require('./lib/task'); const { hygiene } = require('./hygiene'); +/** + * @param {string} actualPath + */ function checkPackageJSON(actualPath) { const actual = require(path.join(__dirname, '..', actualPath)); const rootPackageJSON = require('../package.json'); diff --git a/build/gulpfile.scan.js b/build/gulpfile.scan.js index cf88b69e0f6b5..4c447641b2ade 100644 --- a/build/gulpfile.scan.js +++ b/build/gulpfile.scan.js @@ -29,7 +29,7 @@ const BUILD_TARGETS = [ ]; BUILD_TARGETS.forEach(buildTarget => { - const dashed = (str) => (str ? `-${str}` : ``); + const dashed = (/** @type {string | null} */ str) => (str ? `-${str}` : ``); const platform = buildTarget.platform; const arch = buildTarget.arch; diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js index 3423e86e8f3e5..47db2af305142 100644 --- a/build/gulpfile.vscode.linux.js +++ b/build/gulpfile.vscode.linux.js @@ -103,6 +103,9 @@ function prepareDebPackage(arch) { }; } +/** + * @param {string} arch + */ function buildDebPackage(arch) { const debArch = getDebPackageArch(arch); return shell.task([ @@ -112,14 +115,23 @@ function buildDebPackage(arch) { ], { cwd: '.build/linux/deb/' + debArch }); } +/** + * @param {string} rpmArch + */ function getRpmBuildPath(rpmArch) { return '.build/linux/rpm/' + rpmArch + '/rpmbuild'; } +/** + * @param {string} arch + */ function getRpmPackageArch(arch) { return { x64: 'x86_64', armhf: 'armv7hl', arm64: 'aarch64' }[arch]; } +/** + * @param {string} arch + */ function prepareRpmPackage(arch) { const binaryDir = '../VSCode-linux-' + arch; const rpmArch = getRpmPackageArch(arch); @@ -186,6 +198,9 @@ function prepareRpmPackage(arch) { }; } +/** + * @param {string} arch + */ function buildRpmPackage(arch) { const rpmArch = getRpmPackageArch(arch); const rpmBuildPath = getRpmBuildPath(rpmArch); @@ -199,10 +214,16 @@ function buildRpmPackage(arch) { ]); } +/** + * @param {string} arch + */ function getSnapBuildPath(arch) { return `.build/linux/snap/${arch}/${product.applicationName}-${arch}`; } +/** + * @param {string} arch + */ function prepareSnapPackage(arch) { const binaryDir = '../VSCode-linux-' + arch; const destination = getSnapBuildPath(arch); @@ -247,6 +268,9 @@ function prepareSnapPackage(arch) { }; } +/** + * @param {string} arch + */ function buildSnapPackage(arch) { const snapBuildPath = getSnapBuildPath(arch); // Default target for snapcraft runs: pull, build, stage and prime, and finally assembles the snap. diff --git a/build/gulpfile.vscode.web.js b/build/gulpfile.vscode.web.js index e93fbf30008c6..513306c89a93a 100644 --- a/build/gulpfile.vscode.web.js +++ b/build/gulpfile.vscode.web.js @@ -235,7 +235,7 @@ const compileWebExtensionsBuildTask = task.define('compile-web-extensions-build' )); gulp.task(compileWebExtensionsBuildTask); -const dashed = (str) => (str ? `-${str}` : ``); +const dashed = (/** @type {string} */ str) => (str ? `-${str}` : ``); ['', 'min'].forEach(minified => { const sourceFolderName = `out-vscode-web${dashed(minified)}`; diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js index 1a73ae9d71bda..81ba509581634 100644 --- a/build/gulpfile.vscode.win32.js +++ b/build/gulpfile.vscode.win32.js @@ -20,10 +20,10 @@ const rcedit = require('rcedit'); const mkdirp = require('mkdirp'); const repoPath = path.dirname(__dirname); -const buildPath = arch => path.join(path.dirname(repoPath), `VSCode-win32-${arch}`); -const zipDir = arch => path.join(repoPath, '.build', `win32-${arch}`, 'archive'); -const zipPath = arch => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`); -const setupDir = (arch, target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`); +const buildPath = (/** @type {string} */ arch) => path.join(path.dirname(repoPath), `VSCode-win32-${arch}`); +const zipDir = (/** @type {string} */ arch) => path.join(repoPath, '.build', `win32-${arch}`, 'archive'); +const zipPath = (/** @type {string} */ arch) => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`); +const setupDir = (/** @type {string} */ arch, /** @type {string} */ target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`); const issPath = path.join(__dirname, 'win32', 'code.iss'); const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup'))), 'bin', 'ISCC.exe'); const signWin32Path = path.join(repoPath, 'build', 'azure-pipelines', 'common', 'sign-win32'); @@ -63,6 +63,10 @@ function packageInnoSetup(iss, options, cb) { }); } +/** + * @param {string} arch + * @param {string} target + */ function buildWin32Setup(arch, target) { if (target !== 'system' && target !== 'user') { throw new Error('Invalid setup target'); @@ -112,6 +116,10 @@ function buildWin32Setup(arch, target) { }; } +/** + * @param {string} arch + * @param {string} target + */ function defineWin32SetupTasks(arch, target) { const cleanTask = util.rimraf(setupDir(arch, target)); gulp.task(task.define(`vscode-win32-${arch}-${target}-setup`, task.series(cleanTask, buildWin32Setup(arch, target)))); @@ -124,6 +132,9 @@ defineWin32SetupTasks('ia32', 'user'); defineWin32SetupTasks('x64', 'user'); defineWin32SetupTasks('arm64', 'user'); +/** + * @param {string} arch + */ function archiveWin32Setup(arch) { return cb => { const args = ['a', '-tzip', zipPath(arch), '-x!CodeSignSummary*.md', '.', '-r']; @@ -138,6 +149,9 @@ gulp.task(task.define('vscode-win32-ia32-archive', task.series(util.rimraf(zipDi gulp.task(task.define('vscode-win32-x64-archive', task.series(util.rimraf(zipDir('x64')), archiveWin32Setup('x64')))); gulp.task(task.define('vscode-win32-arm64-archive', task.series(util.rimraf(zipDir('arm64')), archiveWin32Setup('arm64')))); +/** + * @param {string} arch + */ function copyInnoUpdater(arch) { return () => { return gulp.src('build/win32/{inno_updater.exe,vcruntime140.dll}', { base: 'build/win32' }) @@ -145,6 +159,9 @@ function copyInnoUpdater(arch) { }; } +/** + * @param {string} executablePath + */ function updateIcon(executablePath) { return cb => { const icon = path.join(repoPath, 'resources', 'win32', 'code.ico');