|
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