diff --git a/gulpfile.mjs b/gulpfile.mjs index cc2624d195f4f..c4314bbf3f998 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -418,30 +418,6 @@ function tweakWebpackOutput(jsName) { }); } -function addGlobalExports(amdName, jsName) { - const replacer = [ - `module\\.exports = factory\\(\\);`, - `define\\("${amdName}", \\[\\], factory\\);`, - `exports\\["${amdName}"\\] = factory\\(\\);`, - `root\\["${amdName}"\\] = factory\\(\\);`, - ]; - const regex = new RegExp(`(${replacer.join("|")})`, "gm"); - - return replace(regex, match => { - switch (match) { - case `module.exports = factory();`: - return `module.exports = root.${jsName} = factory();`; - case `define("${amdName}", [], factory);`: - return `define("${amdName}", [], () => { return (root.${jsName} = factory()); });`; - case `exports["${amdName}"] = factory();`: - return `exports["${amdName}"] = root.${jsName} = factory();`; - case `root["${amdName}"] = factory();`: - return `root["${amdName}"] = root.${jsName} = factory();`; - } - return match; - }); -} - function createMainBundle(defines) { const mainFileConfig = createWebpackConfig(defines, { filename: "pdf.mjs", @@ -456,23 +432,20 @@ function createMainBundle(defines) { } function createScriptingBundle(defines, extraOptions = undefined) { - const scriptingAMDName = "pdfjs-dist/build/pdf.scripting"; - const scriptingOutputName = "pdf.scripting.js"; - const scriptingFileConfig = createWebpackConfig( defines, { - filename: scriptingOutputName, - library: scriptingAMDName, - libraryTarget: "umd", - umdNamedDefine: true, + filename: "pdf.scripting.mjs", + library: { + type: "module", + }, }, extraOptions ); return gulp .src("./src/pdf.scripting.js") .pipe(webpack2Stream(scriptingFileConfig)) - .pipe(addGlobalExports(scriptingAMDName, "pdfjsScripting")); + .pipe(tweakWebpackOutput()); } function createSandboxExternal(defines) { @@ -502,7 +475,7 @@ function createTemporaryScriptingBundle(defines, extraOptions = undefined) { } function createSandboxBundle(defines, extraOptions = undefined) { - const scriptingPath = TMP_DIR + "pdf.scripting.js"; + 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, { PDF_SCRIPTING_JS_SOURCE: fs.readFileSync(scriptingPath).toString(), diff --git a/src/pdf.scripting.js b/src/pdf.scripting.js index 805fa84d4fd95..4f45993aa833e 100644 --- a/src/pdf.scripting.js +++ b/src/pdf.scripting.js @@ -22,4 +22,6 @@ const pdfjsVersion = const pdfjsBuild = typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_BUILD") : void 0; -export { initSandbox }; +// To avoid problems with `export` statements in the QuickJS Javascript Engine, +// we manually expose `pdfjsScripting` globally instead. +globalThis.pdfjsScripting = { initSandbox };