-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathworker-support.js
More file actions
34 lines (27 loc) · 895 Bytes
/
Copy pathworker-support.js
File metadata and controls
34 lines (27 loc) · 895 Bytes
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 { forwardEvents, createWorkerClass } from './shared-utils.js';
import { setupWorkerScope } from './worker-utils.js';
import { connect } from './messages.js';
function setupScope({ postMessage, addEventListener }) {
const port = setupWorkerScope({ postMessage });
// Wait for remote port from parent
addEventListener('message', ({ data }) => {
forwardEvents(data.port, port);
}, { once: true });
}
function setupWorker() {
self.Worker = createWorkerClass(class extends self.Worker {
constructor(port, ...args) {
super(...args);
// Send remote port to worker
super.postMessage(...connect({ port }));
// Wait for remote port from worker
super.addEventListener('message', ({ data }) => {
forwardEvents(data.port, this._port);
}, { once: true });
}
});
}
export default () => {
setupScope(self);
setupWorker();
};