UNPKG

1.98 kBPlain TextView Raw
1/**
2 * @license
3 * Copyright 2019 Google LLC
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7export interface EventSource {
8 addEventListener(
9 type: string,
10 listener: EventListenerOrEventListenerObject,
11 options?: {}
12 ): void;
13
14 removeEventListener(
15 type: string,
16 listener: EventListenerOrEventListenerObject,
17 options?: {}
18 ): void;
19}
20
21export interface PostMessageWithOrigin {
22 postMessage(
23 message: any,
24 targetOrigin: string,
25 transfer?: Transferable[]
26 ): void;
27}
28
29export interface Endpoint extends EventSource {
30 postMessage(message: any, transfer?: Transferable[]): void;
31
32 start?: () => void;
33}
34
35export const enum WireValueType {
36 RAW = "RAW",
37 PROXY = "PROXY",
38 THROW = "THROW",
39 HANDLER = "HANDLER",
40}
41
42export interface RawWireValue {
43 id?: string;
44 type: WireValueType.RAW;
45 value: {};
46}
47
48export interface HandlerWireValue {
49 id?: string;
50 type: WireValueType.HANDLER;
51 name: string;
52 value: unknown;
53}
54
55export type WireValue = RawWireValue | HandlerWireValue;
56
57export type MessageID = string;
58
59export const enum MessageType {
60 GET = "GET",
61 SET = "SET",
62 APPLY = "APPLY",
63 CONSTRUCT = "CONSTRUCT",
64 ENDPOINT = "ENDPOINT",
65 RELEASE = "RELEASE",
66}
67
68export interface GetMessage {
69 id?: MessageID;
70 type: MessageType.GET;
71 path: string[];
72}
73
74export interface SetMessage {
75 id?: MessageID;
76 type: MessageType.SET;
77 path: string[];
78 value: WireValue;
79}
80
81export interface ApplyMessage {
82 id?: MessageID;
83 type: MessageType.APPLY;
84 path: string[];
85 argumentList: WireValue[];
86}
87
88export interface ConstructMessage {
89 id?: MessageID;
90 type: MessageType.CONSTRUCT;
91 path: string[];
92 argumentList: WireValue[];
93}
94
95export interface EndpointMessage {
96 id?: MessageID;
97 type: MessageType.ENDPOINT;
98}
99
100export interface ReleaseMessage {
101 id?: MessageID;
102 type: MessageType.RELEASE;
103}
104
105export type Message =
106 | GetMessage
107 | SetMessage
108 | ApplyMessage
109 | ConstructMessage
110 | EndpointMessage
111 | ReleaseMessage;