@embedpdf/engines 1.3.2 → 1.3.3

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.
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("./engine-Cg0lRKs3.cjs"),s=require("@embedpdf/pdfium"),t=require("@embedpdf/models"),a="WebWorkerEngineRunner",r="Engine";class n{constructor(e=new t.NoopLogger){this.logger=e,this.tasks=new Map,this.lastYield=0,this.cancelledIds=new Set,this.execute=async e=>{if(this.logger.debug(a,r,"runner start exeucte request"),!this.engine){const s={type:"reject",reason:{code:t.PdfErrorCode.NotReady,message:"engine has not started yet"}},a={id:e.id,type:"ExecuteResponse",data:{type:"error",value:s}};return void this.respond(a)}if(await this.maybeYield(),this.cancelledIds.has(e.id))return void this.respond({id:e.id,type:"ExecuteResponse",data:{type:"error",value:{type:"reject",reason:{code:t.PdfErrorCode.Cancelled,message:"aborted by client (pre-cancelled)"}}}});const s=this.engine,{name:n,args:i}=e.data;if(!s[n]){const s={type:"reject",reason:{code:t.PdfErrorCode.NotSupport,message:`engine method ${n} is not supported yet`}},a={id:e.id,type:"ExecuteResponse",data:{type:"error",value:s}};return void this.respond(a)}let o;switch(n){case"isSupport":case"initialize":case"destroy":case"openDocumentUrl":case"openDocumentBuffer":case"getDocPermissions":case"getDocUserPermissions":case"getMetadata":case"setMetadata":case"getBookmarks":case"setBookmarks":case"deleteBookmarks":case"getSignatures":case"renderPage":case"renderPageRect":case"renderPageAnnotation":case"renderThumbnail":case"getAllAnnotations":case"getPageAnnotations":case"createPageAnnotation":case"updatePageAnnotation":case"removePageAnnotation":case"getPageTextRects":case"searchAllPages":case"closeDocument":case"closeAllDocuments":case"saveAsCopy":case"getAttachments":case"addAttachment":case"removeAttachment":case"readAttachmentContent":case"setFormFieldValue":case"flattenPage":case"extractPages":case"extractText":case"redactTextInRects":case"getTextSlices":case"getPageGlyphs":case"getPageGeometry":case"merge":case"mergePages":case"preparePrintDocument":o=this.engine[n](...i)}this.tasks.set(e.id,o),o.onProgress((s=>{const t={id:e.id,type:"ExecuteProgress",data:s};this.respond(t)})),o.wait((s=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"result",value:s}};this.respond(t),this.tasks.delete(e.id),this.cancelledIds.delete(e.id)}),(s=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"error",value:s}};this.respond(t),this.tasks.delete(e.id),this.cancelledIds.delete(e.id)}))}}listen(){self.onmessage=e=>this.handle(e)}handle(e){this.logger.debug(a,r,"webworker receive message event: ",e.data);try{const s=e.data;switch(s.type){case"ExecuteRequest":this.execute(s);break;case"AbortRequest":this.abort(s)}}catch(s){this.logger.info(a,r,"webworker met error when processing message event:",s)}}ready(){this.listen(),this.respond({id:"0",type:"ReadyResponse"}),this.logger.debug(a,r,"runner is ready")}abort(e){const s=this.tasks.get(e.id);this.cancelledIds.add(e.id),s&&(s.abort({code:t.PdfErrorCode.Cancelled,message:"aborted by client"}),this.tasks.delete(e.id))}async maybeYield(){performance.now()-this.lastYield>8&&(await new Promise((e=>setTimeout(e,0))),this.lastYield=performance.now())}respond(e){this.logger.debug(a,r,"runner respond: ",e),self.postMessage(e)}}exports.DEFAULT_PDFIUM_WASM_URL="https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@1.3.2/dist/pdfium.wasm",exports.EngineRunner=n,exports.PdfiumEngineRunner=class extends n{constructor(e,s){super(s),this.wasmBinary=e}async prepare(){const t=this.wasmBinary,a=await s.init({wasmBinary:t});this.engine=new e.PdfiumEngine(a,{logger:this.logger}),this.ready()}};
2
- //# sourceMappingURL=index-DbHhsxMH.cjs.map
1
+ "use strict";const e=require("./engine-CqHqGfLG.cjs"),s=require("@embedpdf/pdfium"),t=require("@embedpdf/models"),a="WebWorkerEngineRunner",r="Engine";class n{constructor(e=new t.NoopLogger){this.logger=e,this.tasks=new Map,this.lastYield=0,this.cancelledIds=new Set,this.execute=async e=>{if(this.logger.debug(a,r,"runner start exeucte request"),!this.engine){const s={type:"reject",reason:{code:t.PdfErrorCode.NotReady,message:"engine has not started yet"}},a={id:e.id,type:"ExecuteResponse",data:{type:"error",value:s}};return void this.respond(a)}if(await this.maybeYield(),this.cancelledIds.has(e.id))return void this.respond({id:e.id,type:"ExecuteResponse",data:{type:"error",value:{type:"reject",reason:{code:t.PdfErrorCode.Cancelled,message:"aborted by client (pre-cancelled)"}}}});const s=this.engine,{name:n,args:i}=e.data;if(!s[n]){const s={type:"reject",reason:{code:t.PdfErrorCode.NotSupport,message:`engine method ${n} is not supported yet`}},a={id:e.id,type:"ExecuteResponse",data:{type:"error",value:s}};return void this.respond(a)}let o;switch(n){case"isSupport":case"initialize":case"destroy":case"openDocumentUrl":case"openDocumentBuffer":case"getDocPermissions":case"getDocUserPermissions":case"getMetadata":case"setMetadata":case"getBookmarks":case"setBookmarks":case"deleteBookmarks":case"getSignatures":case"renderPage":case"renderPageRect":case"renderPageAnnotation":case"renderThumbnail":case"getAllAnnotations":case"getPageAnnotations":case"createPageAnnotation":case"updatePageAnnotation":case"removePageAnnotation":case"getPageTextRects":case"searchAllPages":case"closeDocument":case"closeAllDocuments":case"saveAsCopy":case"getAttachments":case"addAttachment":case"removeAttachment":case"readAttachmentContent":case"setFormFieldValue":case"flattenPage":case"extractPages":case"extractText":case"redactTextInRects":case"getTextSlices":case"getPageGlyphs":case"getPageGeometry":case"merge":case"mergePages":case"preparePrintDocument":o=this.engine[n](...i)}this.tasks.set(e.id,o),o.onProgress((s=>{const t={id:e.id,type:"ExecuteProgress",data:s};this.respond(t)})),o.wait((s=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"result",value:s}};this.respond(t),this.tasks.delete(e.id),this.cancelledIds.delete(e.id)}),(s=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"error",value:s}};this.respond(t),this.tasks.delete(e.id),this.cancelledIds.delete(e.id)}))}}listen(){self.onmessage=e=>this.handle(e)}handle(e){this.logger.debug(a,r,"webworker receive message event: ",e.data);try{const s=e.data;switch(s.type){case"ExecuteRequest":this.execute(s);break;case"AbortRequest":this.abort(s)}}catch(s){this.logger.info(a,r,"webworker met error when processing message event:",s)}}ready(){this.listen(),this.respond({id:"0",type:"ReadyResponse"}),this.logger.debug(a,r,"runner is ready")}abort(e){const s=this.tasks.get(e.id);this.cancelledIds.add(e.id),s&&(s.abort({code:t.PdfErrorCode.Cancelled,message:"aborted by client"}),this.tasks.delete(e.id))}async maybeYield(){performance.now()-this.lastYield>8&&(await new Promise((e=>setTimeout(e,0))),this.lastYield=performance.now())}respond(e){this.logger.debug(a,r,"runner respond: ",e),self.postMessage(e)}}exports.DEFAULT_PDFIUM_WASM_URL="https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@1.3.3/dist/pdfium.wasm",exports.EngineRunner=n,exports.PdfiumEngineRunner=class extends n{constructor(e,s){super(s),this.wasmBinary=e}async prepare(){const t=this.wasmBinary,a=await s.init({wasmBinary:t});this.engine=new e.PdfiumEngine(a,{logger:this.logger}),this.ready()}};
2
+ //# sourceMappingURL=index-CEwZ7c1k.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DbHhsxMH.cjs","sources":["../src/lib/webworker/runner.ts","../src/lib/pdfium/index.ts","../src/lib/pdfium/runner.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n Task,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /** All running tasks, keyed by the message-id coming from the UI */\n private tasks = new Map<string, Task<any, any>>();\n\n /**\n * Last time we yielded to the event loop\n */\n private lastYield = 0;\n /**\n * Ids of tasks that have been cancelled\n */\n private cancelledIds = new Set<string>();\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n case 'AbortRequest':\n this.abort(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n private abort(request: AbortRequest) {\n const t = this.tasks.get(request.id);\n\n // Always record the abort id\n this.cancelledIds.add(request.id);\n\n if (!t) {\n // nothing to cancel (already finished or wrong id) – just ignore\n return;\n }\n\n t.abort({\n code: PdfErrorCode.Cancelled,\n message: 'aborted by client',\n });\n\n // we won’t hear from that task again\n this.tasks.delete(request.id);\n }\n\n private async maybeYield() {\n const now = performance.now();\n // give the event loop a breath roughly every ~8ms (tune as you like)\n if (now - this.lastYield > 8) {\n await new Promise((r) => setTimeout(r, 0));\n this.lastYield = performance.now();\n }\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n // let AbortRequest messages land and pre-cancel flags get set\n await this.maybeYield();\n\n if (this.cancelledIds.has(request.id)) {\n this.respond({\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: {\n type: 'reject',\n reason: { code: PdfErrorCode.Cancelled, message: 'aborted by client (pre-cancelled)' },\n },\n },\n });\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = this.engine[name]!(...args);\n break;\n case 'initialize':\n task = this.engine[name]!(...args);\n break;\n case 'destroy':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentUrl':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentBuffer':\n task = this.engine[name]!(...args);\n break;\n case 'getDocPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getDocUserPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'setMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'getBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'setBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'deleteBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'getSignatures':\n task = this.engine[name]!(...args);\n break;\n case 'renderPage':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageRect':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'renderThumbnail':\n task = this.engine[name]!(...args);\n break;\n case 'getAllAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'getPageAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'createPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'updatePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'removePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'getPageTextRects':\n task = this.engine[name]!(...args);\n break;\n case 'searchAllPages':\n task = this.engine[name]!(...args);\n break;\n case 'closeDocument':\n task = this.engine[name]!(...args);\n break;\n case 'closeAllDocuments':\n task = this.engine[name]!(...args);\n break;\n case 'saveAsCopy':\n task = this.engine[name]!(...args);\n break;\n case 'getAttachments':\n task = this.engine[name]!(...args);\n break;\n case 'addAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'removeAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'readAttachmentContent':\n task = this.engine[name]!(...args);\n break;\n case 'setFormFieldValue':\n task = this.engine[name]!(...args);\n break;\n case 'flattenPage':\n task = this.engine[name]!(...args);\n break;\n case 'extractPages':\n task = this.engine[name]!(...args);\n break;\n case 'extractText':\n task = this.engine[name]!(...args);\n break;\n case 'redactTextInRects':\n task = this.engine[name]!(...args);\n break;\n case 'getTextSlices':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGlyphs':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGeometry':\n task = this.engine[name]!(...args);\n break;\n case 'merge':\n task = this.engine[name]!(...args);\n break;\n case 'mergePages':\n task = this.engine[name]!(...args);\n break;\n case 'preparePrintDocument':\n task = this.engine[name]!(...args);\n break;\n }\n\n this.tasks.set(request.id, task);\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n","export * from './engine';\nexport * from './helper';\nexport * from './runner';\n\nexport const DEFAULT_PDFIUM_WASM_URL: string =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n","import { init } from '@embedpdf/pdfium';\nimport { EngineRunner } from '../webworker/runner';\nimport { PdfiumEngine } from './engine';\nimport { Logger } from '@embedpdf/models';\n\n/**\n * EngineRunner for pdfium-based wasm engine\n */\nexport class PdfiumEngineRunner extends EngineRunner {\n /**\n * Create an instance of PdfiumEngineRunner\n * @param wasmBinary - wasm binary that contains the pdfium wasm file\n */\n constructor(\n private wasmBinary: ArrayBuffer,\n logger?: Logger,\n ) {\n super(logger);\n }\n\n /**\n * Initialize runner\n */\n async prepare() {\n const wasmBinary = this.wasmBinary;\n const wasmModule = await init({ wasmBinary });\n this.engine = new PdfiumEngine(wasmModule, { logger: this.logger });\n this.ready();\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY","EngineRunner","constructor","logger","NoopLogger","this","tasks","Map","lastYield","cancelledIds","Set","execute","async","request","debug","engine","error","type","reason","code","PdfErrorCode","NotReady","message","response","id","data","value","respond","maybeYield","has","Cancelled","name","args","NotSupport","task","set","onProgress","progress","wait","result","delete","listen","self","onmessage","evt","handle","abort","e","info","ready","t","get","add","performance","now","Promise","r","setTimeout","postMessage","wasmBinary","super","prepare","wasmModule","init","PdfiumEngine"],"mappings":"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"}
1
+ {"version":3,"file":"index-CEwZ7c1k.cjs","sources":["../src/lib/webworker/runner.ts","../src/lib/pdfium/index.ts","../src/lib/pdfium/runner.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n Task,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /** All running tasks, keyed by the message-id coming from the UI */\n private tasks = new Map<string, Task<any, any>>();\n\n /**\n * Last time we yielded to the event loop\n */\n private lastYield = 0;\n /**\n * Ids of tasks that have been cancelled\n */\n private cancelledIds = new Set<string>();\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n case 'AbortRequest':\n this.abort(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n private abort(request: AbortRequest) {\n const t = this.tasks.get(request.id);\n\n // Always record the abort id\n this.cancelledIds.add(request.id);\n\n if (!t) {\n // nothing to cancel (already finished or wrong id) – just ignore\n return;\n }\n\n t.abort({\n code: PdfErrorCode.Cancelled,\n message: 'aborted by client',\n });\n\n // we won’t hear from that task again\n this.tasks.delete(request.id);\n }\n\n private async maybeYield() {\n const now = performance.now();\n // give the event loop a breath roughly every ~8ms (tune as you like)\n if (now - this.lastYield > 8) {\n await new Promise((r) => setTimeout(r, 0));\n this.lastYield = performance.now();\n }\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n // let AbortRequest messages land and pre-cancel flags get set\n await this.maybeYield();\n\n if (this.cancelledIds.has(request.id)) {\n this.respond({\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: {\n type: 'reject',\n reason: { code: PdfErrorCode.Cancelled, message: 'aborted by client (pre-cancelled)' },\n },\n },\n });\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = this.engine[name]!(...args);\n break;\n case 'initialize':\n task = this.engine[name]!(...args);\n break;\n case 'destroy':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentUrl':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentBuffer':\n task = this.engine[name]!(...args);\n break;\n case 'getDocPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getDocUserPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'setMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'getBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'setBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'deleteBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'getSignatures':\n task = this.engine[name]!(...args);\n break;\n case 'renderPage':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageRect':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'renderThumbnail':\n task = this.engine[name]!(...args);\n break;\n case 'getAllAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'getPageAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'createPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'updatePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'removePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'getPageTextRects':\n task = this.engine[name]!(...args);\n break;\n case 'searchAllPages':\n task = this.engine[name]!(...args);\n break;\n case 'closeDocument':\n task = this.engine[name]!(...args);\n break;\n case 'closeAllDocuments':\n task = this.engine[name]!(...args);\n break;\n case 'saveAsCopy':\n task = this.engine[name]!(...args);\n break;\n case 'getAttachments':\n task = this.engine[name]!(...args);\n break;\n case 'addAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'removeAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'readAttachmentContent':\n task = this.engine[name]!(...args);\n break;\n case 'setFormFieldValue':\n task = this.engine[name]!(...args);\n break;\n case 'flattenPage':\n task = this.engine[name]!(...args);\n break;\n case 'extractPages':\n task = this.engine[name]!(...args);\n break;\n case 'extractText':\n task = this.engine[name]!(...args);\n break;\n case 'redactTextInRects':\n task = this.engine[name]!(...args);\n break;\n case 'getTextSlices':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGlyphs':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGeometry':\n task = this.engine[name]!(...args);\n break;\n case 'merge':\n task = this.engine[name]!(...args);\n break;\n case 'mergePages':\n task = this.engine[name]!(...args);\n break;\n case 'preparePrintDocument':\n task = this.engine[name]!(...args);\n break;\n }\n\n this.tasks.set(request.id, task);\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n","export * from './engine';\nexport * from './helper';\nexport * from './runner';\n\nexport const DEFAULT_PDFIUM_WASM_URL: string =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n","import { init } from '@embedpdf/pdfium';\nimport { EngineRunner } from '../webworker/runner';\nimport { PdfiumEngine } from './engine';\nimport { Logger } from '@embedpdf/models';\n\n/**\n * EngineRunner for pdfium-based wasm engine\n */\nexport class PdfiumEngineRunner extends EngineRunner {\n /**\n * Create an instance of PdfiumEngineRunner\n * @param wasmBinary - wasm binary that contains the pdfium wasm file\n */\n constructor(\n private wasmBinary: ArrayBuffer,\n logger?: Logger,\n ) {\n super(logger);\n }\n\n /**\n * Initialize runner\n */\n async prepare() {\n const wasmBinary = this.wasmBinary;\n const wasmModule = await init({ wasmBinary });\n this.engine = new PdfiumEngine(wasmModule, { logger: this.logger });\n this.ready();\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY","EngineRunner","constructor","logger","NoopLogger","this","tasks","Map","lastYield","cancelledIds","Set","execute","async","request","debug","engine","error","type","reason","code","PdfErrorCode","NotReady","message","response","id","data","value","respond","maybeYield","has","Cancelled","name","args","NotSupport","task","set","onProgress","progress","wait","result","delete","listen","self","onmessage","evt","handle","abort","e","info","ready","t","get","add","performance","now","Promise","r","setTimeout","postMessage","wasmBinary","super","prepare","wasmModule","init","PdfiumEngine"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a as PdfiumEngine } from "./engine-BVe88qdX.js";
1
+ import { a as PdfiumEngine } from "./engine-B2N46cyz.js";
2
2
  import { init } from "@embedpdf/pdfium";
3
3
  import { NoopLogger, PdfErrorCode } from "@embedpdf/models";
4
4
  const LOG_SOURCE = "WebWorkerEngineRunner";
@@ -333,10 +333,10 @@ class PdfiumEngineRunner extends EngineRunner {
333
333
  this.ready();
334
334
  }
335
335
  }
