summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/dts/lib.deno.shared_globals.d.ts2
-rw-r--r--cli/dts/lib.deno.worker.d.ts7
-rw-r--r--cli/tests/unit/structured_clone_test.ts19
3 files changed, 25 insertions, 3 deletions
diff --git a/cli/dts/lib.deno.shared_globals.d.ts b/cli/dts/lib.deno.shared_globals.d.ts
index 849f9f835..26e3d1d5b 100644
--- a/cli/dts/lib.deno.shared_globals.d.ts
+++ b/cli/dts/lib.deno.shared_globals.d.ts
@@ -411,7 +411,7 @@ declare class Worker extends EventTarget {
options?: WorkerOptions,
);
postMessage(message: any, transfer: Transferable[]): void;
- postMessage(message: any, options?: PostMessageOptions): void;
+ postMessage(message: any, options?: StructuredSerializeOptions): void;
addEventListener<K extends keyof WorkerEventMap>(
type: K,
listener: (this: Worker, ev: WorkerEventMap[K]) => any,
diff --git a/cli/dts/lib.deno.worker.d.ts b/cli/dts/lib.deno.worker.d.ts
index d35828135..34865b251 100644
--- a/cli/dts/lib.deno.worker.d.ts
+++ b/cli/dts/lib.deno.worker.d.ts
@@ -70,7 +70,7 @@ declare class DedicatedWorkerGlobalScope extends WorkerGlobalScope {
| null;
close(): void;
postMessage(message: any, transfer: Transferable[]): void;
- postMessage(message: any, options?: PostMessageOptions): void;
+ postMessage(message: any, options?: StructuredSerializeOptions): void;
addEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(
type: K,
listener: (
@@ -108,7 +108,10 @@ declare var onmessageerror:
| null;
declare function close(): void;
declare function postMessage(message: any, transfer: Transferable[]): void;
-declare function postMessage(message: any, options?: PostMessageOptions): void;
+declare function postMessage(
+ message: any,
+ options?: StructuredSerializeOptions,
+): void;
declare var navigator: WorkerNavigator;
declare var onerror:
| ((this: DedicatedWorkerGlobalScope, ev: ErrorEvent) => any)
diff --git a/cli/tests/unit/structured_clone_test.ts b/cli/tests/unit/structured_clone_test.ts
new file mode 100644
index 000000000..f25276165
--- /dev/null
+++ b/cli/tests/unit/structured_clone_test.ts
@@ -0,0 +1,19 @@
+import { assert, assertEquals } from "./test_util.ts";
+
+// Basic tests for the structured clone algorithm. Mainly tests TypeScript
+// typings. Actual functionality is tested in WPT.
+
+Deno.test("self.structuredClone", async () => {
+ const arrayOriginal = ["hello world"];
+ const channelOriginal = new MessageChannel();
+ const [arrayCloned, portTransferred] = self
+ .structuredClone([arrayOriginal, channelOriginal.port2], {
+ transfer: [channelOriginal.port2],
+ });
+ assert(arrayOriginal !== arrayCloned); // not the same identity
+ assertEquals(arrayCloned, arrayOriginal); // but same value
+ channelOriginal.port1.postMessage("1");
+ await new Promise((resolve) => portTransferred.onmessage = () => resolve(1));
+ channelOriginal.port1.close();
+ portTransferred.close();
+});