From e2c8fc61405fd222ffc87c26f0cd27e88d4329e5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 22 Feb 2026 18:15:22 +0100 Subject: [PATCH] Use `Map.prototype.getOrInsertComputed()` in the `src/display/api.js` file --- src/display/api.js | 46 ++++++++++++++++------------------------------ 1 file changed, 16 insertions(+), 30 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index e89807ac0..2c0955556 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -1502,12 +1502,9 @@ class PDFPageProxy { optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent); - let intentState = this._intentStates.get(cacheKey); - if (!intentState) { - intentState = Object.create(null); - this._intentStates.set(cacheKey, intentState); - } - + const intentState = this._intentStates.getOrInsertComputed(cacheKey, () => + Object.create(null) + ); // Ensure that a pending `streamReader` cancel timeout is always aborted. if (intentState.streamReaderCancelTimeout) { clearTimeout(intentState.streamReaderCancelTimeout); @@ -1676,11 +1673,10 @@ class PDFPageProxy { isEditing, /* isOpList = */ true ); - let intentState = this._intentStates.get(intentArgs.cacheKey); - if (!intentState) { - intentState = Object.create(null); - this._intentStates.set(intentArgs.cacheKey, intentState); - } + const intentState = this._intentStates.getOrInsertComputed( + intentArgs.cacheKey, + () => Object.create(null) + ); let opListTask; if (!intentState.opListReadCapability) { @@ -2516,14 +2512,9 @@ class WorkerTransport { } #cacheSimpleMethod(name, data = null) { - const cachedPromise = this.#methodPromises.get(name); - if (cachedPromise) { - return cachedPromise; - } - const promise = this.messageHandler.sendWithPromise(name, data); - - this.#methodPromises.set(name, promise); - return promise; + return this.#methodPromises.getOrInsertComputed(name, () => + this.messageHandler.sendWithPromise(name, data) + ); } #onProgress({ loaded, total }) { @@ -3135,22 +3126,17 @@ class WorkerTransport { } getMetadata() { - const name = "GetMetadata", - cachedPromise = this.#methodPromises.get(name); - if (cachedPromise) { - return cachedPromise; - } - const promise = this.messageHandler - .sendWithPromise(name, null) - .then(results => ({ + const name = "GetMetadata"; + + return this.#methodPromises.getOrInsertComputed(name, () => + this.messageHandler.sendWithPromise(name, null).then(results => ({ info: results[0], metadata: results[1] ? new Metadata(results[1]) : null, contentDispositionFilename: this.#fullReader?.filename ?? null, contentLength: this.#fullReader?.contentLength ?? null, hasStructTree: results[2], - })); - this.#methodPromises.set(name, promise); - return promise; + })) + ); } getMarkInfo() {