osra 0.2.9 → 0.2.11

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.
package/build/index.d.ts CHANGED
@@ -13,12 +13,12 @@ declare namespace arrayBuffer {
13
13
  export {
14
14
  type,
15
15
  isType,
16
- box,
17
- revive
16
+ box_2 as box,
17
+ revive_2 as revive
18
18
  }
19
19
  }
20
20
 
21
- declare type BidirectionalConnectionMessage = {
21
+ export declare type BidirectionalConnectionMessage = {
22
22
  type: 'init';
23
23
  remoteUuid: Uuid;
24
24
  data: Capable;
@@ -39,7 +39,11 @@ declare type BidirectionalConnectionMessage = {
39
39
  portId: string;
40
40
  };
41
41
 
42
- declare const box: <T extends ArrayBuffer, T2 extends RevivableContext>(value: T, _context: T2) => {
42
+ export declare const box: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => ReplaceWithBox<T, T2["revivableModules"][number]>;
43
+
44
+ declare const box_10: <T extends ReadableStream, T2 extends RevivableContext>(value: T, context: T2) => BoxedReadableStream<T>;
45
+
46
+ declare const box_2: <T extends ArrayBuffer, T2 extends RevivableContext>(value: T, _context: T2) => {
43
47
  type: "arrayBuffer";
44
48
  __OSRA_BOX__: "revivable";
45
49
  } & (IsJsonOnlyTransport<T2["transport"]> extends true ? {
@@ -52,26 +56,26 @@ declare const box: <T extends ArrayBuffer, T2 extends RevivableContext>(value: T
52
56
  arrayBuffer: ArrayBuffer;
53
57
  });
54
58
 
55
- declare const box_2: <T extends Date, T2 extends RevivableContext>(value: T, _context: T2) => {
59
+ declare const box_3: <T extends Date, T2 extends RevivableContext>(value: T, _context: T2) => {
56
60
  type: "date";
57
61
  ISOString: string;
58
62
  __OSRA_BOX__: "revivable";
59
63
  };
60
64
 
61
- declare const box_3: <T extends Headers, T2 extends RevivableContext>(value: T, _context: T2) => {
65
+ declare const box_4: <T extends Headers, T2 extends RevivableContext>(value: T, _context: T2) => {
62
66
  type: "headers";
63
67
  entries: [string, string][];
64
68
  __OSRA_BOX__: "revivable";
65
69
  };
66
70
 
67
- declare const box_4: <T extends Error, T2 extends RevivableContext>(value: T, _context: T2) => {
71
+ declare const box_5: <T extends Error, T2 extends RevivableContext>(value: T, _context: T2) => {
68
72
  type: "error";
69
73
  message: string;
70
74
  stack: string;
71
75
  __OSRA_BOX__: "revivable";
72
76
  };
73
77
 
74
- declare const box_5: <T extends TypedArray, T2 extends RevivableContext>(value: T, context: T2) => {
78
+ declare const box_6: <T extends TypedArray, T2 extends RevivableContext>(value: T, context: T2) => {
75
79
  type: "typedArray";
76
80
  typedArrayType: string;
77
81
  __OSRA_BOX__: "revivable";
@@ -87,7 +91,7 @@ declare const box_5: <T extends TypedArray, T2 extends RevivableContext>(value:
87
91
  [UnderlyingType]: T;
88
92
  };
89
93
 
90
- declare const box_6: <T, T2 extends RevivableContext = RevivableContext>(value: StructurableTransferablePort<T>, context: T2) => ({
94
+ declare const box_7: <T, T2 extends RevivableContext = RevivableContext>(value: StructurableTransferablePort<T>, context: T2) => ({
91
95
  type: "messagePort";
92
96
  portId: `${string}-${string}-${string}-${string}-${string}`;
93
97
  __OSRA_BOX__: "revivable";
@@ -101,11 +105,9 @@ declare const box_6: <T, T2 extends RevivableContext = RevivableContext>(value:
101
105
  [UnderlyingType]: StrictMessagePort<ExtractStructurableTransferable<T>>;
102
106
  });
103
107
 
104
- declare const box_7: <T, T2 extends RevivableContext>(value: CapablePromise<T>, context: T2) => BoxedPromise<ExtractCapable<T>>;
108
+ declare const box_8: <T, T2 extends RevivableContext>(value: CapablePromise<T>, context: T2) => BoxedPromise<ExtractCapable<T>>;
105
109
 
106
- declare const box_8: <T extends (...args: any[]) => any, T2 extends RevivableContext>(value: T & CapableFunction<T>, context: T2) => BoxedFunction<T>;
107
-
108
- declare const box_9: <T extends ReadableStream, T2 extends RevivableContext>(value: T, context: T2) => BoxedReadableStream<T>;
110
+ declare const box_9: <T extends (...args: any[]) => any, T2 extends RevivableContext>(value: T & CapableFunction<T>, context: T2) => BoxedFunction<T>;
109
111
 
110
112
  export declare const BoxBase: {
111
113
  readonly __OSRA_BOX__: "revivable";
@@ -133,7 +135,7 @@ declare type BoxedMessagePort<T extends StructurableTransferable = StructurableT
133
135
  declare type BoxedPromise<T extends Capable = Capable> = {
134
136
  __OSRA_BOX__: 'revivable';
135
137
  type: typeof type_6;
136
- port: ReturnType<typeof box_6>;
138
+ port: ReturnType<typeof box_7>;
137
139
  [UnderlyingType]: T;
138
140
  };
139
141
 
@@ -151,7 +153,7 @@ MessagePort | string,
151
153
  Capable[]
152
154
  ];
153
155
 
154
- declare type Capable<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = StructurableTransferable | InferRevivables<TModules> | {
156
+ export declare type Capable<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = StructurableTransferable | InferRevivables<TModules> | {
155
157
  [key: string]: Capable;
156
158
  } | Array<Capable> | Map<Capable, Capable> | Set<Capable>;
157
159
 
@@ -164,7 +166,7 @@ declare type CapablePromise<T> = T extends Capable ? Promise<T> : {
164
166
  __badType__: T;
165
167
  };
166
168
 
167
- declare type ConnectionMessage = BidirectionalConnectionMessage | UnidirectionalConnectionMessage;
169
+ export declare type ConnectionMessage = BidirectionalConnectionMessage | UnidirectionalConnectionMessage;
168
170
 
169
171
  declare type Context = {
170
172
  type: 'resolve';
@@ -174,7 +176,15 @@ declare type Context = {
174
176
  error: string;
175
177
  };
176
178
 
177
- declare type CustomTransport = {
179
+ export declare type CustomEmitTransport = Extract<CustomTransport, {
180
+ emit: any;
181
+ }>;
182
+
183
+ export declare type CustomReceiveTransport = Extract<CustomTransport, {
184
+ receive: any;
185
+ }>;
186
+
187
+ export declare type CustomTransport = {
178
188
  isJson?: boolean;
179
189
  } & ({
180
190
  receive: ReceivePlatformTransport | ((listener: (event: Message, messageContext: MessageContext) => void) => void);
@@ -189,25 +199,43 @@ declare namespace date {
189
199
  export {
190
200
  type_2 as type,
191
201
  isType_2 as isType,
192
- box_2 as box,
193
- revive_2 as revive
202
+ box_3 as box,
203
+ revive_3 as revive
194
204
  }
195
205
  }
196
206
 
197
- declare type DefaultRevivableModules = typeof defaultRevivableModules;
207
+ declare type DeepReplaceWithBox<T, M> = [
208
+ FindMatchingBox<T, M>
209
+ ] extends [never] ? (T extends Array<infer U> ? Array<DeepReplaceWithBox<U, M>> : T extends object ? {
210
+ [K in keyof T]: DeepReplaceWithBox<T[K], M>;
211
+ } : T) : FindMatchingBox<T, M>;
212
+
213
+ declare type DeepReplaceWithRevive<T, M> = [
214
+ FindMatchingRevive<T, M>
215
+ ] extends [never] ? (T extends Array<infer U> ? Array<DeepReplaceWithRevive<U, M>> : T extends object ? {
216
+ [K in keyof T]: DeepReplaceWithRevive<T[K], M>;
217
+ } : T) : FindMatchingRevive<T, M>;
218
+
219
+ export declare type DefaultRevivableModule = DefaultRevivableModules[number];
220
+
221
+ export declare type DefaultRevivableModules = typeof defaultRevivableModules;
198
222
 
199
- declare const defaultRevivableModules: readonly [typeof arrayBuffer, typeof date, typeof headers, typeof error, typeof typedArray, typeof promise, typeof func, typeof messagePort, typeof readableStream];
223
+ export declare const defaultRevivableModules: readonly [typeof arrayBuffer, typeof date, typeof headers, typeof error, typeof typedArray, typeof promise, typeof func, typeof messagePort, typeof readableStream];
200
224
 
201
- declare type EmitJsonPlatformTransport = WebSocket | WebExtPort;
225
+ export declare type EmitJsonPlatformTransport = WebSocket | WebExtPort;
202
226
 
203
- declare type EmitPlatformTransport = EmitJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
227
+ export declare type EmitPlatformTransport = EmitJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
228
+
229
+ export declare type EmitTransport = EmitPlatformTransport & Extract<CustomTransport, {
230
+ emit: any;
231
+ }>;
204
232
 
205
233
  declare namespace error {
206
234
  export {
207
235
  type_4 as type,
208
236
  isType_4 as isType,
209
- box_4 as box,
210
- revive_4 as revive
237
+ box_5 as box,
238
+ revive_5 as revive
211
239
  }
212
240
  }
213
241
 
@@ -240,14 +268,26 @@ declare type ExtractType<T> = T extends {
240
268
  isType: (value: unknown) => value is infer S;
241
269
  } ? S : never;
242
270
 
271
+ declare type FindMatchingBox<T, M> = M extends {
272
+ isType: (value: unknown) => value is infer S;
273
+ box: (...args: any[]) => infer B;
274
+ } ? T extends S ? B : never : never;
275
+
276
+ declare type FindMatchingRevive<T, M> = M extends {
277
+ box: (...args: any[]) => infer S;
278
+ revive: (...args: any[]) => infer R;
279
+ } ? T extends S ? R : never : never;
280
+
281
+ export declare const findModuleForValue: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => ReplaceWithBox<T, T2["revivableModules"][number]>;
282
+
243
283
  declare namespace func {
244
284
  export {
245
285
  type_7 as type,
246
286
  CallContext,
247
287
  BoxedFunction,
248
288
  isType_7 as isType,
249
- box_8 as box,
250
- revive_7 as revive
289
+ box_9 as box,
290
+ revive_8 as revive
251
291
  }
252
292
  }
253
293
 
@@ -255,8 +295,8 @@ declare namespace headers {
255
295
  export {
256
296
  type_3 as type,
257
297
  isType_3 as isType,
258
- box_3 as box,
259
- revive_3 as revive
298
+ box_4 as box,
299
+ revive_4 as revive
260
300
  }
261
301
  }
262
302
 
@@ -282,11 +322,11 @@ declare const isType_8: (value: unknown) => value is MessagePort;
282
322
 
283
323
  declare const isType_9: (value: unknown) => value is ReadableStream;
284
324
 
285
- declare type Jsonable = boolean | null | number | string | {
325
+ export declare type Jsonable = boolean | null | number | string | {
286
326
  [key: string]: Jsonable;
287
327
  } | Array<Jsonable>;
288
328
 
289
- declare type JsonPlatformTransport = {
329
+ export declare type JsonPlatformTransport = {
290
330
  isJson: true;
291
331
  } | EmitJsonPlatformTransport | ReceiveJsonPlatformTransport;
292
332
 
@@ -313,9 +353,9 @@ declare const makeMessageChannelAllocator: () => {
313
353
  }) => AllocatedMessageChannel<StructurableTransferable, StructurableTransferable>;
314
354
  };
315
355
 
316
- declare type Message = MessageBase & MessageVariant;
356
+ export declare type Message = MessageBase & MessageVariant;
317
357
 
318
- declare type MessageBase = {
358
+ export declare type MessageBase = {
319
359
  [OSRA_KEY]: string;
320
360
  /** UUID of the client that sent the message */
321
361
  uuid: Uuid;
@@ -324,32 +364,37 @@ declare type MessageBase = {
324
364
 
325
365
  declare type MessageChannelAllocator = ReturnType<typeof makeMessageChannelAllocator>;
326
366
 
327
- declare type MessageContext = {
367
+ export declare type MessageContext = {
328
368
  port?: MessagePort | WebExtPort;
329
369
  sender?: WebExtSender;
330
370
  receiveTransport?: ReceivePlatformTransport;
331
371
  source?: MessageEventSource | null;
332
372
  };
333
373
 
334
- declare type MessageEventMap = {
374
+ export declare type MessageEventMap = {
335
375
  message: CustomEvent<Message>;
336
376
  };
337
377
 
338
378
  declare type MessageEventTarget_2 = TypedEventTarget<MessageEventMap>;
379
+ export { MessageEventTarget_2 as MessageEventTarget }
339
380
 
340
381
  declare namespace messagePort {
341
382
  export {
342
383
  type_8 as type,
343
384
  BoxedMessagePort,
344
385
  isType_8 as isType,
345
- box_6 as box,
346
- revive_8 as revive
386
+ box_7 as box,
387
+ revive_9 as revive
347
388
  }
348
389
  }
349
390
 
350
- declare type MessageVariant = ProtocolMessage | ConnectionMessage;
391
+ export declare type MessageVariant = ProtocolMessage | ConnectionMessage;
392
+
393
+ export declare const OSRA_BOX: "__OSRA_BOX__";
394
+
395
+ export declare const OSRA_DEFAULT_KEY: "__OSRA_DEFAULT_KEY__";
351
396
 
352
- declare const OSRA_KEY: "__OSRA_KEY__";
397
+ export declare const OSRA_KEY: "__OSRA_KEY__";
353
398
 
354
399
  declare type PlatformCapabilities = {
355
400
  jsonOnly: boolean;
@@ -359,7 +404,7 @@ declare type PlatformCapabilities = {
359
404
  transferableStream: boolean;
360
405
  };
361
406
 
362
- declare type PlatformTransport = EmitPlatformTransport | ReceivePlatformTransport;
407
+ export declare type PlatformTransport = EmitPlatformTransport | ReceivePlatformTransport;
363
408
 
364
409
  declare namespace promise {
365
410
  export {
@@ -367,12 +412,12 @@ declare namespace promise {
367
412
  Context,
368
413
  BoxedPromise,
369
414
  isType_6 as isType,
370
- box_7 as box,
371
- revive_6 as revive
415
+ box_8 as box,
416
+ revive_7 as revive
372
417
  }
373
418
  }
374
419
 
375
- declare type ProtocolMessage = {
420
+ export declare type ProtocolMessage = {
376
421
  type: 'announce';
377
422
  /** Only set when acknowledging a remote announcement */
378
423
  remoteUuid?: Uuid;
@@ -395,14 +440,30 @@ declare namespace readableStream {
395
440
  PullContext,
396
441
  BoxedReadableStream,
397
442
  isType_9 as isType,
398
- box_9 as box,
399
- revive_9 as revive
443
+ box_10 as box,
444
+ revive_10 as revive
400
445
  }
401
446
  }
402
447
 
403
- declare type ReceiveJsonPlatformTransport = WebSocket | WebExtPort | WebExtOnConnect | WebExtOnMessage;
448
+ export declare type ReceiveJsonPlatformTransport = WebSocket | WebExtPort | WebExtOnConnect | WebExtOnMessage;
449
+
450
+ export declare type ReceivePlatformTransport = ReceiveJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
451
+
452
+ export declare type ReceiveTransport = ReceivePlatformTransport & Extract<CustomTransport, {
453
+ receive: any;
454
+ }>;
455
+
456
+ export declare const recursiveBox: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => DeepReplaceWithBox<T, T2["revivableModules"][number]>;
457
+
458
+ export declare const recursiveRevive: <T extends Capable, T2 extends RevivableContext>(value: T, context: T2) => DeepReplaceWithRevive<T, T2["revivableModules"][number]>;
404
459
 
405
- declare type ReceivePlatformTransport = ReceiveJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
460
+ declare type ReplaceWithBox<T, M> = [
461
+ FindMatchingBox<T, M>
462
+ ] extends [never] ? T : FindMatchingBox<T, M>;
463
+
464
+ declare type ReplaceWithRevive<T, M> = [
465
+ FindMatchingRevive<T, M>
466
+ ] extends [never] ? T : FindMatchingRevive<T, M>;
406
467
 
407
468
  declare type RevivableContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
408
469
  platformCapabilities: PlatformCapabilities;
@@ -415,30 +476,32 @@ declare type RevivableContext<TModules extends readonly RevivableModule[] = Defa
415
476
  eventTarget: MessageEventTarget_2;
416
477
  };
417
478
 
418
- declare type RevivableModule<T extends string = string, T2 = any, T3 extends BoxBase<T> = any> = {
479
+ export declare type RevivableModule<T extends string = string, T2 = any, T3 extends BoxBase<T> = any> = {
419
480
  readonly type: T;
420
481
  readonly isType: (value: unknown) => value is T2;
421
482
  readonly box: ((value: T2, context: RevivableContext) => T3) | ((...args: any[]) => any);
422
483
  readonly revive: (value: T3, context: RevivableContext) => T2;
423
484
  };
424
485
 
425
- declare const revive: <T extends ReturnType<typeof box>, T2 extends RevivableContext>(value: T, _context: T2) => ArrayBuffer;
486
+ export declare const revive: <T extends ReturnType<typeof box>, T2 extends RevivableContext>(value: T, context: T2) => ReplaceWithRevive<T, T2["revivableModules"][number]>;
487
+
488
+ declare const revive_10: <T extends BoxedReadableStream, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
426
489
 
427
- declare const revive_2: <T extends ReturnType<typeof box_2>, T2 extends RevivableContext>(value: T, _context: T2) => Date;
490
+ declare const revive_2: <T extends ReturnType<typeof box_2>, T2 extends RevivableContext>(value: T, _context: T2) => ArrayBuffer;
428
491
 
429
- declare const revive_3: <T extends ReturnType<typeof box_3>, T2 extends RevivableContext>(value: T, _context: T2) => Headers;
492
+ declare const revive_3: <T extends ReturnType<typeof box_3>, T2 extends RevivableContext>(value: T, _context: T2) => Date;
430
493
 
431
- declare const revive_4: <T extends ReturnType<typeof box_4>, T2 extends RevivableContext>(value: T, _context: T2) => Error;
494
+ declare const revive_4: <T extends ReturnType<typeof box_4>, T2 extends RevivableContext>(value: T, _context: T2) => Headers;
432
495
 
433
- declare const revive_5: <T extends ReturnType<typeof box_5>, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
496
+ declare const revive_5: <T extends ReturnType<typeof box_5>, T2 extends RevivableContext>(value: T, _context: T2) => Error;
434
497
 
435
- declare const revive_6: <T extends BoxedPromise, T2 extends RevivableContext>(value: T, context: T2) => Promise<T[typeof UnderlyingType]>;
498
+ declare const revive_6: <T extends ReturnType<typeof box_6>, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
436
499
 
437
- declare const revive_7: <T extends BoxedFunction, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
500
+ declare const revive_7: <T extends BoxedPromise, T2 extends RevivableContext>(value: T, context: T2) => Promise<T[typeof UnderlyingType]>;
438
501
 
439
- declare const revive_8: <T extends StructurableTransferable, T2 extends RevivableContext>(value: BoxedMessagePort<T>, context: T2) => StrictMessagePort<T>;
502
+ declare const revive_8: <T extends BoxedFunction, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
440
503
 
441
- declare const revive_9: <T extends BoxedReadableStream, T2 extends RevivableContext>(value: T, context: T2) => T[UnderlyingType];
504
+ declare const revive_9: <T extends StructurableTransferable, T2 extends RevivableContext>(value: BoxedMessagePort<T>, context: T2) => StrictMessagePort<T>;
442
505
 
443
506
  /**
444
507
  * A type-safe MessagePort wrapper that provides generic typing for messages.
@@ -461,13 +524,13 @@ declare type StrictMessagePortEventMap<T = unknown> = {
461
524
  'messageerror': MessageEvent;
462
525
  };
463
526
 
464
- declare type Structurable = Jsonable
527
+ export declare type Structurable = Jsonable
465
528
  /** not really structureable but here for convenience */
466
529
  | void | undefined | BigInt | Date | RegExp | Blob | File | FileList | ArrayBuffer | ArrayBufferView | ImageBitmap | ImageData | {
467
530
  [key: string]: Structurable;
468
531
  } | Array<Structurable> | Map<Structurable, Structurable> | Set<Structurable>;
469
532
 
470
- declare type StructurableTransferable = Structurable | Transferable | {
533
+ export declare type StructurableTransferable = Structurable | Transferable | {
471
534
  [key: string]: StructurableTransferable;
472
535
  } | Array<StructurableTransferable> | Map<StructurableTransferable, StructurableTransferable> | Set<StructurableTransferable>;
473
536
 
@@ -478,7 +541,7 @@ declare type StructurableTransferablePort<T> = T extends StructurableTransferabl
478
541
  __badType__: T;
479
542
  };
480
543
 
481
- declare type Transport = PlatformTransport | CustomTransport;
544
+ export declare type Transport = PlatformTransport | CustomTransport;
482
545
 
483
546
  declare const type: "arrayBuffer";
484
547
 
@@ -509,8 +572,8 @@ declare namespace typedArray {
509
572
  TypedArrayType,
510
573
  typedArrayTypeToTypedArrayConstructor,
511
574
  isType_5 as isType,
512
- box_5 as box,
513
- revive_5 as revive
575
+ box_6 as box,
576
+ revive_6 as revive
514
577
  }
515
578
  }
516
579
 
@@ -530,14 +593,14 @@ export declare const UnderlyingType: unique symbol;
530
593
 
531
594
  export declare type UnderlyingType = typeof UnderlyingType;
532
595
 
533
- declare type UnidirectionalConnectionMessage = {
596
+ export declare type UnidirectionalConnectionMessage = {
534
597
  type: 'message';
535
598
  remoteUuid: Uuid;
536
599
  data: Capable;
537
600
  portId: Uuid;
538
601
  };
539
602
 
540
- declare type Uuid = `${string}-${string}-${string}-${string}-${string}`;
603
+ export declare type Uuid = `${string}-${string}-${string}-${string}-${string}`;
541
604
 
542
605
  declare type WebExtOnConnect = WebExtRuntime['onConnect'];
543
606