osra 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +287 -42
  2. package/build/extension/background.js +2 -0
  3. package/build/extension/background.js.map +1 -0
  4. package/build/extension/chunks/index.js +2 -0
  5. package/build/extension/chunks/index.js.map +1 -0
  6. package/build/extension/content.js +2 -0
  7. package/build/extension/content.js.map +1 -0
  8. package/build/extension/manifest.json +21 -0
  9. package/build/extension/popup.html +120 -0
  10. package/build/extension/popup.js +2 -0
  11. package/build/extension/popup.js.map +1 -0
  12. package/build/extension-test/background.js +753 -0
  13. package/build/extension-test/background.js.map +1 -0
  14. package/build/extension-test/content.js +4585 -0
  15. package/build/extension-test/content.js.map +1 -0
  16. package/build/extension-test/manifest.json +22 -0
  17. package/build/extension-test/popup.html +106 -0
  18. package/build/extension-test/popup.js +4610 -0
  19. package/build/extension-test/popup.js.map +1 -0
  20. package/build/extension-test-firefox/background.js +5464 -0
  21. package/build/extension-test-firefox/background.js.map +1 -0
  22. package/build/extension-test-firefox/content.js +5286 -0
  23. package/build/extension-test-firefox/content.js.map +1 -0
  24. package/build/extension-test-firefox/manifest.json +27 -0
  25. package/build/extension-test-firefox/popup.html +106 -0
  26. package/build/extension-test-firefox/popup.js +5213 -0
  27. package/build/extension-test-firefox/popup.js.map +1 -0
  28. package/build/index.d.ts +155 -8
  29. package/build/index.js +432 -259
  30. package/build/index.js.map +1 -1
  31. package/build/test.js +24021 -2578
  32. package/build/test.js.map +1 -1
  33. package/package.json +34 -16
  34. package/build/types.d.ts +0 -66
  35. package/build/utils.d.ts +0 -60
