|
1 | | -import {getWorkerImplementation as getWebWorker} from "./master/implementation.browser" |
2 | | -import {getWorkerImplementation as getNodeWorker } from "./master/implementation.node" |
3 | | - |
4 | 1 | import { |
5 | 2 | BlobWorker, |
6 | 3 | CreateWorkerOptions, |
7 | 4 | WorkerImplementation, |
8 | 5 | } from "./types/master" |
9 | 6 |
|
10 | | -export function createWorker(workerPath: string & Blob, options: CreateWorkerOptions) { |
| 7 | +/** async function to creat a webworker. This function uses dynamic imports to only import the required implementation */ |
| 8 | +export async function createWorker(workerPath: string & Blob, options: CreateWorkerOptions) { |
11 | 9 | let WorkerConstructor: typeof WorkerImplementation | typeof BlobWorker |
12 | 10 | if (options.backend === "web") { |
| 11 | + const { getWorkerImplementation } = await import("./master/implementation.browser") |
13 | 12 | WorkerConstructor = options.blob ? |
14 | | - getWebWorker().blob : |
15 | | - getWebWorker().default |
| 13 | + getWorkerImplementation().blob : |
| 14 | + getWorkerImplementation().default |
16 | 15 | } else if (options.backend === "node") { |
| 16 | + const { getWorkerImplementation } = await import("./master/implementation.node") |
17 | 17 | WorkerConstructor = options.blob ? |
18 | | - getNodeWorker("node").blob : |
19 | | - getNodeWorker("node").default |
| 18 | + getWorkerImplementation("node").blob : |
| 19 | + getWorkerImplementation("node").default |
20 | 20 | } else if (options.backend === "tiny") { |
| 21 | + const { getWorkerImplementation } = await import("./master/implementation.node") |
21 | 22 | WorkerConstructor = options.blob ? |
22 | | - getNodeWorker("tiny").blob : |
23 | | - getNodeWorker("tiny").default |
| 23 | + getWorkerImplementation("tiny").blob : |
| 24 | + getWorkerImplementation("tiny").default |
24 | 25 | } else { |
25 | 26 | throw new Error("The worker backend is not supported.") |
26 | 27 | } |
|
0 commit comments