diff --git a/external/builder/babel-plugin-pdfjs-preprocessor.mjs b/external/builder/babel-plugin-pdfjs-preprocessor.mjs index 87b024bab..945d22c47 100644 --- a/external/builder/babel-plugin-pdfjs-preprocessor.mjs +++ b/external/builder/babel-plugin-pdfjs-preprocessor.mjs @@ -11,7 +11,7 @@ function isPDFJSPreprocessor(obj) { } function evalWithDefines(code, defines) { - if (!code || !code.trim()) { + if (!code?.trim()) { throw new Error("No JavaScript expression given"); } return vm.runInNewContext(code, defines, { displayErrors: false }); @@ -56,12 +56,7 @@ function handlePreprocessorAction(ctx, actionName, args, path) { throw new Error("Unsupported action"); } catch (e) { throw path.buildCodeFrameError( - "Could not process " + - PDFJS_PREPROCESSOR_NAME + - "." + - actionName + - ": " + - e.message + `Could not process ${PDFJS_PREPROCESSOR_NAME}.${actionName}: ${e.message}` ); } } diff --git a/external/builder/builder.mjs b/external/builder/builder.mjs index 783ef9b30..929a9cf87 100644 --- a/external/builder/builder.mjs +++ b/external/builder/builder.mjs @@ -84,7 +84,7 @@ function preprocess(inFilename, outFilename, defines) { out.push(line); }; function evaluateCondition(code) { - if (!code || !code.trim()) { + if (!code?.trim()) { throw new Error("No JavaScript expression given at " + loc()); } try { diff --git a/gulpfile.mjs b/gulpfile.mjs index b3650472f..b4676c250 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -124,9 +124,8 @@ function transform(charEncoding, transformFunction) { }); } -function safeSpawnSync(command, parameters, options) { +function safeSpawnSync(command, parameters, options = {}) { // Execute all commands in a shell. - options = options || {}; options.shell = true; // `options.shell = true` requires parameters to be quoted. parameters = parameters.map(param => { @@ -175,6 +174,87 @@ function createStringSource(filename, content) { return source; } +function createWebpackAlias(defines) { + const basicAlias = { + pdfjs: "src", + "pdfjs-web": "web", + "pdfjs-lib": "web/pdfjs", + "fluent-bundle": "node_modules/@fluent/bundle/esm/index.js", + "fluent-dom": "node_modules/@fluent/dom/esm/index.js", + }; + const libraryAlias = { + "display-fetch_stream": "src/display/stubs.js", + "display-network": "src/display/stubs.js", + "display-node_stream": "src/display/stubs.js", + "display-node_utils": "src/display/stubs.js", + }; + const viewerAlias = { + "web-alt_text_manager": "web/alt_text_manager.js", + "web-annotation_editor_params": "web/annotation_editor_params.js", + "web-download_manager": "", + "web-external_services": "", + "web-null_l10n": "", + "web-pdf_attachment_viewer": "web/pdf_attachment_viewer.js", + "web-pdf_cursor_tools": "web/pdf_cursor_tools.js", + "web-pdf_document_properties": "web/pdf_document_properties.js", + "web-pdf_find_bar": "web/pdf_find_bar.js", + "web-pdf_layer_viewer": "web/pdf_layer_viewer.js", + "web-pdf_outline_viewer": "web/pdf_outline_viewer.js", + "web-pdf_presentation_mode": "web/pdf_presentation_mode.js", + "web-pdf_sidebar": "web/pdf_sidebar.js", + "web-pdf_thumbnail_viewer": "web/pdf_thumbnail_viewer.js", + "web-preferences": "", + "web-print_service": "", + "web-secondary_toolbar": "web/secondary_toolbar.js", + "web-toolbar": "web/toolbar.js", + }; + + if (defines.CHROME) { + libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; + libraryAlias["display-network"] = "src/display/network.js"; + + viewerAlias["web-download_manager"] = "web/download_manager.js"; + viewerAlias["web-external_services"] = "web/chromecom.js"; + viewerAlias["web-null_l10n"] = "web/l10n.js"; + viewerAlias["web-preferences"] = "web/chromecom.js"; + viewerAlias["web-print_service"] = "web/pdf_print_service.js"; + } else if (defines.GENERIC) { + // Aliases defined here must also be replicated in the paths section of + // the tsconfig.json file for the type generation to work. + // In the tsconfig.json files, the .js extension must be omitted. + libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; + libraryAlias["display-network"] = "src/display/network.js"; + libraryAlias["display-node_stream"] = "src/display/node_stream.js"; + libraryAlias["display-node_utils"] = "src/display/node_utils.js"; + + viewerAlias["web-download_manager"] = "web/download_manager.js"; + viewerAlias["web-external_services"] = "web/genericcom.js"; + viewerAlias["web-null_l10n"] = "web/genericl10n.js"; + viewerAlias["web-preferences"] = "web/genericcom.js"; + viewerAlias["web-print_service"] = "web/pdf_print_service.js"; + } else if (defines.MOZCENTRAL) { + if (defines.GECKOVIEW) { + const gvAlias = { + "web-toolbar": "web/toolbar-geckoview.js", + }; + for (const key in viewerAlias) { + viewerAlias[key] = gvAlias[key] || "web/stubs-geckoview.js"; + } + } + viewerAlias["web-download_manager"] = "web/firefoxcom.js"; + viewerAlias["web-external_services"] = "web/firefoxcom.js"; + viewerAlias["web-null_l10n"] = "web/l10n.js"; + viewerAlias["web-preferences"] = "web/firefoxcom.js"; + viewerAlias["web-print_service"] = "web/firefox_print_service.js"; + } + + const alias = { ...basicAlias, ...libraryAlias, ...viewerAlias }; + for (const key in alias) { + alias[key] = path.join(__dirname, alias[key]); + } + return alias; +} + function createWebpackConfig( defines, output, @@ -251,87 +331,12 @@ function createWebpackConfig( ); } + const alias = createWebpackAlias(bundleDefines); const experiments = isModule ? { outputModule: true } : undefined; // Required to expose e.g., the `window` object. output.globalObject = "globalThis"; - const basicAlias = { - pdfjs: "src", - "pdfjs-web": "web", - "pdfjs-lib": "web/pdfjs", - "fluent-bundle": "node_modules/@fluent/bundle/esm/index.js", - "fluent-dom": "node_modules/@fluent/dom/esm/index.js", - }; - const libraryAlias = { - "display-fetch_stream": "src/display/stubs.js", - "display-network": "src/display/stubs.js", - "display-node_stream": "src/display/stubs.js", - "display-node_utils": "src/display/stubs.js", - }; - const viewerAlias = { - "web-alt_text_manager": "web/alt_text_manager.js", - "web-annotation_editor_params": "web/annotation_editor_params.js", - "web-download_manager": "", - "web-external_services": "", - "web-null_l10n": "", - "web-pdf_attachment_viewer": "web/pdf_attachment_viewer.js", - "web-pdf_cursor_tools": "web/pdf_cursor_tools.js", - "web-pdf_document_properties": "web/pdf_document_properties.js", - "web-pdf_find_bar": "web/pdf_find_bar.js", - "web-pdf_layer_viewer": "web/pdf_layer_viewer.js", - "web-pdf_outline_viewer": "web/pdf_outline_viewer.js", - "web-pdf_presentation_mode": "web/pdf_presentation_mode.js", - "web-pdf_sidebar": "web/pdf_sidebar.js", - "web-pdf_thumbnail_viewer": "web/pdf_thumbnail_viewer.js", - "web-preferences": "", - "web-print_service": "", - "web-secondary_toolbar": "web/secondary_toolbar.js", - "web-toolbar": "web/toolbar.js", - }; - if (bundleDefines.CHROME) { - libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; - libraryAlias["display-network"] = "src/display/network.js"; - - viewerAlias["web-download_manager"] = "web/download_manager.js"; - viewerAlias["web-external_services"] = "web/chromecom.js"; - viewerAlias["web-null_l10n"] = "web/l10n.js"; - viewerAlias["web-preferences"] = "web/chromecom.js"; - viewerAlias["web-print_service"] = "web/pdf_print_service.js"; - } else if (bundleDefines.GENERIC) { - // Aliases defined here must also be replicated in the paths section of - // the tsconfig.json file for the type generation to work. - // In the tsconfig.json files, the .js extension must be omitted. - libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; - libraryAlias["display-network"] = "src/display/network.js"; - libraryAlias["display-node_stream"] = "src/display/node_stream.js"; - libraryAlias["display-node_utils"] = "src/display/node_utils.js"; - - viewerAlias["web-download_manager"] = "web/download_manager.js"; - viewerAlias["web-external_services"] = "web/genericcom.js"; - viewerAlias["web-null_l10n"] = "web/genericl10n.js"; - viewerAlias["web-preferences"] = "web/genericcom.js"; - viewerAlias["web-print_service"] = "web/pdf_print_service.js"; - } else if (bundleDefines.MOZCENTRAL) { - if (bundleDefines.GECKOVIEW) { - const gvAlias = { - "web-toolbar": "web/toolbar-geckoview.js", - }; - for (const key in viewerAlias) { - viewerAlias[key] = gvAlias[key] || "web/stubs-geckoview.js"; - } - } - viewerAlias["web-download_manager"] = "web/firefoxcom.js"; - viewerAlias["web-external_services"] = "web/firefoxcom.js"; - viewerAlias["web-null_l10n"] = "web/l10n.js"; - viewerAlias["web-preferences"] = "web/firefoxcom.js"; - viewerAlias["web-print_service"] = "web/firefox_print_service.js"; - } - const alias = { ...basicAlias, ...libraryAlias, ...viewerAlias }; - for (const key in alias) { - alias[key] = path.join(__dirname, alias[key]); - } - return { mode: "production", optimization: { @@ -404,7 +409,7 @@ function checkChromePreferencesFile(chromePrefsPath, webPrefs) { // Deprecated keys are allowed in the managed preferences file. // The code maintainer is responsible for adding migration logic to // extensions/chromium/options/migration.js and web/chromecom.js . - return !description || !description.startsWith("DEPRECATED."); + return !description?.startsWith("DEPRECATED."); }); let ret = true; @@ -514,7 +519,7 @@ function createSandboxExternal(defines) { function createTemporaryScriptingBundle(defines, extraOptions = undefined) { return createScriptingBundle(defines, { - disableVersionInfo: !!(extraOptions && extraOptions.disableVersionInfo), + disableVersionInfo: !!extraOptions?.disableVersionInfo, disableSourceMaps: true, disableLicenseHeader: true, }).pipe(gulp.dest(TMP_DIR));