1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 06:38:07 +02:00

Use JSON imports instead of PDFJSDev.json

JSON imports are now supported by all tools used in PDF.js' build
process. The `chromecom.js` file is bundled by webpack and
import attributes are thus removed, so browser compatibility for this
new syntax is not relevant.
This commit is contained in:
Nicolò Ribaudo 2024-11-18 15:04:14 +01:00
parent 658a0a16c1
commit a8592d86a9
No known key found for this signature in database
GPG key ID: AAFDA9101C58F338
7 changed files with 7 additions and 26 deletions

View file

@ -77,7 +77,7 @@ export default [
__non_webpack_import__: "readonly",
},
ecmaVersion: 2022,
ecmaVersion: 2025,
sourceType: "module",
},

View file

@ -1,10 +1,7 @@
import { types as t, transformSync } from "@babel/core";
import fs from "fs";
import { join as joinPaths } from "path";
import vm from "vm";
const PDFJS_PREPROCESSOR_NAME = "PDFJSDev";
const ROOT_PREFIX = "$ROOT/";
function isPDFJSPreprocessor(obj) {
return obj.type === "Identifier" && obj.name === PDFJS_PREPROCESSOR_NAME;
@ -40,18 +37,6 @@ function handlePreprocessorAction(ctx, actionName, args, path) {
return result;
}
break;
case "json":
if (!t.isStringLiteral(arg)) {
throw new Error("Path to JSON is not provided");
}
let jsonPath = arg.value;
if (jsonPath.startsWith(ROOT_PREFIX)) {
jsonPath = joinPaths(
ctx.rootPath,
jsonPath.substring(ROOT_PREFIX.length)
);
}
return JSON.parse(fs.readFileSync(jsonPath, "utf8"));
}
throw new Error("Unsupported action");
} catch (e) {

View file

@ -10,9 +10,6 @@ var g = {
},
j: 2
};
var h = {
test: "test"
};
var i = '0';
var j = {
i: 1

View file

@ -5,7 +5,6 @@ var d = PDFJSDev.test('FALSE');
var e = PDFJSDev.eval('TRUE');
var f = PDFJSDev.eval('TEXT');
var g = PDFJSDev.eval('OBJ');
var h = PDFJSDev.json('$ROOT/external/builder/fixtures_babel/evals.json');
var i = typeof PDFJSDev === 'undefined' ? PDFJSDev.eval('FALSE') : '0';
var j = typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('OBJ.obj') : '0';
var k = !PDFJSDev.test('TRUE');

View file

@ -1 +0,0 @@
{ "test": "test" }

View file

@ -382,6 +382,7 @@ function createWebpackConfig(
module: {
rules: [
{
test: /\.[mc]?js$/,
loader: "babel-loader",
exclude: babelExcludeRegExp,
options: {

View file

@ -20,6 +20,9 @@ import { BasePreferences } from "./preferences.js";
import { GenericL10n } from "./genericl10n.js";
import { GenericScripting } from "./generic_scripting.js";
// These strings are from chrome/app/resources/generated_resources_*.xtb.
import i18nFileAccessLabels from "./chrome-i18n-allow-access-to-file-urls.json" with { type: "json" };
if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("CHROME")) {
throw new Error(
'Module "pdfjs-web/chromecom" shall not be used outside CHROME build.'
@ -194,11 +197,8 @@ function requestAccessToLocalFile(fileUrl, overlayManager, callback) {
// Use Chrome's definition of UI language instead of PDF.js's #lang=...,
// because the shown string should match the UI at chrome://extensions.
// These strings are from chrome/app/resources/generated_resources_*.xtb.
const i18nFileAccessLabel = PDFJSDev.json(
"$ROOT/web/chrome-i18n-allow-access-to-file-urls.json"
)[chrome.i18n.getUILanguage?.()];
const i18nFileAccessLabel =
i18nFileAccessLabels[chrome.i18n.getUILanguage?.()];
if (i18nFileAccessLabel) {
document.getElementById("chrome-file-access-label").textContent =
i18nFileAccessLabel;