336
- const DEFAULT_PDFIUM_WASM_URL = "https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@1.3.2/dist/pdfium.wasm";
336
+ const DEFAULT_PDFIUM_WASM_URL = "https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@1.3.3/dist/pdfium.wasm";
337
337
  export {
338
338
  DEFAULT_PDFIUM_WASM_URL as D,
339
339
  EngineRunner as E,
340
340
  PdfiumEngineRunner as P
341
341
  };
342
- //# sourceMappingURL=index-CRSfsjgU.js.map
342
+ //# sourceMappingURL=index-D_lC16Zk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CRSfsjgU.js","sources":["../src/lib/webworker/runner.ts","../src/lib/pdfium/runner.ts","../src/lib/pdfium/index.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n Task,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /** All running tasks, keyed by the message-id coming from the UI */\n private tasks = new Map<string, Task<any, any>>();\n\n /**\n * Last time we yielded to the event loop\n */\n private lastYield = 0;\n /**\n * Ids of tasks that have been cancelled\n */\n private cancelledIds = new Set<string>();\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n case 'AbortRequest':\n this.abort(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n private abort(request: AbortRequest) {\n const t = this.tasks.get(request.id);\n\n // Always record the abort id\n this.cancelledIds.add(request.id);\n\n if (!t) {\n // nothing to cancel (already finished or wrong id) – just ignore\n return;\n }\n\n t.abort({\n code: PdfErrorCode.Cancelled,\n message: 'aborted by client',\n });\n\n // we won’t hear from that task again\n this.tasks.delete(request.id);\n }\n\n private async maybeYield() {\n const now = performance.now();\n // give the event loop a breath roughly every ~8ms (tune as you like)\n if (now - this.lastYield > 8) {\n await new Promise((r) => setTimeout(r, 0));\n this.lastYield = performance.now();\n }\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n // let AbortRequest messages land and pre-cancel flags get set\n await this.maybeYield();\n\n if (this.cancelledIds.has(request.id)) {\n this.respond({\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: {\n type: 'reject',\n reason: { code: PdfErrorCode.Cancelled, message: 'aborted by client (pre-cancelled)' },\n },\n },\n });\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = this.engine[name]!(...args);\n break;\n case 'initialize':\n task = this.engine[name]!(...args);\n break;\n case 'destroy':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentUrl':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentBuffer':\n task = this.engine[name]!(...args);\n break;\n case 'getDocPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getDocUserPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'setMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'getBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'setBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'deleteBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'getSignatures':\n task = this.engine[name]!(...args);\n break;\n case 'renderPage':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageRect':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'renderThumbnail':\n task = this.engine[name]!(...args);\n break;\n case 'getAllAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'getPageAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'createPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'updatePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'removePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'getPageTextRects':\n task = this.engine[name]!(...args);\n break;\n case 'searchAllPages':\n task = this.engine[name]!(...args);\n break;\n case 'closeDocument':\n task = this.engine[name]!(...args);\n break;\n case 'closeAllDocuments':\n task = this.engine[name]!(...args);\n break;\n case 'saveAsCopy':\n task = this.engine[name]!(...args);\n break;\n case 'getAttachments':\n task = this.engine[name]!(...args);\n break;\n case 'addAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'removeAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'readAttachmentContent':\n task = this.engine[name]!(...args);\n break;\n case 'setFormFieldValue':\n task = this.engine[name]!(...args);\n break;\n case 'flattenPage':\n task = this.engine[name]!(...args);\n break;\n case 'extractPages':\n task = this.engine[name]!(...args);\n break;\n case 'extractText':\n task = this.engine[name]!(...args);\n break;\n case 'redactTextInRects':\n task = this.engine[name]!(...args);\n break;\n case 'getTextSlices':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGlyphs':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGeometry':\n task = this.engine[name]!(...args);\n break;\n case 'merge':\n task = this.engine[name]!(...args);\n break;\n case 'mergePages':\n task = this.engine[name]!(...args);\n break;\n case 'preparePrintDocument':\n task = this.engine[name]!(...args);\n break;\n }\n\n this.tasks.set(request.id, task);\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n","import { init } from '@embedpdf/pdfium';\nimport { EngineRunner } from '../webworker/runner';\nimport { PdfiumEngine } from './engine';\nimport { Logger } from '@embedpdf/models';\n\n/**\n * EngineRunner for pdfium-based wasm engine\n */\nexport class PdfiumEngineRunner extends EngineRunner {\n /**\n * Create an instance of PdfiumEngineRunner\n * @param wasmBinary - wasm binary that contains the pdfium wasm file\n */\n constructor(\n private wasmBinary: ArrayBuffer,\n logger?: Logger,\n ) {\n super(logger);\n }\n\n /**\n * Initialize runner\n */\n async prepare() {\n const wasmBinary = this.wasmBinary;\n const wasmModule = await init({ wasmBinary });\n this.engine = new PdfiumEngine(wasmModule, { logger: this.logger });\n this.ready();\n }\n}\n","export * from './engine';\nexport * from './helper';\nexport * from './runner';\n\nexport const DEFAULT_PDFIUM_WASM_URL: string =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-D_lC16Zk.js","sources":["../src/lib/webworker/runner.ts","../src/lib/pdfium/runner.ts","../src/lib/pdfium/index.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n Task,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /** All running tasks, keyed by the message-id coming from the UI */\n private tasks = new Map<string, Task<any, any>>();\n\n /**\n * Last time we yielded to the event loop\n */\n private lastYield = 0;\n /**\n * Ids of tasks that have been cancelled\n */\n private cancelledIds = new Set<string>();\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n case 'AbortRequest':\n this.abort(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n private abort(request: AbortRequest) {\n const t = this.tasks.get(request.id);\n\n // Always record the abort id\n this.cancelledIds.add(request.id);\n\n if (!t) {\n // nothing to cancel (already finished or wrong id) – just ignore\n return;\n }\n\n t.abort({\n code: PdfErrorCode.Cancelled,\n message: 'aborted by client',\n });\n\n // we won’t hear from that task again\n this.tasks.delete(request.id);\n }\n\n private async maybeYield() {\n const now = performance.now();\n // give the event loop a breath roughly every ~8ms (tune as you like)\n if (now - this.lastYield > 8) {\n await new Promise((r) => setTimeout(r, 0));\n this.lastYield = performance.now();\n }\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n // let AbortRequest messages land and pre-cancel flags get set\n await this.maybeYield();\n\n if (this.cancelledIds.has(request.id)) {\n this.respond({\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: {\n type: 'reject',\n reason: { code: PdfErrorCode.Cancelled, message: 'aborted by client (pre-cancelled)' },\n },\n },\n });\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = this.engine[name]!(...args);\n break;\n case 'initialize':\n task = this.engine[name]!(...args);\n break;\n case 'destroy':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentUrl':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentBuffer':\n task = this.engine[name]!(...args);\n break;\n case 'getDocPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getDocUserPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'setMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'getBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'setBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'deleteBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'getSignatures':\n task = this.engine[name]!(...args);\n break;\n case 'renderPage':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageRect':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'renderThumbnail':\n task = this.engine[name]!(...args);\n break;\n case 'getAllAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'getPageAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'createPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'updatePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'removePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'getPageTextRects':\n task = this.engine[name]!(...args);\n break;\n case 'searchAllPages':\n task = this.engine[name]!(...args);\n break;\n case 'closeDocument':\n task = this.engine[name]!(...args);\n break;\n case 'closeAllDocuments':\n task = this.engine[name]!(...args);\n break;\n case 'saveAsCopy':\n task = this.engine[name]!(...args);\n break;\n case 'getAttachments':\n task = this.engine[name]!(...args);\n break;\n case 'addAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'removeAttachment':\n task = this.engine[name]!(...args);\n break;\n case 'readAttachmentContent':\n task = this.engine[name]!(...args);\n break;\n case 'setFormFieldValue':\n task = this.engine[name]!(...args);\n break;\n case 'flattenPage':\n task = this.engine[name]!(...args);\n break;\n case 'extractPages':\n task = this.engine[name]!(...args);\n break;\n case 'extractText':\n task = this.engine[name]!(...args);\n break;\n case 'redactTextInRects':\n task = this.engine[name]!(...args);\n break;\n case 'getTextSlices':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGlyphs':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGeometry':\n task = this.engine[name]!(...args);\n break;\n case 'merge':\n task = this.engine[name]!(...args);\n break;\n case 'mergePages':\n task = this.engine[name]!(...args);\n break;\n case 'preparePrintDocument':\n task = this.engine[name]!(...args);\n break;\n }\n\n this.tasks.set(request.id, task);\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n this.tasks.delete(request.id);\n this.cancelledIds.delete(request.id);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n","import { init } from '@embedpdf/pdfium';\nimport { EngineRunner } from '../webworker/runner';\nimport { PdfiumEngine } from './engine';\nimport { Logger } from '@embedpdf/models';\n\n/**\n * EngineRunner for pdfium-based wasm engine\n */\nexport class PdfiumEngineRunner extends EngineRunner {\n /**\n * Create an instance of PdfiumEngineRunner\n * @param wasmBinary - wasm binary that contains the pdfium wasm file\n */\n constructor(\n private wasmBinary: ArrayBuffer,\n logger?: Logger,\n ) {\n super(logger);\n }\n\n /**\n * Initialize runner\n */\n async prepare() {\n const wasmBinary = this.wasmBinary;\n const wasmModule = await init({ wasmBinary });\n this.engine = new PdfiumEngine(wasmModule, { logger: this.logger });\n this.ready();\n }\n}\n","export * from './engine';\nexport * from './helper';\nexport * from './runner';\n\nexport const DEFAULT_PDFIUM_WASM_URL: string =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DbHhsxMH.cjs"),r=require("./lib/webworker/engine.cjs"),t=require("@embedpdf/models"),o=require("./engine-Cg0lRKs3.cjs");exports.DEFAULT_PDFIUM_WASM_URL=e.DEFAULT_PDFIUM_WASM_URL,exports.EngineRunner=e.EngineRunner,exports.PdfiumEngineRunner=e.PdfiumEngineRunner,exports.WebWorkerEngine=r.WebWorkerEngine,exports.WorkerTask=r.WorkerTask,exports.BitmapFormat=o.BitmapFormat,exports.OffscreenCanvasError=o.OffscreenCanvasError,exports.PdfiumEngine=o.PdfiumEngine,exports.PdfiumErrorCode=o.PdfiumErrorCode,exports.RenderFlag=o.RenderFlag,exports.browserImageDataToBlobConverter=o.browserImageDataToBlobConverter,exports.isValidCustomKey=o.isValidCustomKey,exports.readArrayBuffer=o.readArrayBuffer,exports.readString=o.readString,exports.createMockPdfDocument=function(e){const r=[];for(let t=0;t<10;t++)r.push({index:t,size:{width:100,height:200}});return{id:"id",pageCount:10,pages:r,...e}},exports.createMockPdfEngine=function(e){return{openDocumentUrl:jest.fn(((e,r)=>t.PdfTaskHelper.create())),openDocumentBuffer:jest.fn(((e,r)=>t.PdfTaskHelper.create())),getMetadata:e=>{const r={title:"title",author:"author",subject:"subject",keywords:"keywords",producer:"producer",creator:"creator",creationDate:new Date,modificationDate:new Date,trapped:t.PdfTrappedStatus.NotSet};return t.PdfTaskHelper.resolve(r)},setMetadata:(e,r)=>t.PdfTaskHelper.resolve(!0),getDocPermissions:e=>t.PdfTaskHelper.resolve(4294967295),getDocUserPermissions:e=>t.PdfTaskHelper.resolve(4294967295),getSignatures:e=>t.PdfTaskHelper.resolve([]),getBookmarks:e=>{const r=[];return r.push({title:"Page 1",target:{type:"destination",destination:{pageIndex:1,zoom:{mode:t.PdfZoomMode.FitPage},view:[]}}},{title:"Page 2",target:{type:"destination",destination:{pageIndex:2,zoom:{mode:t.PdfZoomMode.FitPage},view:[]}},children:[{title:"Page 3",target:{type:"destination",destination:{pageIndex:3,zoom:{mode:t.PdfZoomMode.FitPage},view:[]}}}]}),t.PdfTaskHelper.resolve({bookmarks:r})},setBookmarks:jest.fn(((e,r)=>t.PdfTaskHelper.resolve(!0))),deleteBookmarks:jest.fn((e=>t.PdfTaskHelper.resolve(!0))),renderPage:jest.fn(((e,r,o)=>{const{scaleFactor:n=1,rotation:s=t.Rotation.Degree0,dpr:a=1}=o??{},i=s%2==0?r.size:t.swap(r.size),d=Math.ceil(i.width*n)*Math.ceil(i.height*n),l=new Uint8ClampedArray(4*d),f=r.index%255;for(let t=0;t<d;t++){for(let e=0;e<3;e++){l[4*t+e]=f}l[4*t+3]=255}const p=l.buffer,c=p instanceof ArrayBuffer?p:new Uint8Array(l).buffer,g=new Blob([c],{type:"application/octet-stream"});return t.PdfTaskHelper.resolve(g)})),renderPageRect:jest.fn(((e,r,o,n)=>{const{scaleFactor:s=1,rotation:a=t.Rotation.Degree0,dpr:i=1}=n??{},d=a%2==0?r.size:t.swap(r.size),l=Math.ceil(d.width*s)*Math.ceil(d.height*s),f=new Uint8ClampedArray(4*l),p=r.index%255;for(let t=0;t<l;t++){for(let e=0;e<3;e++){f[4*t+e]=p}f[4*t+3]=255}const c=f.buffer,g=c instanceof ArrayBuffer?c:new Uint8Array(f).buffer,u=new Blob([g],{type:"application/octet-stream"});return t.PdfTaskHelper.resolve(u)})),renderThumbnail:jest.fn(((e,r)=>{const o=r.size.width/4*(r.size.height/4),n=new Uint8ClampedArray(4*o),s=r.index%255;for(let t=0;t<o;t++){for(let e=0;e<3;e++){n[4*t+e]=s}n[4*t+3]=255}const a=n.buffer,i=a instanceof ArrayBuffer?a:new Uint8Array(n).buffer,d=new Blob([i],{type:"image/png"});return t.PdfTaskHelper.resolve(d)})),renderPageAnnotation:jest.fn(((e,r,o,n)=>t.PdfTaskHelper.resolve(new Blob([],{type:"image/png"})))),getAllAnnotations:jest.fn((e=>t.PdfTaskHelper.resolve({}))),getPageAnnotations:jest.fn(((e,r)=>{const o={pageIndex:r.index,id:"1",type:t.PdfAnnotationSubtype.LINK,target:{type:"action",action:{type:t.PdfActionType.URI,uri:"https://localhost"}},rect:{origin:{x:0,y:0},size:{width:100,height:100}}},n=[];return n.push(o),t.PdfTaskHelper.resolve(n)})),createPageAnnotation:jest.fn((()=>t.PdfTaskHelper.resolve(t.uuidV4()))),updatePageAnnotation:jest.fn((()=>t.PdfTaskHelper.resolve(!0))),removePageAnnotation:jest.fn((()=>t.PdfTaskHelper.resolve(!0))),getPageTextRects:jest.fn(((e,r)=>t.PdfTaskHelper.resolve([{content:"pdf text",font:{family:"sans-serif",size:12},rect:{origin:{x:0,y:0},size:{width:100,height:100}}}]))),closeDocument:e=>t.PdfTaskHelper.resolve(!0),closeAllDocuments:()=>t.PdfTaskHelper.resolve(!0),saveAsCopy:e=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),flattenPage:(e,r,o)=>t.PdfTaskHelper.resolve(t.PdfPageFlattenResult.Success),extractPages:(e,r)=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),extractText:(e,r)=>t.PdfTaskHelper.resolve(""),redactTextInRects:(e,r,o,n)=>t.PdfTaskHelper.resolve(!0),getTextSlices:(e,r)=>t.PdfTaskHelper.resolve([]),getPageGlyphs:(e,r)=>t.PdfTaskHelper.resolve([]),getPageGeometry:(e,r)=>t.PdfTaskHelper.resolve({runs:[]}),merge:e=>t.PdfTaskHelper.resolve({id:"id",content:new ArrayBuffer(0)}),mergePages:e=>t.PdfTaskHelper.resolve({id:"id",content:new ArrayBuffer(0)}),preparePrintDocument:(e,r)=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),searchAllPages:(e,r,o)=>{const n={pageIndex:0,charIndex:0,charCount:r.length,rects:[{origin:{x:0,y:0},size:{width:50,height:20}}],context:{before:"",match:"",after:"",truncatedLeft:!1,truncatedRight:!1}};return t.PdfTaskHelper.resolve({results:[n],total:1})},getAttachments:e=>t.PdfTaskHelper.resolve([]),addAttachment:(e,r)=>t.PdfTaskHelper.resolve(!0),removeAttachment:(e,r)=>t.PdfTaskHelper.resolve(!0),readAttachmentContent:(e,r)=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),setFormFieldValue:(e,r,o,n)=>t.PdfTaskHelper.resolve(!0),...e}},exports.createMockPdfFile=function(e){return{id:"id",content:new ArrayBuffer(0)}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CEwZ7c1k.cjs"),r=require("./lib/webworker/engine.cjs"),t=require("@embedpdf/models"),o=require("./engine-CqHqGfLG.cjs");exports.DEFAULT_PDFIUM_WASM_URL=e.DEFAULT_PDFIUM_WASM_URL,exports.EngineRunner=e.EngineRunner,exports.PdfiumEngineRunner=e.PdfiumEngineRunner,exports.WebWorkerEngine=r.WebWorkerEngine,exports.WorkerTask=r.WorkerTask,exports.BitmapFormat=o.BitmapFormat,exports.OffscreenCanvasError=o.OffscreenCanvasError,exports.PdfiumEngine=o.PdfiumEngine,exports.PdfiumErrorCode=o.PdfiumErrorCode,exports.RenderFlag=o.RenderFlag,exports.browserImageDataToBlobConverter=o.browserImageDataToBlobConverter,exports.isValidCustomKey=o.isValidCustomKey,exports.readArrayBuffer=o.readArrayBuffer,exports.readString=o.readString,exports.createMockPdfDocument=function(e){const r=[];for(let o=0;o<10;o++)r.push({index:o,size:{width:100,height:200},rotation:t.Rotation.Degree0});return{id:"id",pageCount:10,pages:r,...e}},exports.createMockPdfEngine=function(e){return{openDocumentUrl:jest.fn(((e,r)=>t.PdfTaskHelper.create())),openDocumentBuffer:jest.fn(((e,r)=>t.PdfTaskHelper.create())),getMetadata:e=>{const r={title:"title",author:"author",subject:"subject",keywords:"keywords",producer:"producer",creator:"creator",creationDate:new Date,modificationDate:new Date,trapped:t.PdfTrappedStatus.NotSet};return t.PdfTaskHelper.resolve(r)},setMetadata:(e,r)=>t.PdfTaskHelper.resolve(!0),getDocPermissions:e=>t.PdfTaskHelper.resolve(4294967295),getDocUserPermissions:e=>t.PdfTaskHelper.resolve(4294967295),getSignatures:e=>t.PdfTaskHelper.resolve([]),getBookmarks:e=>{const r=[];return r.push({title:"Page 1",target:{type:"destination",destination:{pageIndex:1,zoom:{mode:t.PdfZoomMode.FitPage},view:[]}}},{title:"Page 2",target:{type:"destination",destination:{pageIndex:2,zoom:{mode:t.PdfZoomMode.FitPage},view:[]}},children:[{title:"Page 3",target:{type:"destination",destination:{pageIndex:3,zoom:{mode:t.PdfZoomMode.FitPage},view:[]}}}]}),t.PdfTaskHelper.resolve({bookmarks:r})},setBookmarks:jest.fn(((e,r)=>t.PdfTaskHelper.resolve(!0))),deleteBookmarks:jest.fn((e=>t.PdfTaskHelper.resolve(!0))),renderPage:jest.fn(((e,r,o)=>{const{scaleFactor:n=1,rotation:a=t.Rotation.Degree0,dpr:s=1}=o??{},i=a%2==0?r.size:t.swap(r.size),d=Math.ceil(i.width*n)*Math.ceil(i.height*n),l=new Uint8ClampedArray(4*d),f=r.index%255;for(let t=0;t<d;t++){for(let e=0;e<3;e++){l[4*t+e]=f}l[4*t+3]=255}const p=l.buffer,c=p instanceof ArrayBuffer?p:new Uint8Array(l).buffer,g=new Blob([c],{type:"application/octet-stream"});return t.PdfTaskHelper.resolve(g)})),renderPageRect:jest.fn(((e,r,o,n)=>{const{scaleFactor:a=1,rotation:s=t.Rotation.Degree0,dpr:i=1}=n??{},d=s%2==0?r.size:t.swap(r.size),l=Math.ceil(d.width*a)*Math.ceil(d.height*a),f=new Uint8ClampedArray(4*l),p=r.index%255;for(let t=0;t<l;t++){for(let e=0;e<3;e++){f[4*t+e]=p}f[4*t+3]=255}const c=f.buffer,g=c instanceof ArrayBuffer?c:new Uint8Array(f).buffer,u=new Blob([g],{type:"application/octet-stream"});return t.PdfTaskHelper.resolve(u)})),renderThumbnail:jest.fn(((e,r)=>{const o=r.size.width/4*(r.size.height/4),n=new Uint8ClampedArray(4*o),a=r.index%255;for(let t=0;t<o;t++){for(let e=0;e<3;e++){n[4*t+e]=a}n[4*t+3]=255}const s=n.buffer,i=s instanceof ArrayBuffer?s:new Uint8Array(n).buffer,d=new Blob([i],{type:"image/png"});return t.PdfTaskHelper.resolve(d)})),renderPageAnnotation:jest.fn(((e,r,o,n)=>t.PdfTaskHelper.resolve(new Blob([],{type:"image/png"})))),getAllAnnotations:jest.fn((e=>t.PdfTaskHelper.resolve({}))),getPageAnnotations:jest.fn(((e,r)=>{const o={pageIndex:r.index,id:"1",type:t.PdfAnnotationSubtype.LINK,target:{type:"action",action:{type:t.PdfActionType.URI,uri:"https://localhost"}},rect:{origin:{x:0,y:0},size:{width:100,height:100}}},n=[];return n.push(o),t.PdfTaskHelper.resolve(n)})),createPageAnnotation:jest.fn((()=>t.PdfTaskHelper.resolve(t.uuidV4()))),updatePageAnnotation:jest.fn((()=>t.PdfTaskHelper.resolve(!0))),removePageAnnotation:jest.fn((()=>t.PdfTaskHelper.resolve(!0))),getPageTextRects:jest.fn(((e,r)=>t.PdfTaskHelper.resolve([{content:"pdf text",font:{family:"sans-serif",size:12},rect:{origin:{x:0,y:0},size:{width:100,height:100}}}]))),closeDocument:e=>t.PdfTaskHelper.resolve(!0),closeAllDocuments:()=>t.PdfTaskHelper.resolve(!0),saveAsCopy:e=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),flattenPage:(e,r,o)=>t.PdfTaskHelper.resolve(t.PdfPageFlattenResult.Success),extractPages:(e,r)=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),extractText:(e,r)=>t.PdfTaskHelper.resolve(""),redactTextInRects:(e,r,o,n)=>t.PdfTaskHelper.resolve(!0),getTextSlices:(e,r)=>t.PdfTaskHelper.resolve([]),getPageGlyphs:(e,r)=>t.PdfTaskHelper.resolve([]),getPageGeometry:(e,r)=>t.PdfTaskHelper.resolve({runs:[]}),merge:e=>t.PdfTaskHelper.resolve({id:"id",content:new ArrayBuffer(0)}),mergePages:e=>t.PdfTaskHelper.resolve({id:"id",content:new ArrayBuffer(0)}),preparePrintDocument:(e,r)=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),searchAllPages:(e,r,o)=>{const n={pageIndex:0,charIndex:0,charCount:r.length,rects:[{origin:{x:0,y:0},size:{width:50,height:20}}],context:{before:"",match:"",after:"",truncatedLeft:!1,truncatedRight:!1}};return t.PdfTaskHelper.resolve({results:[n],total:1})},getAttachments:e=>t.PdfTaskHelper.resolve([]),addAttachment:(e,r)=>t.PdfTaskHelper.resolve(!0),removeAttachment:(e,r)=>t.PdfTaskHelper.resolve(!0),readAttachmentContent:(e,r)=>t.PdfTaskHelper.resolve(new ArrayBuffer(0)),setFormFieldValue:(e,r,o,n)=>t.PdfTaskHelper.resolve(!0),...e}},exports.createMockPdfFile=function(e){return{id:"id",content:new ArrayBuffer(0)}};
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/lib/mock/index.ts"],"sourcesContent":["import {\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n PdfAnnotationSubtype,\n PdfLinkAnnoObject,\n Rotation,\n swap,\n PdfZoomMode,\n PdfActionType,\n PdfAnnotationObject,\n PdfBookmarkObject,\n PdfTextRectObject,\n SearchResult,\n PdfAttachmentObject,\n PdfSignatureObject,\n Rect,\n PdfFile,\n PdfWidgetAnnoObject,\n FormFieldValue,\n PdfTaskHelper,\n PdfPageFlattenResult,\n SearchAllPagesResult,\n PdfOpenDocumentUrlOptions,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n PageTextSlice,\n PdfPageSearchProgress,\n PdfRenderPageOptions,\n PdfRenderPageAnnotationOptions,\n PdfFlattenPageOptions,\n PdfRedactTextOptions,\n PdfSearchAllPagesOptions,\n PdfOpenDocumentBufferOptions,\n uuidV4,\n PdfMetadataObject,\n PdfTask,\n PdfPrintOptions,\n PdfTrappedStatus,\n PdfAddAttachmentParams,\n} from '@embedpdf/models';\n\n/**\n * Create mock of pdf engine\n * @param partialEngine - partial configuration of engine\n * @returns - mock of pdf engine\n *\n * @public\n */\nexport function createMockPdfEngine(partialEngine?: Partial<PdfEngine>): PdfEngine {\n const engine: PdfEngine = {\n openDocumentUrl: jest.fn((file: PdfFileUrl, options?: PdfOpenDocumentUrlOptions) => {\n return PdfTaskHelper.create();\n }),\n openDocumentBuffer: jest.fn((file: PdfFile, options?: PdfOpenDocumentBufferOptions) => {\n return PdfTaskHelper.create();\n }),\n getMetadata: (doc: PdfDocumentObject) => {\n const metadata: PdfMetadataObject = {\n title: 'title',\n author: 'author',\n subject: 'subject',\n keywords: 'keywords',\n producer: 'producer',\n creator: 'creator',\n creationDate: new Date(),\n modificationDate: new Date(),\n trapped: PdfTrappedStatus.NotSet,\n };\n return PdfTaskHelper.resolve(metadata);\n },\n setMetadata: (doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>) => {\n return PdfTaskHelper.resolve(true);\n },\n getDocPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getDocUserPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getSignatures: (doc: PdfDocumentObject) => {\n const signatures: PdfSignatureObject[] = [];\n return PdfTaskHelper.resolve(signatures);\n },\n getBookmarks: (doc: PdfDocumentObject) => {\n const bookmarks: PdfBookmarkObject[] = [];\n bookmarks.push(\n {\n title: 'Page 1',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 1,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n {\n title: 'Page 2',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 2,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n children: [\n {\n title: 'Page 3',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 3,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n ],\n },\n );\n return PdfTaskHelper.resolve({\n bookmarks,\n });\n },\n setBookmarks: jest.fn((doc: PdfDocumentObject, payload: PdfBookmarkObject[]) => {\n return PdfTaskHelper.resolve(true);\n }),\n deleteBookmarks: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n }),\n renderPage: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderPageRect: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, rect: Rect, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderThumbnail: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const thumbnailWidth = page.size.width / 4;\n const thumbnailHeight = page.size.height / 4;\n const pixelCount = thumbnailWidth * thumbnailHeight;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'image/png' });\n\n return PdfTaskHelper.resolve(blob);\n }),\n renderPageAnnotation: jest.fn(\n (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ) => {\n return PdfTaskHelper.resolve(new Blob([], { type: 'image/png' }));\n },\n ),\n getAllAnnotations: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve({});\n }),\n getPageAnnotations: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const link: PdfLinkAnnoObject = {\n pageIndex: page.index,\n id: '1',\n type: PdfAnnotationSubtype.LINK,\n target: {\n type: 'action',\n action: {\n type: PdfActionType.URI,\n uri: 'https://localhost',\n },\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n };\n const annotations: PdfAnnotationObject[] = [];\n annotations.push(link);\n return PdfTaskHelper.resolve(annotations);\n }),\n createPageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(uuidV4());\n }),\n updatePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n removePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n getPageTextRects: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const textRects: PdfTextRectObject[] = [\n {\n content: 'pdf text',\n font: {\n family: 'sans-serif',\n size: 12,\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n },\n ];\n return PdfTaskHelper.resolve(textRects);\n }),\n closeDocument: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n closeAllDocuments: () => {\n return PdfTaskHelper.resolve(true);\n },\n saveAsCopy: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n flattenPage: (pdf: PdfDocumentObject, page: PdfPageObject, options?: PdfFlattenPageOptions) => {\n return PdfTaskHelper.resolve<PdfPageFlattenResult>(PdfPageFlattenResult.Success);\n },\n extractPages: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n extractText: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve('');\n },\n redactTextInRects: (\n pdf: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n getTextSlices: (doc: PdfDocumentObject, slices: PageTextSlice[]) => {\n return PdfTaskHelper.resolve([] as string[]);\n },\n getPageGlyphs: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve([] as PdfGlyphObject[]);\n },\n getPageGeometry: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve({\n runs: [],\n } as PdfPageGeometry);\n },\n merge: (files: PdfFile[]) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n mergePages: (mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n preparePrintDocument: (doc: PdfDocumentObject, options?: PdfPrintOptions) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n searchAllPages: (\n doc: PdfDocumentObject,\n keyword: string,\n options?: PdfSearchAllPagesOptions,\n ) => {\n // Create a mock search result\n const mockResult: SearchResult = {\n pageIndex: 0,\n charIndex: 0,\n charCount: keyword.length,\n rects: [\n {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 50,\n height: 20,\n },\n },\n ],\n context: {\n before: '',\n match: '',\n after: '',\n truncatedLeft: false,\n truncatedRight: false,\n },\n };\n\n // Return a mock SearchAllPagesResult with a single result\n return PdfTaskHelper.resolve<SearchAllPagesResult, PdfPageSearchProgress>({\n results: [mockResult],\n total: 1,\n });\n },\n getAttachments: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve([] as PdfAttachmentObject[]);\n },\n addAttachment: (doc: PdfDocumentObject, params: PdfAddAttachmentParams) => {\n return PdfTaskHelper.resolve(true);\n },\n removeAttachment: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n readAttachmentContent: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n setFormFieldValue: (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n text: FormFieldValue,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n ...partialEngine,\n };\n\n return engine;\n}\n/**\n * Create mock of pdf document\n * @param doc - partial configuration of document\n * @returns mock of pdf document\n *\n * @public\n */\nexport function createMockPdfDocument(doc?: Partial<PdfDocumentObject>): PdfDocumentObject {\n const pageCount = 10;\n const pageWidth = 100;\n const pageHeight = 200;\n const pages = [];\n for (let i = 0; i < pageCount; i++) {\n pages.push({\n index: i,\n size: {\n width: pageWidth,\n height: pageHeight,\n },\n });\n }\n\n return {\n id: 'id',\n pageCount: pageCount,\n pages: pages,\n ...doc,\n };\n}\n\n/**\n * Create mock of pdf file\n * @param file - partial configuration of file\n * @returns mock of pdf file\n *\n * @public\n */\nexport function createMockPdfFile(file?: Partial<PdfFile>): PdfFile {\n return {\n id: 'id',\n content: new ArrayBuffer(0),\n };\n}\n"],"names":["doc","pages","i","push","index","size","width","height","id","pageCount","partialEngine","engine","openDocumentUrl","jest","fn","file","options","PdfTaskHelper","create","openDocumentBuffer","getMetadata","metadata","title","author","subject","keywords","producer","creator","creationDate","Date","modificationDate","trapped","PdfTrappedStatus","NotSet","resolve","setMetadata","getDocPermissions","getDocUserPermissions","getSignatures","getBookmarks","bookmarks","target","type","destination","pageIndex","zoom","mode","PdfZoomMode","FitPage","view","children","setBookmarks","payload","deleteBookmarks","renderPage","page","scaleFactor","rotation","Rotation","Degree0","dpr","pageSize","swap","pixelCount","Math","ceil","array","Uint8ClampedArray","rgbValue","j","ab","buffer","realBuffer","ArrayBuffer","Uint8Array","blob","Blob","renderPageRect","rect","renderThumbnail","renderPageAnnotation","annotation","getAllAnnotations","getPageAnnotations","link","PdfAnnotationSubtype","LINK","action","PdfActionType","URI","uri","origin","x","y","annotations","createPageAnnotation","uuidV4","updatePageAnnotation","removePageAnnotation","getPageTextRects","content","font","family","closeDocument","pdf","closeAllDocuments","saveAsCopy","flattenPage","PdfPageFlattenResult","Success","extractPages","pageIndexes","extractText","redactTextInRects","rects","getTextSlices","slices","getPageGlyphs","getPageGeometry","runs","merge","files","mergePages","mergeConfigs","preparePrintDocument","searchAllPages","keyword","mockResult","charIndex","charCount","length","context","before","match","after","truncatedLeft","truncatedRight","results","total","getAttachments","addAttachment","params","removeAttachment","attachment","readAttachmentContent","setFormFieldValue","text"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/lib/mock/index.ts"],"sourcesContent":["import {\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n PdfAnnotationSubtype,\n PdfLinkAnnoObject,\n Rotation,\n swap,\n PdfZoomMode,\n PdfActionType,\n PdfAnnotationObject,\n PdfBookmarkObject,\n PdfTextRectObject,\n SearchResult,\n PdfAttachmentObject,\n PdfSignatureObject,\n Rect,\n PdfFile,\n PdfWidgetAnnoObject,\n FormFieldValue,\n PdfTaskHelper,\n PdfPageFlattenResult,\n SearchAllPagesResult,\n PdfOpenDocumentUrlOptions,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n PageTextSlice,\n PdfPageSearchProgress,\n PdfRenderPageOptions,\n PdfRenderPageAnnotationOptions,\n PdfFlattenPageOptions,\n PdfRedactTextOptions,\n PdfSearchAllPagesOptions,\n PdfOpenDocumentBufferOptions,\n uuidV4,\n PdfMetadataObject,\n PdfTask,\n PdfPrintOptions,\n PdfTrappedStatus,\n PdfAddAttachmentParams,\n} from '@embedpdf/models';\n\n/**\n * Create mock of pdf engine\n * @param partialEngine - partial configuration of engine\n * @returns - mock of pdf engine\n *\n * @public\n */\nexport function createMockPdfEngine(partialEngine?: Partial<PdfEngine>): PdfEngine {\n const engine: PdfEngine = {\n openDocumentUrl: jest.fn((file: PdfFileUrl, options?: PdfOpenDocumentUrlOptions) => {\n return PdfTaskHelper.create();\n }),\n openDocumentBuffer: jest.fn((file: PdfFile, options?: PdfOpenDocumentBufferOptions) => {\n return PdfTaskHelper.create();\n }),\n getMetadata: (doc: PdfDocumentObject) => {\n const metadata: PdfMetadataObject = {\n title: 'title',\n author: 'author',\n subject: 'subject',\n keywords: 'keywords',\n producer: 'producer',\n creator: 'creator',\n creationDate: new Date(),\n modificationDate: new Date(),\n trapped: PdfTrappedStatus.NotSet,\n };\n return PdfTaskHelper.resolve(metadata);\n },\n setMetadata: (doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>) => {\n return PdfTaskHelper.resolve(true);\n },\n getDocPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getDocUserPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getSignatures: (doc: PdfDocumentObject) => {\n const signatures: PdfSignatureObject[] = [];\n return PdfTaskHelper.resolve(signatures);\n },\n getBookmarks: (doc: PdfDocumentObject) => {\n const bookmarks: PdfBookmarkObject[] = [];\n bookmarks.push(\n {\n title: 'Page 1',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 1,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n {\n title: 'Page 2',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 2,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n children: [\n {\n title: 'Page 3',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 3,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n ],\n },\n );\n return PdfTaskHelper.resolve({\n bookmarks,\n });\n },\n setBookmarks: jest.fn((doc: PdfDocumentObject, payload: PdfBookmarkObject[]) => {\n return PdfTaskHelper.resolve(true);\n }),\n deleteBookmarks: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n }),\n renderPage: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderPageRect: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, rect: Rect, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderThumbnail: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const thumbnailWidth = page.size.width / 4;\n const thumbnailHeight = page.size.height / 4;\n const pixelCount = thumbnailWidth * thumbnailHeight;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'image/png' });\n\n return PdfTaskHelper.resolve(blob);\n }),\n renderPageAnnotation: jest.fn(\n (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ) => {\n return PdfTaskHelper.resolve(new Blob([], { type: 'image/png' }));\n },\n ),\n getAllAnnotations: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve({});\n }),\n getPageAnnotations: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const link: PdfLinkAnnoObject = {\n pageIndex: page.index,\n id: '1',\n type: PdfAnnotationSubtype.LINK,\n target: {\n type: 'action',\n action: {\n type: PdfActionType.URI,\n uri: 'https://localhost',\n },\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n };\n const annotations: PdfAnnotationObject[] = [];\n annotations.push(link);\n return PdfTaskHelper.resolve(annotations);\n }),\n createPageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(uuidV4());\n }),\n updatePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n removePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n getPageTextRects: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const textRects: PdfTextRectObject[] = [\n {\n content: 'pdf text',\n font: {\n family: 'sans-serif',\n size: 12,\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n },\n ];\n return PdfTaskHelper.resolve(textRects);\n }),\n closeDocument: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n closeAllDocuments: () => {\n return PdfTaskHelper.resolve(true);\n },\n saveAsCopy: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n flattenPage: (pdf: PdfDocumentObject, page: PdfPageObject, options?: PdfFlattenPageOptions) => {\n return PdfTaskHelper.resolve<PdfPageFlattenResult>(PdfPageFlattenResult.Success);\n },\n extractPages: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n extractText: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve('');\n },\n redactTextInRects: (\n pdf: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n getTextSlices: (doc: PdfDocumentObject, slices: PageTextSlice[]) => {\n return PdfTaskHelper.resolve([] as string[]);\n },\n getPageGlyphs: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve([] as PdfGlyphObject[]);\n },\n getPageGeometry: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve({\n runs: [],\n } as PdfPageGeometry);\n },\n merge: (files: PdfFile[]) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n mergePages: (mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n preparePrintDocument: (doc: PdfDocumentObject, options?: PdfPrintOptions) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n searchAllPages: (\n doc: PdfDocumentObject,\n keyword: string,\n options?: PdfSearchAllPagesOptions,\n ) => {\n // Create a mock search result\n const mockResult: SearchResult = {\n pageIndex: 0,\n charIndex: 0,\n charCount: keyword.length,\n rects: [\n {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 50,\n height: 20,\n },\n },\n ],\n context: {\n before: '',\n match: '',\n after: '',\n truncatedLeft: false,\n truncatedRight: false,\n },\n };\n\n // Return a mock SearchAllPagesResult with a single result\n return PdfTaskHelper.resolve<SearchAllPagesResult, PdfPageSearchProgress>({\n results: [mockResult],\n total: 1,\n });\n },\n getAttachments: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve([] as PdfAttachmentObject[]);\n },\n addAttachment: (doc: PdfDocumentObject, params: PdfAddAttachmentParams) => {\n return PdfTaskHelper.resolve(true);\n },\n removeAttachment: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n readAttachmentContent: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n setFormFieldValue: (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n text: FormFieldValue,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n ...partialEngine,\n };\n\n return engine;\n}\n/**\n * Create mock of pdf document\n * @param doc - partial configuration of document\n * @returns mock of pdf document\n *\n * @public\n */\nexport function createMockPdfDocument(doc?: Partial<PdfDocumentObject>): PdfDocumentObject {\n const pageCount = 10;\n const pageWidth = 100;\n const pageHeight = 200;\n const pages = [];\n for (let i = 0; i < pageCount; i++) {\n pages.push({\n index: i,\n size: {\n width: pageWidth,\n height: pageHeight,\n },\n rotation: Rotation.Degree0,\n });\n }\n\n return {\n id: 'id',\n pageCount: pageCount,\n pages: pages,\n ...doc,\n };\n}\n\n/**\n * Create mock of pdf file\n * @param file - partial configuration of file\n * @returns mock of pdf file\n *\n * @public\n */\nexport function createMockPdfFile(file?: Partial<PdfFile>): PdfFile {\n return {\n id: 'id',\n content: new ArrayBuffer(0),\n };\n}\n"],"names":["doc","pages","i","push","index","size","width","height","rotation","Rotation","Degree0","id","pageCount","partialEngine","engine","openDocumentUrl","jest","fn","file","options","PdfTaskHelper","create","openDocumentBuffer","getMetadata","metadata","title","author","subject","keywords","producer","creator","creationDate","Date","modificationDate","trapped","PdfTrappedStatus","NotSet","resolve","setMetadata","getDocPermissions","getDocUserPermissions","getSignatures","getBookmarks","bookmarks","target","type","destination","pageIndex","zoom","mode","PdfZoomMode","FitPage","view","children","setBookmarks","payload","deleteBookmarks","renderPage","page","scaleFactor","dpr","pageSize","swap","pixelCount","Math","ceil","array","Uint8ClampedArray","rgbValue","j","ab","buffer","realBuffer","ArrayBuffer","Uint8Array","blob","Blob","renderPageRect","rect","renderThumbnail","renderPageAnnotation","annotation","getAllAnnotations","getPageAnnotations","link","PdfAnnotationSubtype","LINK","action","PdfActionType","URI","uri","origin","x","y","annotations","createPageAnnotation","uuidV4","updatePageAnnotation","removePageAnnotation","getPageTextRects","content","font","family","closeDocument","pdf","closeAllDocuments","saveAsCopy","flattenPage","PdfPageFlattenResult","Success","extractPages","pageIndexes","extractText","redactTextInRects","rects","getTextSlices","slices","getPageGlyphs","getPageGeometry","runs","merge","files","mergePages","mergeConfigs","preparePrintDocument","searchAllPages","keyword","mockResult","charIndex","charCount","length","context","before","match","after","truncatedLeft","truncatedRight","results","total","getAttachments","addAttachment","params","removeAttachment","attachment","readAttachmentContent","setFormFieldValue","text"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { D, E, P } from "./index-CRSfsjgU.js";
1
+ import { D, E, P } from "./index-D_lC16Zk.js";
2
2
  import { WebWorkerEngine, WorkerTask } from "./lib/webworker/engine.js";
3
3
  import { PdfTaskHelper, uuidV4, PdfActionType, PdfAnnotationSubtype, Rotation, swap, PdfPageFlattenResult, PdfZoomMode, PdfTrappedStatus } from "@embedpdf/models";
4
- import { B, O, a, P as P2, R, b, i, c, r } from "./engine-BVe88qdX.js";
4
+ import { B, O, a, P as P2, R, b, i, c, r } from "./engine-B2N46cyz.js";
5
5
  function createMockPdfEngine(partialEngine) {
6
6
  const engine = {
7
7
  openDocumentUrl: jest.fn((file, options) => {
@@ -334,7 +334,8 @@ function createMockPdfDocument(doc) {
334
334
  size: {
335
335
  width: pageWidth,
336
336
  height: pageHeight
337
- }
337
+ },
338
+ rotation: Rotation.Degree0
338
339
  });
339
340
  }
340
341
  return {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/mock/index.ts"],"sourcesContent":["import {\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n PdfAnnotationSubtype,\n PdfLinkAnnoObject,\n Rotation,\n swap,\n PdfZoomMode,\n PdfActionType,\n PdfAnnotationObject,\n PdfBookmarkObject,\n PdfTextRectObject,\n SearchResult,\n PdfAttachmentObject,\n PdfSignatureObject,\n Rect,\n PdfFile,\n PdfWidgetAnnoObject,\n FormFieldValue,\n PdfTaskHelper,\n PdfPageFlattenResult,\n SearchAllPagesResult,\n PdfOpenDocumentUrlOptions,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n PageTextSlice,\n PdfPageSearchProgress,\n PdfRenderPageOptions,\n PdfRenderPageAnnotationOptions,\n PdfFlattenPageOptions,\n PdfRedactTextOptions,\n PdfSearchAllPagesOptions,\n PdfOpenDocumentBufferOptions,\n uuidV4,\n PdfMetadataObject,\n PdfTask,\n PdfPrintOptions,\n PdfTrappedStatus,\n PdfAddAttachmentParams,\n} from '@embedpdf/models';\n\n/**\n * Create mock of pdf engine\n * @param partialEngine - partial configuration of engine\n * @returns - mock of pdf engine\n *\n * @public\n */\nexport function createMockPdfEngine(partialEngine?: Partial<PdfEngine>): PdfEngine {\n const engine: PdfEngine = {\n openDocumentUrl: jest.fn((file: PdfFileUrl, options?: PdfOpenDocumentUrlOptions) => {\n return PdfTaskHelper.create();\n }),\n openDocumentBuffer: jest.fn((file: PdfFile, options?: PdfOpenDocumentBufferOptions) => {\n return PdfTaskHelper.create();\n }),\n getMetadata: (doc: PdfDocumentObject) => {\n const metadata: PdfMetadataObject = {\n title: 'title',\n author: 'author',\n subject: 'subject',\n keywords: 'keywords',\n producer: 'producer',\n creator: 'creator',\n creationDate: new Date(),\n modificationDate: new Date(),\n trapped: PdfTrappedStatus.NotSet,\n };\n return PdfTaskHelper.resolve(metadata);\n },\n setMetadata: (doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>) => {\n return PdfTaskHelper.resolve(true);\n },\n getDocPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getDocUserPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getSignatures: (doc: PdfDocumentObject) => {\n const signatures: PdfSignatureObject[] = [];\n return PdfTaskHelper.resolve(signatures);\n },\n getBookmarks: (doc: PdfDocumentObject) => {\n const bookmarks: PdfBookmarkObject[] = [];\n bookmarks.push(\n {\n title: 'Page 1',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 1,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n {\n title: 'Page 2',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 2,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n children: [\n {\n title: 'Page 3',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 3,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n ],\n },\n );\n return PdfTaskHelper.resolve({\n bookmarks,\n });\n },\n setBookmarks: jest.fn((doc: PdfDocumentObject, payload: PdfBookmarkObject[]) => {\n return PdfTaskHelper.resolve(true);\n }),\n deleteBookmarks: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n }),\n renderPage: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderPageRect: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, rect: Rect, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderThumbnail: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const thumbnailWidth = page.size.width / 4;\n const thumbnailHeight = page.size.height / 4;\n const pixelCount = thumbnailWidth * thumbnailHeight;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'image/png' });\n\n return PdfTaskHelper.resolve(blob);\n }),\n renderPageAnnotation: jest.fn(\n (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ) => {\n return PdfTaskHelper.resolve(new Blob([], { type: 'image/png' }));\n },\n ),\n getAllAnnotations: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve({});\n }),\n getPageAnnotations: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const link: PdfLinkAnnoObject = {\n pageIndex: page.index,\n id: '1',\n type: PdfAnnotationSubtype.LINK,\n target: {\n type: 'action',\n action: {\n type: PdfActionType.URI,\n uri: 'https://localhost',\n },\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n };\n const annotations: PdfAnnotationObject[] = [];\n annotations.push(link);\n return PdfTaskHelper.resolve(annotations);\n }),\n createPageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(uuidV4());\n }),\n updatePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n removePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n getPageTextRects: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const textRects: PdfTextRectObject[] = [\n {\n content: 'pdf text',\n font: {\n family: 'sans-serif',\n size: 12,\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n },\n ];\n return PdfTaskHelper.resolve(textRects);\n }),\n closeDocument: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n closeAllDocuments: () => {\n return PdfTaskHelper.resolve(true);\n },\n saveAsCopy: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n flattenPage: (pdf: PdfDocumentObject, page: PdfPageObject, options?: PdfFlattenPageOptions) => {\n return PdfTaskHelper.resolve<PdfPageFlattenResult>(PdfPageFlattenResult.Success);\n },\n extractPages: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n extractText: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve('');\n },\n redactTextInRects: (\n pdf: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n getTextSlices: (doc: PdfDocumentObject, slices: PageTextSlice[]) => {\n return PdfTaskHelper.resolve([] as string[]);\n },\n getPageGlyphs: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve([] as PdfGlyphObject[]);\n },\n getPageGeometry: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve({\n runs: [],\n } as PdfPageGeometry);\n },\n merge: (files: PdfFile[]) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n mergePages: (mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n preparePrintDocument: (doc: PdfDocumentObject, options?: PdfPrintOptions) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n searchAllPages: (\n doc: PdfDocumentObject,\n keyword: string,\n options?: PdfSearchAllPagesOptions,\n ) => {\n // Create a mock search result\n const mockResult: SearchResult = {\n pageIndex: 0,\n charIndex: 0,\n charCount: keyword.length,\n rects: [\n {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 50,\n height: 20,\n },\n },\n ],\n context: {\n before: '',\n match: '',\n after: '',\n truncatedLeft: false,\n truncatedRight: false,\n },\n };\n\n // Return a mock SearchAllPagesResult with a single result\n return PdfTaskHelper.resolve<SearchAllPagesResult, PdfPageSearchProgress>({\n results: [mockResult],\n total: 1,\n });\n },\n getAttachments: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve([] as PdfAttachmentObject[]);\n },\n addAttachment: (doc: PdfDocumentObject, params: PdfAddAttachmentParams) => {\n return PdfTaskHelper.resolve(true);\n },\n removeAttachment: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n readAttachmentContent: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n setFormFieldValue: (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n text: FormFieldValue,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n ...partialEngine,\n };\n\n return engine;\n}\n/**\n * Create mock of pdf document\n * @param doc - partial configuration of document\n * @returns mock of pdf document\n *\n * @public\n */\nexport function createMockPdfDocument(doc?: Partial<PdfDocumentObject>): PdfDocumentObject {\n const pageCount = 10;\n const pageWidth = 100;\n const pageHeight = 200;\n const pages = [];\n for (let i = 0; i < pageCount; i++) {\n pages.push({\n index: i,\n size: {\n width: pageWidth,\n height: pageHeight,\n },\n });\n }\n\n return {\n id: 'id',\n pageCount: pageCount,\n pages: pages,\n ...doc,\n };\n}\n\n/**\n * Create mock of pdf file\n * @param file - partial configuration of file\n * @returns mock of pdf file\n *\n * @public\n */\nexport function createMockPdfFile(file?: Partial<PdfFile>): PdfFile {\n return {\n id: 'id',\n content: new ArrayBuffer(0),\n };\n}\n"],"names":["i"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/mock/index.ts"],"sourcesContent":["import {\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n PdfAnnotationSubtype,\n PdfLinkAnnoObject,\n Rotation,\n swap,\n PdfZoomMode,\n PdfActionType,\n PdfAnnotationObject,\n PdfBookmarkObject,\n PdfTextRectObject,\n SearchResult,\n PdfAttachmentObject,\n PdfSignatureObject,\n Rect,\n PdfFile,\n PdfWidgetAnnoObject,\n FormFieldValue,\n PdfTaskHelper,\n PdfPageFlattenResult,\n SearchAllPagesResult,\n PdfOpenDocumentUrlOptions,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n PageTextSlice,\n PdfPageSearchProgress,\n PdfRenderPageOptions,\n PdfRenderPageAnnotationOptions,\n PdfFlattenPageOptions,\n PdfRedactTextOptions,\n PdfSearchAllPagesOptions,\n PdfOpenDocumentBufferOptions,\n uuidV4,\n PdfMetadataObject,\n PdfTask,\n PdfPrintOptions,\n PdfTrappedStatus,\n PdfAddAttachmentParams,\n} from '@embedpdf/models';\n\n/**\n * Create mock of pdf engine\n * @param partialEngine - partial configuration of engine\n * @returns - mock of pdf engine\n *\n * @public\n */\nexport function createMockPdfEngine(partialEngine?: Partial<PdfEngine>): PdfEngine {\n const engine: PdfEngine = {\n openDocumentUrl: jest.fn((file: PdfFileUrl, options?: PdfOpenDocumentUrlOptions) => {\n return PdfTaskHelper.create();\n }),\n openDocumentBuffer: jest.fn((file: PdfFile, options?: PdfOpenDocumentBufferOptions) => {\n return PdfTaskHelper.create();\n }),\n getMetadata: (doc: PdfDocumentObject) => {\n const metadata: PdfMetadataObject = {\n title: 'title',\n author: 'author',\n subject: 'subject',\n keywords: 'keywords',\n producer: 'producer',\n creator: 'creator',\n creationDate: new Date(),\n modificationDate: new Date(),\n trapped: PdfTrappedStatus.NotSet,\n };\n return PdfTaskHelper.resolve(metadata);\n },\n setMetadata: (doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>) => {\n return PdfTaskHelper.resolve(true);\n },\n getDocPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getDocUserPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getSignatures: (doc: PdfDocumentObject) => {\n const signatures: PdfSignatureObject[] = [];\n return PdfTaskHelper.resolve(signatures);\n },\n getBookmarks: (doc: PdfDocumentObject) => {\n const bookmarks: PdfBookmarkObject[] = [];\n bookmarks.push(\n {\n title: 'Page 1',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 1,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n {\n title: 'Page 2',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 2,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n children: [\n {\n title: 'Page 3',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 3,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n ],\n },\n );\n return PdfTaskHelper.resolve({\n bookmarks,\n });\n },\n setBookmarks: jest.fn((doc: PdfDocumentObject, payload: PdfBookmarkObject[]) => {\n return PdfTaskHelper.resolve(true);\n }),\n deleteBookmarks: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n }),\n renderPage: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderPageRect: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, rect: Rect, options?: PdfRenderPageOptions) => {\n const { scaleFactor = 1, rotation = Rotation.Degree0, dpr = 1 } = options ?? {};\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderThumbnail: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const thumbnailWidth = page.size.width / 4;\n const thumbnailHeight = page.size.height / 4;\n const pixelCount = thumbnailWidth * thumbnailHeight;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'image/png' });\n\n return PdfTaskHelper.resolve(blob);\n }),\n renderPageAnnotation: jest.fn(\n (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n options?: PdfRenderPageAnnotationOptions,\n ) => {\n return PdfTaskHelper.resolve(new Blob([], { type: 'image/png' }));\n },\n ),\n getAllAnnotations: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve({});\n }),\n getPageAnnotations: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const link: PdfLinkAnnoObject = {\n pageIndex: page.index,\n id: '1',\n type: PdfAnnotationSubtype.LINK,\n target: {\n type: 'action',\n action: {\n type: PdfActionType.URI,\n uri: 'https://localhost',\n },\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n };\n const annotations: PdfAnnotationObject[] = [];\n annotations.push(link);\n return PdfTaskHelper.resolve(annotations);\n }),\n createPageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(uuidV4());\n }),\n updatePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n removePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n getPageTextRects: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const textRects: PdfTextRectObject[] = [\n {\n content: 'pdf text',\n font: {\n family: 'sans-serif',\n size: 12,\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n },\n ];\n return PdfTaskHelper.resolve(textRects);\n }),\n closeDocument: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n closeAllDocuments: () => {\n return PdfTaskHelper.resolve(true);\n },\n saveAsCopy: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n flattenPage: (pdf: PdfDocumentObject, page: PdfPageObject, options?: PdfFlattenPageOptions) => {\n return PdfTaskHelper.resolve<PdfPageFlattenResult>(PdfPageFlattenResult.Success);\n },\n extractPages: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n extractText: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve('');\n },\n redactTextInRects: (\n pdf: PdfDocumentObject,\n page: PdfPageObject,\n rects: Rect[],\n options?: PdfRedactTextOptions,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n getTextSlices: (doc: PdfDocumentObject, slices: PageTextSlice[]) => {\n return PdfTaskHelper.resolve([] as string[]);\n },\n getPageGlyphs: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve([] as PdfGlyphObject[]);\n },\n getPageGeometry: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve({\n runs: [],\n } as PdfPageGeometry);\n },\n merge: (files: PdfFile[]) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n mergePages: (mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n preparePrintDocument: (doc: PdfDocumentObject, options?: PdfPrintOptions) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n searchAllPages: (\n doc: PdfDocumentObject,\n keyword: string,\n options?: PdfSearchAllPagesOptions,\n ) => {\n // Create a mock search result\n const mockResult: SearchResult = {\n pageIndex: 0,\n charIndex: 0,\n charCount: keyword.length,\n rects: [\n {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 50,\n height: 20,\n },\n },\n ],\n context: {\n before: '',\n match: '',\n after: '',\n truncatedLeft: false,\n truncatedRight: false,\n },\n };\n\n // Return a mock SearchAllPagesResult with a single result\n return PdfTaskHelper.resolve<SearchAllPagesResult, PdfPageSearchProgress>({\n results: [mockResult],\n total: 1,\n });\n },\n getAttachments: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve([] as PdfAttachmentObject[]);\n },\n addAttachment: (doc: PdfDocumentObject, params: PdfAddAttachmentParams) => {\n return PdfTaskHelper.resolve(true);\n },\n removeAttachment: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n readAttachmentContent: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n setFormFieldValue: (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n text: FormFieldValue,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n ...partialEngine,\n };\n\n return engine;\n}\n/**\n * Create mock of pdf document\n * @param doc - partial configuration of document\n * @returns mock of pdf document\n *\n * @public\n */\nexport function createMockPdfDocument(doc?: Partial<PdfDocumentObject>): PdfDocumentObject {\n const pageCount = 10;\n const pageWidth = 100;\n const pageHeight = 200;\n const pages = [];\n for (let i = 0; i < pageCount; i++) {\n pages.push({\n index: i,\n size: {\n width: pageWidth,\n height: pageHeight,\n },\n rotation: Rotation.Degree0,\n });\n }\n\n return {\n id: 'id',\n pageCount: pageCount,\n pages: pages,\n ...doc,\n };\n}\n\n/**\n * Create mock of pdf file\n * @param file - partial configuration of file\n * @returns mock of pdf file\n *\n * @public\n */\nexport function createMockPdfFile(file?: Partial<PdfFile>): PdfFile {\n return {\n id: 'id',\n content: new ArrayBuffer(0),\n };\n}\n"],"names":["i"],"mappings":"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"}
@@ -438,6 +438,8 @@ export declare class PdfiumEngine<T = Blob> implements PdfEngine<T> {
438
438
  * @private
439
439
  */
440
440
  addStampContent(docPtr: number, page: PdfPageObject, pagePtr: number, annotationPtr: number, annotation: PdfStampAnnoObject, imageData?: ImageData): boolean;
441
+ /** Build page-space image placement matrix from a device-space rect. */
442
+ private imageMatrixFromDeviceRect;
441
443
  /**
442
444
  * Add image object to annotation
443
445
  * @param docPtr - pointer to pdf document object
@@ -925,6 +927,7 @@ export declare class PdfiumEngine<T = Blob> implements PdfEngine<T> {
925
927
  /**
926
928
  * Read ink list from annotation
927
929
  * @param page - logical page info object (`PdfPageObject`)
930
+ * @param pagePtr - pointer to the page
928
931
  * @param annotationPtr - pointer to the annotation whose ink list is needed
929
932
  * @returns ink list
930
933
  */
@@ -932,8 +935,9 @@ export declare class PdfiumEngine<T = Blob> implements PdfEngine<T> {
932
935
  /**
933
936
  * Add ink list to annotation
934
937
  * @param page - logical page info object (`PdfPageObject`)
938
+ * @param pagePtr - pointer to the page
935
939
  * @param annotationPtr - pointer to the annotation whose ink list is needed
936
- * @param annotation - annotation object (`PdfInkAnnoObject`)
940
+ * @param inkList - ink list array of `PdfInkListObject`
937
941
  * @returns `true` if the operation was successful
938
942
  */
939
943
  private setInkList;
@@ -1463,7 +1467,7 @@ export declare class PdfiumEngine<T = Blob> implements PdfEngine<T> {
1463
1467
  *
1464
1468
  * @private
1465
1469
  */
1466
- setPageAnnoRect(page: PdfPageObject, pagePtr: number, annotationPtr: number, rect: Rect): boolean;
1470
+ private setPageAnnoRect;
1467
1471
  /**
1468
1472
  * Read the rectangle of annotation
1469
1473
  * @param annotationPtr - pointer to pdf annotation
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../engine-Cg0lRKs3.cjs"),e=require("../../index-DbHhsxMH.cjs");exports.BitmapFormat=r.BitmapFormat,exports.OffscreenCanvasError=r.OffscreenCanvasError,exports.PdfiumEngine=r.PdfiumEngine,exports.PdfiumErrorCode=r.PdfiumErrorCode,exports.RenderFlag=r.RenderFlag,exports.browserImageDataToBlobConverter=r.browserImageDataToBlobConverter,exports.isValidCustomKey=r.isValidCustomKey,exports.readArrayBuffer=r.readArrayBuffer,exports.readString=r.readString,exports.DEFAULT_PDFIUM_WASM_URL=e.DEFAULT_PDFIUM_WASM_URL,exports.PdfiumEngineRunner=e.PdfiumEngineRunner;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../engine-CqHqGfLG.cjs"),e=require("../../index-CEwZ7c1k.cjs");exports.BitmapFormat=r.BitmapFormat,exports.OffscreenCanvasError=r.OffscreenCanvasError,exports.PdfiumEngine=r.PdfiumEngine,exports.PdfiumErrorCode=r.PdfiumErrorCode,exports.RenderFlag=r.RenderFlag,exports.browserImageDataToBlobConverter=r.browserImageDataToBlobConverter,exports.isValidCustomKey=r.isValidCustomKey,exports.readArrayBuffer=r.readArrayBuffer,exports.readString=r.readString,exports.DEFAULT_PDFIUM_WASM_URL=e.DEFAULT_PDFIUM_WASM_URL,exports.PdfiumEngineRunner=e.PdfiumEngineRunner;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
- import { B, O, a, P, R, b, i, c, r } from "../../engine-BVe88qdX.js";
2
- import { D, P as P2 } from "../../index-CRSfsjgU.js";
1
+ import { B, O, a, P, R, b, i, c, r } from "../../engine-B2N46cyz.js";
2
+ import { D, P as P2 } from "../../index-D_lC16Zk.js";
3
3
  export {
4
4
  B as BitmapFormat,
5
5
  D as DEFAULT_PDFIUM_WASM_URL,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/pdfium"),i=require("../../../engine-Cg0lRKs3.cjs");exports.createPdfiumEngine=async function(r,t){const n=await fetch(r),a=await n.arrayBuffer(),u=await e.init({wasmBinary:a});return new i.PdfiumEngine(u,{logger:t})};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/pdfium"),i=require("../../../engine-CqHqGfLG.cjs");exports.createPdfiumEngine=async function(r,t){const n=await fetch(r),a=await n.arrayBuffer(),u=await e.init({wasmBinary:a});return new i.PdfiumEngine(u,{logger:t})};
2
2
  //# sourceMappingURL=direct-engine.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { init } from "@embedpdf/pdfium";
2
- import { a as PdfiumEngine } from "../../../engine-BVe88qdX.js";
2
+ import { a as PdfiumEngine } from "../../../engine-B2N46cyz.js";
3
3
  async function createPdfiumEngine(wasmUrl, logger) {
4
4
  const response = await fetch(wasmUrl);
5
5
  const wasmBinary = await response.arrayBuffer();