mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-02-08 00:21:11 +01:00
Please note that while we "support" some (by now) fairly old browsers, that essentially means that the library (and viewer) will load and that the basic functionality will work as intended.[1] However, in older browsers, some functionality may not be available and generally we'll ask users to update to a modern browser when bugs (specific to old browsers) are reported.[2] There's always a question of just how old browsers the PDF.js contributors can realistically support, and here I'm suggesting that we place the cut-off point at approximately *three* years. With that in mind, this patch updates the *minimum* supported browsers (and environments) as follows: - Chrome 73, which was released on 2019-03-12; see https://en.wikipedia.org/wiki/Google_Chrome_version_history - Firefox ESR (as before); see https://wiki.mozilla.org/Release_Management/Calendar - Safari 12.1, which was released on 2019-03-25; see https://en.wikipedia.org/wiki/Safari_version_history#Safari_12 - Node.js 12, which was release on 2019-04-23 (and will soon reach EOL); see https://en.wikipedia.org/wiki/Node.js#Releases --- [1] Assuming a `legacy`-build is being used, of course. [2] In general it's never a good idea to use an old/outdated browser, since those may contain *known* security vulnerabilities.
102 lines
3.4 KiB
JavaScript
102 lines
3.4 KiB
JavaScript
/* Copyright 2017 Mozilla Foundation
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { isNodeJS } from "./is_node.js";
|
|
|
|
// Skip compatibility checks for modern builds and if we already ran the module.
|
|
if (
|
|
(typeof PDFJSDev === "undefined" || !PDFJSDev.test("SKIP_BABEL")) &&
|
|
!globalThis._pdfjsCompatibilityChecked
|
|
) {
|
|
globalThis._pdfjsCompatibilityChecked = true;
|
|
|
|
// Support: Node.js
|
|
(function checkNodeBtoa() {
|
|
if (globalThis.btoa || !isNodeJS) {
|
|
return;
|
|
}
|
|
globalThis.btoa = function (chars) {
|
|
// eslint-disable-next-line no-undef
|
|
return Buffer.from(chars, "binary").toString("base64");
|
|
};
|
|
})();
|
|
|
|
// Support: Node.js
|
|
(function checkNodeAtob() {
|
|
if (globalThis.atob || !isNodeJS) {
|
|
return;
|
|
}
|
|
globalThis.atob = function (input) {
|
|
// eslint-disable-next-line no-undef
|
|
return Buffer.from(input, "base64").toString("binary");
|
|
};
|
|
})();
|
|
|
|
// Support: Node.js
|
|
(function checkDOMMatrix() {
|
|
if (globalThis.DOMMatrix || !isNodeJS) {
|
|
return;
|
|
}
|
|
globalThis.DOMMatrix = require("dommatrix/dist/dommatrix.js");
|
|
})();
|
|
|
|
// Provides support for *recent* additions to the Promise specification,
|
|
// however basic Promise support is assumed to be available natively.
|
|
// Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0
|
|
(function checkPromise() {
|
|
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("IMAGE_DECODERS")) {
|
|
// The current image decoders are synchronous, hence `Promise` shouldn't
|
|
// need to be polyfilled for the IMAGE_DECODERS build target.
|
|
return;
|
|
}
|
|
if (globalThis.Promise.allSettled) {
|
|
return;
|
|
}
|
|
globalThis.Promise = require("core-js/es/promise/index.js");
|
|
})();
|
|
|
|
// Support: Node.js
|
|
(function checkReadableStream() {
|
|
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("IMAGE_DECODERS")) {
|
|
// The current image decoders are synchronous, hence `ReadableStream`
|
|
// shouldn't need to be polyfilled for the IMAGE_DECODERS build target.
|
|
return;
|
|
}
|
|
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("CHROME")) {
|
|
// Slightly reduce the size of the Chromium-extension, given
|
|
// that `ReadableStream` has been supported since Chrome 43.
|
|
return;
|
|
}
|
|
if (globalThis.ReadableStream || !isNodeJS) {
|
|
return;
|
|
}
|
|
globalThis.ReadableStream =
|
|
require("web-streams-polyfill/dist/ponyfill.js").ReadableStream;
|
|
})();
|
|
|
|
// Support: Firefox<94, Chrome<98, Safari, Node.js<17.0.0
|
|
(function checkStructuredClone() {
|
|
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("IMAGE_DECODERS")) {
|
|
// The current image decoders are synchronous, hence `structuredClone`
|
|
// shouldn't need to be polyfilled for the IMAGE_DECODERS build target.
|
|
return;
|
|
}
|
|
if (globalThis.structuredClone) {
|
|
return;
|
|
}
|
|
require("core-js/web/structured-clone.js");
|
|
})();
|
|
}
|