From f9ff981daf6931a01e1516db0b5714e7a94f145b Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Mon, 21 Jun 2021 19:53:52 +0200 Subject: feat: `MessageChannel` and `MessagePort` (#11051) This commit introduces support for MessageChannel and MessagePort. MessagePorts can be transfered across other MessagePorts. --- cli/dts/lib.deno.shared_globals.d.ts | 22 ---------------------- cli/tests/unit/message_channel_test.ts | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 22 deletions(-) create mode 100644 cli/tests/unit/message_channel_test.ts (limited to 'cli') diff --git a/cli/dts/lib.deno.shared_globals.d.ts b/cli/dts/lib.deno.shared_globals.d.ts index d46a43e67..46154c64e 100644 --- a/cli/dts/lib.deno.shared_globals.d.ts +++ b/cli/dts/lib.deno.shared_globals.d.ts @@ -347,24 +347,6 @@ type BufferSource = ArrayBufferView | ArrayBuffer; declare var console: Console; -interface MessageEventInit extends EventInit { - data?: T; - origin?: string; - lastEventId?: string; -} - -declare class MessageEvent extends Event { - /** - * Returns the data of the message. - */ - readonly data: T; - /** - * Returns the last event ID string, for server-sent events. - */ - readonly lastEventId: string; - constructor(type: string, eventInitDict?: MessageEventInit); -} - interface ErrorEventInit extends EventInit { message?: string; filename?: string; @@ -382,10 +364,6 @@ declare class ErrorEvent extends Event { constructor(type: string, eventInitDict?: ErrorEventInit); } -interface PostMessageOptions { - transfer?: any[]; -} - interface AbstractWorkerEventMap { "error": ErrorEvent; } diff --git a/cli/tests/unit/message_channel_test.ts b/cli/tests/unit/message_channel_test.ts new file mode 100644 index 000000000..0cb2671d5 --- /dev/null +++ b/cli/tests/unit/message_channel_test.ts @@ -0,0 +1,33 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// NOTE: these are just sometests to test the TypeScript types. Real coverage is +// provided by WPT. +import { + assert, + assertEquals, +} from "../../../test_util/std/testing/asserts.ts"; +import { deferred } from "../../../test_util/std/async/deferred.ts"; + +Deno.test("messagechannel", async () => { + const mc = new MessageChannel(); + const mc2 = new MessageChannel(); + assert(mc.port1); + assert(mc.port2); + + const promise = deferred(); + + mc.port2.onmessage = (e) => { + assertEquals(e.data, "hello"); + assertEquals(e.ports.length, 1); + assert(e.ports[0] instanceof MessagePort); + e.ports[0].close(); + promise.resolve(); + }; + + mc.port1.postMessage("hello", [mc2.port1]); + mc.port1.close(); + + await promise; + + mc.port2.close(); + mc2.port2.close(); +}); -- cgit v1.2.3