@embedpdf/engines 2.10.1 → 2.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-BpXqcQ3U.cjs +2 -0
- package/dist/browser-BpXqcQ3U.cjs.map +1 -0
- package/dist/{browser-BISJ9naB.js → browser-BuzIa755.js} +95 -6
- package/dist/browser-BuzIa755.js.map +1 -0
- package/dist/direct-engine-IJ8DmFTb.cjs +2 -0
- package/dist/direct-engine-IJ8DmFTb.cjs.map +1 -0
- package/dist/{direct-engine-4LZYs06h.js → direct-engine-oh_i6TH_.js} +351 -32
- package/dist/direct-engine-oh_i6TH_.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/converters/index.cjs +1 -1
- package/dist/lib/converters/index.js +1 -1
- package/dist/lib/image-encoder/bmp.d.ts +13 -0
- package/dist/lib/image-encoder/image-encoder-worker.d.ts +1 -1
- package/dist/lib/image-encoder/worker-pool.d.ts +1 -1
- package/dist/lib/orchestrator/pdf-engine.d.ts +5 -0
- package/dist/lib/orchestrator/remote-executor.d.ts +5 -0
- package/dist/lib/pdfium/cache.d.ts +1 -0
- package/dist/lib/pdfium/engine.d.ts +51 -7
- package/dist/lib/pdfium/index.cjs +1 -1
- package/dist/lib/pdfium/index.js +4 -4
- package/dist/lib/pdfium/web/direct-engine.cjs +1 -1
- package/dist/lib/pdfium/web/direct-engine.js +3 -3
- package/dist/lib/pdfium/web/worker-engine.cjs +1 -1
- package/dist/lib/pdfium/web/worker-engine.cjs.map +1 -1
- package/dist/lib/pdfium/web/worker-engine.js +147 -5
- package/dist/lib/pdfium/web/worker-engine.js.map +1 -1
- package/dist/lib/webworker/engine.cjs +1 -1
- package/dist/lib/webworker/engine.cjs.map +1 -1
- package/dist/lib/webworker/engine.d.ts +10 -0
- package/dist/lib/webworker/engine.js +79 -0
- package/dist/lib/webworker/engine.js.map +1 -1
- package/dist/{pdf-engine-sORqXhQk.js → pdf-engine-D9v0RfKe.js} +56 -3
- package/dist/pdf-engine-D9v0RfKe.js.map +1 -0
- package/dist/pdf-engine-DeiICuca.cjs +2 -0
- package/dist/{pdf-engine-BeHgaBOW.cjs.map → pdf-engine-DeiICuca.cjs.map} +1 -1
- package/dist/preact/index.cjs +1 -1
- package/dist/preact/index.js +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.js +1 -1
- package/dist/svelte/index.cjs +1 -1
- package/dist/svelte/index.js +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.js +1 -1
- package/package.json +7 -7
- package/dist/browser-13mzox-R.cjs +0 -2
- package/dist/browser-13mzox-R.cjs.map +0 -1
- package/dist/browser-BISJ9naB.js.map +0 -1
- package/dist/direct-engine-4LZYs06h.js.map +0 -1
- package/dist/direct-engine-C29Euebw.cjs +0 -2
- package/dist/direct-engine-C29Euebw.cjs.map +0 -1
- package/dist/pdf-engine-BeHgaBOW.cjs +0 -2
- package/dist/pdf-engine-sORqXhQk.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-engine.js","sources":["../../../../src/lib/orchestrator/remote-executor.ts","../../../../src/lib/image-encoder/worker-pool.ts"],"sourcesContent":["import {\n BatchProgress,\n Logger,\n NoopLogger,\n PdfDocumentObject,\n PdfPageObject,\n PdfTask,\n PdfErrorReason,\n PdfFile,\n PdfOpenDocumentBufferOptions,\n PdfMetadataObject,\n PdfBookmarksObject,\n PdfBookmarkObject,\n PdfRenderPageOptions,\n PdfRenderThumbnailOptions,\n PdfRenderPageAnnotationOptions,\n PdfAnnotationObject,\n PdfTextRectObject,\n PdfAttachmentObject,\n PdfAddAttachmentParams,\n PdfWidgetAnnoObject,\n PdfWidgetAnnoField,\n PdfDocumentJavaScriptActionObject,\n PdfWidgetJavaScriptActionObject,\n FormFieldValue,\n PdfFlattenPageOptions,\n PdfPageFlattenResult,\n PdfRedactTextOptions,\n Rect,\n PageTextSlice,\n PdfGlyphObject,\n PdfPageGeometry,\n PdfPageTextRuns,\n PdfPrintOptions,\n PdfSignatureObject,\n AnnotationCreateContext,\n Task,\n TaskError,\n PdfErrorCode,\n SearchResult,\n serializeLogger,\n IPdfiumExecutor,\n ImageDataLike,\n AnnotationAppearanceMap,\n} from '@embedpdf/models';\nimport type { WorkerRequest, WorkerResponse } from './pdfium-native-runner';\nimport type { FontFallbackConfig } from '../pdfium/font-fallback';\n\n/**\n * Options for creating a RemoteExecutor\n */\nexport interface RemoteExecutorOptions {\n /**\n * URL to the pdfium.wasm file (required)\n */\n wasmUrl: string;\n /**\n * Logger instance for debugging\n */\n logger?: Logger;\n /**\n * Font fallback configuration for handling missing fonts\n */\n fontFallback?: FontFallbackConfig;\n}\n\nconst LOG_SOURCE = 'RemoteExecutor';\nconst LOG_CATEGORY = 'Worker';\n\n/**\n * Message types for worker communication\n */\ntype MessageType =\n | 'destroy'\n | 'openDocumentBuffer'\n | 'getMetadata'\n | 'setMetadata'\n | 'getDocPermissions'\n | 'getDocUserPermissions'\n | 'getSignatures'\n | 'getBookmarks'\n | 'setBookmarks'\n | 'deleteBookmarks'\n | 'renderPageRaw'\n | 'renderPageRect'\n | 'renderThumbnailRaw'\n | 'renderPageAnnotationRaw'\n | 'renderPageAnnotationsRaw'\n | 'getPageAnnotations'\n | 'getPageAnnotationsRaw'\n | 'createPageAnnotation'\n | 'updatePageAnnotation'\n | 'removePageAnnotation'\n | 'getPageTextRects'\n | 'searchInPage'\n | 'getAnnotationsBatch'\n | 'searchBatch'\n | 'getAttachments'\n | 'addAttachment'\n | 'removeAttachment'\n | 'readAttachmentContent'\n | 'getDocumentJavaScriptActions'\n | 'getPageAnnoWidgets'\n | 'getPageWidgetJavaScriptActions'\n | 'setFormFieldValue'\n | 'setFormFieldState'\n | 'renameWidgetField'\n | 'shareWidgetField'\n | 'regenerateWidgetAppearances'\n | 'flattenPage'\n | 'extractPages'\n | 'extractText'\n | 'redactTextInRects'\n | 'applyRedaction'\n | 'applyAllRedactions'\n | 'flattenAnnotation'\n | 'getTextSlices'\n | 'getPageGlyphs'\n | 'getPageGeometry'\n | 'getPageTextRuns'\n | 'merge'\n | 'mergePages'\n | 'preparePrintDocument'\n | 'saveAsCopy'\n | 'closeDocument'\n | 'closeAllDocuments'\n | 'setDocumentEncryption'\n | 'removeEncryption'\n | 'unlockOwnerPermissions'\n | 'isEncrypted'\n | 'isOwnerUnlocked';\n\n/**\n * RemoteExecutor - Proxy for worker communication\n *\n * This implements IPdfExecutor but forwards all calls to a Web Worker.\n * It handles:\n * - Serialization/deserialization of messages\n * - Promise/Task conversion\n * - Error handling\n * - Progress tracking\n */\nexport class RemoteExecutor implements IPdfiumExecutor {\n private static READY_TASK_ID = '0';\n private pendingRequests = new Map<string, Task<any, any>>();\n private requestCounter = 0;\n private logger: Logger;\n private readyTask: Task<boolean, PdfErrorReason>;\n\n constructor(\n private worker: Worker,\n options: RemoteExecutorOptions,\n ) {\n this.logger = options.logger ?? new NoopLogger();\n this.worker.addEventListener('message', this.handleMessage);\n\n // Create ready task - will be resolved when worker sends 'ready'\n this.readyTask = new Task<boolean, PdfErrorReason>();\n this.pendingRequests.set(RemoteExecutor.READY_TASK_ID, this.readyTask);\n\n // Send initialization message with WASM URL and font fallback config\n this.worker.postMessage({\n id: RemoteExecutor.READY_TASK_ID,\n type: 'wasmInit',\n wasmUrl: options.wasmUrl,\n logger: options.logger ? serializeLogger(options.logger) : undefined,\n fontFallback: options.fontFallback,\n });\n\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'RemoteExecutor created');\n }\n\n /**\n * Generate unique request ID\n */\n private generateId(): string {\n return `req-${Date.now()}-${this.requestCounter++}`;\n }\n\n /**\n * Send a message to the worker and return a Task\n * Waits for worker to be ready before sending\n */\n private send<T, P = unknown>(method: MessageType, args: any[]): Task<T, PdfErrorReason, P> {\n const id = this.generateId();\n const task = new Task<T, PdfErrorReason, P>();\n\n const request: WorkerRequest = {\n id,\n type: 'execute',\n method,\n args,\n };\n\n // Wait for worker to be ready before sending\n this.readyTask.wait(\n () => {\n this.pendingRequests.set(id, task);\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Sending ${method} request:`, id);\n this.worker.postMessage(request);\n },\n (error) => {\n this.logger.error(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Worker init failed, rejecting ${method}:`,\n error,\n );\n task.reject({\n code: PdfErrorCode.Initialization,\n message: 'Worker initialization failed',\n });\n },\n );\n\n return task;\n }\n\n /**\n * Handle messages from worker\n */\n private handleMessage = (event: MessageEvent<WorkerResponse>) => {\n const response = event.data;\n\n // Handle ready response - resolve the readyTask\n if (response.type === 'ready') {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'Worker is ready');\n this.readyTask.resolve(true);\n return;\n }\n\n const task = this.pendingRequests.get(response.id);\n\n if (!task) {\n this.logger.warn(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Received response for unknown request: ${response.id}`,\n );\n return;\n }\n\n switch (response.type) {\n case 'result':\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Received result for ${response.id}`);\n task.resolve(response.data);\n this.pendingRequests.delete(response.id);\n break;\n\n case 'error':\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Received error for ${response.id}:`,\n response.error,\n );\n if (response.error) {\n task.fail(response.error);\n } else {\n task.reject({ code: PdfErrorCode.Unknown, message: 'Unknown error' });\n }\n this.pendingRequests.delete(response.id);\n break;\n\n case 'progress':\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Received progress for ${response.id}`);\n task.progress(response.progress);\n break;\n }\n };\n\n /**\n * Cleanup and terminate worker\n */\n destroy(): void {\n this.worker.removeEventListener('message', this.handleMessage);\n\n // Reject all pending requests (except readyTask)\n this.pendingRequests.forEach((task, id) => {\n if (id !== RemoteExecutor.READY_TASK_ID) {\n task.abort('Worker destroyed');\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Aborted pending request: ${id}`);\n }\n });\n this.pendingRequests.clear();\n\n this.worker.terminate();\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'RemoteExecutor destroyed');\n }\n\n // ========== IPdfExecutor Implementation ==========\n\n openDocumentBuffer(\n file: PdfFile,\n options?: PdfOpenDocumentBufferOptions,\n ): PdfTask<PdfDocumentObject> {\n return this.send<PdfDocumentObject>('openDocumentBuffer', [file, options]);\n }\n\n getMetadata(doc: PdfDocumentObject): PdfTask<PdfMetadataObject> {\n return this.send<PdfMetadataObject>('getMetadata', [doc]);\n }\n\n setMetadata(doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>): PdfTask<boolean> {\n return this.send<boolean>('setMetadata', [doc, metadata]);\n }\n\n getDocPermissions(doc: PdfDocumentObject): PdfTask<number> {\n return this.send<number>('getDocPermissions', [doc]);\n }\n\n getDocUserPermissions(doc: PdfDocumentObject): PdfTask<number> {\n return this.send<number>('getDocUserPermissions', [doc]);\n }\n\n getSignatures(doc: PdfDocumentObject): PdfTask<PdfSignatureObject[]> {\n return this.send<PdfSignatureObject[]>('getSignatures', [doc]);\n }\n\n getBookmarks(doc: PdfDocumentObject): PdfTask<PdfBookmarksObject> {\n return this.send<PdfBookmarksObject>('getBookmarks', [doc]);\n }\n\n setBookmarks(doc: PdfDocumentObject, bookmarks: PdfBookmarkObject[]): PdfTask<boolean> {\n return this.send<boolean>('setBookmarks', [doc, bookmarks]);\n }\n\n deleteBookmarks(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('deleteBookmarks', [doc]);\n }\n\n renderPageRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderPageRaw', [doc, page, options]);\n }\n\n renderPageRect(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rect: Rect,\n options?: PdfRenderPageOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderPageRect', [doc, page, rect, options]);\n }\n\n renderThumbnailRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderThumbnailOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderThumbnailRaw', [doc, page, options]);\n }\n\n renderPageAnnotationRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderPageAnnotationRaw', [doc, page, annotation, options]);\n }\n\n renderPageAnnotationsRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageAnnotationOptions,\n ): PdfTask<AnnotationAppearanceMap> {\n return this.send<AnnotationAppearanceMap>('renderPageAnnotationsRaw', [doc, page, options]);\n }\n\n getPageAnnotationsRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n ): PdfTask<PdfAnnotationObject[]> {\n return this.send<PdfAnnotationObject[]>('getPageAnnotationsRaw', [doc, page]);\n }\n\n getPageAnnotations(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfAnnotationObject[]> {\n return this.send<PdfAnnotationObject[]>('getPageAnnotations', [doc, page]);\n }\n\n createPageAnnotation<A extends PdfAnnotationObject>(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: A,\n context?: AnnotationCreateContext<A>,\n ): PdfTask<string> {\n return this.send<string>('createPageAnnotation', [doc, page, annotation, context]);\n }\n\n updatePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: { regenerateAppearance?: boolean },\n ): PdfTask<boolean> {\n return this.send<boolean>('updatePageAnnotation', [doc, page, annotation, options]);\n }\n\n removePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('removePageAnnotation', [doc, page, annotation]);\n }\n\n getPageTextRects(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfTextRectObject[]> {\n return this.send<PdfTextRectObject[]>('getPageTextRects', [doc, page]);\n }\n\n searchInPage(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n keyword: string,\n flags: number,\n ): PdfTask<SearchResult[]> {\n return this.send<SearchResult[]>('searchInPage', [doc, page, keyword, flags]);\n }\n\n getAnnotationsBatch(\n doc: PdfDocumentObject,\n pages: PdfPageObject[],\n ): PdfTask<Record<number, PdfAnnotationObject[]>, BatchProgress<PdfAnnotationObject[]>> {\n return this.send<Record<number, PdfAnnotationObject[]>, BatchProgress<PdfAnnotationObject[]>>(\n 'getAnnotationsBatch',\n [doc, pages],\n );\n }\n\n searchBatch(\n doc: PdfDocumentObject,\n pages: PdfPageObject[],\n keyword: string,\n flags: number,\n ): PdfTask<Record<number, SearchResult[]>, BatchProgress<SearchResult[]>> {\n return this.send<Record<number, SearchResult[]>, BatchProgress<SearchResult[]>>('searchBatch', [\n doc,\n pages,\n keyword,\n flags,\n ]);\n }\n\n getAttachments(doc: PdfDocumentObject): PdfTask<PdfAttachmentObject[]> {\n return this.send<PdfAttachmentObject[]>('getAttachments', [doc]);\n }\n\n addAttachment(doc: PdfDocumentObject, params: PdfAddAttachmentParams): PdfTask<boolean> {\n return this.send<boolean>('addAttachment', [doc, params]);\n }\n\n removeAttachment(doc: PdfDocumentObject, attachment: PdfAttachmentObject): PdfTask<boolean> {\n return this.send<boolean>('removeAttachment', [doc, attachment]);\n }\n\n readAttachmentContent(\n doc: PdfDocumentObject,\n attachment: PdfAttachmentObject,\n ): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('readAttachmentContent', [doc, attachment]);\n }\n\n getDocumentJavaScriptActions(\n doc: PdfDocumentObject,\n ): PdfTask<PdfDocumentJavaScriptActionObject[]> {\n return this.send<PdfDocumentJavaScriptActionObject[]>('getDocumentJavaScriptActions', [doc]);\n }\n\n getPageAnnoWidgets(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfWidgetAnnoObject[]> {\n return this.send<PdfWidgetAnnoObject[]>('getPageAnnoWidgets', [doc, page]);\n }\n\n getPageWidgetJavaScriptActions(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n ): PdfTask<PdfWidgetJavaScriptActionObject[]> {\n return this.send<PdfWidgetJavaScriptActionObject[]>('getPageWidgetJavaScriptActions', [\n doc,\n page,\n ]);\n }\n\n setFormFieldValue(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n value: FormFieldValue,\n ): PdfTask<boolean> {\n return this.send<boolean>('setFormFieldValue', [doc, page, annotation, value]);\n }\n\n setFormFieldState(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n field: PdfWidgetAnnoField,\n ): PdfTask<boolean> {\n return this.send<boolean>('setFormFieldState', [doc, page, annotation, field]);\n }\n\n renameWidgetField(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n name: string,\n ): PdfTask<boolean> {\n return this.send<boolean>('renameWidgetField', [doc, page, annotation, name]);\n }\n\n shareWidgetField(\n doc: PdfDocumentObject,\n sourcePage: PdfPageObject,\n sourceAnnotation: PdfWidgetAnnoObject,\n targetPage: PdfPageObject,\n targetAnnotation: PdfWidgetAnnoObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('shareWidgetField', [\n doc,\n sourcePage,\n sourceAnnotation,\n targetPage,\n targetAnnotation,\n ]);\n }\n\n regenerateWidgetAppearances(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotationIds: string[],\n ): PdfTask<boolean> {\n return this.send<boolean>('regenerateWidgetAppearances', [doc, page, annotationIds]);\n }\n\n flattenPage(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfFlattenPageOptions,\n ): PdfTask<PdfPageFlattenResult> {\n return this.send<PdfPageFlattenResult>('flattenPage', [doc, page, options]);\n }\n\n extractPages(doc: PdfDocumentObject, pageIndexes: number[]): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('extractPages', [doc, pageIndexes]);\n }\n\n extractText(doc: PdfDocumentObject, pageIndexes: number[]): PdfTask<string> {\n return this.send<string>('extractText', [doc, pageIndexes]);\n }\n\n redactTextInRects(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ): PdfTask<boolean> {\n return this.send<boolean>('redactTextInRects', [doc, page, rects, options]);\n }\n\n applyRedaction(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('applyRedaction', [doc, page, annotation]);\n }\n\n applyAllRedactions(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<boolean> {\n return this.send<boolean>('applyAllRedactions', [doc, page]);\n }\n\n flattenAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('flattenAnnotation', [doc, page, annotation]);\n }\n\n getTextSlices(doc: PdfDocumentObject, slices: PageTextSlice[]): PdfTask<string[]> {\n return this.send<string[]>('getTextSlices', [doc, slices]);\n }\n\n getPageGlyphs(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfGlyphObject[]> {\n return this.send<PdfGlyphObject[]>('getPageGlyphs', [doc, page]);\n }\n\n getPageGeometry(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfPageGeometry> {\n return this.send<PdfPageGeometry>('getPageGeometry', [doc, page]);\n }\n\n getPageTextRuns(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfPageTextRuns> {\n return this.send<PdfPageTextRuns>('getPageTextRuns', [doc, page]);\n }\n\n merge(files: PdfFile[]): PdfTask<PdfFile> {\n return this.send<PdfFile>('merge', [files]);\n }\n\n mergePages(mergeConfigs: Array<{ docId: string; pageIndices: number[] }>): PdfTask<PdfFile> {\n return this.send<PdfFile>('mergePages', [mergeConfigs]);\n }\n\n preparePrintDocument(doc: PdfDocumentObject, options?: PdfPrintOptions): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('preparePrintDocument', [doc, options]);\n }\n\n saveAsCopy(doc: PdfDocumentObject): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('saveAsCopy', [doc]);\n }\n\n closeDocument(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('closeDocument', [doc]);\n }\n\n closeAllDocuments(): PdfTask<boolean> {\n return this.send<boolean>('closeAllDocuments', []);\n }\n\n setDocumentEncryption(\n doc: PdfDocumentObject,\n userPassword: string,\n ownerPassword: string,\n allowedFlags: number,\n ): PdfTask<boolean> {\n return this.send<boolean>('setDocumentEncryption', [\n doc,\n userPassword,\n ownerPassword,\n allowedFlags,\n ]);\n }\n\n removeEncryption(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('removeEncryption', [doc]);\n }\n\n unlockOwnerPermissions(doc: PdfDocumentObject, ownerPassword: string): PdfTask<boolean> {\n return this.send<boolean>('unlockOwnerPermissions', [doc, ownerPassword]);\n }\n\n isEncrypted(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('isEncrypted', [doc]);\n }\n\n isOwnerUnlocked(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('isOwnerUnlocked', [doc]);\n }\n}\n","import { Logger, NoopLogger } from '@embedpdf/models';\nimport type { EncodeImageRequest, EncodeImageResponse } from './image-encoder-worker';\n\nconst LOG_SOURCE = 'ImageEncoderPool';\nconst LOG_CATEGORY = 'Encoder';\n\ninterface EncodingTask {\n resolve: (blob: Blob) => void;\n reject: (error: Error) => void;\n}\n\n/**\n * Pool of image encoding workers to offload OffscreenCanvas operations\n * from the main PDFium worker thread\n */\nexport class ImageEncoderWorkerPool {\n private workers: Worker[] = [];\n private pendingTasks = new Map<string, EncodingTask>();\n private nextWorkerId = 0;\n private requestCounter = 0;\n private logger: Logger;\n\n /**\n * Create a pool of image encoding workers\n * @param poolSize - Number of workers to create (default: 2)\n * @param workerUrl - URL to the worker script\n * @param logger - Logger instance\n */\n constructor(\n private poolSize: number = 2,\n private workerUrl: string,\n logger?: Logger,\n ) {\n this.logger = logger ?? new NoopLogger();\n this.initialize();\n }\n\n /**\n * Initialize the worker pool\n */\n private initialize() {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Creating worker pool with ${this.poolSize} workers`,\n );\n\n for (let i = 0; i < this.poolSize; i++) {\n try {\n const worker = new Worker(this.workerUrl, { type: 'module' });\n worker.onmessage = this.handleWorkerMessage.bind(this);\n worker.onerror = this.handleWorkerError.bind(this);\n this.workers.push(worker);\n\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Worker ${i} created successfully`);\n } catch (error) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, `Failed to create worker ${i}:`, error);\n }\n }\n }\n\n /**\n * Handle messages from workers\n */\n private handleWorkerMessage(event: MessageEvent<EncodeImageResponse>) {\n const response = event.data;\n const task = this.pendingTasks.get(response.id);\n\n if (!task) {\n this.logger.warn(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Received response for unknown task: ${response.id}`,\n );\n return;\n }\n\n this.pendingTasks.delete(response.id);\n\n if (response.type === 'result') {\n task.resolve(response.data as Blob);\n } else {\n const errorData = response.data as { message: string };\n task.reject(new Error(errorData.message));\n }\n }\n\n /**\n * Handle worker errors\n */\n private handleWorkerError(error: ErrorEvent) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'Worker error:', error.message);\n }\n\n /**\n * Get the next available worker using round-robin\n */\n private getNextWorker(): Worker | null {\n if (this.workers.length === 0) {\n return null;\n }\n\n const worker = this.workers[this.nextWorkerId];\n this.nextWorkerId = (this.nextWorkerId + 1) % this.workers.length;\n return worker;\n }\n\n /**\n * Encode ImageData to Blob using a worker from the pool\n * @param imageData - Raw image data\n * @param imageType - Target image format\n * @param quality - Image quality (0-1) for lossy formats\n * @returns Promise that resolves to encoded Blob\n */\n encode(\n imageData: { data: Uint8ClampedArray; width: number; height: number },\n imageType: 'image/png' | 'image/jpeg' | 'image/webp' = 'image/webp',\n quality?: number,\n ): Promise<Blob> {\n return new Promise((resolve, reject) => {\n const worker = this.getNextWorker();\n\n if (!worker) {\n reject(new Error('No workers available in the pool'));\n return;\n }\n\n const requestId = `encode-${Date.now()}-${this.requestCounter++}`;\n this.pendingTasks.set(requestId, { resolve, reject });\n\n const request: EncodeImageRequest = {\n id: requestId,\n type: 'encode',\n data: {\n imageData: {\n data: imageData.data,\n width: imageData.width,\n height: imageData.height,\n },\n imageType,\n quality,\n },\n };\n\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Sending encoding request ${requestId} (${imageData.width}x${imageData.height})`,\n );\n\n // Transfer the buffer for better performance\n worker.postMessage(request, [imageData.data.buffer]);\n });\n }\n\n /**\n * Destroy all workers in the pool\n */\n destroy() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'Destroying worker pool');\n\n // Reject all pending tasks\n this.pendingTasks.forEach((task, id) => {\n task.reject(new Error('Worker pool destroyed'));\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Rejected pending task: ${id}`);\n });\n this.pendingTasks.clear();\n\n // Terminate all workers\n this.workers.forEach((worker, index) => {\n worker.terminate();\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Worker ${index} terminated`);\n });\n this.workers = [];\n }\n\n /**\n * Get the number of active workers in the pool\n */\n get activeWorkers(): number {\n return this.workers.length;\n }\n\n /**\n * Get the number of pending encoding tasks\n */\n get pendingTasksCount(): number {\n return this.pendingTasks.size;\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker-engine.js","sources":["../../../../src/lib/orchestrator/remote-executor.ts","../../../../src/lib/image-encoder/worker-pool.ts"],"sourcesContent":["import {\n BatchProgress,\n Logger,\n NoopLogger,\n PdfDocumentObject,\n PdfPageObject,\n PdfTask,\n PdfErrorReason,\n PdfFile,\n PdfOpenDocumentBufferOptions,\n PdfMetadataObject,\n PdfBookmarksObject,\n PdfBookmarkObject,\n PdfRenderPageOptions,\n PdfRenderThumbnailOptions,\n PdfRenderPageAnnotationOptions,\n PdfAnnotationObject,\n PdfTextRectObject,\n PdfAttachmentObject,\n PdfAddAttachmentParams,\n PdfWidgetAnnoObject,\n PdfWidgetAnnoField,\n PdfDocumentJavaScriptActionObject,\n PdfWidgetJavaScriptActionObject,\n FormFieldValue,\n PdfFlattenPageOptions,\n PdfPageFlattenResult,\n PdfRedactTextOptions,\n Rect,\n PageTextSlice,\n PdfGlyphObject,\n PdfPageGeometry,\n PdfPageTextRuns,\n PdfPrintOptions,\n PdfSignatureObject,\n AnnotationCreateContext,\n Task,\n TaskError,\n PdfErrorCode,\n SearchResult,\n serializeLogger,\n IPdfiumExecutor,\n ImageDataLike,\n AnnotationAppearanceMap,\n} from '@embedpdf/models';\nimport type { WorkerRequest, WorkerResponse } from './pdfium-native-runner';\nimport type { FontFallbackConfig } from '../pdfium/font-fallback';\n\n/**\n * Options for creating a RemoteExecutor\n */\nexport interface RemoteExecutorOptions {\n /**\n * URL to the pdfium.wasm file (required)\n */\n wasmUrl: string;\n /**\n * Logger instance for debugging\n */\n logger?: Logger;\n /**\n * Font fallback configuration for handling missing fonts\n */\n fontFallback?: FontFallbackConfig;\n}\n\nconst LOG_SOURCE = 'RemoteExecutor';\nconst LOG_CATEGORY = 'Worker';\n\n/**\n * Message types for worker communication\n */\ntype MessageType =\n | 'destroy'\n | 'openDocumentBuffer'\n | 'getMetadata'\n | 'setMetadata'\n | 'getDocPermissions'\n | 'getDocUserPermissions'\n | 'getSignatures'\n | 'getBookmarks'\n | 'setBookmarks'\n | 'deleteBookmarks'\n | 'renderPageRaw'\n | 'renderPageRect'\n | 'renderThumbnailRaw'\n | 'renderPageAnnotationRaw'\n | 'renderPageAnnotationsRaw'\n | 'getPageAnnotations'\n | 'getPageAnnotationsRaw'\n | 'createPageAnnotation'\n | 'updatePageAnnotation'\n | 'removePageAnnotation'\n | 'getPageTextRects'\n | 'searchInPage'\n | 'getAnnotationsBatch'\n | 'searchBatch'\n | 'getAttachments'\n | 'addAttachment'\n | 'removeAttachment'\n | 'readAttachmentContent'\n | 'getDocumentJavaScriptActions'\n | 'getPageAnnoWidgets'\n | 'getPageWidgetJavaScriptActions'\n | 'setFormFieldValue'\n | 'setFormFieldState'\n | 'renameWidgetField'\n | 'shareWidgetField'\n | 'regenerateWidgetAppearances'\n | 'flattenPage'\n | 'extractPages'\n | 'createDocument'\n | 'importPages'\n | 'deletePage'\n | 'extractText'\n | 'redactTextInRects'\n | 'applyRedaction'\n | 'applyAllRedactions'\n | 'flattenAnnotation'\n | 'exportAnnotationAppearanceAsPdf'\n | 'exportAnnotationsAppearanceAsPdf'\n | 'getTextSlices'\n | 'getPageGlyphs'\n | 'getPageGeometry'\n | 'getPageTextRuns'\n | 'merge'\n | 'mergePages'\n | 'preparePrintDocument'\n | 'saveAsCopy'\n | 'closeDocument'\n | 'closeAllDocuments'\n | 'setDocumentEncryption'\n | 'removeEncryption'\n | 'unlockOwnerPermissions'\n | 'isEncrypted'\n | 'isOwnerUnlocked';\n\n/**\n * RemoteExecutor - Proxy for worker communication\n *\n * This implements IPdfExecutor but forwards all calls to a Web Worker.\n * It handles:\n * - Serialization/deserialization of messages\n * - Promise/Task conversion\n * - Error handling\n * - Progress tracking\n */\nexport class RemoteExecutor implements IPdfiumExecutor {\n private static READY_TASK_ID = '0';\n private pendingRequests = new Map<string, Task<any, any>>();\n private requestCounter = 0;\n private logger: Logger;\n private readyTask: Task<boolean, PdfErrorReason>;\n\n constructor(\n private worker: Worker,\n options: RemoteExecutorOptions,\n ) {\n this.logger = options.logger ?? new NoopLogger();\n this.worker.addEventListener('message', this.handleMessage);\n\n // Create ready task - will be resolved when worker sends 'ready'\n this.readyTask = new Task<boolean, PdfErrorReason>();\n this.pendingRequests.set(RemoteExecutor.READY_TASK_ID, this.readyTask);\n\n // Send initialization message with WASM URL and font fallback config\n this.worker.postMessage({\n id: RemoteExecutor.READY_TASK_ID,\n type: 'wasmInit',\n wasmUrl: options.wasmUrl,\n logger: options.logger ? serializeLogger(options.logger) : undefined,\n fontFallback: options.fontFallback,\n });\n\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'RemoteExecutor created');\n }\n\n /**\n * Generate unique request ID\n */\n private generateId(): string {\n return `req-${Date.now()}-${this.requestCounter++}`;\n }\n\n /**\n * Send a message to the worker and return a Task\n * Waits for worker to be ready before sending\n */\n private send<T, P = unknown>(method: MessageType, args: any[]): Task<T, PdfErrorReason, P> {\n const id = this.generateId();\n const task = new Task<T, PdfErrorReason, P>();\n\n const request: WorkerRequest = {\n id,\n type: 'execute',\n method,\n args,\n };\n\n // Wait for worker to be ready before sending\n this.readyTask.wait(\n () => {\n this.pendingRequests.set(id, task);\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Sending ${method} request:`, id);\n this.worker.postMessage(request);\n },\n (error) => {\n this.logger.error(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Worker init failed, rejecting ${method}:`,\n error,\n );\n task.reject({\n code: PdfErrorCode.Initialization,\n message: 'Worker initialization failed',\n });\n },\n );\n\n return task;\n }\n\n /**\n * Handle messages from worker\n */\n private handleMessage = (event: MessageEvent<WorkerResponse>) => {\n const response = event.data;\n\n // Handle ready response - resolve the readyTask\n if (response.type === 'ready') {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'Worker is ready');\n this.readyTask.resolve(true);\n return;\n }\n\n const task = this.pendingRequests.get(response.id);\n\n if (!task) {\n this.logger.warn(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Received response for unknown request: ${response.id}`,\n );\n return;\n }\n\n switch (response.type) {\n case 'result':\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Received result for ${response.id}`);\n task.resolve(response.data);\n this.pendingRequests.delete(response.id);\n break;\n\n case 'error':\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Received error for ${response.id}:`,\n response.error,\n );\n if (response.error) {\n task.fail(response.error);\n } else {\n task.reject({ code: PdfErrorCode.Unknown, message: 'Unknown error' });\n }\n this.pendingRequests.delete(response.id);\n break;\n\n case 'progress':\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Received progress for ${response.id}`);\n task.progress(response.progress);\n break;\n }\n };\n\n /**\n * Cleanup and terminate worker\n */\n destroy(): void {\n this.worker.removeEventListener('message', this.handleMessage);\n\n // Reject all pending requests (except readyTask)\n this.pendingRequests.forEach((task, id) => {\n if (id !== RemoteExecutor.READY_TASK_ID) {\n task.abort('Worker destroyed');\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Aborted pending request: ${id}`);\n }\n });\n this.pendingRequests.clear();\n\n this.worker.terminate();\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'RemoteExecutor destroyed');\n }\n\n // ========== IPdfExecutor Implementation ==========\n\n openDocumentBuffer(\n file: PdfFile,\n options?: PdfOpenDocumentBufferOptions,\n ): PdfTask<PdfDocumentObject> {\n return this.send<PdfDocumentObject>('openDocumentBuffer', [file, options]);\n }\n\n getMetadata(doc: PdfDocumentObject): PdfTask<PdfMetadataObject> {\n return this.send<PdfMetadataObject>('getMetadata', [doc]);\n }\n\n setMetadata(doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>): PdfTask<boolean> {\n return this.send<boolean>('setMetadata', [doc, metadata]);\n }\n\n getDocPermissions(doc: PdfDocumentObject): PdfTask<number> {\n return this.send<number>('getDocPermissions', [doc]);\n }\n\n getDocUserPermissions(doc: PdfDocumentObject): PdfTask<number> {\n return this.send<number>('getDocUserPermissions', [doc]);\n }\n\n getSignatures(doc: PdfDocumentObject): PdfTask<PdfSignatureObject[]> {\n return this.send<PdfSignatureObject[]>('getSignatures', [doc]);\n }\n\n getBookmarks(doc: PdfDocumentObject): PdfTask<PdfBookmarksObject> {\n return this.send<PdfBookmarksObject>('getBookmarks', [doc]);\n }\n\n setBookmarks(doc: PdfDocumentObject, bookmarks: PdfBookmarkObject[]): PdfTask<boolean> {\n return this.send<boolean>('setBookmarks', [doc, bookmarks]);\n }\n\n deleteBookmarks(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('deleteBookmarks', [doc]);\n }\n\n renderPageRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderPageRaw', [doc, page, options]);\n }\n\n renderPageRect(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rect: Rect,\n options?: PdfRenderPageOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderPageRect', [doc, page, rect, options]);\n }\n\n renderThumbnailRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderThumbnailOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderThumbnailRaw', [doc, page, options]);\n }\n\n renderPageAnnotationRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ): PdfTask<ImageDataLike> {\n return this.send<ImageDataLike>('renderPageAnnotationRaw', [doc, page, annotation, options]);\n }\n\n renderPageAnnotationsRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageAnnotationOptions,\n ): PdfTask<AnnotationAppearanceMap> {\n return this.send<AnnotationAppearanceMap>('renderPageAnnotationsRaw', [doc, page, options]);\n }\n\n getPageAnnotationsRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n ): PdfTask<PdfAnnotationObject[]> {\n return this.send<PdfAnnotationObject[]>('getPageAnnotationsRaw', [doc, page]);\n }\n\n getPageAnnotations(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfAnnotationObject[]> {\n return this.send<PdfAnnotationObject[]>('getPageAnnotations', [doc, page]);\n }\n\n createPageAnnotation<A extends PdfAnnotationObject>(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: A,\n context?: AnnotationCreateContext<A>,\n ): PdfTask<string> {\n return this.send<string>('createPageAnnotation', [doc, page, annotation, context]);\n }\n\n updatePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: { regenerateAppearance?: boolean },\n ): PdfTask<boolean> {\n return this.send<boolean>('updatePageAnnotation', [doc, page, annotation, options]);\n }\n\n removePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('removePageAnnotation', [doc, page, annotation]);\n }\n\n getPageTextRects(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfTextRectObject[]> {\n return this.send<PdfTextRectObject[]>('getPageTextRects', [doc, page]);\n }\n\n searchInPage(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n keyword: string,\n flags: number,\n ): PdfTask<SearchResult[]> {\n return this.send<SearchResult[]>('searchInPage', [doc, page, keyword, flags]);\n }\n\n getAnnotationsBatch(\n doc: PdfDocumentObject,\n pages: PdfPageObject[],\n ): PdfTask<Record<number, PdfAnnotationObject[]>, BatchProgress<PdfAnnotationObject[]>> {\n return this.send<Record<number, PdfAnnotationObject[]>, BatchProgress<PdfAnnotationObject[]>>(\n 'getAnnotationsBatch',\n [doc, pages],\n );\n }\n\n searchBatch(\n doc: PdfDocumentObject,\n pages: PdfPageObject[],\n keyword: string,\n flags: number,\n ): PdfTask<Record<number, SearchResult[]>, BatchProgress<SearchResult[]>> {\n return this.send<Record<number, SearchResult[]>, BatchProgress<SearchResult[]>>('searchBatch', [\n doc,\n pages,\n keyword,\n flags,\n ]);\n }\n\n getAttachments(doc: PdfDocumentObject): PdfTask<PdfAttachmentObject[]> {\n return this.send<PdfAttachmentObject[]>('getAttachments', [doc]);\n }\n\n addAttachment(doc: PdfDocumentObject, params: PdfAddAttachmentParams): PdfTask<boolean> {\n return this.send<boolean>('addAttachment', [doc, params]);\n }\n\n removeAttachment(doc: PdfDocumentObject, attachment: PdfAttachmentObject): PdfTask<boolean> {\n return this.send<boolean>('removeAttachment', [doc, attachment]);\n }\n\n readAttachmentContent(\n doc: PdfDocumentObject,\n attachment: PdfAttachmentObject,\n ): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('readAttachmentContent', [doc, attachment]);\n }\n\n getDocumentJavaScriptActions(\n doc: PdfDocumentObject,\n ): PdfTask<PdfDocumentJavaScriptActionObject[]> {\n return this.send<PdfDocumentJavaScriptActionObject[]>('getDocumentJavaScriptActions', [doc]);\n }\n\n getPageAnnoWidgets(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfWidgetAnnoObject[]> {\n return this.send<PdfWidgetAnnoObject[]>('getPageAnnoWidgets', [doc, page]);\n }\n\n getPageWidgetJavaScriptActions(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n ): PdfTask<PdfWidgetJavaScriptActionObject[]> {\n return this.send<PdfWidgetJavaScriptActionObject[]>('getPageWidgetJavaScriptActions', [\n doc,\n page,\n ]);\n }\n\n setFormFieldValue(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n value: FormFieldValue,\n ): PdfTask<boolean> {\n return this.send<boolean>('setFormFieldValue', [doc, page, annotation, value]);\n }\n\n setFormFieldState(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n field: PdfWidgetAnnoField,\n ): PdfTask<boolean> {\n return this.send<boolean>('setFormFieldState', [doc, page, annotation, field]);\n }\n\n renameWidgetField(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n name: string,\n ): PdfTask<boolean> {\n return this.send<boolean>('renameWidgetField', [doc, page, annotation, name]);\n }\n\n shareWidgetField(\n doc: PdfDocumentObject,\n sourcePage: PdfPageObject,\n sourceAnnotation: PdfWidgetAnnoObject,\n targetPage: PdfPageObject,\n targetAnnotation: PdfWidgetAnnoObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('shareWidgetField', [\n doc,\n sourcePage,\n sourceAnnotation,\n targetPage,\n targetAnnotation,\n ]);\n }\n\n regenerateWidgetAppearances(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotationIds: string[],\n ): PdfTask<boolean> {\n return this.send<boolean>('regenerateWidgetAppearances', [doc, page, annotationIds]);\n }\n\n flattenPage(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfFlattenPageOptions,\n ): PdfTask<PdfPageFlattenResult> {\n return this.send<PdfPageFlattenResult>('flattenPage', [doc, page, options]);\n }\n\n extractPages(doc: PdfDocumentObject, pageIndexes: number[]): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('extractPages', [doc, pageIndexes]);\n }\n\n createDocument(id: string): PdfTask<PdfDocumentObject> {\n return this.send<PdfDocumentObject>('createDocument', [id]);\n }\n\n importPages(\n destDoc: PdfDocumentObject,\n srcDoc: PdfDocumentObject,\n srcPageIndices: number[],\n insertIndex?: number,\n ): PdfTask<PdfPageObject[]> {\n return this.send<PdfPageObject[]>('importPages', [\n destDoc,\n srcDoc,\n srcPageIndices,\n insertIndex,\n ]);\n }\n\n deletePage(doc: PdfDocumentObject, pageIndex: number): PdfTask<boolean> {\n return this.send<boolean>('deletePage', [doc, pageIndex]);\n }\n\n extractText(doc: PdfDocumentObject, pageIndexes: number[]): PdfTask<string> {\n return this.send<string>('extractText', [doc, pageIndexes]);\n }\n\n redactTextInRects(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ): PdfTask<boolean> {\n return this.send<boolean>('redactTextInRects', [doc, page, rects, options]);\n }\n\n applyRedaction(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('applyRedaction', [doc, page, annotation]);\n }\n\n applyAllRedactions(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<boolean> {\n return this.send<boolean>('applyAllRedactions', [doc, page]);\n }\n\n flattenAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ): PdfTask<boolean> {\n return this.send<boolean>('flattenAnnotation', [doc, page, annotation]);\n }\n\n exportAnnotationAppearanceAsPdf(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('exportAnnotationAppearanceAsPdf', [doc, page, annotation]);\n }\n\n exportAnnotationsAppearanceAsPdf(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotations: PdfAnnotationObject[],\n ): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('exportAnnotationsAppearanceAsPdf', [doc, page, annotations]);\n }\n\n getTextSlices(doc: PdfDocumentObject, slices: PageTextSlice[]): PdfTask<string[]> {\n return this.send<string[]>('getTextSlices', [doc, slices]);\n }\n\n getPageGlyphs(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfGlyphObject[]> {\n return this.send<PdfGlyphObject[]>('getPageGlyphs', [doc, page]);\n }\n\n getPageGeometry(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfPageGeometry> {\n return this.send<PdfPageGeometry>('getPageGeometry', [doc, page]);\n }\n\n getPageTextRuns(doc: PdfDocumentObject, page: PdfPageObject): PdfTask<PdfPageTextRuns> {\n return this.send<PdfPageTextRuns>('getPageTextRuns', [doc, page]);\n }\n\n merge(files: PdfFile[]): PdfTask<PdfFile> {\n return this.send<PdfFile>('merge', [files]);\n }\n\n mergePages(mergeConfigs: Array<{ docId: string; pageIndices: number[] }>): PdfTask<PdfFile> {\n return this.send<PdfFile>('mergePages', [mergeConfigs]);\n }\n\n preparePrintDocument(doc: PdfDocumentObject, options?: PdfPrintOptions): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('preparePrintDocument', [doc, options]);\n }\n\n saveAsCopy(doc: PdfDocumentObject): PdfTask<ArrayBuffer> {\n return this.send<ArrayBuffer>('saveAsCopy', [doc]);\n }\n\n closeDocument(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('closeDocument', [doc]);\n }\n\n closeAllDocuments(): PdfTask<boolean> {\n return this.send<boolean>('closeAllDocuments', []);\n }\n\n setDocumentEncryption(\n doc: PdfDocumentObject,\n userPassword: string,\n ownerPassword: string,\n allowedFlags: number,\n ): PdfTask<boolean> {\n return this.send<boolean>('setDocumentEncryption', [\n doc,\n userPassword,\n ownerPassword,\n allowedFlags,\n ]);\n }\n\n removeEncryption(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('removeEncryption', [doc]);\n }\n\n unlockOwnerPermissions(doc: PdfDocumentObject, ownerPassword: string): PdfTask<boolean> {\n return this.send<boolean>('unlockOwnerPermissions', [doc, ownerPassword]);\n }\n\n isEncrypted(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('isEncrypted', [doc]);\n }\n\n isOwnerUnlocked(doc: PdfDocumentObject): PdfTask<boolean> {\n return this.send<boolean>('isOwnerUnlocked', [doc]);\n }\n}\n","import { Logger, NoopLogger } from '@embedpdf/models';\nimport type { EncodeImageRequest, EncodeImageResponse } from './image-encoder-worker';\n\nconst LOG_SOURCE = 'ImageEncoderPool';\nconst LOG_CATEGORY = 'Encoder';\n\ninterface EncodingTask {\n resolve: (blob: Blob) => void;\n reject: (error: Error) => void;\n}\n\n/**\n * Pool of image encoding workers to offload OffscreenCanvas operations\n * from the main PDFium worker thread\n */\nexport class ImageEncoderWorkerPool {\n private workers: Worker[] = [];\n private pendingTasks = new Map<string, EncodingTask>();\n private nextWorkerId = 0;\n private requestCounter = 0;\n private logger: Logger;\n\n /**\n * Create a pool of image encoding workers\n * @param poolSize - Number of workers to create (default: 2)\n * @param workerUrl - URL to the worker script\n * @param logger - Logger instance\n */\n constructor(\n private poolSize: number = 2,\n private workerUrl: string,\n logger?: Logger,\n ) {\n this.logger = logger ?? new NoopLogger();\n this.initialize();\n }\n\n /**\n * Initialize the worker pool\n */\n private initialize() {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Creating worker pool with ${this.poolSize} workers`,\n );\n\n for (let i = 0; i < this.poolSize; i++) {\n try {\n const worker = new Worker(this.workerUrl, { type: 'module' });\n worker.onmessage = this.handleWorkerMessage.bind(this);\n worker.onerror = this.handleWorkerError.bind(this);\n this.workers.push(worker);\n\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Worker ${i} created successfully`);\n } catch (error) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, `Failed to create worker ${i}:`, error);\n }\n }\n }\n\n /**\n * Handle messages from workers\n */\n private handleWorkerMessage(event: MessageEvent<EncodeImageResponse>) {\n const response = event.data;\n const task = this.pendingTasks.get(response.id);\n\n if (!task) {\n this.logger.warn(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Received response for unknown task: ${response.id}`,\n );\n return;\n }\n\n this.pendingTasks.delete(response.id);\n\n if (response.type === 'result') {\n task.resolve(response.data as Blob);\n } else {\n const errorData = response.data as { message: string };\n task.reject(new Error(errorData.message));\n }\n }\n\n /**\n * Handle worker errors\n */\n private handleWorkerError(error: ErrorEvent) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'Worker error:', error.message);\n }\n\n /**\n * Get the next available worker using round-robin\n */\n private getNextWorker(): Worker | null {\n if (this.workers.length === 0) {\n return null;\n }\n\n const worker = this.workers[this.nextWorkerId];\n this.nextWorkerId = (this.nextWorkerId + 1) % this.workers.length;\n return worker;\n }\n\n /**\n * Encode ImageData to Blob using a worker from the pool\n * @param imageData - Raw image data\n * @param imageType - Target image format\n * @param quality - Image quality (0-1) for lossy formats\n * @returns Promise that resolves to encoded Blob\n */\n encode(\n imageData: { data: Uint8ClampedArray; width: number; height: number },\n imageType: 'image/png' | 'image/jpeg' | 'image/webp' | 'image/bmp' = 'image/png',\n quality?: number,\n ): Promise<Blob> {\n return new Promise((resolve, reject) => {\n const worker = this.getNextWorker();\n\n if (!worker) {\n reject(new Error('No workers available in the pool'));\n return;\n }\n\n const requestId = `encode-${Date.now()}-${this.requestCounter++}`;\n this.pendingTasks.set(requestId, { resolve, reject });\n\n const request: EncodeImageRequest = {\n id: requestId,\n type: 'encode',\n data: {\n imageData: {\n data: imageData.data,\n width: imageData.width,\n height: imageData.height,\n },\n imageType,\n quality,\n },\n };\n\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n `Sending encoding request ${requestId} (${imageData.width}x${imageData.height})`,\n );\n\n // Transfer the buffer for better performance\n worker.postMessage(request, [imageData.data.buffer]);\n });\n }\n\n /**\n * Destroy all workers in the pool\n */\n destroy() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'Destroying worker pool');\n\n // Reject all pending tasks\n this.pendingTasks.forEach((task, id) => {\n task.reject(new Error('Worker pool destroyed'));\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Rejected pending task: ${id}`);\n });\n this.pendingTasks.clear();\n\n // Terminate all workers\n this.workers.forEach((worker, index) => {\n worker.terminate();\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, `Worker ${index} terminated`);\n });\n this.workers = [];\n }\n\n /**\n * Get the number of active workers in the pool\n */\n get activeWorkers(): number {\n return this.workers.length;\n }\n\n /**\n * Get the number of pending encoding tasks\n */\n get pendingTasksCount(): number {\n return this.pendingTasks.size;\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/models"),t="WebWorkerEngine",r="Engine";function s(e,t,r){return{id:e,type:"ExecuteRequest",data:{name:t,args:r}}}class n extends e.Task{constructor(e,t){super(),this.worker=e,this.messageId=t}abort(e){super.abort(e),this.worker.postMessage({id:this.messageId,type:"AbortRequest"})}progress(e){super.progress(e)}}const o=class o{constructor(s,i=new e.NoopLogger){this.worker=s,this.logger=i,this.tasks=new Map,this.handle=e=>{this.logger.debug(t,r,"webworker engine start handling message: ",e.data);try{const t=e.data,r=this.tasks.get(t.id);if(!r)return;switch(t.type){case"ReadyResponse":this.readyTask.resolve(!0);break;case"ExecuteProgress":r.progress(t.data);break;case"ExecuteResponse":switch(t.data.type){case"result":r.resolve(t.data.value);break;case"error":r.reject(t.data.value.reason)}this.tasks.delete(t.id)}}catch(s){this.logger.error(t,r,"webworker met error when handling message: ",s)}},this.worker.addEventListener("message",this.handle),this.readyTask=new n(this.worker,o.readyTaskId),this.tasks.set(o.readyTaskId,this.readyTask)}generateRequestId(e){return`${e}.${Date.now()}.${Math.random()}`}destroy(){this.logger.debug(t,r,"destroy");const e=this.generateRequestId("General"),o=new n(this.worker,e),i=()=>{this.worker.removeEventListener("message",this.handle),this.worker.terminate()};o.wait(i,i);const g=s(e,"destroy",[]);return this.proxy(o,g),o}openDocumentUrl(e,o){this.logger.debug(t,r,"openDocumentUrl",e.url,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"openDocumentUrl",[e,o]);return this.proxy(g,a),g}openDocumentBuffer(e,o){this.logger.debug(t,r,"openDocumentBuffer",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"openDocumentBuffer",[e,o]);return this.proxy(g,a),g}getMetadata(e){this.logger.debug(t,r,"getMetadata",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getMetadata",[e]);return this.proxy(i,g),i}setMetadata(e,o){this.logger.debug(t,r,"setMetadata",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"setMetadata",[e,o]);return this.proxy(g,a),g}getDocPermissions(e){this.logger.debug(t,r,"getDocPermissions",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getDocPermissions",[e]);return this.proxy(i,g),i}getDocUserPermissions(e){this.logger.debug(t,r,"getDocUserPermissions",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getDocUserPermissions",[e]);return this.proxy(i,g),i}getBookmarks(e){this.logger.debug(t,r,"getBookmarks",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getBookmarks",[e]);return this.proxy(i,g),i}setBookmarks(e,o){this.logger.debug(t,r,"setBookmarks",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"setBookmarks",[e,o]);return this.proxy(g,a),g}deleteBookmarks(e){this.logger.debug(t,r,"deleteBookmarks",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"deleteBookmarks",[e]);return this.proxy(i,g),i}getSignatures(e){this.logger.debug(t,r,"getSignatures",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getSignatures",[e]);return this.proxy(i,g),i}renderPage(e,o,i){this.logger.debug(t,r,"renderPage",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPage",[e,o,i]);return this.proxy(a,d),a}renderPageRect(e,o,i,g){this.logger.debug(t,r,"renderPageRect",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renderPageRect",[e,o,i,g]);return this.proxy(d,h),d}renderPageRaw(e,o,i){this.logger.debug(t,r,"renderPageRaw",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPageRaw",[e,o,i]);return this.proxy(a,d),a}renderPageRectRaw(e,o,i,g){this.logger.debug(t,r,"renderPageRectRaw",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renderPageRectRaw",[e,o,i,g]);return this.proxy(d,h),d}renderPageAnnotation(e,o,i,g){this.logger.debug(t,r,"renderAnnotation",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renderPageAnnotation",[e,o,i,g]);return this.proxy(d,h),d}renderPageAnnotations(e,o,i){this.logger.debug(t,r,"renderPageAnnotations",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPageAnnotations",[e,o,i]);return this.proxy(a,d),a}renderPageAnnotationsRaw(e,o,i){this.logger.debug(t,r,"renderPageAnnotationsRaw",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPageAnnotationsRaw",[e,o,i]);return this.proxy(a,d),a}getAllAnnotations(e){this.logger.debug(t,r,"getAllAnnotations",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getAllAnnotations",[e]);return this.proxy(i,g),i}getPageAnnotations(e,o){this.logger.debug(t,r,"getPageAnnotations",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageAnnotations",[e,o]);return this.proxy(g,a),g}getPageAnnoWidgets(e,o){this.logger.debug(t,r,"getPageAnnoWidgets",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageAnnoWidgets",[e,o]);return this.proxy(g,a),g}getDocumentJavaScriptActions(e){this.logger.debug(t,r,"getDocumentJavaScriptActions",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getDocumentJavaScriptActions",[e]);return this.proxy(i,g),i}getPageWidgetJavaScriptActions(e,o){this.logger.debug(t,r,"getPageWidgetJavaScriptActions",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageWidgetJavaScriptActions",[e,o]);return this.proxy(g,a),g}createPageAnnotation(e,o,i,g){this.logger.debug(t,r,"createPageAnnotations",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"createPageAnnotation",[e,o,i,g]);return this.proxy(d,h),d}updatePageAnnotation(e,o,i,g){this.logger.debug(t,r,"updatePageAnnotation",e,o,i);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"updatePageAnnotation",[e,o,i,g]);return this.proxy(d,h),d}removePageAnnotation(e,o,i){this.logger.debug(t,r,"removePageAnnotations",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"removePageAnnotation",[e,o,i]);return this.proxy(a,d),a}getPageTextRects(e,o){this.logger.debug(t,r,"getPageTextRects",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageTextRects",[e,o]);return this.proxy(g,a),g}renderThumbnail(e,o,i){this.logger.debug(t,r,"renderThumbnail",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderThumbnail",[e,o,i]);return this.proxy(a,d),a}searchAllPages(e,o,i){this.logger.debug(t,r,"searchAllPages",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"searchAllPages",[e,o,i]);return this.proxy(a,d),a}saveAsCopy(e){this.logger.debug(t,r,"saveAsCopy",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"saveAsCopy",[e]);return this.proxy(i,g),i}getAttachments(e){this.logger.debug(t,r,"getAttachments",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getAttachments",[e]);return this.proxy(i,g),i}addAttachment(e,o){this.logger.debug(t,r,"addAttachment",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"addAttachment",[e,o]);return this.proxy(g,a),g}removeAttachment(e,o){this.logger.debug(t,r,"removeAttachment",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"removeAttachment",[e,o]);return this.proxy(g,a),g}readAttachmentContent(e,o){this.logger.debug(t,r,"readAttachmentContent",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"readAttachmentContent",[e,o]);return this.proxy(g,a),g}setFormFieldValue(e,o,i,g){this.logger.debug(t,r,"setFormFieldValue",e,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"setFormFieldValue",[e,o,i,g]);return this.proxy(d,h),d}setFormFieldState(e,o,i,g){this.logger.debug(t,r,"setFormFieldState",e,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"setFormFieldState",[e,o,i,g]);return this.proxy(d,h),d}renameWidgetField(e,o,i,g){this.logger.debug(t,r,"renameWidgetField",e,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renameWidgetField",[e,o,i,g]);return this.proxy(d,h),d}shareWidgetField(e,o,i,g,a){this.logger.debug(t,r,"shareWidgetField",e,i,a);const d=this.generateRequestId(e.id),h=new n(this.worker,d),u=s(d,"shareWidgetField",[e,o,i,g,a]);return this.proxy(h,u),h}regenerateWidgetAppearances(e,o,i){this.logger.debug(t,r,"regenerateWidgetAppearances",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"regenerateWidgetAppearances",[e,o,i]);return this.proxy(a,d),a}flattenPage(e,o,i){this.logger.debug(t,r,"flattenPage",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"flattenPage",[e,o,i]);return this.proxy(a,d),a}extractPages(e,o){this.logger.debug(t,r,"extractPages",e);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"extractPages",[e,o]);return this.proxy(g,a),g}redactTextInRects(e,o,i,g){this.logger.debug(t,r,"redactTextInRects",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"redactTextInRects",[e,o,i,g]);return this.proxy(d,h),d}applyRedaction(e,o,i){this.logger.debug(t,r,"applyRedaction",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"applyRedaction",[e,o,i]);return this.proxy(a,d),a}applyAllRedactions(e,o){this.logger.debug(t,r,"applyAllRedactions",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"applyAllRedactions",[e,o]);return this.proxy(g,a),g}flattenAnnotation(e,o,i){this.logger.debug(t,r,"flattenAnnotation",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"flattenAnnotation",[e,o,i]);return this.proxy(a,d),a}extractText(e,o){this.logger.debug(t,r,"extractText",e);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"extractText",[e,o]);return this.proxy(g,a),g}getTextSlices(e,o){this.logger.debug(t,r,"getTextSlices",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getTextSlices",[e,o]);return this.proxy(g,a),g}getPageGlyphs(e,o){this.logger.debug(t,r,"getPageGlyphs",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageGlyphs",[e,o]);return this.proxy(g,a),g}getPageGeometry(e,o){this.logger.debug(t,r,"getPageGeometry",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageGeometry",[e,o]);return this.proxy(g,a),g}getPageTextRuns(e,o){this.logger.debug(t,r,"getPageTextRuns",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageTextRuns",[e,o]);return this.proxy(g,a),g}merge(e){this.logger.debug(t,r,"merge",e);const o=e.map(e=>e.id).join("."),i=this.generateRequestId(o),g=new n(this.worker,i),a=s(i,"merge",[e]);return this.proxy(g,a),g}mergePages(e){this.logger.debug(t,r,"mergePages",e);const o=this.generateRequestId(e.map(e=>e.docId).join(".")),i=new n(this.worker,o),g=s(o,"mergePages",[e]);return this.proxy(i,g),i}preparePrintDocument(e,o){this.logger.debug(t,r,"preparePrintDocument",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"preparePrintDocument",[e,o]);return this.proxy(g,a),g}closeDocument(e){this.logger.debug(t,r,"closeDocument",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"closeDocument",[e]);return this.proxy(i,g),i}closeAllDocuments(){this.logger.debug(t,r,"closeAllDocuments");const e=this.generateRequestId("closeAllDocuments"),o=new n(this.worker,e),i=s(e,"closeAllDocuments",[]);return this.proxy(o,i),o}setDocumentEncryption(e,o,i,g){this.logger.debug(t,r,"setDocumentEncryption",e,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"setDocumentEncryption",[e,o,i,g]);return this.proxy(d,h),d}removeEncryption(e){this.logger.debug(t,r,"removeEncryption",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"removeEncryption",[e]);return this.proxy(i,g),i}unlockOwnerPermissions(e,o){this.logger.debug(t,r,"unlockOwnerPermissions",e);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"unlockOwnerPermissions",[e,o]);return this.proxy(g,a),g}isEncrypted(e){this.logger.debug(t,r,"isEncrypted",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"isEncrypted",[e]);return this.proxy(i,g),i}isOwnerUnlocked(e){this.logger.debug(t,r,"isOwnerUnlocked",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"isOwnerUnlocked",[e]);return this.proxy(i,g),i}proxy(s,n,o=[]){this.logger.debug(t,r,"send request to worker",s,n,o),this.logger.perf(t,r,`${n.data.name}`,"Begin",n.id),this.readyTask.wait(()=>{this.worker.postMessage(n,o),s.wait(()=>{this.logger.perf(t,r,`${n.data.name}`,"End",n.id)},()=>{this.logger.perf(t,r,`${n.data.name}`,"End",n.id)}),this.tasks.set(n.id,s)},()=>{this.logger.perf(t,r,`${n.data.name}`,"End",n.id),s.reject({code:e.PdfErrorCode.Initialization,message:"worker initialization failed"})})}};o.readyTaskId="0";let i=o;exports.WebWorkerEngine=i,exports.WorkerTask=n;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/models"),t="WebWorkerEngine",r="Engine";function s(e,t,r){return{id:e,type:"ExecuteRequest",data:{name:t,args:r}}}class n extends e.Task{constructor(e,t){super(),this.worker=e,this.messageId=t}abort(e){super.abort(e),this.worker.postMessage({id:this.messageId,type:"AbortRequest"})}progress(e){super.progress(e)}}const o=class o{constructor(s,i=new e.NoopLogger){this.worker=s,this.logger=i,this.tasks=new Map,this.handle=e=>{this.logger.debug(t,r,"webworker engine start handling message: ",e.data);try{const t=e.data,r=this.tasks.get(t.id);if(!r)return;switch(t.type){case"ReadyResponse":this.readyTask.resolve(!0);break;case"ExecuteProgress":r.progress(t.data);break;case"ExecuteResponse":switch(t.data.type){case"result":r.resolve(t.data.value);break;case"error":r.reject(t.data.value.reason)}this.tasks.delete(t.id)}}catch(s){this.logger.error(t,r,"webworker met error when handling message: ",s)}},this.worker.addEventListener("message",this.handle),this.readyTask=new n(this.worker,o.readyTaskId),this.tasks.set(o.readyTaskId,this.readyTask)}generateRequestId(e){return`${e}.${Date.now()}.${Math.random()}`}destroy(){this.logger.debug(t,r,"destroy");const e=this.generateRequestId("General"),o=new n(this.worker,e),i=()=>{this.worker.removeEventListener("message",this.handle),this.worker.terminate()};o.wait(i,i);const g=s(e,"destroy",[]);return this.proxy(o,g),o}openDocumentUrl(e,o){this.logger.debug(t,r,"openDocumentUrl",e.url,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"openDocumentUrl",[e,o]);return this.proxy(g,a),g}openDocumentBuffer(e,o){this.logger.debug(t,r,"openDocumentBuffer",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"openDocumentBuffer",[e,o]);return this.proxy(g,a),g}getMetadata(e){this.logger.debug(t,r,"getMetadata",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getMetadata",[e]);return this.proxy(i,g),i}setMetadata(e,o){this.logger.debug(t,r,"setMetadata",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"setMetadata",[e,o]);return this.proxy(g,a),g}getDocPermissions(e){this.logger.debug(t,r,"getDocPermissions",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getDocPermissions",[e]);return this.proxy(i,g),i}getDocUserPermissions(e){this.logger.debug(t,r,"getDocUserPermissions",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getDocUserPermissions",[e]);return this.proxy(i,g),i}getBookmarks(e){this.logger.debug(t,r,"getBookmarks",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getBookmarks",[e]);return this.proxy(i,g),i}setBookmarks(e,o){this.logger.debug(t,r,"setBookmarks",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"setBookmarks",[e,o]);return this.proxy(g,a),g}deleteBookmarks(e){this.logger.debug(t,r,"deleteBookmarks",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"deleteBookmarks",[e]);return this.proxy(i,g),i}getSignatures(e){this.logger.debug(t,r,"getSignatures",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getSignatures",[e]);return this.proxy(i,g),i}renderPage(e,o,i){this.logger.debug(t,r,"renderPage",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPage",[e,o,i]);return this.proxy(a,d),a}renderPageRect(e,o,i,g){this.logger.debug(t,r,"renderPageRect",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renderPageRect",[e,o,i,g]);return this.proxy(d,h),d}renderPageRaw(e,o,i){this.logger.debug(t,r,"renderPageRaw",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPageRaw",[e,o,i]);return this.proxy(a,d),a}renderPageRectRaw(e,o,i,g){this.logger.debug(t,r,"renderPageRectRaw",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renderPageRectRaw",[e,o,i,g]);return this.proxy(d,h),d}renderPageAnnotation(e,o,i,g){this.logger.debug(t,r,"renderAnnotation",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renderPageAnnotation",[e,o,i,g]);return this.proxy(d,h),d}renderPageAnnotations(e,o,i){this.logger.debug(t,r,"renderPageAnnotations",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPageAnnotations",[e,o,i]);return this.proxy(a,d),a}renderPageAnnotationsRaw(e,o,i){this.logger.debug(t,r,"renderPageAnnotationsRaw",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderPageAnnotationsRaw",[e,o,i]);return this.proxy(a,d),a}getAllAnnotations(e){this.logger.debug(t,r,"getAllAnnotations",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getAllAnnotations",[e]);return this.proxy(i,g),i}getPageAnnotations(e,o){this.logger.debug(t,r,"getPageAnnotations",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageAnnotations",[e,o]);return this.proxy(g,a),g}getPageAnnoWidgets(e,o){this.logger.debug(t,r,"getPageAnnoWidgets",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageAnnoWidgets",[e,o]);return this.proxy(g,a),g}getDocumentJavaScriptActions(e){this.logger.debug(t,r,"getDocumentJavaScriptActions",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getDocumentJavaScriptActions",[e]);return this.proxy(i,g),i}getPageWidgetJavaScriptActions(e,o){this.logger.debug(t,r,"getPageWidgetJavaScriptActions",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageWidgetJavaScriptActions",[e,o]);return this.proxy(g,a),g}createPageAnnotation(e,o,i,g){this.logger.debug(t,r,"createPageAnnotations",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"createPageAnnotation",[e,o,i,g]);return this.proxy(d,h),d}updatePageAnnotation(e,o,i,g){this.logger.debug(t,r,"updatePageAnnotation",e,o,i);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"updatePageAnnotation",[e,o,i,g]);return this.proxy(d,h),d}removePageAnnotation(e,o,i){this.logger.debug(t,r,"removePageAnnotations",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"removePageAnnotation",[e,o,i]);return this.proxy(a,d),a}getPageTextRects(e,o){this.logger.debug(t,r,"getPageTextRects",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageTextRects",[e,o]);return this.proxy(g,a),g}renderThumbnail(e,o,i){this.logger.debug(t,r,"renderThumbnail",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"renderThumbnail",[e,o,i]);return this.proxy(a,d),a}searchAllPages(e,o,i){this.logger.debug(t,r,"searchAllPages",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"searchAllPages",[e,o,i]);return this.proxy(a,d),a}saveAsCopy(e){this.logger.debug(t,r,"saveAsCopy",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"saveAsCopy",[e]);return this.proxy(i,g),i}getAttachments(e){this.logger.debug(t,r,"getAttachments",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"getAttachments",[e]);return this.proxy(i,g),i}addAttachment(e,o){this.logger.debug(t,r,"addAttachment",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"addAttachment",[e,o]);return this.proxy(g,a),g}removeAttachment(e,o){this.logger.debug(t,r,"removeAttachment",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"removeAttachment",[e,o]);return this.proxy(g,a),g}readAttachmentContent(e,o){this.logger.debug(t,r,"readAttachmentContent",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"readAttachmentContent",[e,o]);return this.proxy(g,a),g}setFormFieldValue(e,o,i,g){this.logger.debug(t,r,"setFormFieldValue",e,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"setFormFieldValue",[e,o,i,g]);return this.proxy(d,h),d}setFormFieldState(e,o,i,g){this.logger.debug(t,r,"setFormFieldState",e,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"setFormFieldState",[e,o,i,g]);return this.proxy(d,h),d}renameWidgetField(e,o,i,g){this.logger.debug(t,r,"renameWidgetField",e,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"renameWidgetField",[e,o,i,g]);return this.proxy(d,h),d}shareWidgetField(e,o,i,g,a){this.logger.debug(t,r,"shareWidgetField",e,i,a);const d=this.generateRequestId(e.id),h=new n(this.worker,d),u=s(d,"shareWidgetField",[e,o,i,g,a]);return this.proxy(h,u),h}regenerateWidgetAppearances(e,o,i){this.logger.debug(t,r,"regenerateWidgetAppearances",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"regenerateWidgetAppearances",[e,o,i]);return this.proxy(a,d),a}flattenPage(e,o,i){this.logger.debug(t,r,"flattenPage",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"flattenPage",[e,o,i]);return this.proxy(a,d),a}extractPages(e,o){this.logger.debug(t,r,"extractPages",e);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"extractPages",[e,o]);return this.proxy(g,a),g}createDocument(e){this.logger.debug(t,r,"createDocument",e);const o=this.generateRequestId(e),i=new n(this.worker,o),g=s(o,"createDocument",[e]);return this.proxy(i,g),i}importPages(e,o,i,g){this.logger.debug(t,r,"importPages",e.id,o.id,i);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"importPages",[e,o,i,g]);return this.proxy(d,h),d}deletePage(e,o){this.logger.debug(t,r,"deletePage",e.id,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"deletePage",[e,o]);return this.proxy(g,a),g}redactTextInRects(e,o,i,g){this.logger.debug(t,r,"redactTextInRects",e,o,i,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"redactTextInRects",[e,o,i,g]);return this.proxy(d,h),d}applyRedaction(e,o,i){this.logger.debug(t,r,"applyRedaction",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"applyRedaction",[e,o,i]);return this.proxy(a,d),a}applyAllRedactions(e,o){this.logger.debug(t,r,"applyAllRedactions",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"applyAllRedactions",[e,o]);return this.proxy(g,a),g}flattenAnnotation(e,o,i){this.logger.debug(t,r,"flattenAnnotation",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"flattenAnnotation",[e,o,i]);return this.proxy(a,d),a}exportAnnotationAppearanceAsPdf(e,o,i){this.logger.debug(t,r,"exportAnnotationAppearanceAsPdf",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"exportAnnotationAppearanceAsPdf",[e,o,i]);return this.proxy(a,d),a}exportAnnotationsAppearanceAsPdf(e,o,i){this.logger.debug(t,r,"exportAnnotationsAppearanceAsPdf",e,o,i);const g=this.generateRequestId(e.id),a=new n(this.worker,g),d=s(g,"exportAnnotationsAppearanceAsPdf",[e,o,i]);return this.proxy(a,d),a}extractText(e,o){this.logger.debug(t,r,"extractText",e);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"extractText",[e,o]);return this.proxy(g,a),g}getTextSlices(e,o){this.logger.debug(t,r,"getTextSlices",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getTextSlices",[e,o]);return this.proxy(g,a),g}getPageGlyphs(e,o){this.logger.debug(t,r,"getPageGlyphs",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageGlyphs",[e,o]);return this.proxy(g,a),g}getPageGeometry(e,o){this.logger.debug(t,r,"getPageGeometry",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageGeometry",[e,o]);return this.proxy(g,a),g}getPageTextRuns(e,o){this.logger.debug(t,r,"getPageTextRuns",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"getPageTextRuns",[e,o]);return this.proxy(g,a),g}merge(e){this.logger.debug(t,r,"merge",e);const o=e.map(e=>e.id).join("."),i=this.generateRequestId(o),g=new n(this.worker,i),a=s(i,"merge",[e]);return this.proxy(g,a),g}mergePages(e){this.logger.debug(t,r,"mergePages",e);const o=this.generateRequestId(e.map(e=>e.docId).join(".")),i=new n(this.worker,o),g=s(o,"mergePages",[e]);return this.proxy(i,g),i}preparePrintDocument(e,o){this.logger.debug(t,r,"preparePrintDocument",e,o);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"preparePrintDocument",[e,o]);return this.proxy(g,a),g}closeDocument(e){this.logger.debug(t,r,"closeDocument",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"closeDocument",[e]);return this.proxy(i,g),i}closeAllDocuments(){this.logger.debug(t,r,"closeAllDocuments");const e=this.generateRequestId("closeAllDocuments"),o=new n(this.worker,e),i=s(e,"closeAllDocuments",[]);return this.proxy(o,i),o}setDocumentEncryption(e,o,i,g){this.logger.debug(t,r,"setDocumentEncryption",e,g);const a=this.generateRequestId(e.id),d=new n(this.worker,a),h=s(a,"setDocumentEncryption",[e,o,i,g]);return this.proxy(d,h),d}removeEncryption(e){this.logger.debug(t,r,"removeEncryption",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"removeEncryption",[e]);return this.proxy(i,g),i}unlockOwnerPermissions(e,o){this.logger.debug(t,r,"unlockOwnerPermissions",e);const i=this.generateRequestId(e.id),g=new n(this.worker,i),a=s(i,"unlockOwnerPermissions",[e,o]);return this.proxy(g,a),g}isEncrypted(e){this.logger.debug(t,r,"isEncrypted",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"isEncrypted",[e]);return this.proxy(i,g),i}isOwnerUnlocked(e){this.logger.debug(t,r,"isOwnerUnlocked",e);const o=this.generateRequestId(e.id),i=new n(this.worker,o),g=s(o,"isOwnerUnlocked",[e]);return this.proxy(i,g),i}proxy(s,n,o=[]){this.logger.debug(t,r,"send request to worker",s,n,o),this.logger.perf(t,r,`${n.data.name}`,"Begin",n.id),this.readyTask.wait(()=>{this.worker.postMessage(n,o),s.wait(()=>{this.logger.perf(t,r,`${n.data.name}`,"End",n.id)},()=>{this.logger.perf(t,r,`${n.data.name}`,"End",n.id)}),this.tasks.set(n.id,s)},()=>{this.logger.perf(t,r,`${n.data.name}`,"End",n.id),s.reject({code:e.PdfErrorCode.Initialization,message:"worker initialization failed"})})}};o.readyTaskId="0";let i=o;exports.WebWorkerEngine=i,exports.WorkerTask=n;
|
|
2
2
|
//# sourceMappingURL=engine.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.cjs","sources":["../../../src/lib/webworker/engine.ts"],"sourcesContent":["import {\n FormFieldValue,\n PdfWidgetAnnoField,\n PdfAttachmentObject,\n PdfDocumentJavaScriptActionObject,\n PdfFile,\n PdfMetadataObject,\n PdfSignatureObject,\n PdfTextRectObject,\n PdfWidgetAnnoObject,\n Task,\n Logger,\n NoopLogger,\n PdfAnnotationObject,\n PdfBookmarksObject,\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n Rect,\n PdfErrorCode,\n PdfErrorReason,\n PdfPageFlattenResult,\n SearchAllPagesResult,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n PdfPageTextRuns,\n PageTextSlice,\n AnnotationCreateContext,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfPageSearchProgress,\n PdfRenderThumbnailOptions,\n PdfSearchAllPagesOptions,\n PdfFlattenPageOptions,\n PdfRedactTextOptions,\n PdfRenderPageAnnotationOptions,\n PdfRenderPageOptions,\n PdfOpenDocumentUrlOptions,\n PdfOpenDocumentBufferOptions,\n PdfAnnotationsProgress,\n PdfPrintOptions,\n PdfBookmarkObject,\n PdfWidgetJavaScriptActionObject,\n PdfAddAttachmentParams,\n AnnotationAppearanceMap,\n ImageDataLike,\n} from '@embedpdf/models';\nimport { ExecuteRequest, Response, SpecificExecuteRequest } from './runner';\n\nconst LOG_SOURCE = 'WebWorkerEngine';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Create a request for the webworker\n * @param id - id of the request\n * @param name - name of the method\n * @param args - arguments of the method\n * @returns request\n */\nfunction createRequest<M extends PdfEngineMethodName>(\n id: string,\n name: M,\n args: PdfEngineMethodArgs<M>,\n): SpecificExecuteRequest<M> {\n return {\n id,\n type: 'ExecuteRequest',\n data: {\n name,\n args,\n },\n };\n}\n\n/**\n * Task that executed by webworker\n */\nexport class WorkerTask<R, P = unknown> extends Task<R, PdfErrorReason, P> {\n /**\n * Create a task that bind to web worker with specified message id\n * @param worker - web worker instance\n * @param messageId - id of message\n *\n * @public\n */\n constructor(\n public worker: Worker,\n private messageId: string,\n ) {\n super();\n }\n\n /**\n * {@inheritDoc @embedpdf/models!Task.abort}\n *\n * @override\n */\n abort(e: PdfErrorReason) {\n super.abort(e);\n\n this.worker.postMessage({\n id: this.messageId,\n type: 'AbortRequest',\n });\n }\n\n /**\n * {@inheritDoc @embedpdf/models!Task.progress}\n *\n * @override\n */\n progress(p: P) {\n super.progress(p);\n }\n}\n\n/**\n * PDF engine that runs within webworker\n */\nexport class WebWorkerEngine implements PdfEngine {\n static readyTaskId = '0';\n /**\n * Task that represent the state of preparation\n */\n readyTask: WorkerTask<boolean>;\n /**\n * All the tasks that is executing\n */\n tasks: Map<string, WorkerTask<any>> = new Map();\n\n /**\n * Create an instance of WebWorkerEngine, it will create a worker with\n * specified url.\n * @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}\n * @param logger - logger instance\n *\n * @public\n */\n constructor(\n private worker: Worker,\n private logger: Logger = new NoopLogger(),\n ) {\n this.worker.addEventListener('message', this.handle);\n\n this.readyTask = new WorkerTask<boolean>(this.worker, WebWorkerEngine.readyTaskId);\n this.tasks.set(WebWorkerEngine.readyTaskId, this.readyTask);\n }\n\n /**\n * Handle event from web worker. There are 2 kinds of event\n * 1. ReadyResponse: web worker is ready\n * 2. ExecuteResponse: result of execution\n * @param evt - message event from web worker\n * @returns\n *\n * @private\n */\n handle = (evt: MessageEvent<any>) => {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker engine start handling message: ',\n evt.data,\n );\n try {\n const response = evt.data as Response;\n const task = this.tasks.get(response.id);\n if (!task) {\n return;\n }\n\n switch (response.type) {\n case 'ReadyResponse':\n this.readyTask.resolve(true);\n break;\n case 'ExecuteProgress':\n task.progress(response.data);\n break;\n case 'ExecuteResponse':\n {\n switch (response.data.type) {\n case 'result':\n task.resolve(response.data.value);\n break;\n case 'error':\n task.reject(response.data.value.reason);\n break;\n }\n this.tasks.delete(response.id);\n }\n break;\n }\n } catch (e) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'webworker met error when handling message: ', e);\n }\n };\n\n /**\n * Generate a unique message id\n * @returns message id\n *\n * @private\n */\n generateRequestId(id: string) {\n return `${id}.${Date.now()}.${Math.random()}`;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.destroy}\n *\n * @public\n */\n destroy() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'destroy');\n const requestId = this.generateRequestId('General');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const finish = () => {\n this.worker.removeEventListener('message', this.handle);\n this.worker.terminate();\n };\n\n task.wait(finish, finish);\n\n const request: ExecuteRequest = createRequest(requestId, 'destroy', []);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentUrl}\n *\n * @public\n */\n openDocumentUrl(file: PdfFileUrl, options?: PdfOpenDocumentUrlOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentUrl', file.url, options);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'openDocumentUrl', [file, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocument}\n *\n * @public\n */\n openDocumentBuffer(file: PdfFile, options?: PdfOpenDocumentBufferOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentBuffer', file, options);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'openDocumentBuffer', [file, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getMetadata}\n *\n * @public\n */\n getMetadata(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getMetadata', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfMetadataObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getMetadata', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setMetadata}\n *\n * @public\n */\n setMetadata(doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setMetadata', doc, metadata);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setMetadata', [doc, metadata]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocPermissions}\n *\n * @public\n */\n getDocPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getDocPermissions', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocUserPermissions}\n *\n * @public\n */\n getDocUserPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocUserPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getDocUserPermissions', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getBookmarks}\n *\n * @public\n */\n getBookmarks(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getBookmarks', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfBookmarksObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getBookmarks', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setBookmarks}\n *\n * @public\n */\n setBookmarks(doc: PdfDocumentObject, payload: PdfBookmarkObject[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setBookmarks', doc, payload);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setBookmarks', [doc, payload]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.deleteBookmarks}\n *\n * @public\n */\n deleteBookmarks(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'deleteBookmarks', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'deleteBookmarks', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getSignatures}\n *\n * @public\n */\n getSignatures(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getSignatures', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfSignatureObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getSignatures', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPage}\n *\n * @public\n */\n renderPage(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPage', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPage', [doc, page, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRect}\n *\n * @public\n */\n renderPageRect(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rect: Rect,\n options?: PdfRenderPageOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRect', doc, page, rect, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageRect', [\n doc,\n page,\n rect,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRaw}\n *\n * @public\n */\n renderPageRaw(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRaw', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ImageDataLike>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageRaw', [doc, page, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRectRaw}\n *\n * @public\n */\n renderPageRectRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rect: Rect,\n options?: PdfRenderPageOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRectRaw', doc, page, rect, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ImageDataLike>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageRectRaw', [\n doc,\n page,\n rect,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderAnnotation}\n *\n * @public\n */\n renderPageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderAnnotation', doc, page, annotation, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageAnnotation', [\n doc,\n page,\n annotation,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n renderPageAnnotations(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageAnnotationOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageAnnotations', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<AnnotationAppearanceMap<Blob>>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageAnnotations', [\n doc,\n page,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n renderPageAnnotationsRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageAnnotationOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageAnnotationsRaw', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<AnnotationAppearanceMap<ImageDataLike>>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageAnnotationsRaw', [\n doc,\n page,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAllAnnotations}\n *\n * @public\n */\n getAllAnnotations(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAllAnnotations', doc);\n const requestId = this.generateRequestId(doc.id);\n\n const task = new WorkerTask<Record<number, PdfAnnotationObject[]>, PdfAnnotationsProgress>(\n this.worker,\n requestId,\n );\n\n const request: ExecuteRequest = createRequest(requestId, 'getAllAnnotations', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageAnnotations}\n *\n * @public\n */\n getPageAnnotations(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnotations', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAnnotationObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageAnnotations', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n *\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageFormFields}\n *\n * @public\n */\n getPageAnnoWidgets(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnoWidgets', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfWidgetAnnoObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageAnnoWidgets', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n getDocumentJavaScriptActions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocumentJavaScriptActions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfDocumentJavaScriptActionObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getDocumentJavaScriptActions', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n getPageWidgetJavaScriptActions(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageWidgetJavaScriptActions', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfWidgetJavaScriptActionObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageWidgetJavaScriptActions', [\n doc,\n page,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.createPageAnnotation}\n *\n * @public\n */\n createPageAnnotation<A extends PdfAnnotationObject>(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: A,\n context?: AnnotationCreateContext<A>,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'createPageAnnotations',\n doc,\n page,\n annotation,\n context,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'createPageAnnotation', [\n doc,\n page,\n annotation,\n context,\n ] as PdfEngineMethodArgs<'createPageAnnotation'>);\n this.proxy(task, request);\n\n return task;\n }\n\n updatePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: { regenerateAppearance?: boolean },\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'updatePageAnnotation', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'updatePageAnnotation', [\n doc,\n page,\n annotation,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removePageAnnotation}\n *\n * @public\n */\n removePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removePageAnnotations', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'removePageAnnotation', [\n doc,\n page,\n annotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRects}\n *\n * @public\n */\n getPageTextRects(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageTextRects', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfTextRectObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageTextRects', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderThumbnail}\n *\n * @public\n */\n renderThumbnail(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderThumbnailOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderThumbnail', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderThumbnail', [\n doc,\n page,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.searchAllPages}\n *\n * @public\n */\n searchAllPages(doc: PdfDocumentObject, keyword: string, options?: PdfSearchAllPagesOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'searchAllPages', doc, keyword, options);\n\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<SearchAllPagesResult, PdfPageSearchProgress>(\n this.worker,\n requestId,\n );\n\n const request: ExecuteRequest = createRequest(requestId, 'searchAllPages', [\n doc,\n keyword,\n options,\n ]);\n\n this.proxy(task, request);\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.saveAsCopy}\n *\n * @public\n */\n saveAsCopy(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'saveAsCopy', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'saveAsCopy', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAttachments}\n *\n * @public\n */\n getAttachments(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAttachments', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAttachmentObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getAttachments', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.addAttachment}\n *\n * @public\n */\n addAttachment(doc: PdfDocumentObject, params: PdfAddAttachmentParams) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'addAttachment', doc, params);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'addAttachment', [doc, params]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removeAttachment}\n *\n * @public\n */\n removeAttachment(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removeAttachment', doc, attachment);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'removeAttachment', [doc, attachment]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.readAttachmentContent}\n *\n * @public\n */\n readAttachmentContent(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'readAttachmentContent', doc, attachment);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'readAttachmentContent', [\n doc,\n attachment,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldValue}\n *\n * @public\n */\n setFormFieldValue(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n value: FormFieldValue,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldValue', doc, annotation, value);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setFormFieldValue', [\n doc,\n page,\n annotation,\n value,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldState}\n *\n * @public\n */\n setFormFieldState(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n field: PdfWidgetAnnoField,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldState', doc, annotation, field);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setFormFieldState', [\n doc,\n page,\n annotation,\n field,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n renameWidgetField(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n name: string,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renameWidgetField', doc, annotation, name);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renameWidgetField', [\n doc,\n page,\n annotation,\n name,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n shareWidgetField(\n doc: PdfDocumentObject,\n sourcePage: PdfPageObject,\n sourceAnnotation: PdfWidgetAnnoObject,\n targetPage: PdfPageObject,\n targetAnnotation: PdfWidgetAnnoObject,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'shareWidgetField',\n doc,\n sourceAnnotation,\n targetAnnotation,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'shareWidgetField', [\n doc,\n sourcePage,\n sourceAnnotation,\n targetPage,\n targetAnnotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n regenerateWidgetAppearances(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotationIds: string[],\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'regenerateWidgetAppearances',\n doc,\n page,\n annotationIds,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'regenerateWidgetAppearances', [\n doc,\n page,\n annotationIds,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.flattenPage}\n *\n * @public\n */\n flattenPage(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfFlattenPageOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenPage', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageFlattenResult>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'flattenPage', [doc, page, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractPages}\n *\n * @public\n */\n extractPages(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractPages', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'extractPages', [doc, pageIndexes]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.redactTextInQuads}\n *\n * @public\n */\n redactTextInRects(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'redactTextInRects', doc, page, rects, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'redactTextInRects', [\n doc,\n page,\n rects,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.applyRedaction}\n *\n * @public\n */\n applyRedaction(doc: PdfDocumentObject, page: PdfPageObject, annotation: PdfAnnotationObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'applyRedaction', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'applyRedaction', [\n doc,\n page,\n annotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.applyAllRedactions}\n *\n * @public\n */\n applyAllRedactions(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'applyAllRedactions', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'applyAllRedactions', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.flattenAnnotation}\n *\n * @public\n */\n flattenAnnotation(doc: PdfDocumentObject, page: PdfPageObject, annotation: PdfAnnotationObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenAnnotation', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'flattenAnnotation', [\n doc,\n page,\n annotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractText}\n *\n * @public\n */\n extractText(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractText', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'extractText', [doc, pageIndexes]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getTextSlices}\n *\n * @public\n */\n getTextSlices(doc: PdfDocumentObject, slices: PageTextSlice[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getTextSlices', doc, slices);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getTextSlices', [doc, slices]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGlyphs}\n *\n * @public\n */\n getPageGlyphs(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGlyphs', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfGlyphObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageGlyphs', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGeometry}\n *\n * @public\n */\n getPageGeometry(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGeometry', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageGeometry>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageGeometry', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRuns}\n *\n * @public\n */\n getPageTextRuns(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageTextRuns', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageTextRuns>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageTextRuns', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.merge}\n *\n * @public\n */\n merge(files: PdfFile[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'merge', files);\n const fileIds = files.map((file) => file.id).join('.');\n const requestId = this.generateRequestId(fileIds);\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'merge', [files]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.mergePages}\n *\n * @public\n */\n mergePages(mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'mergePages', mergeConfigs);\n const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join('.'));\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'mergePages', [mergeConfigs]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.preparePrintDocument}\n *\n * @public\n */\n preparePrintDocument(doc: PdfDocumentObject, options?: PdfPrintOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'preparePrintDocument', doc, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'preparePrintDocument', [\n doc,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.closeDocument}\n *\n * @public\n */\n closeDocument(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeDocument', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'closeDocument', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.closeAllDocuments}\n *\n * @public\n */\n closeAllDocuments() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeAllDocuments');\n const requestId = this.generateRequestId('closeAllDocuments');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n const request: ExecuteRequest = createRequest(requestId, 'closeAllDocuments', []);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setDocumentEncryption}\n *\n * @public\n */\n setDocumentEncryption(\n doc: PdfDocumentObject,\n userPassword: string,\n ownerPassword: string,\n allowedFlags: number,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setDocumentEncryption', doc, allowedFlags);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setDocumentEncryption', [\n doc,\n userPassword,\n ownerPassword,\n allowedFlags,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removeEncryption}\n *\n * @public\n */\n removeEncryption(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removeEncryption', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'removeEncryption', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.unlockOwnerPermissions}\n *\n * @public\n */\n unlockOwnerPermissions(doc: PdfDocumentObject, ownerPassword: string) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'unlockOwnerPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'unlockOwnerPermissions', [\n doc,\n ownerPassword,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.isEncrypted}\n *\n * @public\n */\n isEncrypted(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'isEncrypted', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'isEncrypted', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.isOwnerUnlocked}\n *\n * @public\n */\n isOwnerUnlocked(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'isOwnerUnlocked', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'isOwnerUnlocked', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * Send the request to webworker inside and register the task\n * @param task - task that waiting for the response\n * @param request - request that needs send to web worker\n * @param transferables - transferables that need to transfer to webworker\n * @returns\n *\n * @internal\n */\n proxy<R>(task: WorkerTask<R>, request: ExecuteRequest, transferables: any[] = []) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'send request to worker',\n task,\n request,\n transferables,\n );\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'Begin', request.id);\n this.readyTask.wait(\n () => {\n this.worker.postMessage(request, transferables);\n task.wait(\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n );\n this.tasks.set(request.id, task);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n task.reject({\n code: PdfErrorCode.Initialization,\n message: 'worker initialization failed',\n });\n },\n );\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY","createRequest","id","name","args","type","data","WorkerTask","Task","constructor","worker","messageId","super","this","abort","e","postMessage","progress","p","_WebWorkerEngine","logger","NoopLogger","tasks","Map","handle","evt","debug","response","task","get","readyTask","resolve","value","reject","reason","delete","error","addEventListener","readyTaskId","set","generateRequestId","Date","now","Math","random","destroy","requestId","finish","removeEventListener","terminate","wait","request","proxy","openDocumentUrl","file","options","url","openDocumentBuffer","getMetadata","doc","setMetadata","metadata","getDocPermissions","getDocUserPermissions","getBookmarks","setBookmarks","payload","deleteBookmarks","getSignatures","renderPage","page","renderPageRect","rect","renderPageRaw","renderPageRectRaw","renderPageAnnotation","annotation","renderPageAnnotations","renderPageAnnotationsRaw","getAllAnnotations","getPageAnnotations","getPageAnnoWidgets","getDocumentJavaScriptActions","getPageWidgetJavaScriptActions","createPageAnnotation","context","updatePageAnnotation","removePageAnnotation","getPageTextRects","renderThumbnail","searchAllPages","keyword","saveAsCopy","getAttachments","addAttachment","params","removeAttachment","attachment","readAttachmentContent","setFormFieldValue","setFormFieldState","field","renameWidgetField","shareWidgetField","sourcePage","sourceAnnotation","targetPage","targetAnnotation","regenerateWidgetAppearances","annotationIds","flattenPage","extractPages","pageIndexes","redactTextInRects","rects","applyRedaction","applyAllRedactions","flattenAnnotation","extractText","getTextSlices","slices","getPageGlyphs","getPageGeometry","getPageTextRuns","merge","files","fileIds","map","join","mergePages","mergeConfigs","config","docId","preparePrintDocument","closeDocument","closeAllDocuments","setDocumentEncryption","userPassword","ownerPassword","allowedFlags","removeEncryption","unlockOwnerPermissions","isEncrypted","isOwnerUnlocked","transferables","perf","code","PdfErrorCode","Initialization","message","WebWorkerEngine"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.cjs","sources":["../../../src/lib/webworker/engine.ts"],"sourcesContent":["import {\n FormFieldValue,\n PdfWidgetAnnoField,\n PdfAttachmentObject,\n PdfDocumentJavaScriptActionObject,\n PdfFile,\n PdfMetadataObject,\n PdfSignatureObject,\n PdfTextRectObject,\n PdfWidgetAnnoObject,\n Task,\n Logger,\n NoopLogger,\n PdfAnnotationObject,\n PdfBookmarksObject,\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n Rect,\n PdfErrorCode,\n PdfErrorReason,\n PdfPageFlattenResult,\n SearchAllPagesResult,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n PdfPageTextRuns,\n PageTextSlice,\n AnnotationCreateContext,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfPageSearchProgress,\n PdfRenderThumbnailOptions,\n PdfSearchAllPagesOptions,\n PdfFlattenPageOptions,\n PdfRedactTextOptions,\n PdfRenderPageAnnotationOptions,\n PdfRenderPageOptions,\n PdfOpenDocumentUrlOptions,\n PdfOpenDocumentBufferOptions,\n PdfAnnotationsProgress,\n PdfPrintOptions,\n PdfBookmarkObject,\n PdfWidgetJavaScriptActionObject,\n PdfAddAttachmentParams,\n AnnotationAppearanceMap,\n ImageDataLike,\n} from '@embedpdf/models';\nimport { ExecuteRequest, Response, SpecificExecuteRequest } from './runner';\n\nconst LOG_SOURCE = 'WebWorkerEngine';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Create a request for the webworker\n * @param id - id of the request\n * @param name - name of the method\n * @param args - arguments of the method\n * @returns request\n */\nfunction createRequest<M extends PdfEngineMethodName>(\n id: string,\n name: M,\n args: PdfEngineMethodArgs<M>,\n): SpecificExecuteRequest<M> {\n return {\n id,\n type: 'ExecuteRequest',\n data: {\n name,\n args,\n },\n };\n}\n\n/**\n * Task that executed by webworker\n */\nexport class WorkerTask<R, P = unknown> extends Task<R, PdfErrorReason, P> {\n /**\n * Create a task that bind to web worker with specified message id\n * @param worker - web worker instance\n * @param messageId - id of message\n *\n * @public\n */\n constructor(\n public worker: Worker,\n private messageId: string,\n ) {\n super();\n }\n\n /**\n * {@inheritDoc @embedpdf/models!Task.abort}\n *\n * @override\n */\n abort(e: PdfErrorReason) {\n super.abort(e);\n\n this.worker.postMessage({\n id: this.messageId,\n type: 'AbortRequest',\n });\n }\n\n /**\n * {@inheritDoc @embedpdf/models!Task.progress}\n *\n * @override\n */\n progress(p: P) {\n super.progress(p);\n }\n}\n\n/**\n * PDF engine that runs within webworker\n */\nexport class WebWorkerEngine implements PdfEngine {\n static readyTaskId = '0';\n /**\n * Task that represent the state of preparation\n */\n readyTask: WorkerTask<boolean>;\n /**\n * All the tasks that is executing\n */\n tasks: Map<string, WorkerTask<any>> = new Map();\n\n /**\n * Create an instance of WebWorkerEngine, it will create a worker with\n * specified url.\n * @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}\n * @param logger - logger instance\n *\n * @public\n */\n constructor(\n private worker: Worker,\n private logger: Logger = new NoopLogger(),\n ) {\n this.worker.addEventListener('message', this.handle);\n\n this.readyTask = new WorkerTask<boolean>(this.worker, WebWorkerEngine.readyTaskId);\n this.tasks.set(WebWorkerEngine.readyTaskId, this.readyTask);\n }\n\n /**\n * Handle event from web worker. There are 2 kinds of event\n * 1. ReadyResponse: web worker is ready\n * 2. ExecuteResponse: result of execution\n * @param evt - message event from web worker\n * @returns\n *\n * @private\n */\n handle = (evt: MessageEvent<any>) => {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker engine start handling message: ',\n evt.data,\n );\n try {\n const response = evt.data as Response;\n const task = this.tasks.get(response.id);\n if (!task) {\n return;\n }\n\n switch (response.type) {\n case 'ReadyResponse':\n this.readyTask.resolve(true);\n break;\n case 'ExecuteProgress':\n task.progress(response.data);\n break;\n case 'ExecuteResponse':\n {\n switch (response.data.type) {\n case 'result':\n task.resolve(response.data.value);\n break;\n case 'error':\n task.reject(response.data.value.reason);\n break;\n }\n this.tasks.delete(response.id);\n }\n break;\n }\n } catch (e) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'webworker met error when handling message: ', e);\n }\n };\n\n /**\n * Generate a unique message id\n * @returns message id\n *\n * @private\n */\n generateRequestId(id: string) {\n return `${id}.${Date.now()}.${Math.random()}`;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.destroy}\n *\n * @public\n */\n destroy() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'destroy');\n const requestId = this.generateRequestId('General');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const finish = () => {\n this.worker.removeEventListener('message', this.handle);\n this.worker.terminate();\n };\n\n task.wait(finish, finish);\n\n const request: ExecuteRequest = createRequest(requestId, 'destroy', []);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentUrl}\n *\n * @public\n */\n openDocumentUrl(file: PdfFileUrl, options?: PdfOpenDocumentUrlOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentUrl', file.url, options);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'openDocumentUrl', [file, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocument}\n *\n * @public\n */\n openDocumentBuffer(file: PdfFile, options?: PdfOpenDocumentBufferOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentBuffer', file, options);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'openDocumentBuffer', [file, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getMetadata}\n *\n * @public\n */\n getMetadata(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getMetadata', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfMetadataObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getMetadata', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setMetadata}\n *\n * @public\n */\n setMetadata(doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setMetadata', doc, metadata);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setMetadata', [doc, metadata]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocPermissions}\n *\n * @public\n */\n getDocPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getDocPermissions', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocUserPermissions}\n *\n * @public\n */\n getDocUserPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocUserPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getDocUserPermissions', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getBookmarks}\n *\n * @public\n */\n getBookmarks(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getBookmarks', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfBookmarksObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getBookmarks', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setBookmarks}\n *\n * @public\n */\n setBookmarks(doc: PdfDocumentObject, payload: PdfBookmarkObject[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setBookmarks', doc, payload);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setBookmarks', [doc, payload]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.deleteBookmarks}\n *\n * @public\n */\n deleteBookmarks(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'deleteBookmarks', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'deleteBookmarks', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getSignatures}\n *\n * @public\n */\n getSignatures(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getSignatures', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfSignatureObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getSignatures', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPage}\n *\n * @public\n */\n renderPage(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPage', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPage', [doc, page, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRect}\n *\n * @public\n */\n renderPageRect(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rect: Rect,\n options?: PdfRenderPageOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRect', doc, page, rect, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageRect', [\n doc,\n page,\n rect,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRaw}\n *\n * @public\n */\n renderPageRaw(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRaw', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ImageDataLike>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageRaw', [doc, page, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRectRaw}\n *\n * @public\n */\n renderPageRectRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rect: Rect,\n options?: PdfRenderPageOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRectRaw', doc, page, rect, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ImageDataLike>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageRectRaw', [\n doc,\n page,\n rect,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderAnnotation}\n *\n * @public\n */\n renderPageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderAnnotation', doc, page, annotation, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageAnnotation', [\n doc,\n page,\n annotation,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n renderPageAnnotations(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageAnnotationOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageAnnotations', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<AnnotationAppearanceMap<Blob>>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageAnnotations', [\n doc,\n page,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n renderPageAnnotationsRaw(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderPageAnnotationOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageAnnotationsRaw', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<AnnotationAppearanceMap<ImageDataLike>>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderPageAnnotationsRaw', [\n doc,\n page,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAllAnnotations}\n *\n * @public\n */\n getAllAnnotations(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAllAnnotations', doc);\n const requestId = this.generateRequestId(doc.id);\n\n const task = new WorkerTask<Record<number, PdfAnnotationObject[]>, PdfAnnotationsProgress>(\n this.worker,\n requestId,\n );\n\n const request: ExecuteRequest = createRequest(requestId, 'getAllAnnotations', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageAnnotations}\n *\n * @public\n */\n getPageAnnotations(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnotations', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAnnotationObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageAnnotations', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n *\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageFormFields}\n *\n * @public\n */\n getPageAnnoWidgets(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnoWidgets', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfWidgetAnnoObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageAnnoWidgets', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n getDocumentJavaScriptActions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocumentJavaScriptActions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfDocumentJavaScriptActionObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getDocumentJavaScriptActions', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n getPageWidgetJavaScriptActions(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageWidgetJavaScriptActions', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfWidgetJavaScriptActionObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageWidgetJavaScriptActions', [\n doc,\n page,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.createPageAnnotation}\n *\n * @public\n */\n createPageAnnotation<A extends PdfAnnotationObject>(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: A,\n context?: AnnotationCreateContext<A>,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'createPageAnnotations',\n doc,\n page,\n annotation,\n context,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'createPageAnnotation', [\n doc,\n page,\n annotation,\n context,\n ] as PdfEngineMethodArgs<'createPageAnnotation'>);\n this.proxy(task, request);\n\n return task;\n }\n\n updatePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: { regenerateAppearance?: boolean },\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'updatePageAnnotation', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'updatePageAnnotation', [\n doc,\n page,\n annotation,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removePageAnnotation}\n *\n * @public\n */\n removePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removePageAnnotations', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'removePageAnnotation', [\n doc,\n page,\n annotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRects}\n *\n * @public\n */\n getPageTextRects(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageTextRects', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfTextRectObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageTextRects', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderThumbnail}\n *\n * @public\n */\n renderThumbnail(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n options?: PdfRenderThumbnailOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderThumbnail', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renderThumbnail', [\n doc,\n page,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.searchAllPages}\n *\n * @public\n */\n searchAllPages(doc: PdfDocumentObject, keyword: string, options?: PdfSearchAllPagesOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'searchAllPages', doc, keyword, options);\n\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<SearchAllPagesResult, PdfPageSearchProgress>(\n this.worker,\n requestId,\n );\n\n const request: ExecuteRequest = createRequest(requestId, 'searchAllPages', [\n doc,\n keyword,\n options,\n ]);\n\n this.proxy(task, request);\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.saveAsCopy}\n *\n * @public\n */\n saveAsCopy(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'saveAsCopy', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'saveAsCopy', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAttachments}\n *\n * @public\n */\n getAttachments(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAttachments', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAttachmentObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getAttachments', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.addAttachment}\n *\n * @public\n */\n addAttachment(doc: PdfDocumentObject, params: PdfAddAttachmentParams) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'addAttachment', doc, params);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'addAttachment', [doc, params]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removeAttachment}\n *\n * @public\n */\n removeAttachment(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removeAttachment', doc, attachment);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'removeAttachment', [doc, attachment]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.readAttachmentContent}\n *\n * @public\n */\n readAttachmentContent(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'readAttachmentContent', doc, attachment);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'readAttachmentContent', [\n doc,\n attachment,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldValue}\n *\n * @public\n */\n setFormFieldValue(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n value: FormFieldValue,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldValue', doc, annotation, value);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setFormFieldValue', [\n doc,\n page,\n annotation,\n value,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldState}\n *\n * @public\n */\n setFormFieldState(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n field: PdfWidgetAnnoField,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldState', doc, annotation, field);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setFormFieldState', [\n doc,\n page,\n annotation,\n field,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n renameWidgetField(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n name: string,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renameWidgetField', doc, annotation, name);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'renameWidgetField', [\n doc,\n page,\n annotation,\n name,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n shareWidgetField(\n doc: PdfDocumentObject,\n sourcePage: PdfPageObject,\n sourceAnnotation: PdfWidgetAnnoObject,\n targetPage: PdfPageObject,\n targetAnnotation: PdfWidgetAnnoObject,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'shareWidgetField',\n doc,\n sourceAnnotation,\n targetAnnotation,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'shareWidgetField', [\n doc,\n sourcePage,\n sourceAnnotation,\n targetPage,\n targetAnnotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n regenerateWidgetAppearances(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotationIds: string[],\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'regenerateWidgetAppearances',\n doc,\n page,\n annotationIds,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'regenerateWidgetAppearances', [\n doc,\n page,\n annotationIds,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.flattenPage}\n *\n * @public\n */\n flattenPage(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfFlattenPageOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenPage', doc, page, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageFlattenResult>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'flattenPage', [doc, page, options]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractPages}\n *\n * @public\n */\n extractPages(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractPages', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'extractPages', [doc, pageIndexes]);\n this.proxy(task, request);\n\n return task;\n }\n\n createDocument(id: string) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'createDocument', id);\n const requestId = this.generateRequestId(id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'createDocument', [id]);\n this.proxy(task, request);\n\n return task;\n }\n\n importPages(\n destDoc: PdfDocumentObject,\n srcDoc: PdfDocumentObject,\n srcPageIndices: number[],\n insertIndex?: number,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'importPages',\n destDoc.id,\n srcDoc.id,\n srcPageIndices,\n );\n const requestId = this.generateRequestId(destDoc.id);\n const task = new WorkerTask<PdfPageObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'importPages', [\n destDoc,\n srcDoc,\n srcPageIndices,\n insertIndex,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n deletePage(doc: PdfDocumentObject, pageIndex: number) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'deletePage', doc.id, pageIndex);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'deletePage', [doc, pageIndex]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.redactTextInQuads}\n *\n * @public\n */\n redactTextInRects(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'redactTextInRects', doc, page, rects, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'redactTextInRects', [\n doc,\n page,\n rects,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.applyRedaction}\n *\n * @public\n */\n applyRedaction(doc: PdfDocumentObject, page: PdfPageObject, annotation: PdfAnnotationObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'applyRedaction', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'applyRedaction', [\n doc,\n page,\n annotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.applyAllRedactions}\n *\n * @public\n */\n applyAllRedactions(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'applyAllRedactions', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'applyAllRedactions', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.flattenAnnotation}\n *\n * @public\n */\n flattenAnnotation(doc: PdfDocumentObject, page: PdfPageObject, annotation: PdfAnnotationObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenAnnotation', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'flattenAnnotation', [\n doc,\n page,\n annotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.exportAnnotationAppearanceAsPdf}\n *\n * @public\n */\n exportAnnotationAppearanceAsPdf(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'exportAnnotationAppearanceAsPdf',\n doc,\n page,\n annotation,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'exportAnnotationAppearanceAsPdf', [\n doc,\n page,\n annotation,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n exportAnnotationsAppearanceAsPdf(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotations: PdfAnnotationObject[],\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'exportAnnotationsAppearanceAsPdf',\n doc,\n page,\n annotations,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'exportAnnotationsAppearanceAsPdf', [\n doc,\n page,\n annotations,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractText}\n *\n * @public\n */\n extractText(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractText', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'extractText', [doc, pageIndexes]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getTextSlices}\n *\n * @public\n */\n getTextSlices(doc: PdfDocumentObject, slices: PageTextSlice[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getTextSlices', doc, slices);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getTextSlices', [doc, slices]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGlyphs}\n *\n * @public\n */\n getPageGlyphs(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGlyphs', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfGlyphObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageGlyphs', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGeometry}\n *\n * @public\n */\n getPageGeometry(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGeometry', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageGeometry>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageGeometry', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRuns}\n *\n * @public\n */\n getPageTextRuns(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageTextRuns', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageTextRuns>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'getPageTextRuns', [doc, page]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.merge}\n *\n * @public\n */\n merge(files: PdfFile[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'merge', files);\n const fileIds = files.map((file) => file.id).join('.');\n const requestId = this.generateRequestId(fileIds);\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'merge', [files]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.mergePages}\n *\n * @public\n */\n mergePages(mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'mergePages', mergeConfigs);\n const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join('.'));\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'mergePages', [mergeConfigs]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.preparePrintDocument}\n *\n * @public\n */\n preparePrintDocument(doc: PdfDocumentObject, options?: PdfPrintOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'preparePrintDocument', doc, options);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'preparePrintDocument', [\n doc,\n options,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.closeDocument}\n *\n * @public\n */\n closeDocument(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeDocument', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'closeDocument', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.closeAllDocuments}\n *\n * @public\n */\n closeAllDocuments() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeAllDocuments');\n const requestId = this.generateRequestId('closeAllDocuments');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n const request: ExecuteRequest = createRequest(requestId, 'closeAllDocuments', []);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setDocumentEncryption}\n *\n * @public\n */\n setDocumentEncryption(\n doc: PdfDocumentObject,\n userPassword: string,\n ownerPassword: string,\n allowedFlags: number,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setDocumentEncryption', doc, allowedFlags);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'setDocumentEncryption', [\n doc,\n userPassword,\n ownerPassword,\n allowedFlags,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removeEncryption}\n *\n * @public\n */\n removeEncryption(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removeEncryption', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'removeEncryption', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.unlockOwnerPermissions}\n *\n * @public\n */\n unlockOwnerPermissions(doc: PdfDocumentObject, ownerPassword: string) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'unlockOwnerPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'unlockOwnerPermissions', [\n doc,\n ownerPassword,\n ]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.isEncrypted}\n *\n * @public\n */\n isEncrypted(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'isEncrypted', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'isEncrypted', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.isOwnerUnlocked}\n *\n * @public\n */\n isOwnerUnlocked(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'isOwnerUnlocked', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = createRequest(requestId, 'isOwnerUnlocked', [doc]);\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * Send the request to webworker inside and register the task\n * @param task - task that waiting for the response\n * @param request - request that needs send to web worker\n * @param transferables - transferables that need to transfer to webworker\n * @returns\n *\n * @internal\n */\n proxy<R>(task: WorkerTask<R>, request: ExecuteRequest, transferables: any[] = []) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'send request to worker',\n task,\n request,\n transferables,\n );\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'Begin', request.id);\n this.readyTask.wait(\n () => {\n this.worker.postMessage(request, transferables);\n task.wait(\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n );\n this.tasks.set(request.id, task);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n task.reject({\n code: PdfErrorCode.Initialization,\n message: 'worker initialization failed',\n });\n },\n );\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY","createRequest","id","name","args","type","data","WorkerTask","Task","constructor","worker","messageId","super","this","abort","e","postMessage","progress","p","_WebWorkerEngine","logger","NoopLogger","tasks","Map","handle","evt","debug","response","task","get","readyTask","resolve","value","reject","reason","delete","error","addEventListener","readyTaskId","set","generateRequestId","Date","now","Math","random","destroy","requestId","finish","removeEventListener","terminate","wait","request","proxy","openDocumentUrl","file","options","url","openDocumentBuffer","getMetadata","doc","setMetadata","metadata","getDocPermissions","getDocUserPermissions","getBookmarks","setBookmarks","payload","deleteBookmarks","getSignatures","renderPage","page","renderPageRect","rect","renderPageRaw","renderPageRectRaw","renderPageAnnotation","annotation","renderPageAnnotations","renderPageAnnotationsRaw","getAllAnnotations","getPageAnnotations","getPageAnnoWidgets","getDocumentJavaScriptActions","getPageWidgetJavaScriptActions","createPageAnnotation","context","updatePageAnnotation","removePageAnnotation","getPageTextRects","renderThumbnail","searchAllPages","keyword","saveAsCopy","getAttachments","addAttachment","params","removeAttachment","attachment","readAttachmentContent","setFormFieldValue","setFormFieldState","field","renameWidgetField","shareWidgetField","sourcePage","sourceAnnotation","targetPage","targetAnnotation","regenerateWidgetAppearances","annotationIds","flattenPage","extractPages","pageIndexes","createDocument","importPages","destDoc","srcDoc","srcPageIndices","insertIndex","deletePage","pageIndex","redactTextInRects","rects","applyRedaction","applyAllRedactions","flattenAnnotation","exportAnnotationAppearanceAsPdf","exportAnnotationsAppearanceAsPdf","annotations","extractText","getTextSlices","slices","getPageGlyphs","getPageGeometry","getPageTextRuns","merge","files","fileIds","map","join","mergePages","mergeConfigs","config","docId","preparePrintDocument","closeDocument","closeAllDocuments","setDocumentEncryption","userPassword","ownerPassword","allowedFlags","removeEncryption","unlockOwnerPermissions","isEncrypted","isOwnerUnlocked","transferables","perf","code","PdfErrorCode","Initialization","message","WebWorkerEngine"],"mappings":"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"}
|
|
@@ -277,6 +277,9 @@ export declare class WebWorkerEngine implements PdfEngine {
|
|
|
277
277
|
* @public
|
|
278
278
|
*/
|
|
279
279
|
extractPages(doc: PdfDocumentObject, pageIndexes: number[]): WorkerTask<ArrayBuffer, unknown>;
|
|
280
|
+
createDocument(id: string): WorkerTask<PdfDocumentObject, unknown>;
|
|
281
|
+
importPages(destDoc: PdfDocumentObject, srcDoc: PdfDocumentObject, srcPageIndices: number[], insertIndex?: number): WorkerTask<PdfPageObject[], unknown>;
|
|
282
|
+
deletePage(doc: PdfDocumentObject, pageIndex: number): WorkerTask<boolean, unknown>;
|
|
280
283
|
/**
|
|
281
284
|
* {@inheritDoc @embedpdf/models!PdfEngine.redactTextInQuads}
|
|
282
285
|
*
|
|
@@ -301,6 +304,13 @@ export declare class WebWorkerEngine implements PdfEngine {
|
|
|
301
304
|
* @public
|
|
302
305
|
*/
|
|
303
306
|
flattenAnnotation(doc: PdfDocumentObject, page: PdfPageObject, annotation: PdfAnnotationObject): WorkerTask<boolean, unknown>;
|
|
307
|
+
/**
|
|
308
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.exportAnnotationAppearanceAsPdf}
|
|
309
|
+
*
|
|
310
|
+
* @public
|
|
311
|
+
*/
|
|
312
|
+
exportAnnotationAppearanceAsPdf(doc: PdfDocumentObject, page: PdfPageObject, annotation: PdfAnnotationObject): WorkerTask<ArrayBuffer, unknown>;
|
|
313
|
+
exportAnnotationsAppearanceAsPdf(doc: PdfDocumentObject, page: PdfPageObject, annotations: PdfAnnotationObject[]): WorkerTask<ArrayBuffer, unknown>;
|
|
304
314
|
/**
|
|
305
315
|
* {@inheritDoc @embedpdf/models!PdfEngine.extractText}
|
|
306
316
|
*
|