From e2c3312416d34f4756da9dbbb3b3d02a32e4d1e3 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 19 May 2020 15:13:43 +0200 Subject: [PATCH] Convert the `src/pdf.js` and `src/pdf.worker.js` files to use standard `import`/`export` statements As part of reducing our reliance on SystemJS in the development viewer, this patch replaces usage of `require` statements with modern standards `import`/`export` statements instead. If we want to try and move forward with reducing usage of SystemJS, we don't have much choice but to make these kind changes (despite what prior test-results showed, however I'm no longer able to reproduce the issues locally). --- src/pdf.js | 160 ++++++++++++++++++++++++++-------------------- src/pdf.worker.js | 9 ++- 2 files changed, 94 insertions(+), 75 deletions(-) diff --git a/src/pdf.js b/src/pdf.js index 3e3c2d018..a2b703e8b 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -12,36 +12,66 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* eslint-disable no-unused-vars */ -"use strict"; +import { + addLinkAttributes, + getFilenameFromUrl, + isFetchSupported, + isValidFetchUrl, + LinkTarget, + loadScript, + PDFDateString, + RenderingCancelledException, +} from "./display/display_utils.js"; +import { + build, + getDocument, + LoopbackPort, + PDFDataRangeTransport, + PDFWorker, + setPDFNetworkStreamFactory, + version, +} from "./display/api.js"; +import { + CMapCompressionType, + createObjectURL, + createPromiseCapability, + createValidAbsoluteUrl, + InvalidPDFException, + MissingPDFException, + NativeImageDecoding, + OPS, + PasswordResponses, + PermissionFlag, + removeNullCharacters, + shadow, + UnexpectedResponseException, + UNSUPPORTED_FEATURES, + Util, + VerbosityLevel, +} from "./shared/util.js"; +import { AnnotationLayer } from "./display/annotation_layer.js"; +import { apiCompatibilityParams } from "./display/api_compatibility.js"; +import { GlobalWorkerOptions } from "./display/worker_options.js"; +import { renderTextLayer } from "./display/text_layer.js"; +import { SVGGraphics } from "./display/svg.js"; -var pdfjsVersion = +/* eslint-disable-next-line no-unused-vars */ +const pdfjsVersion = typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_VERSION") : void 0; -var pdfjsBuild = +/* eslint-disable-next-line no-unused-vars */ +const pdfjsBuild = typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_BUILD") : void 0; -var pdfjsSharedUtil = require("./shared/util.js"); -var pdfjsDisplayAPI = require("./display/api.js"); -var pdfjsDisplayTextLayer = require("./display/text_layer.js"); -var pdfjsDisplayAnnotationLayer = require("./display/annotation_layer.js"); -var pdfjsDisplayDisplayUtils = require("./display/display_utils.js"); -var pdfjsDisplaySVG = require("./display/svg.js"); -const pdfjsDisplayWorkerOptions = require("./display/worker_options.js"); -const pdfjsDisplayAPICompatibility = require("./display/api_compatibility.js"); - if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("PRODUCTION")) { const streamsPromise = Promise.all([ SystemJS.import("pdfjs/display/network.js"), SystemJS.import("pdfjs/display/fetch_stream.js"), ]); - pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => { + setPDFNetworkStreamFactory(params => { return streamsPromise.then(streams => { const [{ PDFNetworkStream }, { PDFFetchStream }] = streams; - if ( - pdfjsDisplayDisplayUtils.isFetchSupported() && - pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url) - ) { + if (isFetchSupported() && isValidFetchUrl(params.url)) { return new PDFFetchStream(params); } return new PDFNetworkStream(params); @@ -51,20 +81,17 @@ if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("PRODUCTION")) { const { isNodeJS } = require("./shared/is_node.js"); if (isNodeJS) { const PDFNodeStream = require("./display/node_stream.js").PDFNodeStream; - pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => { + setPDFNetworkStreamFactory(params => { return new PDFNodeStream(params); }); } else { const PDFNetworkStream = require("./display/network.js").PDFNetworkStream; let PDFFetchStream; - if (pdfjsDisplayDisplayUtils.isFetchSupported()) { + if (isFetchSupported()) { PDFFetchStream = require("./display/fetch_stream.js").PDFFetchStream; } - pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => { - if ( - PDFFetchStream && - pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url) - ) { + setPDFNetworkStreamFactory(params => { + if (PDFFetchStream && isValidFetchUrl(params.url)) { return new PDFFetchStream(params); } return new PDFNetworkStream(params); @@ -86,56 +113,49 @@ if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("PRODUCTION")) { return true; } }; - if ( - pdfjsDisplayDisplayUtils.isFetchSupported() && - isChromeWithFetchCredentials() - ) { + if (isFetchSupported() && isChromeWithFetchCredentials()) { PDFFetchStream = require("./display/fetch_stream.js").PDFFetchStream; } - pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => { - if ( - PDFFetchStream && - pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url) - ) { + setPDFNetworkStreamFactory(params => { + if (PDFFetchStream && isValidFetchUrl(params.url)) { return new PDFFetchStream(params); } return new PDFNetworkStream(params); }); } -exports.build = pdfjsDisplayAPI.build; -exports.version = pdfjsDisplayAPI.version; -exports.getDocument = pdfjsDisplayAPI.getDocument; -exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort; -exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport; -exports.PDFWorker = pdfjsDisplayAPI.PDFWorker; -exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer; -exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer; -exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability; -exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses; -exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException; -exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException; -exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics; -exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding; -exports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType; -exports.PermissionFlag = pdfjsSharedUtil.PermissionFlag; -exports.UnexpectedResponseException = - pdfjsSharedUtil.UnexpectedResponseException; -exports.OPS = pdfjsSharedUtil.OPS; -exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel; -exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES; -exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl; -exports.createObjectURL = pdfjsSharedUtil.createObjectURL; -exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters; -exports.shadow = pdfjsSharedUtil.shadow; -exports.Util = pdfjsSharedUtil.Util; -exports.RenderingCancelledException = - pdfjsDisplayDisplayUtils.RenderingCancelledException; -exports.getFilenameFromUrl = pdfjsDisplayDisplayUtils.getFilenameFromUrl; -exports.LinkTarget = pdfjsDisplayDisplayUtils.LinkTarget; -exports.addLinkAttributes = pdfjsDisplayDisplayUtils.addLinkAttributes; -exports.loadScript = pdfjsDisplayDisplayUtils.loadScript; -exports.PDFDateString = pdfjsDisplayDisplayUtils.PDFDateString; -exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions; -exports.apiCompatibilityParams = - pdfjsDisplayAPICompatibility.apiCompatibilityParams; +export { + addLinkAttributes, + getFilenameFromUrl, + LinkTarget, + loadScript, + PDFDateString, + RenderingCancelledException, + build, + getDocument, + LoopbackPort, + PDFDataRangeTransport, + PDFWorker, + version, + CMapCompressionType, + createObjectURL, + createPromiseCapability, + createValidAbsoluteUrl, + InvalidPDFException, + MissingPDFException, + NativeImageDecoding, + OPS, + PasswordResponses, + PermissionFlag, + removeNullCharacters, + shadow, + UnexpectedResponseException, + UNSUPPORTED_FEATURES, + Util, + VerbosityLevel, + AnnotationLayer, + apiCompatibilityParams, + GlobalWorkerOptions, + renderTextLayer, + SVGGraphics, +}; diff --git a/src/pdf.worker.js b/src/pdf.worker.js index 2400d4611..ee44edd7e 100644 --- a/src/pdf.worker.js +++ b/src/pdf.worker.js @@ -12,13 +12,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* eslint-disable no-unused-vars */ -"use strict"; +import { WorkerMessageHandler } from "./core/worker.js"; +/* eslint-disable-next-line no-unused-vars */ const pdfjsVersion = PDFJSDev.eval("BUNDLE_VERSION"); +/* eslint-disable-next-line no-unused-vars */ const pdfjsBuild = PDFJSDev.eval("BUNDLE_BUILD"); -const pdfjsCoreWorker = require("./core/worker.js"); - -exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler; +export { WorkerMessageHandler };