osra 0.2.14 → 0.3.0

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 (40) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +319 -304
  3. package/build/connections/bidirectional.d.ts +53 -0
  4. package/build/connections/index.d.ts +20 -0
  5. package/build/connections/utils.d.ts +31 -0
  6. package/build/index.d.ts +16 -718
  7. package/build/index.js +917 -726
  8. package/build/index.js.map +1 -1
  9. package/build/revivables/abort-signal.d.ts +20 -0
  10. package/build/revivables/array-buffer.d.ts +12 -0
  11. package/build/revivables/bigint.d.ts +14 -0
  12. package/build/revivables/date.d.ts +9 -0
  13. package/build/revivables/error.d.ts +10 -0
  14. package/build/revivables/event-target.d.ts +29 -0
  15. package/build/revivables/function.d.ts +29 -0
  16. package/build/revivables/headers.d.ts +9 -0
  17. package/build/revivables/identity.d.ts +39 -0
  18. package/build/revivables/index.d.ts +39 -0
  19. package/build/revivables/map.d.ts +11 -0
  20. package/build/revivables/message-port.d.ts +83 -0
  21. package/build/revivables/promise.d.ts +34 -0
  22. package/build/revivables/readable-stream.d.ts +18 -0
  23. package/build/revivables/request.d.ts +23 -0
  24. package/build/revivables/response.d.ts +18 -0
  25. package/build/revivables/set.d.ts +11 -0
  26. package/build/revivables/transfer.d.ts +37 -0
  27. package/build/revivables/typed-array.d.ts +15 -0
  28. package/build/revivables/utils.d.ts +59 -0
  29. package/build/types.d.ts +45 -0
  30. package/build/utils/capable-check.d.ts +44 -0
  31. package/build/utils/event-channel.d.ts +27 -0
  32. package/build/utils/index.d.ts +11 -0
  33. package/build/utils/replace.d.ts +25 -0
  34. package/build/utils/transferable.d.ts +20 -0
  35. package/build/utils/transport.d.ts +56 -0
  36. package/build/utils/type-guards.d.ts +58 -0
  37. package/build/utils/type.d.ts +2 -0
  38. package/build/utils/typed-event-target.d.ts +16 -0
  39. package/build/utils/typed-message-channel.d.ts +19 -0
  40. package/package.json +60 -67
