19 lines
830 B
TypeScript
19 lines
830 B
TypeScript
import pdfWorkerUrl from "pdfjs-dist/build/pdf.worker.min.mjs?url";
|
|
|
|
export type PdfJs = typeof import("pdfjs-dist");
|
|
|
|
let pdfJsLoadPromise: Promise<PdfJs> | undefined;
|
|
|
|
export function loadPdfJs(): Promise<PdfJs> {
|
|
pdfJsLoadPromise ??= import("pdfjs-dist").then((pdfJs) => {
|
|
const emittedUrl = new URL(pdfWorkerUrl, globalThis.location.href);
|
|
const sameOriginWorkerUrl = new URL(`${emittedUrl.pathname}${emittedUrl.search}${emittedUrl.hash}`, globalThis.location.origin);
|
|
// Worker constructors require a same-origin URL, including builds whose
|
|
// regular assets use a first-party CDN. Keeping API and worker on one
|
|
// package version also avoids PDF.js's fail-closed version mismatch.
|
|
pdfJs.GlobalWorkerOptions.workerSrc = sameOriginWorkerUrl.href;
|
|
return pdfJs;
|
|
});
|
|
return pdfJsLoadPromise;
|
|
}
|