From 51742323260ae4c9040f392d11a70dbb40522775 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 8 Jul 2023 16:07:54 +0200 Subject: [PATCH] [ESM] Convert the `external/builder/`-folder to use standard modules --- external/builder/{builder.js => builder.mjs} | 12 +++++------- .../{preprocessor2.js => preprocessor2.mjs} | 14 ++++++-------- .../{test-fixtures.js => test-fixtures.mjs} | 9 +++++---- ...es_esprima.js => test-fixtures_esprima.mjs} | 11 ++++++----- ...{pdfjsdev-loader.js => pdfjsdev-loader.mjs} | 12 +++++------- gulpfile.mjs | 18 ++++++++---------- 6 files changed, 35 insertions(+), 41 deletions(-) rename external/builder/{builder.js => builder.mjs} (97%) rename external/builder/{preprocessor2.js => preprocessor2.mjs} (97%) rename external/builder/{test-fixtures.js => test-fixtures.mjs} (88%) rename external/builder/{test-fixtures_esprima.js => test-fixtures_esprima.mjs} (86%) rename external/webpack/{pdfjsdev-loader.js => pdfjsdev-loader.mjs} (85%) diff --git a/external/builder/builder.js b/external/builder/builder.mjs similarity index 97% rename from external/builder/builder.js rename to external/builder/builder.mjs index cb56978d9..c1305f46d 100644 --- a/external/builder/builder.js +++ b/external/builder/builder.mjs @@ -1,8 +1,6 @@ -"use strict"; - -const fs = require("fs"), - path = require("path"), - vm = require("vm"); +import fs from "fs"; +import path from "path"; +import vm from "vm"; const AllWhitespaceRegexp = /^\s+$/g; @@ -226,7 +224,6 @@ function preprocess(inFilename, outFilename, defines) { fs.writeFileSync(outFilename, out.join("\n")); } } -exports.preprocess = preprocess; /** * Merge two defines arrays. Values in the second param will override values in @@ -242,4 +239,5 @@ function merge(defaults, defines) { } return ret; } -exports.merge = merge; + +export { merge, preprocess }; diff --git a/external/builder/preprocessor2.js b/external/builder/preprocessor2.mjs similarity index 97% rename from external/builder/preprocessor2.js rename to external/builder/preprocessor2.mjs index 8833cf323..1098e83ba 100644 --- a/external/builder/preprocessor2.js +++ b/external/builder/preprocessor2.mjs @@ -1,10 +1,8 @@ -"use strict"; - -const acorn = require("acorn"); -const escodegen = require("@javascript-obfuscator/escodegen"); -const vm = require("vm"); -const fs = require("fs"); -const path = require("path"); +import * as acorn from "acorn"; +import escodegen from "@javascript-obfuscator/escodegen"; +import fs from "fs"; +import path from "path"; +import vm from "vm"; const PDFJS_PREPROCESSOR_NAME = "PDFJSDev"; const ROOT_PREFIX = "$ROOT/"; @@ -346,4 +344,4 @@ function preprocessPDFJSCode(ctx, code) { return escodegen.generate(syntax, codegenOptions); } -exports.preprocessPDFJSCode = preprocessPDFJSCode; +export { preprocessPDFJSCode }; diff --git a/external/builder/test-fixtures.js b/external/builder/test-fixtures.mjs similarity index 88% rename from external/builder/test-fixtures.js rename to external/builder/test-fixtures.mjs index 09b0e9a55..1e1878ac5 100644 --- a/external/builder/test-fixtures.js +++ b/external/builder/test-fixtures.mjs @@ -1,8 +1,9 @@ -"use strict"; +import * as builder from "./builder.mjs"; +import { fileURLToPath } from "url"; +import fs from "fs"; +import path from "path"; -const builder = require("./builder.js"); -const fs = require("fs"); -const path = require("path"); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); let errors = 0; diff --git a/external/builder/test-fixtures_esprima.js b/external/builder/test-fixtures_esprima.mjs similarity index 86% rename from external/builder/test-fixtures_esprima.js rename to external/builder/test-fixtures_esprima.mjs index a0fec7b68..010884f23 100644 --- a/external/builder/test-fixtures_esprima.js +++ b/external/builder/test-fixtures_esprima.mjs @@ -1,8 +1,9 @@ -"use strict"; +import { fileURLToPath } from "url"; +import fs from "fs"; +import path from "path"; +import { preprocessPDFJSCode } from "./preprocessor2.mjs"; -const p2 = require("./preprocessor2.js"); -const fs = require("fs"); -const path = require("path"); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); let errors = 0; @@ -40,7 +41,7 @@ files.forEach(function (expectationFilename) { }; let out; try { - out = p2.preprocessPDFJSCode(ctx, input); + out = preprocessPDFJSCode(ctx, input); } catch (e) { out = ("Error: " + e.message).replaceAll(/^/gm, "//"); } diff --git a/external/webpack/pdfjsdev-loader.js b/external/webpack/pdfjsdev-loader.mjs similarity index 85% rename from external/webpack/pdfjsdev-loader.js rename to external/webpack/pdfjsdev-loader.mjs index c290b639c..9b896e0c8 100644 --- a/external/webpack/pdfjsdev-loader.js +++ b/external/webpack/pdfjsdev-loader.mjs @@ -13,12 +13,10 @@ * limitations under the License. */ -"use strict"; +import path from "path"; +import { preprocessPDFJSCode } from "../builder/preprocessor2.mjs"; -const preprocessor2 = require("../builder/preprocessor2.js"); -const path = require("path"); - -module.exports = function (source) { +export default function (source) { // Options must be specified, ignoring request if not. if (!this.query || typeof this.query !== "object") { return source; @@ -34,10 +32,10 @@ module.exports = function (source) { ctx.sourceFile = sourcePath; const callback = this.callback; - const sourceAndMap = preprocessor2.preprocessPDFJSCode(ctx, source); + const sourceAndMap = preprocessPDFJSCode(ctx, source); const map = sourceAndMap.map.toJSON(); // escodegen does not embed source -- setting map's sourcesContent. map.sourcesContent = [source]; callback(null, sourceAndMap.code, map); return undefined; -}; +} diff --git a/gulpfile.mjs b/gulpfile.mjs index 9565ed057..cada4f8d4 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -14,9 +14,9 @@ */ /* eslint-env node */ +import * as builder from "./external/builder/builder.mjs"; import { exec, spawn, spawnSync } from "child_process"; import autoprefixer from "autoprefixer"; -import builder from "./external/builder/builder.js"; import { createRequire } from "module"; import crypto from "crypto"; import { fileURLToPath } from "url"; @@ -27,6 +27,7 @@ import { mkdirp } from "mkdirp"; import path from "path"; import postcss from "gulp-postcss"; import postcssDirPseudoClass from "postcss-dir-pseudo-class"; +import { preprocessPDFJSCode } from "./external/builder/preprocessor2.mjs"; import rename from "gulp-rename"; import replace from "gulp-replace"; import rimraf from "rimraf"; @@ -295,7 +296,7 @@ function createWebpackConfig( }, }, { - loader: path.join(__dirname, "external/webpack/pdfjsdev-loader.js"), + loader: path.join(__dirname, "external/webpack/pdfjsdev-loader.mjs"), options: { rootPath: __dirname, saveComments: false, @@ -428,7 +429,6 @@ function createScriptingBundle(defines, extraOptions = undefined) { } function createSandboxExternal(defines) { - const preprocessor2 = require("./external/builder/preprocessor2.js"); const licenseHeader = fs.readFileSync("./src/license_header.js").toString(); const ctx = { @@ -440,7 +440,7 @@ function createSandboxExternal(defines) { .pipe(rename("pdf.sandbox.external.sys.mjs")) .pipe( transform("utf8", content => { - content = preprocessor2.preprocessPDFJSCode(ctx, content); + content = preprocessPDFJSCode(ctx, content); return `${licenseHeader}\n${content}`; }) ); @@ -1268,7 +1268,6 @@ gulp.task( ); function preprocessDefaultPreferences(content) { - const preprocessor2 = require("./external/builder/preprocessor2.js"); const licenseHeader = fs.readFileSync("./src/license_header.js").toString(); const MODIFICATION_WARNING = @@ -1278,7 +1277,7 @@ function preprocessDefaultPreferences(content) { DEFAULT_PREFERENCES: getDefaultPreferences("mozcentral/"), }); - content = preprocessor2.preprocessPDFJSCode( + content = preprocessPDFJSCode( { rootPath: __dirname, defines: bundleDefines, @@ -1545,7 +1544,7 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) { function preprocess(content) { const skipBabel = bundleDefines.SKIP_BABEL || /\/\*\s*no-babel-preset\s*\*\//.test(content); - content = preprocessor2.preprocessPDFJSCode(ctx, content); + content = preprocessPDFJSCode(ctx, content); content = babel.transform(content, { sourceType: "module", presets: skipBabel ? undefined : ["@babel/preset-env"], @@ -1575,7 +1574,6 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) { const licenseHeaderLibre = fs .readFileSync("./src/license_header_libre.js") .toString(); - const preprocessor2 = require("./external/builder/preprocessor2.js"); return inputStream .pipe(transform("utf8", preprocess)) .pipe(gulp.dest(outputDir)); @@ -2411,13 +2409,13 @@ gulp.task( gulp.task("externaltest", function (done) { console.log(); console.log("### Running test-fixtures.js"); - safeSpawnSync("node", ["external/builder/test-fixtures.js"], { + safeSpawnSync("node", ["external/builder/test-fixtures.mjs"], { stdio: "inherit", }); console.log(); console.log("### Running test-fixtures_esprima.js"); - safeSpawnSync("node", ["external/builder/test-fixtures_esprima.js"], { + safeSpawnSync("node", ["external/builder/test-fixtures_esprima.mjs"], { stdio: "inherit", }); done();