package/build/index.d.ts CHANGED
@@ -1,718 +1,16 @@
1
- import { Runtime } from 'webextension-polyfill';
2
- import { TypedEventTarget } from 'typescript-event-target';
3
-
4
- declare namespace abortSignal {
5
- export {
6
- type_10 as type,
7
- isType_10 as isType,
8
- box_11 as box,
9
- revive_11 as revive
10
- }
11
- }
12
-
13
- declare type AllocatedMessageChannel<T extends StructurableTransferable = StructurableTransferable, T2 extends StructurableTransferable = StructurableTransferable> = {
14
- uuid: Uuid;
15
- /** Local port */
16
- port1: StrictMessagePort<T>;
17
- /** Remote port that gets transferred, might be undefined if a remote context created the channel */
18
- port2?: StrictMessagePort<T2>;
19
- };
20
-
21
- declare namespace arrayBuffer {
22
- export {
23
- type,
24
- isType,
25
- box_2 as box,
26
- revive_2 as revive
27
- }
28
- }
29
-
30
- export declare type AsCapable<T> = DeepReplaceAsync<T, never, never>;
31
-
32
- declare const BadValueType: unique symbol;
33
-
34
- export declare type BidirectionalConnectionMessage = {
35
- type: 'init';
36
- remoteUuid: Uuid;
37
- data: Capable;
38
- }
39
- /** message not needed if transferring MessagePort is supported */
40
- | {
41
- type: 'message';
42
- remoteUuid: Uuid;
43
- data: Capable;
44
- /** uuid of the messagePort that the message was sent through */
45
- portId: Uuid;
46
- }
47
- /** message not needed if transferring MessagePort is supported */
48
- | {
49
- type: 'message-port-close';
50
- remoteUuid: Uuid;
51
- /** uuid of the messagePort that closed */
52
- portId: string;
53
- };
54
-
55
- export declare const box: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => ReplaceWithBox<T, T2["revivableModules"][number]>;
56
-
57
- declare const box_10: <T extends ReadableStream, T2 extends RevivableContext>(value: T, context: T2) => BoxedReadableStream<T>;
58
-
59
- declare const box_11: <T extends AbortSignal, T2 extends RevivableContext>(value: T, context: T2) => {
60
- type: "abortSignal";
61
- aborted: boolean;
62
- reason: any;
63
- port: BoxedMessagePort;
64
- __OSRA_BOX__: "revivable";
65
- };
66
-
67
- declare const box_12: <T extends Response, T2 extends RevivableContext>(value: T, context: T2) => {
68
- type: "response";
69
- status: number;
70
- statusText: string;
71
- headers: {
72
- type: "headers";
73
- entries: [string, string][];
74
- __OSRA_BOX__: "revivable";
75
- };
76
- body: BoxedReadableStream<ReadableStream<Uint8Array<ArrayBuffer>>> | null;
77
- url: string;
78
- redirected: boolean;
79
- __OSRA_BOX__: "revivable";
80
- };
81
-
82
- declare const box_13: <T extends Request, T2 extends RevivableContext>(value: T, context: T2) => {
83
- type: "request";
84
- method: string;
85
- url: string;
86
- headers: {
87
- type: "headers";
88
- entries: [string, string][];
89
- __OSRA_BOX__: "revivable";
90
- };
91
- body: BoxedReadableStream<ReadableStream<Uint8Array<ArrayBuffer>>> | null;
92
- credentials: RequestCredentials;
93
- cache: RequestCache;
94
- redirect: RequestRedirect;
95
- referrer: string;
96
- referrerPolicy: ReferrerPolicy;
97
- integrity: string;
98
- keepalive: boolean;
99
- __OSRA_BOX__: "revivable";
100
- };
101
-
102
- declare const box_2: <T extends ArrayBuffer, T2 extends RevivableContext>(value: T, _context: T2) => {
103
- type: "arrayBuffer";
104
- __OSRA_BOX__: "revivable";
105
- } & (IsJsonOnlyTransport<T2["transport"]> extends true ? {
106
- base64Buffer: string;
107
- } : IsJsonOnlyTransport<T2["transport"]> extends false ? {
108
- arrayBuffer: ArrayBuffer;
109
- } : {
110
- base64Buffer: string;
111
- } | {
112
- arrayBuffer: ArrayBuffer;
113
- });
114
-
115
- declare const box_3: <T extends Date, T2 extends RevivableContext>(value: T, _context: T2) => {
116
- type: "date";
117
- ISOString: string;
118
- __OSRA_BOX__: "revivable";
119
- };
120
-
121
- declare const box_4: <T extends Headers, T2 extends RevivableContext>(value: T, _context: T2) => {
122
- type: "headers";
123
- entries: [string, string][];
124
- __OSRA_BOX__: "revivable";
125
- };
126
-
127
- declare const box_5: <T extends Error, T2 extends RevivableContext>(value: T, _context: T2) => {
128
- type: "error";
129
- message: string;
130
- stack: string;
131
- __OSRA_BOX__: "revivable";
132
- };
133
-
134
- declare const box_6: <T extends TypedArray, T2 extends RevivableContext>(value: T, context: T2) => {
135
- type: "typedArray";
136
- typedArrayType: string;
137
- __OSRA_BOX__: "revivable";
138
- } & (IsJsonOnlyTransport<T2["transport"]> extends true ? {
139
- base64Buffer: string;
140
- } : IsJsonOnlyTransport<T2["transport"]> extends false ? {
141
- arrayBuffer: ArrayBuffer;
142
- } : {
143
- base64Buffer: string;
144
- } | {
145
- arrayBuffer: ArrayBuffer;
146
- }) & {
147
- [UnderlyingType]: T;
148
- };
149
-
150
- declare const box_7: <T, T2 extends RevivableContext = RevivableContext>(value: StructurableTransferablePort<T>, context: T2) => ({
151
- type: "messagePort";
152
- portId: `${string}-${string}-${string}-${string}-${string}`;
153
- __OSRA_BOX__: "revivable";
154
- } & {
155
- [UnderlyingType]: StrictMessagePort<ExtractStructurableTransferable<T>>;
156
- }) | ({
157
- type: "messagePort";
158
- port: StructurableTransferablePort<T>;
159
- __OSRA_BOX__: "revivable";
160
- } & {
161
- [UnderlyingType]: StrictMessagePort<ExtractStructurableTransferable<T>>;
162
- });
163
-
164
- declare const box_8: <T, T2 extends RevivableContext>(value: CapablePromise<T>, context: T2) => BoxedPromise<ExtractCapable<T>>;
165
-
166
- declare const box_9: <T extends (...args: any[]) => any, T2 extends RevivableContext>(value: T & CapableFunction<T>, context: T2) => BoxedFunction<T>;
167
-
168
- export declare const BoxBase: {
169
- readonly __OSRA_BOX__: "revivable";
170
- readonly type: string;
171
- };
172
-
173
- export declare type BoxBase<T extends string = string> = typeof BoxBase & {
174
- type: T;
175
- };
176
-
177
- declare type BoxedFunction<T extends (...args: any[]) => any = (...args: any[]) => any> = BoxBase<typeof type_7> & {
178
- port: BoxedMessagePort;
179
- } & {
180
- [UnderlyingType]: (...args: Parameters<T>) => Promise<Awaited<ReturnType<T>>>;
181
- };
182
-
183
- declare type BoxedMessagePort<T extends StructurableTransferable = StructurableTransferable> = BoxBase<typeof type_8> & ({
184
- portId: string;
185
- } | {
186
- port: StrictMessagePort<T>;
187
- }) & {
188
- [UnderlyingType]: StrictMessagePort<T>;
189
- };
190
-
191
- declare type BoxedPromise<T extends Capable = Capable> = {
192
- __OSRA_BOX__: 'revivable';
193
- type: typeof type_6;
194
- port: ReturnType<typeof box_7>;
195
- [UnderlyingType]: T;
196
- };
197
-
198
- declare type BoxedReadableStream<T extends ReadableStream = ReadableStream> = {
199
- __OSRA_BOX__: 'revivable';
200
- type: typeof type_9;
201
- port: BoxedMessagePort;
202
- [UnderlyingType]: T;
203
- };
204
-
205
- declare type CallContext = [
206
- /** MessagePort or portId that will be used to send the result of the function call */
207
- MessagePort | string,
208
- /** Arguments that will be passed to the function call */
209
- Capable[]
210
- ];
211
-
212
- export declare type Capable<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = StructurableTransferable | InferRevivables<TModules> | {
213
- [key: string]: Capable;
214
- } | Array<Capable> | Map<Capable, Capable> | Set<Capable>;
215
-
216
- declare type CapableFunction<T> = T extends (...args: infer P) => infer R ? P extends Capable[] ? R extends Capable ? T : never : never : never;
217
-
218
- declare type CapablePromise<T> = T extends Promise<infer U> ? U extends Capable ? T : {
219
- [ErrorMessage]: 'Value type must extend a Promise that resolves to a Capable';
220
- [BadValueType]: U;
221
- } : {
222
- [ErrorMessage]: 'Value type must extend a Promise that resolves to a Capable';
223
- [BadValueType]: T;
224
- };
225
-
226
- export declare type ConnectionMessage = BidirectionalConnectionMessage | UnidirectionalConnectionMessage;
227
-
228
- declare type Context = {
229
- type: 'resolve';
230
- data: Capable;
231
- } | {
232
- type: 'reject';
233
- error: string;
234
- };
235
-
236
- export declare type CustomEmitTransport = Extract<CustomTransport, {
237
- emit: any;
238
- }>;
239
-
240
- export declare type CustomReceiveTransport = Extract<CustomTransport, {
241
- receive: any;
242
- }>;
243
-
244
- export declare type CustomTransport = {
245
- isJson?: boolean;
246
- } & ({
247
- receive: ReceivePlatformTransport | ((listener: (event: Message, messageContext: MessageContext) => void) => void);
248
- emit: EmitPlatformTransport | ((message: Message, transferables?: Transferable[]) => void);
249
- } | {
250
- receive: ReceivePlatformTransport | ((listener: (event: Message, messageContext: MessageContext) => void) => void);
251
- } | {
252
- emit: EmitPlatformTransport | ((message: Message, transferables?: Transferable[]) => void);
253
- });
254
-
255
- declare namespace date {
256
- export {
257
- type_2 as type,
258
- isType_2 as isType,
259
- box_3 as box,
260
- revive_3 as revive
261
- }
262
- }
263
-
264
- export declare type DeepReplace<T, From, To> = T extends From ? DeepReplace<To, From, To> : T extends (...args: infer A) => infer R ? (...args: A) => DeepReplace<R, From, To> : T extends Array<infer U> ? Array<DeepReplace<U, From, To>> : T extends object ? {
265
- [K in keyof T]: DeepReplace<T[K], From, To>;
266
- } : T;
267
-
268
- export declare type DeepReplaceAsync<T, From, To> = T extends From ? DeepReplaceAsync<To, From, To> : T extends (...args: infer A) => infer R ? (...args: A) => Promise<Awaited<DeepReplaceAsync<R, From, To>>> : T extends Array<infer U> ? Array<DeepReplaceAsync<U, From, To>> : T extends object ? {
269
- [K in keyof T]: DeepReplaceAsync<T[K], From, To>;
270
- } : T;
271
-
272
- declare type DeepReplaceWithBox<T, M> = [
273
- FindMatchingBox<T, M>
274
- ] extends [never] ? (T extends Array<infer U> ? Array<DeepReplaceWithBox<U, M>> : T extends object ? {
275
- [K in keyof T]: DeepReplaceWithBox<T[K], M>;
276
- } : T) : FindMatchingBox<T, M>;
277
-
278
- declare type DeepReplaceWithRevive<T, M> = [
279
- FindMatchingRevive<T, M>
280
- ] extends [never] ? (T extends Array<infer U> ? Array<DeepReplaceWithRevive<U, M>> : T extends object ? {
281
- [K in keyof T]: DeepReplaceWithRevive<T[K], M>;
282
- } : T) : FindMatchingRevive<T, M>;
283
-
284
- export declare type DefaultRevivableModule = DefaultRevivableModules[number];
285
-
286
- export declare type DefaultRevivableModules = typeof defaultRevivableModules;
287
-
288
- export declare const defaultRevivableModules: readonly [typeof arrayBuffer, typeof date, typeof headers, typeof error, typeof typedArray, typeof promise, typeof func, typeof messagePort, typeof readableStream, typeof abortSignal, typeof response, typeof request];
289
-
290
- export declare type EmitJsonPlatformTransport = WebSocket | WebExtPort;
291
-
292
- export declare type EmitPlatformTransport = EmitJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
293
-
294
- export declare type EmitTransport = EmitPlatformTransport & Extract<CustomTransport, {
295
- emit: any;
296
- }>;
297
-
298
- declare namespace error {
299
- export {
300
- type_4 as type,
301
- isType_4 as isType,
302
- box_5 as box,
303
- revive_5 as revive
304
- }
305
- }
306
-
307
- declare const ErrorMessage: unique symbol;
308
-
309
- /**
310
- * Protocol mode:
311
- * - Bidirectional mode
312
- * - Unidirectional mode
313
- *
314
- * Transport modes:
315
- * - Capable mode
316
- * - Jsonable mode
317
- */
318
- export declare const expose: <T extends Capable>(value: Capable, { transport: _transport, name, remoteName, key, origin, unregisterSignal, platformCapabilities: _platformCapabilities, transferAll, logger }: {
319
- transport: Transport;
320
- name?: string;
321
- remoteName?: string;
322
- key?: string;
323
- origin?: string;
324
- unregisterSignal?: AbortSignal;
325
- platformCapabilities?: PlatformCapabilities;
326
- transferAll?: boolean;
327
- logger?: {};
328
- }) => Promise<T>;
329
-
330
- declare type ExtractCapable<T> = T extends Promise<infer U> ? U extends Capable ? U : never : never;
331
-
332
- declare type ExtractStructurableTransferable<T> = T extends StructurableTransferable ? T : never;
333
-
334
- declare type ExtractType<T> = T extends {
335
- isType: (value: unknown) => value is infer S;
336
- } ? S : never;
337
-
338
- declare type FindMatchingBox<T, M> = M extends {
339
- isType: (value: unknown) => value is infer S;
340
- box: (...args: any[]) => infer B;
341
- } ? T extends S ? B : never : never;
342
-
343
- declare type FindMatchingRevive<T, M> = M extends {
344
- box: (...args: any[]) => infer S;
345
- revive: (...args: any[]) => infer R;
346
- } ? T extends S ? R : never : never;
347
-
348
- export declare const findModuleForValue: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => ReplaceWithBox<T, T2["revivableModules"][number]>;
349
-
350
- declare namespace func {
351
- export {
352
- type_7 as type,
353
- CallContext,
354
- BoxedFunction,
355
- isType_7 as isType,
356
- box_9 as box,
357
- revive_8 as revive
358
- }
359
- }
360
-
361
- declare namespace headers {
362
- export {
363
- type_3 as type,
364
- isType_3 as isType,
365
- box_4 as box,
366
- revive_4 as revive
367
- }
368
- }
369
-
370
- declare type InferRevivables<TModules extends readonly unknown[]> = ExtractType<TModules[number]>;
371
-
372
- declare type IsJsonOnlyTransport<T extends Transport> = T extends JsonPlatformTransport ? true : false;
373
-
374
- declare const isType: (value: unknown) => value is ArrayBuffer;
375
-
376
- declare const isType_10: (value: unknown) => value is AbortSignal;
377
-
378
- declare const isType_11: (value: unknown) => value is Response;
379
-
380
- declare const isType_12: (value: unknown) => value is Request;
381
-
382
- declare const isType_2: (value: unknown) => value is Date;
383
-
384
- declare const isType_3: (value: unknown) => value is Headers;
385
-
386
- declare const isType_4: (value: unknown) => value is Error;
387
-
388
- declare const isType_5: (value: unknown) => value is TypedArray;
389
-
390
- declare const isType_6: (value: unknown) => value is Promise<any>;
391
-
392
- declare const isType_7: (value: unknown) => value is (...args: any[]) => any;
393
-
394
- declare const isType_8: (value: unknown) => value is MessagePort;
395
-
396
- declare const isType_9: (value: unknown) => value is ReadableStream;
397
-
398
- export declare type Jsonable = boolean | null | number | string | {
399
- [key: string]: Jsonable;
400
- } | Array<Jsonable>;
401
-
402
- export declare type JsonPlatformTransport = {
403
- isJson: true;
404
- } | EmitJsonPlatformTransport | ReceiveJsonPlatformTransport;
405
-
406
- declare const makeMessageChannelAllocator: () => {
407
- getUniqueUuid: () => `${string}-${string}-${string}-${string}-${string}`;
408
- set: (uuid: Uuid, messagePorts: {
409
- port1: StrictMessagePort;
410
- port2?: StrictMessagePort;
411
- }) => void;
412
- alloc: (uuid?: Uuid | undefined, messagePorts?: {
413
- port1: StrictMessagePort;
414
- port2?: StrictMessagePort;
415
- }) => {
416
- port1: StrictMessagePort;
417
- port2?: StrictMessagePort;
418
- uuid: `${string}-${string}-${string}-${string}-${string}`;
419
- };
420
- has: (uuid: string) => boolean;
421
- get: (uuid: string) => AllocatedMessageChannel<StructurableTransferable, StructurableTransferable> | undefined;
422
- free: (uuid: string) => boolean;
423
- getOrAlloc: (uuid?: Uuid | undefined, messagePorts?: {
424
- port1: StrictMessagePort;
425
- port2?: StrictMessagePort;
426
- }) => AllocatedMessageChannel<StructurableTransferable, StructurableTransferable>;
427
- };
428
-
429
- export declare type Message = MessageBase & MessageVariant;
430
-
431
- export declare type MessageBase = {
432
- [OSRA_KEY]: string;
433
- /** UUID of the client that sent the message */
434
- uuid: Uuid;
435
- name?: string;
436
- };
437
-
438
- declare type MessageChannelAllocator = ReturnType<typeof makeMessageChannelAllocator>;
439
-
440
- export declare type MessageContext = {
441
- port?: MessagePort | WebExtPort;
442
- sender?: WebExtSender;
443
- receiveTransport?: ReceivePlatformTransport;
444
- source?: MessageEventSource | null;
445
- };
446
-
447
- export declare type MessageEventMap = {
448
- message: CustomEvent<Message>;
449
- };
450
-
451
- declare type MessageEventTarget_2 = TypedEventTarget<MessageEventMap>;
452
- export { MessageEventTarget_2 as MessageEventTarget }
453
-
454
- declare namespace messagePort {
455
- export {
456
- type_8 as type,
457
- BoxedMessagePort,
458
- isType_8 as isType,
459
- box_7 as box,
460
- revive_9 as revive
461
- }
462
- }
463
-
464
- export declare type MessageVariant = ProtocolMessage | ConnectionMessage;
465
-
466
- export declare const OSRA_BOX: "__OSRA_BOX__";
467
-
468
- export declare const OSRA_DEFAULT_KEY: "__OSRA_DEFAULT_KEY__";
469
-
470
- export declare const OSRA_KEY: "__OSRA_KEY__";
471
-
472
- declare type PlatformCapabilities = {
473
- jsonOnly: boolean;
474
- messagePort: boolean;
475
- arrayBuffer: boolean;
476
- transferable: boolean;
477
- transferableStream: boolean;
478
- };
479
-
480
- export declare type PlatformTransport = EmitPlatformTransport | ReceivePlatformTransport;
481
-
482
- declare namespace promise {
483
- export {
484
- type_6 as type,
485
- Context,
486
- BoxedPromise,
487
- isType_6 as isType,
488
- box_8 as box,
489
- revive_7 as revive
490
- }
491
- }
492
-
493
- export declare type ProtocolMessage = {
494
- type: 'announce';
495
- /** Only set when acknowledging a remote announcement */
496
- remoteUuid?: Uuid;
497
- } | {
498
- /** uuid already taken, try announcing with another one */
499
- type: 'reject-uuid-taken';
500
- remoteUuid: Uuid;
501
- } | {
502
- type: 'close';
503
- remoteUuid: Uuid;
504
- };
505
-
506
- declare type PullContext = {
507
- type: 'pull' | 'cancel';
508
- };
509
-
510
- declare namespace readableStream {
511
- export {
512
- type_9 as type,
513
- PullContext,
514
- BoxedReadableStream,
515
- isType_9 as isType,
516
- box_10 as box,
517
- revive_10 as revive
518
- }
519
- }
520
-
521
- export declare type ReceiveJsonPlatformTransport = WebSocket | WebExtPort | WebExtOnConnect | WebExtOnMessage;
522
-
523
- export declare type ReceivePlatformTransport = ReceiveJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
524
-
525
- export declare type ReceiveTransport = ReceivePlatformTransport & Extract<CustomTransport, {
526
- receive: any;
527
- }>;
528
-
529
- export declare const recursiveBox: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => DeepReplaceWithBox<T, T2["revivableModules"][number]>;
530
-
531
- export declare const recursiveRevive: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => DeepReplaceWithRevive<T, T2["revivableModules"][number]>;
532
-
533
- declare type ReplaceWithBox<T, M> = [
534
- FindMatchingBox<T, M>
535
- ] extends [never] ? T : FindMatchingBox<T, M>;
536
-
537
- declare type ReplaceWithRevive<T, M> = [
538
- FindMatchingRevive<T, M>
539
- ] extends [never] ? T : FindMatchingRevive<T, M>;
540
-
541
- declare namespace request {
542
- export {
543
- type_12 as type,
544
- isType_12 as isType,
545
- box_13 as box,
546
- revive_13 as revive
547
- }
548
- }
549
-
550
- declare namespace response {
551
- export {
552
- type_11 as type,
553
- isType_11 as isType,
554
- box_12 as box,
555
- revive_12 as revive
556
- }
557
- }
558
-
559
- declare type RevivableContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
560
- platformCapabilities: PlatformCapabilities;
561
- transport: Transport;
562
- remoteUuid: Uuid;
563
- messagePorts: Set<MessagePort>;
564
- messageChannels: MessageChannelAllocator;
565
- sendMessage: (message: ConnectionMessage) => void;
566
- revivableModules: TModules;
567
- eventTarget: MessageEventTarget_2;
568
- };
569
-
570
- export declare type RevivableModule<T extends string = string, T2 = any, T3 extends BoxBase<T> = any> = {
571
- readonly type: T;
572
- readonly isType: (value: unknown) => value is T2;
573
- readonly box: ((value: T2, context: RevivableContext) => T3) | ((...args: any[]) => any);
574
- readonly revive: (value: T3, context: RevivableContext) => T2;
575
- };
576
-
577
- export declare const revive: <T extends ReturnType<typeof box>, T2 extends RevivableContext>(value: T, context: T2) => ReplaceWithRevive<T, T2["revivableModules"][number]>;
578
-
579
- declare const revive_10: <T extends BoxedReadableStream, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
580
-
581
- declare const revive_11: <T extends ReturnType<typeof box_11>, T2 extends RevivableContext>(value: T, context: T2) => AbortSignal;
582
-
583
- declare const revive_12: <T extends ReturnType<typeof box_12>, T2 extends RevivableContext>(value: T, context: T2) => Response;
584
-
585
- declare const revive_13: <T extends ReturnType<typeof box_13>, T2 extends RevivableContext>(value: T, context: T2) => Request;
586
-
587
- declare const revive_2: <T extends ReturnType<typeof box_2>, T2 extends RevivableContext>(value: T, _context: T2) => ArrayBuffer;
588
-
589
- declare const revive_3: <T extends ReturnType<typeof box_3>, T2 extends RevivableContext>(value: T, _context: T2) => Date;
590
-
591
- declare const revive_4: <T extends ReturnType<typeof box_4>, T2 extends RevivableContext>(value: T, _context: T2) => Headers;
592
-
593
- declare const revive_5: <T extends ReturnType<typeof box_5>, T2 extends RevivableContext>(value: T, _context: T2) => Error;
594
-
595
- declare const revive_6: <T extends ReturnType<typeof box_6>, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
596
-
597
- declare const revive_7: <T extends BoxedPromise, T2 extends RevivableContext>(value: T, context: T2) => Promise<T[typeof UnderlyingType]>;
598
-
599
- declare const revive_8: <T extends BoxedFunction, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
600
-
601
- declare const revive_9: <T extends StructurableTransferable, T2 extends RevivableContext>(value: BoxedMessagePort<T>, context: T2) => StrictMessagePort<T>;
602
-
603
- /**
604
- * A type-safe MessagePort wrapper that provides generic typing for messages.
605
- * This interface is structurally compatible with MessagePort while adding type safety.
606
- */
607
- declare interface StrictMessagePort<T = StructurableTransferable> extends MessagePort {
608
- [UnderlyingType]?: T;
609
- onmessage: ((this: MessagePort, ev: MessageEvent<T>) => unknown) | null;
610
- onmessageerror: ((this: MessagePort, ev: MessageEvent) => unknown) | null;
611
- postMessage(message: T, transfer: Transferable[]): void;
612
- postMessage(message: T, options?: StructuredSerializeOptions): void;
613
- addEventListener<K extends keyof StrictMessagePortEventMap<T>>(type: K, listener: (this: MessagePort, ev: StrictMessagePortEventMap<T>[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
614
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
615
- removeEventListener<K extends keyof StrictMessagePortEventMap<T>>(type: K, listener: (this: MessagePort, ev: StrictMessagePortEventMap<T>[K]) => unknown, options?: boolean | EventListenerOptions): void;
616
- removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
617
- }
618
-
619
- declare type StrictMessagePortEventMap<T = unknown> = {
620
- 'message': MessageEvent<T>;
621
- 'messageerror': MessageEvent;
622
- };
623
-
624
- export declare type Structurable = Jsonable
625
- /** not really structureable but here for convenience */
626
- | void | undefined | BigInt | Date | RegExp | Blob | File | FileList | ArrayBuffer | ArrayBufferView | ImageBitmap | ImageData | {
627
- [key: string]: Structurable;
628
- } | Array<Structurable> | Map<Structurable, Structurable> | Set<Structurable>;
629
-
630
- export declare type StructurableTransferable = Structurable | Transferable | {
631
- [key: string]: StructurableTransferable;
632
- } | Array<StructurableTransferable> | Map<StructurableTransferable, StructurableTransferable> | Set<StructurableTransferable>;
633
-
634
- declare const StructurableTransferableError: unique symbol;
635
-
636
- declare type StructurableTransferablePort<T> = T extends StructurableTransferable ? StrictMessagePort<T> : {
637
- [StructurableTransferableError]: 'Message type must extend StructurableTransferable';
638
- __badType__: T;
639
- };
640
-
641
- export declare type Transport = PlatformTransport | CustomTransport;
642
-
643
- declare const type: "arrayBuffer";
644
-
645
- declare const type_10: "abortSignal";
646
-
647
- declare const type_11: "response";
648
-
649
- declare const type_12: "request";
650
-
651
- declare const type_2: "date";
652
-
653
- declare const type_3: "headers";
654
-
655
- declare const type_4: "error";
656
-
657
- declare const type_5: "typedArray";
658
-
659
- declare const type_6: "promise";
660
-
661
- declare const type_7: "function";
662
-
663
- declare const type_8: "messagePort";
664
-
665
- declare const type_9: "readableStream";
666
-
667
- declare type TypedArray = typeof typedArrays[number];
668
-
669
- declare namespace typedArray {
670
- export {
671
- type_5 as type,
672
- TypedArrayConstructor,
673
- TypedArray,
674
- typedArrayToType,
675
- TypedArrayType,
676
- typedArrayTypeToTypedArrayConstructor,
677
- isType_5 as isType,
678
- box_6 as box,
679
- revive_6 as revive
680
- }
681
- }
682
-
683
- declare type TypedArrayConstructor = typeof typedArrayConstructors[number];
684
-
685
- declare const typedArrayConstructors: (Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float16ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor | BigInt64ArrayConstructor | BigUint64ArrayConstructor)[];
686
-
687
- 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>)[];
688
-
689
- declare const typedArrayToType: <T extends TypedArray>(value: T) => "BigUint64Array" | "BigInt64Array" | "Float64Array" | "Int8Array" | "Uint8ClampedArray" | "Int16Array" | "Uint16Array" | "Int32Array" | "Uint32Array" | "Float16Array" | "Float32Array" | "Uint8Array";
690
-
691
- declare type TypedArrayType = ReturnType<typeof typedArrayToType>;
692
-
693
- declare const typedArrayTypeToTypedArrayConstructor: (value: TypedArrayType) => TypedArrayConstructor;
694
-
695
- export declare const UnderlyingType: unique symbol;
696
-
697
- export declare type UnderlyingType = typeof UnderlyingType;
698
-
699
- export declare type UnidirectionalConnectionMessage = {
700
- type: 'message';
701
- remoteUuid: Uuid;
702
- data: Capable;
703
- portId: Uuid;
704
- };
705
-
706
- export declare type Uuid = `${string}-${string}-${string}-${string}-${string}`;
707
-
708
- declare type WebExtOnConnect = WebExtRuntime['onConnect'];
709
-
710
- declare type WebExtOnMessage = WebExtRuntime['onMessage'];
711
-
712
- declare type WebExtPort = ReturnType<WebExtRuntime['connect']> | Runtime.Port;
713
-
714
- declare type WebExtRuntime = typeof browser.runtime;
715
-
716
- declare type WebExtSender = NonNullable<WebExtPort['sender']>;
717
-
718
- export { }
1
+ import type { Capable } from './types';
2
+ import type { DefaultRevivableModules } from './revivables';
3
+ import type { RevivableModule } from './revivables';
4
+ import type { StartConnectionsOptions } from './connections/utils';
5
+ import type { BadFieldValue, BadFieldPath, BadFieldParent, ErrorMessage, BadValue, Path, ParentObject } from './utils/capable-check';
6
+ export * from './types';
7
+ export * from './revivables';
8
+ export * from './connections';
9
+ export * from './utils';
10
+ type CapableCheck<T, TModules extends readonly RevivableModule[] = DefaultRevivableModules> = T extends Capable<TModules> ? T : T & {
11
+ [ErrorMessage]: 'Value type must resolve to a Capable';
12
+ [BadValue]: BadFieldValue<T, Capable<TModules>>;
13
+ [Path]: BadFieldPath<T, Capable<TModules>>;
14
+ [ParentObject]: BadFieldParent<T, Capable<TModules>>;
15
+ };
16
+ export declare const expose: <T = unknown, const TUserModules extends readonly RevivableModule[] = readonly [], const TValue = Capable<[...DefaultRevivableModules, ...TUserModules]>>(value: CapableCheck<TValue, [...DefaultRevivableModules, ...TUserModules]>, options: StartConnectionsOptions<TUserModules>) => Promise<T>;