From ae664ea8e07edce17d546a62df714b95300076c5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 18 Oct 2023 13:32:50 +0200 Subject: [PATCH] Use object destructuring, rather than the `merge` helper, in the gulpfile This helper function was originally added in PR 1953, eleven years ago, at which point object destructuring didn't exist. --- external/builder/builder.mjs | 17 +---- gulpfile.mjs | 129 +++++++++++++++++------------------ 2 files changed, 63 insertions(+), 83 deletions(-) diff --git a/external/builder/builder.mjs b/external/builder/builder.mjs index 376fbda8e..783ef9b30 100644 --- a/external/builder/builder.mjs +++ b/external/builder/builder.mjs @@ -229,19 +229,4 @@ function preprocess(inFilename, outFilename, defines) { } } -/** - * Merge two defines arrays. Values in the second param will override values in - * the first. - */ -function merge(defaults, defines) { - const ret = Object.create(null); - for (const key in defaults) { - ret[key] = defaults[key]; - } - for (const key in defines) { - ret[key] = defines[key]; - } - return ret; -} - -export { merge, preprocess }; +export { preprocess }; diff --git a/gulpfile.mjs b/gulpfile.mjs index 817906778..78916ff0f 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -14,7 +14,6 @@ */ /* eslint-env node */ -import * as builder from "./external/builder/builder.mjs"; import { exec, spawn, spawnSync } from "child_process"; import autoprefixer from "autoprefixer"; import babel from "@babel/core"; @@ -29,6 +28,7 @@ import postcss from "gulp-postcss"; import postcssDirPseudoClass from "postcss-dir-pseudo-class"; import postcssDiscardComments from "postcss-discard-comments"; import postcssNesting from "postcss-nesting"; +import { preprocess } from "./external/builder/builder.mjs"; import { preprocessPDFJSCode } from "./external/builder/preprocessor2.mjs"; import rename from "gulp-rename"; import replace from "gulp-replace"; @@ -184,14 +184,15 @@ function createWebpackConfig( const versionInfo = !disableVersionInfo ? getVersionJSON() : { version: 0, commit: 0 }; - const bundleDefines = builder.merge(defines, { + const bundleDefines = { + ...defines, BUNDLE_VERSION: versionInfo.version, BUNDLE_BUILD: versionInfo.commit, TESTING: defines.TESTING ?? process.env.TESTING === "true", DEFAULT_PREFERENCES: defaultPreferencesDir ? getDefaultPreferences(defaultPreferencesDir) : {}, - }); + }; const licenseHeaderLibre = fs .readFileSync("./src/license_header_libre.js") .toString(); @@ -480,9 +481,10 @@ function createTemporaryScriptingBundle(defines, extraOptions = undefined) { function createSandboxBundle(defines, extraOptions = undefined) { const scriptingPath = TMP_DIR + "pdf.scripting.mjs"; // Insert the source as a string to be `eval`-ed in the sandbox. - const sandboxDefines = builder.merge(defines, { + const sandboxDefines = { + ...defines, PDF_SCRIPTING_JS_SOURCE: fs.readFileSync(scriptingPath).toString(), - }); + }; fs.unlinkSync(scriptingPath); const sandboxFileConfig = createWebpackConfig( @@ -535,8 +537,6 @@ function createWebBundle(defines, options) { } function createGVWebBundle(defines, options) { - defines = builder.merge(defines, { GECKOVIEW: true }); - const viewerFileConfig = createWebpackConfig( defines, { @@ -775,10 +775,11 @@ function buildDefaultPreferences(defines, dir) { console.log(); console.log("### Building default preferences"); - const bundleDefines = builder.merge(defines, { + const bundleDefines = { + ...defines, LIB: true, TESTING: defines.TESTING ?? process.env.TESTING === "true", - }); + }; const defaultPreferencesConfig = createWebpackConfig( bundleDefines, @@ -904,7 +905,7 @@ gulp.task("cmaps", async function () { function preprocessCSS(source, defines) { const outName = getTempFile("~preprocess", ".css"); - builder.preprocess(source, outName, defines); + preprocess(source, outName, defines); const out = fs.readFileSync(outName).toString(); fs.unlinkSync(outName); @@ -927,7 +928,7 @@ function discardCommentsCSS() { function preprocessHTML(source, defines) { const outName = getTempFile("~preprocess", ".html"); - builder.preprocess(source, outName, defines); + preprocess(source, outName, defines); const out = fs.readFileSync(outName).toString(); fs.unlinkSync(outName); @@ -983,7 +984,7 @@ gulp.task( createBuildNumber, "locale", function scriptingGeneric() { - const defines = builder.merge(DEFINES, { GENERIC: true }); + const defines = { ...DEFINES, GENERIC: true }; return merge([ buildDefaultPreferences(defines, "generic/"), createTemporaryScriptingBundle(defines), @@ -995,7 +996,7 @@ gulp.task( function createGeneric() { console.log(); console.log("### Creating generic viewer"); - const defines = builder.merge(DEFINES, { GENERIC: true }); + const defines = { ...DEFINES, GENERIC: true }; return buildGeneric(defines, GENERIC_DIR); } @@ -1010,10 +1011,7 @@ gulp.task( createBuildNumber, "locale", function scriptingGenericLegacy() { - const defines = builder.merge(DEFINES, { - GENERIC: true, - SKIP_BABEL: false, - }); + const defines = { ...DEFINES, GENERIC: true, SKIP_BABEL: false }; return merge([ buildDefaultPreferences(defines, "generic-legacy/"), createTemporaryScriptingBundle(defines), @@ -1025,10 +1023,7 @@ gulp.task( function createGenericLegacy() { console.log(); console.log("### Creating generic (legacy) viewer"); - const defines = builder.merge(DEFINES, { - GENERIC: true, - SKIP_BABEL: false, - }); + const defines = { ...DEFINES, GENERIC: true, SKIP_BABEL: false }; return buildGeneric(defines, GENERIC_LEGACY_DIR); } @@ -1065,7 +1060,7 @@ gulp.task( gulp.series(createBuildNumber, function createComponents() { console.log(); console.log("### Creating generic components"); - const defines = builder.merge(DEFINES, { COMPONENTS: true, GENERIC: true }); + const defines = { ...DEFINES, COMPONENTS: true, GENERIC: true }; return buildComponents(defines, COMPONENTS_DIR); }) @@ -1076,11 +1071,12 @@ gulp.task( gulp.series(createBuildNumber, function createComponentsLegacy() { console.log(); console.log("### Creating generic (legacy) components"); - const defines = builder.merge(DEFINES, { + const defines = { + ...DEFINES, COMPONENTS: true, GENERIC: true, SKIP_BABEL: false, - }); + }; return buildComponents(defines, COMPONENTS_LEGACY_DIR); }) @@ -1091,10 +1087,7 @@ gulp.task( gulp.series(createBuildNumber, function createImageDecoders() { console.log(); console.log("### Creating image decoders"); - const defines = builder.merge(DEFINES, { - GENERIC: true, - IMAGE_DECODERS: true, - }); + const defines = { ...DEFINES, GENERIC: true, IMAGE_DECODERS: true }; return createImageDecodersBundle(defines).pipe( gulp.dest(IMAGE_DECODERS_DIR) @@ -1107,11 +1100,12 @@ gulp.task( gulp.series(createBuildNumber, function createImageDecodersLegacy() { console.log(); console.log("### Creating (legacy) image decoders"); - const defines = builder.merge(DEFINES, { + const defines = { + ...DEFINES, GENERIC: true, IMAGE_DECODERS: true, SKIP_BABEL: false, - }); + }; return createImageDecodersBundle(defines).pipe( gulp.dest(IMAGE_DECODERS_LEGACY_DIR) @@ -1126,9 +1120,9 @@ function buildMinified(defines, dir) { createMainBundle(defines).pipe(gulp.dest(dir + "build")), createWorkerBundle(defines).pipe(gulp.dest(dir + "build")), createSandboxBundle(defines).pipe(gulp.dest(dir + "build")), - createImageDecodersBundle( - builder.merge(defines, { IMAGE_DECODERS: true }) - ).pipe(gulp.dest(dir + "image_decoders")), + createImageDecodersBundle({ ...defines, IMAGE_DECODERS: true }).pipe( + gulp.dest(dir + "image_decoders") + ), ]); } @@ -1200,7 +1194,7 @@ gulp.task( createBuildNumber, "locale", function scriptingMinified() { - const defines = builder.merge(DEFINES, { MINIFIED: true, GENERIC: true }); + const defines = { ...DEFINES, MINIFIED: true, GENERIC: true }; return merge([ buildDefaultPreferences(defines, "minified/"), createTemporaryScriptingBundle(defines), @@ -1212,7 +1206,7 @@ gulp.task( function createMinified() { console.log(); console.log("### Creating minified viewer"); - const defines = builder.merge(DEFINES, { MINIFIED: true, GENERIC: true }); + const defines = { ...DEFINES, MINIFIED: true, GENERIC: true }; return buildMinified(defines, MINIFIED_DIR); }, @@ -1229,11 +1223,12 @@ gulp.task( createBuildNumber, "locale", function scriptingMinifiedLegacy() { - const defines = builder.merge(DEFINES, { + const defines = { + ...DEFINES, MINIFIED: true, GENERIC: true, SKIP_BABEL: false, - }); + }; return merge([ buildDefaultPreferences(defines, "minified-legacy/"), createTemporaryScriptingBundle(defines), @@ -1245,11 +1240,12 @@ gulp.task( function createMinifiedLegacy() { console.log(); console.log("### Creating minified (legacy) viewer"); - const defines = builder.merge(DEFINES, { + const defines = { + ...DEFINES, MINIFIED: true, GENERIC: true, SKIP_BABEL: false, - }); + }; return buildMinified(defines, MINIFIED_LEGACY_DIR); }, @@ -1266,9 +1262,10 @@ function preprocessDefaultPreferences(content) { const MODIFICATION_WARNING = "//\n// THIS FILE IS GENERATED AUTOMATICALLY, DO NOT EDIT MANUALLY!\n//\n"; - const bundleDefines = builder.merge(DEFINES, { + const bundleDefines = { + ...DEFINES, DEFAULT_PREFERENCES: getDefaultPreferences("mozcentral/"), - }); + }; content = preprocessPDFJSCode( { @@ -1290,7 +1287,7 @@ gulp.task( gulp.series( createBuildNumber, function scriptingMozcentral() { - const defines = builder.merge(DEFINES, { MOZCENTRAL: true }); + const defines = { ...DEFINES, MOZCENTRAL: true }; return buildDefaultPreferences(defines, "mozcentral/"); }, async function prefsMozcentral() { @@ -1299,8 +1296,8 @@ gulp.task( function createMozcentral() { console.log(); console.log("### Building mozilla-central extension"); - const defines = builder.merge(DEFINES, { MOZCENTRAL: true }); - const gvDefines = builder.merge(defines, { GECKOVIEW: true }); + const defines = { ...DEFINES, MOZCENTRAL: true }; + const gvDefines = { ...defines, GECKOVIEW: true }; const MOZCENTRAL_DIR = BUILD_DIR + "mozcentral/", MOZCENTRAL_EXTENSION_DIR = MOZCENTRAL_DIR + "browser/extensions/pdfjs/", @@ -1336,7 +1333,7 @@ gulp.task( createWebBundle(defines, { defaultPreferencesDir: "mozcentral/" }).pipe( gulp.dest(MOZCENTRAL_CONTENT_DIR + "web") ), - createGVWebBundle(defines, { + createGVWebBundle(gvDefines, { defaultPreferencesDir: "mozcentral/", }).pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + "web")), gulp @@ -1395,10 +1392,7 @@ gulp.task( createBuildNumber, "locale", function scriptingChromium() { - const defines = builder.merge(DEFINES, { - CHROME: true, - SKIP_BABEL: false, - }); + const defines = { ...DEFINES, CHROME: true, SKIP_BABEL: false }; return merge([ buildDefaultPreferences(defines, "chromium/"), createTemporaryScriptingBundle(defines), @@ -1410,10 +1404,7 @@ gulp.task( function createChromium() { console.log(); console.log("### Building Chromium extension"); - const defines = builder.merge(DEFINES, { - CHROME: true, - SKIP_BABEL: false, - }); + const defines = { ...DEFINES, CHROME: true, SKIP_BABEL: false }; const CHROME_BUILD_DIR = BUILD_DIR + "/chromium/", CHROME_BUILD_CONTENT_DIR = CHROME_BUILD_DIR + "/content/"; @@ -1531,7 +1522,7 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) { }, }; } - function preprocess(content) { + function preprocessLib(content) { const skipBabel = bundleDefines.SKIP_BABEL; content = preprocessPDFJSCode(ctx, content); content = babel.transform(content, { @@ -1565,21 +1556,22 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) { .readFileSync("./src/license_header_libre.js") .toString(); return inputStream - .pipe(transform("utf8", preprocess)) + .pipe(transform("utf8", preprocessLib)) .pipe(gulp.dest(outputDir)); } function buildLib(defines, dir) { const versionInfo = getVersionJSON(); - const bundleDefines = builder.merge(defines, { + const bundleDefines = { + ...defines, BUNDLE_VERSION: versionInfo.version, BUNDLE_BUILD: versionInfo.commit, TESTING: defines.TESTING ?? process.env.TESTING === "true", DEFAULT_PREFERENCES: getDefaultPreferences( defines.SKIP_BABEL ? "lib/" : "lib-legacy/" ), - }); + }; const inputStream = merge([ gulp.src( @@ -1604,7 +1596,7 @@ gulp.task( gulp.series( createBuildNumber, function scriptingLib() { - const defines = builder.merge(DEFINES, { GENERIC: true, LIB: true }); + const defines = { ...DEFINES, GENERIC: true, LIB: true }; return merge([ buildDefaultPreferences(defines, "lib/"), createTemporaryScriptingBundle(defines), @@ -1614,7 +1606,7 @@ gulp.task( await parseDefaultPreferences("lib/"); }, function createLib() { - const defines = builder.merge(DEFINES, { GENERIC: true, LIB: true }); + const defines = { ...DEFINES, GENERIC: true, LIB: true }; return merge([ buildLib(defines, "build/lib/"), @@ -1629,11 +1621,12 @@ gulp.task( gulp.series( createBuildNumber, function scriptingLibLegacy() { - const defines = builder.merge(DEFINES, { + const defines = { + ...DEFINES, GENERIC: true, LIB: true, SKIP_BABEL: false, - }); + }; return merge([ buildDefaultPreferences(defines, "lib-legacy/"), createTemporaryScriptingBundle(defines), @@ -1643,11 +1636,12 @@ gulp.task( await parseDefaultPreferences("lib-legacy/"); }, function createLibLegacy() { - const defines = builder.merge(DEFINES, { + const defines = { + ...DEFINES, GENERIC: true, LIB: true, SKIP_BABEL: false, - }); + }; return merge([ buildLib(defines, "build/lib-legacy/"), @@ -1947,11 +1941,12 @@ gulp.task( "lint-chromium", gulp.series( function scriptingLintChromium() { - const defines = builder.merge(DEFINES, { + const defines = { + ...DEFINES, CHROME: true, SKIP_BABEL: false, TESTING: false, - }); + }; return buildDefaultPreferences(defines, "lint-chromium/"); }, async function prefsLintChromium() { @@ -1979,7 +1974,7 @@ gulp.task( "dev-sandbox", gulp.series( function scriptingDevSandbox() { - const defines = builder.merge(DEFINES, { GENERIC: true, TESTING: true }); + const defines = { ...DEFINES, GENERIC: true, TESTING: true }; return createTemporaryScriptingBundle(defines, { disableVersionInfo: true, }); @@ -1988,7 +1983,7 @@ gulp.task( console.log(); console.log("### Building development sandbox"); - const defines = builder.merge(DEFINES, { GENERIC: true, TESTING: true }); + const defines = { ...DEFINES, GENERIC: true, TESTING: true }; const sandboxDir = BUILD_DIR + "dev-sandbox/"; rimraf.sync(sandboxDir);