osra 0.3.3 → 0.4.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.
- package/build/connections/bidirectional.d.ts +20 -7
- package/build/connections/index.d.ts +1 -1
- package/build/connections/utils.d.ts +10 -3
- package/build/index.d.ts +15 -6
- package/build/index.js +591 -518
- package/build/index.js.map +1 -1
- package/build/revivables/abort-signal.d.ts +2 -5
- package/build/revivables/array-buffer.d.ts +6 -10
- package/build/revivables/bigint.d.ts +6 -11
- package/build/revivables/blob.d.ts +17 -0
- package/build/revivables/error.d.ts +8 -6
- package/build/revivables/event-target.d.ts +14 -25
- package/build/revivables/event.d.ts +15 -0
- package/build/revivables/fallbacks.d.ts +136 -0
- package/build/revivables/function.d.ts +3 -16
- package/build/revivables/identity.d.ts +8 -14
- package/build/revivables/index.d.ts +21 -1
- package/build/revivables/message-port.d.ts +6 -38
- package/build/revivables/symbol.d.ts +11 -0
- package/build/revivables/transfer.d.ts +4 -19
- package/build/revivables/utils.d.ts +10 -8
- package/build/types.d.ts +11 -5
- package/build/utils/gc-tracker.d.ts +19 -0
- package/build/utils/index.d.ts +1 -0
- package/build/utils/transferable.d.ts +6 -17
- package/build/utils/type-guards.d.ts +4 -4
- package/package.json +4 -3
|
@@ -23,7 +23,24 @@ export type ConnectionRevivableContext<TModules extends readonly RevivableModule
|
|
|
23
23
|
revivableModules: TModules;
|
|
24
24
|
eventTarget: MessageEventTarget<TModules>;
|
|
25
25
|
};
|
|
26
|
-
export declare const startBidirectionalConnection: <TModules extends readonly RevivableModule[] = readonly [typeof import("../revivables/transfer"), typeof import("../revivables/identity"), typeof import("../revivables/array-buffer"), typeof import("../revivables/date"), typeof import("../revivables/headers"), typeof import("../revivables/error"), typeof import("../revivables/typed-array"), typeof import("../revivables/promise"), typeof import("../revivables/function"), typeof import("../revivables/message-port"), typeof import("../revivables/readable-stream"), typeof import("../revivables/abort-signal"), typeof import("../revivables/response"), typeof import("../revivables/request"), typeof import("../revivables/map"), typeof import("../revivables/set"), typeof import("../revivables/bigint"), typeof import("../revivables/
|
|
26
|
+
export declare const startBidirectionalConnection: <TModules extends readonly RevivableModule[] = readonly [typeof import("../revivables/transfer"), typeof import("../revivables/identity"), typeof import("../revivables/array-buffer"), typeof import("../revivables/date"), typeof import("../revivables/headers"), typeof import("../revivables/error"), typeof import("../revivables/typed-array"), typeof import("../revivables/blob"), typeof import("../revivables/promise"), typeof import("../revivables/function"), typeof import("../revivables/message-port"), typeof import("../revivables/readable-stream"), typeof import("../revivables/abort-signal"), typeof import("../revivables/response"), typeof import("../revivables/request"), typeof import("../revivables/map"), typeof import("../revivables/set"), typeof import("../revivables/bigint"), typeof import("../revivables/symbol"), typeof import("../revivables/event"), typeof import("../revivables/event-target"), {
|
|
27
|
+
readonly type: 'clonable';
|
|
28
|
+
readonly capableOnly: true;
|
|
29
|
+
readonly isType: (value: unknown) => value is import("../revivables/fallbacks").Clonable;
|
|
30
|
+
readonly box: (value: import("../revivables/fallbacks").Clonable, _context: import("..").RevivableContext<any>) => import("../revivables/fallbacks").Clonable;
|
|
31
|
+
readonly revive: (value: import("../revivables/fallbacks").BoxedClonable, _context: import("..").RevivableContext<any>) => import("../revivables/fallbacks").Clonable;
|
|
32
|
+
}, {
|
|
33
|
+
readonly type: 'transferable';
|
|
34
|
+
readonly capableOnly: true;
|
|
35
|
+
readonly isType: (value: unknown) => value is import("../revivables/fallbacks").Transferable;
|
|
36
|
+
readonly box: (value: import("../revivables/fallbacks").Transferable, _context: import("..").RevivableContext<any>) => import("../revivables/fallbacks").Transferable;
|
|
37
|
+
readonly revive: (value: import("../revivables/fallbacks").BoxedTransferable, _context: import("..").RevivableContext<any>) => import("../revivables/fallbacks").Transferable;
|
|
38
|
+
}, {
|
|
39
|
+
readonly type: 'unclonable';
|
|
40
|
+
readonly isType: (value: unknown) => value is never;
|
|
41
|
+
readonly box: (_value: never, _context: import("..").RevivableContext<any>) => import("../revivables/fallbacks").BoxedUnclonable;
|
|
42
|
+
readonly revive: (_value: import("../revivables/fallbacks").BoxedUnclonable, _context: import("..").RevivableContext<any>) => Record<string, never>;
|
|
43
|
+
}]>({ transport, value, remoteUuid, eventTarget, send, revivableModules }: {
|
|
27
44
|
transport: Transport;
|
|
28
45
|
value: Capable<TModules>;
|
|
29
46
|
remoteUuid: Uuid;
|
|
@@ -44,10 +61,6 @@ export type BidirectionalConnection<TModules extends readonly RevivableModule[]
|
|
|
44
61
|
revivableContext: ConnectionRevivableContext<TModules>;
|
|
45
62
|
remoteValue: Promise<Capable>;
|
|
46
63
|
};
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
-
* Only activates when the transport can both emit and receive. Owns the
|
|
50
|
-
* announce / close handshake and routes per-connection messages (init /
|
|
51
|
-
* message / message-port-close) to the right connection's eventTarget.
|
|
52
|
-
*/
|
|
64
|
+
/** Mounts bidirectional mode on the shared protocol context. Only active
|
|
65
|
+
* when the transport can both emit and receive. */
|
|
53
66
|
export declare const init: <TModules extends readonly RevivableModule[]>(ctx: ProtocolContext<TModules>) => void;
|
|
@@ -17,4 +17,4 @@ export type ConnectionMessage<TModules extends readonly RevivableModule[] = Defa
|
|
|
17
17
|
Messages: (modules: TModules, value: T) => infer R;
|
|
18
18
|
} ? R : never;
|
|
19
19
|
export type ConnectionContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = BidirectionalConnectionContext<TModules>;
|
|
20
|
-
export declare const startConnections: <T = unknown, const
|
|
20
|
+
export declare const startConnections: <T = unknown, const TModules extends readonly RevivableModule[] = DefaultRevivableModules>(value: Capable<TModules>, { transport: _transport, name, remoteName, key, origin, unregisterSignal, revivableModules: configureRevivableModules, uuid: _uuid, remoteUuid: presetRemoteUuid, }: StartConnectionsOptions<TModules>) => Promise<T>;
|
|
@@ -4,7 +4,11 @@ import type { Transport } from '../utils/transport';
|
|
|
4
4
|
import type { ConnectionContext } from '.';
|
|
5
5
|
import type { TypedEventTarget } from '../utils/typed-event-target';
|
|
6
6
|
export declare const normalizeTransport: (transport: Transport) => Transport;
|
|
7
|
-
|
|
7
|
+
/** Resolves the final revivable module list. The user supplies a function
|
|
8
|
+
* that takes the defaults and returns whatever ordering/composition they
|
|
9
|
+
* want — add modules, drop defaults, reorder, override per-type. When
|
|
10
|
+
* omitted, the defaults are used as-is. */
|
|
11
|
+
export declare const mergeRevivableModules: <TModules extends readonly RevivableModule[] = DefaultRevivableModules>(configure: ((defaults: DefaultRevivableModules) => TModules) | undefined) => TModules;
|
|
8
12
|
export type ProtocolEventMap<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
9
13
|
message: CustomEvent<Message<TModules>>;
|
|
10
14
|
};
|
|
@@ -21,14 +25,17 @@ export type ProtocolContext<TModules extends readonly RevivableModule[] = Defaul
|
|
|
21
25
|
resolveRemoteValue: (value: Capable<TModules>) => void;
|
|
22
26
|
createConnectionEventTarget: () => TypedEventTarget<MessageEventMap<TModules>>;
|
|
23
27
|
};
|
|
24
|
-
export type StartConnectionsOptions<
|
|
28
|
+
export type StartConnectionsOptions<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
25
29
|
transport: Transport;
|
|
26
30
|
name?: string;
|
|
27
31
|
remoteName?: string;
|
|
28
32
|
key?: string;
|
|
29
33
|
origin?: string;
|
|
30
34
|
unregisterSignal?: AbortSignal;
|
|
31
|
-
|
|
35
|
+
/** Configure the revivable module list. Receives the defaults and
|
|
36
|
+
* returns the final ordered list — add modules, drop defaults, reorder,
|
|
37
|
+
* or override per-type as needed. */
|
|
38
|
+
revivableModules?: (defaults: DefaultRevivableModules) => TModules;
|
|
32
39
|
uuid?: Uuid;
|
|
33
40
|
remoteUuid?: Uuid;
|
|
34
41
|
};
|
package/build/index.d.ts
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import type { Capable } from './types';
|
|
2
|
-
import type { DefaultRevivableModules } from './revivables';
|
|
2
|
+
import type { DefaultRevivableModules, RevivableContext } from './revivables';
|
|
3
3
|
import type { RevivableModule } from './revivables';
|
|
4
4
|
import type { StartConnectionsOptions } from './connections/utils';
|
|
5
|
+
import type { Transport } from './utils/transport';
|
|
5
6
|
import type { BadFieldValue, BadFieldPath, BadFieldParent, ErrorMessage, BadValue, Path, ParentObject } from './utils/capable-check';
|
|
6
7
|
export * from './types';
|
|
7
8
|
export * from './revivables';
|
|
8
9
|
export * from './connections';
|
|
9
10
|
export * from './utils';
|
|
10
|
-
|
|
11
|
+
/** Synthetic context so `Capable` can narrow on the inferred transport
|
|
12
|
+
* without an actual context object at the call site. Only `transport`
|
|
13
|
+
* matters; the rest is stubbed with the broadest types. */
|
|
14
|
+
type ContextOf<TTransport extends Transport> = RevivableContext & {
|
|
15
|
+
transport: TTransport;
|
|
16
|
+
};
|
|
17
|
+
type CapableCheck<T, TModules extends readonly RevivableModule[] = DefaultRevivableModules, Ctx extends RevivableContext = RevivableContext> = T extends Capable<TModules, Ctx> ? T : T & {
|
|
11
18
|
[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>>;
|
|
19
|
+
[BadValue]: BadFieldValue<T, Capable<TModules, Ctx>>;
|
|
20
|
+
[Path]: BadFieldPath<T, Capable<TModules, Ctx>>;
|
|
21
|
+
[ParentObject]: BadFieldParent<T, Capable<TModules, Ctx>>;
|
|
15
22
|
};
|
|
16
|
-
export declare const expose: <T = unknown, const
|
|
23
|
+
export declare const expose: <T = unknown, const TModules extends readonly RevivableModule[] = DefaultRevivableModules, const TTransport extends Transport = Transport, const TValue = Capable<TModules, ContextOf<TTransport>>>(value: CapableCheck<TValue, TModules, ContextOf<TTransport>>, options: StartConnectionsOptions<TModules> & {
|
|
24
|
+
transport: TTransport;
|
|
25
|
+
}) => Promise<T>;
|