diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/dts/lib.deno.shared_globals.d.ts | 2 | ||||
-rw-r--r-- | cli/dts/lib.deno.worker.d.ts | 7 | ||||
-rw-r--r-- | cli/tests/unit/structured_clone_test.ts | 19 |
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(); +}); |