From 9d1c32945cf08f3148df006ba1cbfa5f213cffac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 2 Aug 2023 03:19:44 +0200 Subject: fix: regression in workers using dynamic imports (#20006) Closes https://github.com/denoland/deno/issues/19903 --- .../workers/worker_doest_stall_event_loop.ts | 29 ++++++++++++++++++++++ .../workers/worker_doest_stall_event_loop.ts.out | 6 +++++ 2 files changed, 35 insertions(+) create mode 100644 cli/tests/testdata/workers/worker_doest_stall_event_loop.ts create mode 100644 cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out (limited to 'cli/tests/testdata/workers') diff --git a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts new file mode 100644 index 000000000..bfddee2ec --- /dev/null +++ b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts @@ -0,0 +1,29 @@ +const moduleCode = ` +console.log('module start'); +const hash = await crypto.subtle.digest('SHA-1', new TextEncoder().encode('data')); +const __default = {}; +export { __default as default }; +console.log('module finish'); +`; + +const workerCode = ` + console.log('worker!'); + + globalThis.onmessage = (msg) => { + const { moduleCode } = msg.data; + (async () => { + console.log('before import'); + await import(URL.createObjectURL(new Blob([ moduleCode ]))); + console.log('after import'); + self.postMessage('thanks'); + })(); + } +`; +const worker = new Worker(URL.createObjectURL(new Blob([workerCode])), { + type: "module", +}); +worker.onmessage = () => { + console.log("worker.terminate"); + worker.terminate(); +}; +worker.postMessage({ moduleCode }); diff --git a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out new file mode 100644 index 000000000..5ed65b02f --- /dev/null +++ b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out @@ -0,0 +1,6 @@ +worker! +before import +module start +module finish +after import +worker.terminate -- cgit v1.2.3