Skip to content

Commit

Permalink
Merge pull request #16293 from Snuffleupagus/Node-18
Browse files Browse the repository at this point in the history
[api-minor] Update the minimum supported Node.js version to 18
  • Loading branch information
timvandermeij authored May 7, 2023
2 parents eca4077 + dcd55a7 commit 7ecb323
Show file tree
Hide file tree
Showing 11 changed files with 14 additions and 76 deletions.
4 changes: 0 additions & 4 deletions external/.eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,4 @@
"env": {
"node": true,
},

"rules": {
"unicorn/prefer-at": "off",
},
}
2 changes: 1 addition & 1 deletion external/builder/builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ function preprocess(inFilename, outFilename, defines) {
? outFilename
: function (line) {
if (!line || AllWhitespaceRegexp.test(line)) {
const prevLine = out[out.length - 1];
const prevLine = out.at(-1);
if (!prevLine || AllWhitespaceRegexp.test(prevLine)) {
return; // Avoid adding consecutive blank lines.
}
Expand Down
4 changes: 2 additions & 2 deletions external/builder/preprocessor2.js
Original file line number Diff line number Diff line change
Expand Up @@ -244,8 +244,8 @@ function postprocessNode(ctx, node) {
const block = node.body;
if (
block.body.length > 0 &&
block.body[block.body.length - 1].type === "ReturnStatement" &&
!block.body[block.body.length - 1].argument
block.body.at(-1).type === "ReturnStatement" &&
!block.body.at(-1).argument
) {
// Function body ends with return without arg -- removing it.
block.body.pop();
Expand Down
2 changes: 1 addition & 1 deletion external/cmapscompress/compress.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ function parseCMap(binaryData) {
},
readHexSigned(size) {
const num = this.readHexNumber(size);
const sign = fromHexDigit(num[num.length - 1]) & 1 ? 15 : 0;
const sign = fromHexDigit(num.at(-1)) & 1 ? 15 : 0;
let c = 0;
let result = "";
for (const digit of num) {
Expand Down
5 changes: 1 addition & 4 deletions external/cmapscompress/optimize.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,7 @@ exports.optimizeCMap = function (data) {
const maxDistance = 100,
minItems = 10,
itemsPerBucket = 50;
if (
subitems.length > minItems &&
codes[codes.length - 1] - codes[0] > maxDistance
) {
if (subitems.length > minItems && codes.at(-1) - codes[0] > maxDistance) {
const gapsCount = Math.max(2, (subitems.length / itemsPerBucket) | 0);
const gaps = [];
for (let q = 0; q < gapsCount; q++) {
Expand Down
7 changes: 2 additions & 5 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ const ENV_TARGETS = [
"Chrome >= 88",
"Firefox ESR",
"Safari >= 14.1",
"Node >= 16",
"Node >= 18",
"> 1%",
"not IE > 0",
"not dead",
Expand Down Expand Up @@ -2165,10 +2165,7 @@ function packageJson() {
license: DIST_LICENSE,
optionalDependencies: {
canvas: "^2.11.2",
},
dependencies: {
"path2d-polyfill": "^2.0.1",
"web-streams-polyfill": "^3.2.1",
},
browser: {
canvas: false,
Expand All @@ -2184,7 +2181,7 @@ function packageJson() {
url: DIST_REPO_URL,
},
engines: {
node: ">=16",
node: ">=18",
},
};

Expand Down
18 changes: 1 addition & 17 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
"typogr": "^0.6.8",
"vinyl": "^3.0.0",
"vinyl-fs": "^3.0.3",
"web-streams-polyfill": "^3.2.1",
"webpack": "^5.80.0",
"webpack-stream": "^7.0.0",
"wintersmith": "^2.5.0",
Expand All @@ -69,7 +68,7 @@
"url": "git://github.com/mozilla/pdf.js.git"
},
"engines": {
"node": ">=16"
"node": ">=18"
},
"license": "Apache-2.0"
}
18 changes: 0 additions & 18 deletions src/core/worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,24 +129,6 @@ class WorkerMessageHandler {
"; thus breaking e.g. `for...in` iteration of `Array`s."
);
}

// Ensure that (primarily) Node.js users won't accidentally attempt to use
// a non-translated/non-polyfilled build of the library, since that would
// quickly fail anyway because of missing functionality.
if (
(isNodeJS && typeof Path2D === "undefined") ||
typeof ReadableStream === "undefined"
) {
const partialMsg =
"The browser/environment lacks native support for critical " +
"functionality used by the PDF.js library " +
"(e.g. `Path2D` and/or `ReadableStream`); ";

if (isNodeJS) {
throw new Error(partialMsg + "please use a `legacy`-build instead.");
}
throw new Error(partialMsg + "please update to a supported browser.");
}
}
const workerHandlerName = docId + "_worker";
let handler = new MessageHandler(workerHandlerName, docId, port);
Expand Down
21 changes: 3 additions & 18 deletions src/shared/compatibility.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,39 +36,24 @@ import { isNodeJS } from "./is_node.js";
polyfillPath2D(globalThis);
})();

// Support: Node.js<18.0.0
(function checkReadableStream() {
if (globalThis.ReadableStream || !isNodeJS) {
return;
}
globalThis.ReadableStream = __non_webpack_require__(
"web-streams-polyfill/dist/ponyfill.js"
).ReadableStream;
})();

// Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0
// Support: Chrome<92, Safari<15.4
(function checkArrayAt() {
if (Array.prototype.at) {
return;
}
require("core-js/es/array/at.js");
})();

// Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0
// Support: Chrome<92, Safari<15.4
(function checkTypedArrayAt() {
if (Uint8Array.prototype.at) {
return;
}
require("core-js/es/typed-array/at.js");
})();

// Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0
// Support: Chrome<98, Safari<15.4
(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;
}
Expand Down
6 changes: 2 additions & 4 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint-disable no-var, unicorn/prefer-at */
/* eslint-disable no-var */

"use strict";

Expand Down Expand Up @@ -750,9 +750,7 @@ function refTestPostHandler(req, res) {
});
}

var isDone =
taskResults[taskResults.length - 1] &&
taskResults[taskResults.length - 1][lastPageNum - 1];
var isDone = taskResults.at(-1) && taskResults.at(-1)[lastPageNum - 1];
if (isDone) {
checkRefTestResults(browser, id, taskResults);
session.remaining--;
Expand Down

0 comments on commit 7ecb323

Please sign in to comment.