mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 15:24:46 -05:00
fix: regression in workers using dynamic imports (#20006)
Closes https://github.com/denoland/deno/issues/19903
This commit is contained in:
parent
1cefa831fd
commit
9d1c32945c
5 changed files with 51 additions and 10 deletions
13
Cargo.lock
generated
13
Cargo.lock
generated
|
@ -982,9 +982,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "deno_core"
|
||||
version = "0.198.0"
|
||||
version = "0.199.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b34b6caa86eeea6f1449334c9ee26bec07e1db909bff5a4849727482cf06473"
|
||||
checksum = "70fbd0cb620ac36fac08d708c5f01362280c5aa8149657a225db4932bd73758e"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bytes",
|
||||
|
@ -1354,9 +1354,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "deno_ops"
|
||||
version = "0.76.0"
|
||||
version = "0.77.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e4ca7df186f9f20d087a03d0ab314706bf5ffec1cf18c658efae833ce5dac3e8"
|
||||
checksum = "8b345c096fd8433337ed8e1727f4732397c134e188e1739c88b0c077869020f3"
|
||||
dependencies = [
|
||||
"deno-proc-macro-rules",
|
||||
"lazy-regex",
|
||||
|
@ -1371,7 +1371,6 @@ dependencies = [
|
|||
"syn 1.0.109",
|
||||
"syn 2.0.22",
|
||||
"thiserror",
|
||||
"v8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4457,9 +4456,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_v8"
|
||||
version = "0.109.0"
|
||||
version = "0.110.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "440a8a1f1cb9abe071937aa5190b0186fa6ce15ba0de5f88e57f71583e212b2c"
|
||||
checksum = "b3bafaee0eecbef6c47ad3e7e0a764e22eb35a229ff7d06b7801fcbeaa5364b8"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"derive_more",
|
||||
|
|
|
@ -41,9 +41,9 @@ repository = "https://github.com/denoland/deno"
|
|||
v8 = { version = "0.74.1", default-features = false }
|
||||
deno_ast = { version = "0.27.0", features = ["transpiling"] }
|
||||
|
||||
deno_core = "0.198.0"
|
||||
deno_ops = "0.76.0"
|
||||
serde_v8 = "0.109.0"
|
||||
deno_core = "0.199.0"
|
||||
deno_ops = "0.77.0"
|
||||
serde_v8 = "0.110.0"
|
||||
|
||||
deno_runtime = { version = "0.121.0", path = "./runtime" }
|
||||
napi_sym = { version = "0.43.0", path = "./cli/napi/sym" }
|
||||
|
|
|
@ -108,3 +108,10 @@ itest!(worker_error_event {
|
|||
output: "workers/error_event.ts.out",
|
||||
exit_code: 1,
|
||||
});
|
||||
|
||||
// Regression test for https://github.com/denoland/deno/issues/19903
|
||||
itest!(worker_doest_stall_event_loop {
|
||||
args: "run --quiet -A workers/worker_doest_stall_event_loop.ts",
|
||||
output: "workers/worker_doest_stall_event_loop.ts.out",
|
||||
exit_code: 0,
|
||||
});
|
||||
|
|
29
cli/tests/testdata/workers/worker_doest_stall_event_loop.ts
vendored
Normal file
29
cli/tests/testdata/workers/worker_doest_stall_event_loop.ts
vendored
Normal file
|
@ -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 });
|
6
cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out
vendored
Normal file
6
cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
worker!
|
||||
before import
|
||||
module start
|
||||
module finish
|
||||
after import
|
||||
worker.terminate
|
Loading…
Reference in a new issue