Skip to content

Commit e47333b

Browse files
authored
Change Worker from inherit to member (#2)
* Change Worker from inherit to member * Add tests
1 parent e122e5f commit e47333b

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

src/core/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ export function buildWorkerCode(source: string, moduleType: ModuleType)
55
let result = `\
66
const WORKER_CODE = ${JSON.stringify(source)};
77
let WORKER_URL = null;
8-
class WorkerInstance extends Worker
8+
class WorkerInstance
99
{
1010
constructor()
1111
{
1212
if (!WORKER_URL)
1313
{
1414
WORKER_URL = URL.createObjectURL(new Blob([WORKER_CODE], { type: 'application/javascript' }));
1515
}
16-
super(WORKER_URL);
16+
this.worker = new Worker(WORKER_URL);
1717
}
1818
}
1919
WorkerInstance.revokeObjectURL = function revokeObjectURL()

test/JestTransform.tests.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import AdderWorker from 'worker:./workers/Adder.worker.ts';
22

3-
describe('Test', () =>
3+
describe('JestTransform', () =>
44
{
55
it('should work', async () =>
66
new Promise<void>((resolve) =>
77
{
88
const worker = new AdderWorker();
99

10-
worker.onmessage = (event) =>
10+
worker.worker.onmessage = (event) =>
1111
{
1212
expect(event.data).toBe(2);
1313
resolve();
1414
};
1515

16-
worker.postMessage({ a: 1, b: 1 });
16+
worker.worker.postMessage({ a: 1, b: 1 });
1717
})
1818
);
1919
});

test/NoWorker.tests.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import AdderWorker from 'worker:./workers/Adder.worker.ts';
2+
3+
describe('NoWorker', () =>
4+
{
5+
let savedWorker: typeof Worker;
6+
7+
beforeAll(() =>
8+
{
9+
savedWorker = globalThis.Worker;
10+
// @ts-expect-error: remove Worker
11+
delete globalThis.Worker;
12+
});
13+
afterAll(() =>
14+
{
15+
globalThis.Worker = savedWorker;
16+
});
17+
18+
it('should throw if no Worker', () =>
19+
{
20+
expect(() => new AdderWorker()).toThrow(ReferenceError);
21+
}
22+
);
23+
});

test/global.d.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
declare module '*.worker.ts'
22
{
3-
class WorkerInstance extends Worker
3+
class WorkerInstance
44
{
5+
public worker: Worker;
6+
57
constructor();
68

79
static revokeObjectURL(): void;

0 commit comments

Comments
 (0)