-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.ts
34 lines (28 loc) · 1.16 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { getAllImages, processPDF } from './pdf';
import { WorkerManagerBase, WorkerRequest, WorkerResponse } from './manager';
importScripts('resource://pdf.js/build/pdf.js');
pdfjsLib.GlobalWorkerOptions.workerPort = new Worker(
'resource://pdf.js/build/pdf.worker.js'
);
class WorkerSlave extends WorkerManagerBase<DedicatedWorkerGlobalScope> {
protected async onRequest(request: WorkerRequest<DedicatedWorkerGlobalScope>) {
const [result, transfer] = await process(request.method, request.params),
response: WorkerResponse = { id: request.id, result };
postMessage({ response }, transfer);
}
}
export const manager = new WorkerSlave(self);
async function process(method: string, params?: any[]): Promise<[any, any[]]> {
switch (method) {
case 'processPDF':
return [await processPDF(params![0]), []];
case 'getAllImages':
return [await getAllImages(params![0]), []];
case 'close':
pdfjsLib.GlobalWorkerOptions.workerPort?.terminate();
return ['OK', []];
default:
console.log('Unknown method:', method);
return [null, []];
}
}