Merge pull request #11914 from Snuffleupagus/less-require

Convert the `src/pdf.js` and `src/pdf.worker.js` files to use standard `import`/`export` statements
This commit is contained in:
Tim van der Meij 2020-05-20 13:28:44 +02:00 committed by GitHub
commit a5c60cdd31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 161 additions and 102 deletions

View File

@ -65,7 +65,8 @@ const RENDERING_CANCELLED_TIMEOUT = 100; // ms
* @typedef {function} IPDFStreamFactory * @typedef {function} IPDFStreamFactory
* @param {DocumentInitParameters} params - The document initialization * @param {DocumentInitParameters} params - The document initialization
* parameters. The "url" key is always present. * parameters. The "url" key is always present.
* @returns {IPDFStream} * @returns {Promise} A promise, which is resolved with an instance of
* {IPDFStream}.
* @ignore * @ignore
*/ */
@ -80,7 +81,7 @@ let createPDFNetworkStream;
* data transport. * data transport.
* @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function
* that takes document initialization parameters (including a "url") and * that takes document initialization parameters (including a "url") and
* returns an instance of {IPDFStream}. * returns a promise which is resolved with an instance of {IPDFStream}.
* @ignore * @ignore
*/ */
function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
@ -313,34 +314,44 @@ function getDocument(src) {
if (task.destroyed) { if (task.destroyed) {
throw new Error("Loading aborted"); throw new Error("Loading aborted");
} }
return _fetchDocument(worker, params, rangeTransport, docId).then(
function (workerId) {
if (task.destroyed) {
throw new Error("Loading aborted");
}
let networkStream; const workerIdPromise = _fetchDocument(
if (rangeTransport) { worker,
networkStream = new PDFDataTransportStream( params,
{ rangeTransport,
length: params.length, docId
initialData: params.initialData, );
progressiveDone: params.progressiveDone, const networkStreamPromise = new Promise(function (resolve) {
disableRange: params.disableRange, let networkStream;
disableStream: params.disableStream, if (rangeTransport) {
}, networkStream = new PDFDataTransportStream(
rangeTransport {
);
} else if (!params.data) {
networkStream = createPDFNetworkStream({
url: params.url,
length: params.length, length: params.length,
httpHeaders: params.httpHeaders, initialData: params.initialData,
withCredentials: params.withCredentials, progressiveDone: params.progressiveDone,
rangeChunkSize: params.rangeChunkSize,
disableRange: params.disableRange, disableRange: params.disableRange,
disableStream: params.disableStream, disableStream: params.disableStream,
}); },
rangeTransport
);
} else if (!params.data) {
networkStream = createPDFNetworkStream({
url: params.url,
length: params.length,
httpHeaders: params.httpHeaders,
withCredentials: params.withCredentials,
rangeChunkSize: params.rangeChunkSize,
disableRange: params.disableRange,
disableStream: params.disableStream,
});
}
resolve(networkStream);
});
return Promise.all([workerIdPromise, networkStreamPromise]).then(
function ([workerId, networkStream]) {
if (task.destroyed) {
throw new Error("Loading aborted");
} }
const messageHandler = new MessageHandler( const messageHandler = new MessageHandler(

View File

@ -26,6 +26,12 @@ import {
validateResponseStatus, validateResponseStatus,
} from "./network_utils.js"; } from "./network_utils.js";
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
throw new Error(
'Module "./fetch_stream.js" shall not be used with MOZCENTRAL builds.'
);
}
function createFetchOptions(headers, withCredentials, abortController) { function createFetchOptions(headers, withCredentials, abortController) {
return { return {
method: "GET", method: "GET",

View File

@ -14,11 +14,6 @@
*/ */
/* globals __non_webpack_require__ */ /* globals __non_webpack_require__ */
const fs = __non_webpack_require__("fs");
const http = __non_webpack_require__("http");
const https = __non_webpack_require__("https");
const url = __non_webpack_require__("url");
import { import {
AbortException, AbortException,
assert, assert,
@ -30,6 +25,17 @@ import {
validateRangeRequestCapabilities, validateRangeRequestCapabilities,
} from "./network_utils.js"; } from "./network_utils.js";
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
throw new Error(
'Module "./node_stream.js" shall not be used with MOZCENTRAL builds.'
);
}
const fs = __non_webpack_require__("fs");
const http = __non_webpack_require__("http");
const https = __non_webpack_require__("https");
const url = __non_webpack_require__("url");
const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
function parseUrl(sourceUrl) { function parseUrl(sourceUrl) {

View File

@ -12,42 +12,86 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * 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; 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; typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_BUILD") : void 0;
var pdfjsSharedUtil = require("./shared/util.js"); if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("PRODUCTION")) {
var pdfjsDisplayAPI = require("./display/api.js"); const streamsPromise = Promise.all([
var pdfjsDisplayTextLayer = require("./display/text_layer.js"); SystemJS.import("pdfjs/display/network.js"),
var pdfjsDisplayAnnotationLayer = require("./display/annotation_layer.js"); SystemJS.import("pdfjs/display/fetch_stream.js"),
var pdfjsDisplayDisplayUtils = require("./display/display_utils.js"); ]);
var pdfjsDisplaySVG = require("./display/svg.js"); setPDFNetworkStreamFactory(params => {
const pdfjsDisplayWorkerOptions = require("./display/worker_options.js"); return streamsPromise.then(streams => {
const pdfjsDisplayAPICompatibility = require("./display/api_compatibility.js"); const [{ PDFNetworkStream }, { PDFFetchStream }] = streams;
if (isFetchSupported() && isValidFetchUrl(params.url)) {
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) { return new PDFFetchStream(params);
}
return new PDFNetworkStream(params);
});
});
} else if (PDFJSDev.test("GENERIC")) {
const { isNodeJS } = require("./shared/is_node.js"); const { isNodeJS } = require("./shared/is_node.js");
if (isNodeJS) { if (isNodeJS) {
const PDFNodeStream = require("./display/node_stream.js").PDFNodeStream; const PDFNodeStream = require("./display/node_stream.js").PDFNodeStream;
pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => { setPDFNetworkStreamFactory(params => {
return new PDFNodeStream(params); return new PDFNodeStream(params);
}); });
} else { } else {
const PDFNetworkStream = require("./display/network.js").PDFNetworkStream; const PDFNetworkStream = require("./display/network.js").PDFNetworkStream;
let PDFFetchStream; let PDFFetchStream;
if (pdfjsDisplayDisplayUtils.isFetchSupported()) { if (isFetchSupported()) {
PDFFetchStream = require("./display/fetch_stream.js").PDFFetchStream; PDFFetchStream = require("./display/fetch_stream.js").PDFFetchStream;
} }
pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => { setPDFNetworkStreamFactory(params => {
if ( if (PDFFetchStream && isValidFetchUrl(params.url)) {
PDFFetchStream &&
pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url)
) {
return new PDFFetchStream(params); return new PDFFetchStream(params);
} }
return new PDFNetworkStream(params); return new PDFNetworkStream(params);
@ -69,56 +113,49 @@ if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
return true; return true;
} }
}; };
if ( if (isFetchSupported() && isChromeWithFetchCredentials()) {
pdfjsDisplayDisplayUtils.isFetchSupported() &&
isChromeWithFetchCredentials()
) {
PDFFetchStream = require("./display/fetch_stream.js").PDFFetchStream; PDFFetchStream = require("./display/fetch_stream.js").PDFFetchStream;
} }
pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => { setPDFNetworkStreamFactory(params => {
if ( if (PDFFetchStream && isValidFetchUrl(params.url)) {
PDFFetchStream &&
pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url)
) {
return new PDFFetchStream(params); return new PDFFetchStream(params);
} }
return new PDFNetworkStream(params); return new PDFNetworkStream(params);
}); });
} }
exports.build = pdfjsDisplayAPI.build; export {
exports.version = pdfjsDisplayAPI.version; addLinkAttributes,
exports.getDocument = pdfjsDisplayAPI.getDocument; getFilenameFromUrl,
exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort; LinkTarget,
exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport; loadScript,
exports.PDFWorker = pdfjsDisplayAPI.PDFWorker; PDFDateString,
exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer; RenderingCancelledException,
exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer; build,
exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability; getDocument,
exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses; LoopbackPort,
exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException; PDFDataRangeTransport,
exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException; PDFWorker,
exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics; version,
exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding; CMapCompressionType,
exports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType; createObjectURL,
exports.PermissionFlag = pdfjsSharedUtil.PermissionFlag; createPromiseCapability,
exports.UnexpectedResponseException = createValidAbsoluteUrl,
pdfjsSharedUtil.UnexpectedResponseException; InvalidPDFException,
exports.OPS = pdfjsSharedUtil.OPS; MissingPDFException,
exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel; NativeImageDecoding,
exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES; OPS,
exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl; PasswordResponses,
exports.createObjectURL = pdfjsSharedUtil.createObjectURL; PermissionFlag,
exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters; removeNullCharacters,
exports.shadow = pdfjsSharedUtil.shadow; shadow,
exports.Util = pdfjsSharedUtil.Util; UnexpectedResponseException,
exports.RenderingCancelledException = UNSUPPORTED_FEATURES,
pdfjsDisplayDisplayUtils.RenderingCancelledException; Util,
exports.getFilenameFromUrl = pdfjsDisplayDisplayUtils.getFilenameFromUrl; VerbosityLevel,
exports.LinkTarget = pdfjsDisplayDisplayUtils.LinkTarget; AnnotationLayer,
exports.addLinkAttributes = pdfjsDisplayDisplayUtils.addLinkAttributes; apiCompatibilityParams,
exports.loadScript = pdfjsDisplayDisplayUtils.loadScript; GlobalWorkerOptions,
exports.PDFDateString = pdfjsDisplayDisplayUtils.PDFDateString; renderTextLayer,
exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions; SVGGraphics,
exports.apiCompatibilityParams = };
pdfjsDisplayAPICompatibility.apiCompatibilityParams;

9
src/pdf.worker.js vendored
View File

@ -12,13 +12,12 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * 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"); const pdfjsVersion = PDFJSDev.eval("BUNDLE_VERSION");
/* eslint-disable-next-line no-unused-vars */
const pdfjsBuild = PDFJSDev.eval("BUNDLE_BUILD"); const pdfjsBuild = PDFJSDev.eval("BUNDLE_BUILD");
const pdfjsCoreWorker = require("./core/worker.js"); export { WorkerMessageHandler };
exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;