diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index adfc979a7a..1014b91624 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -1764,7 +1764,42 @@ export const parseJsonValue = (value: string): any => { return value; }; +type ReadableStreamWithAsyncIterator = ReadableStream & { + [Symbol.asyncIterator]?: () => AsyncIterableIterator; +}; + +function ensureReadableStreamAsyncIterator() { + if (typeof ReadableStream === 'undefined') { + return; + } + + const prototype = ReadableStream.prototype as ReadableStreamWithAsyncIterator; + if (prototype[Symbol.asyncIterator]) { + return; + } + + Object.defineProperty(prototype, Symbol.asyncIterator, { + value: async function* (this: ReadableStream) { + const reader = this.getReader(); + try { + while (true) { + const { done, value } = await reader.read(); + if (done) { + return; + } + yield value; + } + } finally { + reader.releaseLock(); + } + }, + configurable: true, + writable: true + }); +} + async function ensurePDFjsLoaded() { + ensureReadableStreamAsyncIterator(); if (!window.pdfjsLib) { const pdfjs = await import('pdfjs-dist'); pdfjs.GlobalWorkerOptions.workerSrc = pdfWorkerUrl;