Skip to content

Commit

Permalink
Simplify the getUuid helper function
Browse files Browse the repository at this point in the history
We can remove most feature testing from this helper function, with the exception of `randomUUID` since that's only available in "secure contexts", and also remove the fallback code-path.
Note that this code was only added for Node.js compatibility, and it's no longer necessary now that the minimum support version is `20`; see also https://developer.mozilla.org/en-US/docs/Web/API/Crypto#browser_compatibility

Finally, this patch also adds a basic unit-test for the helper function.
  • Loading branch information
Snuffleupagus committed Nov 21, 2024
1 parent 07765e9 commit c290a12
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
13 changes: 2 additions & 11 deletions src/shared/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -1075,21 +1075,12 @@ function normalizeUnicode(str) {
function getUuid() {
if (
(typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) ||
(typeof crypto !== "undefined" && typeof crypto?.randomUUID === "function")
typeof crypto.randomUUID === "function"
) {
return crypto.randomUUID();
}
const buf = new Uint8Array(32);
if (
typeof crypto !== "undefined" &&
typeof crypto?.getRandomValues === "function"
) {
crypto.getRandomValues(buf);
} else {
for (let i = 0; i < 32; i++) {
buf[i] = Math.floor(Math.random() * 255);
}
}
crypto.getRandomValues(buf);
return bytesToString(buf);
}

Expand Down
9 changes: 9 additions & 0 deletions test/unit/util_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
bytesToString,
createValidAbsoluteUrl,
getModificationDate,
getUuid,
string32,
stringToBytes,
stringToPDFString,
Expand Down Expand Up @@ -248,4 +249,12 @@ describe("util", function () {
expect(getModificationDate(date)).toEqual("31410609020653");
});
});

describe("getUuid", function () {
it("should get uuid string", function () {
const uuid = getUuid();
expect(typeof uuid).toEqual("string");
expect(uuid.length).toBeGreaterThanOrEqual(32);
});
});
});

0 comments on commit c290a12

Please sign in to comment.