package/build/index.d.ts CHANGED
@@ -1,8 +1,155 @@
1
- import type { RemoteTarget, LocalTarget, OsraMessage, StructuredCloneTransferableProxiableType } from './types';
2
- export * from './utils';
3
- export declare const expose: <T extends StructuredCloneTransferableProxiableType>(value: StructuredCloneTransferableProxiableType, { remote: _remote, local: _local, key, origin }: {
4
- remote: RemoteTarget | ((osraMessage: OsraMessage, transferables: Transferable[]) => void);
5
- local: LocalTarget | ((listener: (event: MessageEvent<OsraMessage>) => void) => void);
6
- key?: string;
7
- origin?: string;
8
- }) => Promise<T>;
1
+ declare type BidirectionalConnectionMessage = {
2
+ type: 'init';
3
+ remoteUuid: Uuid;
4
+ data: Capable;
5
+ }
6
+ /** message not needed if transferring MessagePort is supported */
7
+ | {
8
+ type: 'message';
9
+ remoteUuid: Uuid;
10
+ data: Capable;
11
+ /** uuid of the messagePort that the message was sent through */
12
+ portId: Uuid;
13
+ }
14
+ /** message not needed if transferring MessagePort is supported */
15
+ | {
16
+ type: 'message-port-close';
17
+ remoteUuid: Uuid;
18
+ /** uuid of the messagePort that closed */
19
+ portId: string;
20
+ };
21
+
22
+ declare type Capable = Structurable | TransferBox | Transferable | Revivable | {
23
+ [key: string]: Capable;
24
+ } | Array<Capable> | Map<Capable, Capable> | Set<Capable>;
25
+
26
+ declare type ConnectionMessage = BidirectionalConnectionMessage | UnidirectionalConnectionMessage;
27
+
28
+ declare type CustomTransport = {
29
+ isJson?: boolean;
30
+ } & ({
31
+ receive: ReceivePlatformTransport | ((listener: (event: Message, messageContext: MessageContext) => void) => void);
32
+ emit: EmitPlatformTransport | ((message: Message, transferables?: Transferable[]) => void);
33
+ } | {
34
+ receive: ReceivePlatformTransport | ((listener: (event: Message, messageContext: MessageContext) => void) => void);
35
+ } | {
36
+ emit: EmitPlatformTransport | ((message: Message, transferables?: Transferable[]) => void);
37
+ });
38
+
39
+ declare type EmitJsonPlatformTransport = WebSocket | WebExtPort;
40
+
41
+ declare type EmitPlatformTransport = EmitJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
42
+
43
+ /**
44
+ * Protocol mode:
45
+ * - Bidirectional mode
46
+ * - Unidirectional mode
47
+ *
48
+ * Transport modes:
49
+ * - Capable mode
50
+ * - Jsonable mode
51
+ */
52
+ export declare const expose: <T extends Capable>(value: Capable, { transport: _transport, name, remoteName, key, origin, unregisterSignal, platformCapabilities: _platformCapabilities, transferAll, logger }: {
53
+ transport: Transport;
54
+ name?: string;
55
+ remoteName?: string;
56
+ key?: string;
57
+ origin?: string;
58
+ unregisterSignal?: AbortSignal;
59
+ platformCapabilities?: PlatformCapabilities;
60
+ transferAll?: boolean;
61
+ logger?: {};
62
+ }) => Promise<T>;
63
+
64
+ declare type Jsonable = boolean | null | number | string | {
65
+ [key: string]: Jsonable;
66
+ } | Array<Jsonable>;
67
+
68
+ declare type Message = MessageBase & MessageVariant;
69
+
70
+ declare type MessageBase = {
71
+ [OSRA_KEY]: string;
72
+ /** UUID of the client that sent the message */
73
+ uuid: Uuid;
74
+ name?: string;
75
+ };
76
+
77
+ declare type MessageContext = {
78
+ port?: MessagePort | WebExtPort;
79
+ sender?: WebExtSender;
80
+ receiveTransport?: ReceivePlatformTransport;
81
+ source?: MessageEventSource | null;
82
+ };
83
+
84
+ declare type MessageVariant = ProtocolMessage | ConnectionMessage;
85
+
86
+ declare const OSRA_BOX: "__OSRA_BOX__";
87
+
88
+ declare const OSRA_KEY: "__OSRA_KEY__";
89
+
90
+ declare type PlatformCapabilities = {
91
+ jsonOnly: boolean;
92
+ messagePort: boolean;
93
+ arrayBuffer: boolean;
94
+ transferable: boolean;
95
+ transferableStream: boolean;
96
+ };
97
+
98
+ declare type PlatformTransport = EmitPlatformTransport | ReceivePlatformTransport;
99
+
100
+ declare type ProtocolMessage = {
101
+ type: 'announce';
102
+ /** Only set when acknowledging a remote announcement */
103
+ remoteUuid?: Uuid;
104
+ } | {
105
+ /** uuid already taken, try announcing with another one */
106
+ type: 'reject-uuid-taken';
107
+ remoteUuid: Uuid;
108
+ } | {
109
+ type: 'close';
110
+ remoteUuid: Uuid;
111
+ };
112
+
113
+ declare type ReceiveJsonPlatformTransport = WebSocket | WebExtPort | WebExtOnConnect | WebExtOnMessage;
114
+
115
+ declare type ReceivePlatformTransport = ReceiveJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
116
+
117
+ declare type Revivable = MessagePort | Promise<Capable> | TypedArray | ArrayBuffer | ReadableStream | Date | Error | ((...args: Capable[]) => Promise<Capable>);
118
+
119
+ declare type Structurable = Jsonable
120
+ /** not really structureable but here for convenience */
121
+ | void | undefined | BigInt | Date | RegExp | Blob | File | FileList | ArrayBuffer | ArrayBufferView | ImageBitmap | ImageData | {
122
+ [key: string]: Structurable;
123
+ } | Array<Structurable> | Map<Structurable, Structurable> | Set<Structurable>;
124
+
125
+ declare type TransferBox<T extends Transferable = Transferable> = {
126
+ [OSRA_BOX]: 'transferable';
127
+ value: T;
128
+ };
129
+
130
+ declare type Transport = PlatformTransport | CustomTransport;
131
+
132
+ declare type TypedArray = typeof typedArrays[number];
133
+
134
+ declare const typedArrays: (BigInt64Array<ArrayBuffer> | BigUint64Array<ArrayBuffer> | Int8Array<ArrayBuffer> | Float64Array<ArrayBuffer> | Uint8ClampedArray<ArrayBuffer> | Int16Array<ArrayBuffer> | Uint16Array<ArrayBuffer> | Int32Array<ArrayBuffer> | Uint32Array<ArrayBuffer> | Float16Array<ArrayBuffer> | Float32Array<ArrayBuffer> | Uint8Array<ArrayBuffer>)[];
135
+
136
+ declare type UnidirectionalConnectionMessage = {
137
+ type: 'message';
138
+ remoteUuid: Uuid;
139
+ data: Capable;
140
+ portId: Uuid;
141
+ };
142
+
143
+ declare type Uuid = `${string}-${string}-${string}-${string}-${string}`;
144
+
145
+ declare type WebExtOnConnect = WebExtRuntime['onConnect'];
146
+
147
+ declare type WebExtOnMessage = WebExtRuntime['onMessage'];
148
+
149
+ declare type WebExtPort = ReturnType<WebExtRuntime['connect']>;
150
+
151
+ declare type WebExtRuntime = typeof browser.runtime;
152
+
153
+ declare type WebExtSender = NonNullable<WebExtPort['sender']>;
154
+
155
+ export { }