Skip to content

Commit 5dd3639

Browse files
committed
Send initialization message inside the remote executor.
1 parent 6e46cbf commit 5dd3639

2 files changed

Lines changed: 29 additions & 13 deletions

File tree

packages/engines/src/lib/orchestrator/remote-executor.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,25 @@ import {
3333
TaskError,
3434
PdfErrorCode,
3535
SearchResult,
36+
serializeLogger,
3637
} from '@embedpdf/models';
3738
import type { IPdfExecutor, ImageDataLike } from './pdf-engine';
3839
import type { WorkerRequest, WorkerResponse } from './pdfium-native-runner';
3940

41+
/**
42+
* Options for creating a RemoteExecutor
43+
*/
44+
export interface RemoteExecutorOptions {
45+
/**
46+
* URL to the pdfium.wasm file (required)
47+
*/
48+
wasmUrl: string;
49+
/**
50+
* Logger instance for debugging
51+
*/
52+
logger?: Logger;
53+
}
54+
4055
const LOG_SOURCE = 'RemoteExecutor';
4156
const LOG_CATEGORY = 'Worker';
4257

@@ -102,10 +117,19 @@ export class RemoteExecutor implements IPdfExecutor {
102117

103118
constructor(
104119
private worker: Worker,
105-
logger?: Logger,
120+
options: RemoteExecutorOptions,
106121
) {
107-
this.logger = logger ?? new NoopLogger();
122+
this.logger = options.logger ?? new NoopLogger();
108123
this.worker.addEventListener('message', this.handleMessage);
124+
125+
// Send initialization message with WASM URL
126+
this.worker.postMessage({
127+
id: '0',
128+
type: 'wasmInit',
129+
wasmUrl: options.wasmUrl,
130+
logger: options.logger ? serializeLogger(options.logger) : undefined,
131+
});
132+
109133
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'RemoteExecutor created');
110134
}
111135

packages/engines/src/lib/pdfium/web/worker-engine.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Logger, serializeLogger } from '@embedpdf/models';
1+
import { Logger } from '@embedpdf/models';
22
import { PdfEngine } from '../../orchestrator/pdf-engine';
33
import { RemoteExecutor } from '../../orchestrator/remote-executor';
44
import { ImageEncoderWorkerPool } from '../../image-encoder';
@@ -71,16 +71,8 @@ export function createPdfiumEngine(
7171
},
7272
);
7373

74-
// Send initialization message with WASM URL
75-
worker.postMessage({
76-
id: '0',
77-
type: 'wasmInit',
78-
wasmUrl,
79-
logger: logger ? serializeLogger(logger) : undefined,
80-
});
81-
82-
// Create RemoteExecutor (proxy to worker)
83-
const remoteExecutor = new RemoteExecutor(worker, logger);
74+
// Create RemoteExecutor (proxy to worker) - handles wasmInit internally
75+
const remoteExecutor = new RemoteExecutor(worker, { wasmUrl, logger });
8476

8577
const finalEncoderWorkerUrl = URL.createObjectURL(
8678
new Blob([__ENCODER_WORKER_BODY__], { type: 'application/javascript' }),

0 commit comments

Comments
 (0)