osra 0.2.13 → 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.
- package/LICENSE +21 -21
- package/README.md +319 -304
- package/build/connections/bidirectional.d.ts +53 -0
- package/build/connections/index.d.ts +20 -0
- package/build/connections/utils.d.ts +31 -0
- package/build/index.d.ts +16 -630
- package/build/index.js +918 -634
- package/build/index.js.map +1 -1
- package/build/revivables/abort-signal.d.ts +20 -0
- package/build/revivables/array-buffer.d.ts +12 -0
- package/build/revivables/bigint.d.ts +14 -0
- package/build/revivables/date.d.ts +9 -0
- package/build/revivables/error.d.ts +10 -0
- package/build/revivables/event-target.d.ts +29 -0
- package/build/revivables/function.d.ts +29 -0
- package/build/revivables/headers.d.ts +9 -0
- package/build/revivables/identity.d.ts +39 -0
- package/build/revivables/index.d.ts +39 -0
- package/build/revivables/map.d.ts +11 -0
- package/build/revivables/message-port.d.ts +83 -0
- package/build/revivables/promise.d.ts +34 -0
- package/build/revivables/readable-stream.d.ts +18 -0
- package/build/revivables/request.d.ts +23 -0
- package/build/revivables/response.d.ts +18 -0
- package/build/revivables/set.d.ts +11 -0
- package/build/revivables/transfer.d.ts +37 -0
- package/build/revivables/typed-array.d.ts +15 -0
- package/build/revivables/utils.d.ts +59 -0
- package/build/types.d.ts +45 -0
- package/build/utils/capable-check.d.ts +44 -0
- package/build/utils/event-channel.d.ts +27 -0
- package/build/utils/index.d.ts +11 -0
- package/build/utils/replace.d.ts +25 -0
- package/build/utils/transferable.d.ts +20 -0
- package/build/utils/transport.d.ts +56 -0
- package/build/utils/type-guards.d.ts +58 -0
- package/build/utils/type.d.ts +2 -0
- package/build/utils/typed-event-target.d.ts +16 -0
- package/build/utils/typed-message-channel.d.ts +19 -0
- package/package.json +60 -67
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Transport } from '../utils/transport';
|
|
2
|
+
import type { DefaultRevivableModules, RevivableModule } from '../revivables';
|
|
3
|
+
import type { DeepReplaceWithBox } from '../utils/replace';
|
|
4
|
+
import type { ProtocolContext } from './utils';
|
|
5
|
+
import type { Capable, MessageEventTarget, MessageFields, Uuid } from '../types';
|
|
6
|
+
export declare const type: 'bidirectional';
|
|
7
|
+
export type InitMessage<TModules extends readonly RevivableModule[] = DefaultRevivableModules, T extends Capable<TModules> = Capable<TModules>> = {
|
|
8
|
+
type: 'init';
|
|
9
|
+
remoteUuid: Uuid;
|
|
10
|
+
data: DeepReplaceWithBox<T, TModules[number]>;
|
|
11
|
+
};
|
|
12
|
+
export declare const Messages: <TModules extends readonly RevivableModule[] = DefaultRevivableModules, T extends Capable<TModules> = Capable<TModules>>(modules: TModules, value: T) => InitMessage<TModules, T>;
|
|
13
|
+
export type Messages<TModules extends readonly RevivableModule[] = DefaultRevivableModules, T extends Capable<TModules> = Capable<TModules>> = ReturnType<typeof Messages<TModules, T>>;
|
|
14
|
+
export type ConnectionContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
15
|
+
type: 'bidirectional';
|
|
16
|
+
eventTarget: MessageEventTarget<TModules>;
|
|
17
|
+
connection: BidirectionalConnection<TModules>;
|
|
18
|
+
};
|
|
19
|
+
export type ConnectionRevivableContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
20
|
+
transport: Transport;
|
|
21
|
+
remoteUuid: Uuid;
|
|
22
|
+
sendMessage: (message: MessageFields & Record<string, unknown>) => void;
|
|
23
|
+
revivableModules: TModules;
|
|
24
|
+
eventTarget: MessageEventTarget<TModules>;
|
|
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/event-target")]>({ transport, value, remoteUuid, eventTarget, send, revivableModules }: {
|
|
27
|
+
transport: Transport;
|
|
28
|
+
value: Capable<TModules>;
|
|
29
|
+
remoteUuid: Uuid;
|
|
30
|
+
eventTarget: MessageEventTarget<TModules>;
|
|
31
|
+
send: (message: MessageFields & Record<string, unknown>) => void;
|
|
32
|
+
revivableModules: TModules;
|
|
33
|
+
}) => {
|
|
34
|
+
revivableContext: {
|
|
35
|
+
transport: Transport;
|
|
36
|
+
remoteUuid: `${string}-${string}-${string}-${string}-${string}`;
|
|
37
|
+
sendMessage: (message: MessageFields & Record<string, unknown>) => void;
|
|
38
|
+
eventTarget: MessageEventTarget<TModules>;
|
|
39
|
+
revivableModules: TModules;
|
|
40
|
+
};
|
|
41
|
+
remoteValue: Promise<any>;
|
|
42
|
+
};
|
|
43
|
+
export type BidirectionalConnection<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
44
|
+
revivableContext: ConnectionRevivableContext<TModules>;
|
|
45
|
+
remoteValue: Promise<Capable>;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* init() — mounts the bidirectional mode on the shared protocol context.
|
|
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
|
+
*/
|
|
53
|
+
export declare const init: <TModules extends readonly RevivableModule[]>(ctx: ProtocolContext<TModules>) => void;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DefaultRevivableModules, RevivableModule } from '../revivables';
|
|
2
|
+
import type { ConnectionContext as BidirectionalConnectionContext } from './bidirectional';
|
|
3
|
+
import type { ProtocolContext, StartConnectionsOptions } from '../utils';
|
|
4
|
+
import type { Capable } from '../types';
|
|
5
|
+
import * as bidirectional from './bidirectional';
|
|
6
|
+
export * from './bidirectional';
|
|
7
|
+
export * from './utils';
|
|
8
|
+
export type ConnectionModule<T> = {
|
|
9
|
+
readonly type: string;
|
|
10
|
+
readonly init: (ctx: ProtocolContext<any>) => void;
|
|
11
|
+
readonly Messages?: T;
|
|
12
|
+
};
|
|
13
|
+
export declare const connections: readonly [typeof bidirectional];
|
|
14
|
+
export type DefaultConnectionModules = typeof connections;
|
|
15
|
+
export type DefaultConnectionModule = DefaultConnectionModules[number];
|
|
16
|
+
export type ConnectionMessage<TModules extends readonly RevivableModule[] = DefaultRevivableModules, T extends Capable<TModules> = Capable<TModules>> = DefaultConnectionModule extends {
|
|
17
|
+
Messages: (modules: TModules, value: T) => infer R;
|
|
18
|
+
} ? R : never;
|
|
19
|
+
export type ConnectionContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = BidirectionalConnectionContext<TModules>;
|
|
20
|
+
export declare const startConnections: <T = unknown, const TUserModules extends readonly RevivableModule[] = readonly []>(value: Capable<[...DefaultRevivableModules, ...TUserModules]>, { transport: _transport, name, remoteName, key, origin, unregisterSignal, revivableModules: _userRevivableModules }: StartConnectionsOptions<TUserModules>) => Promise<T>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Message, MessageVariant, Uuid, Capable, MessageEventMap } from '../types';
|
|
2
|
+
import type { DefaultRevivableModules, RevivableModule } from '../revivables';
|
|
3
|
+
import type { Transport } from '../utils/transport';
|
|
4
|
+
import type { ConnectionContext } from '.';
|
|
5
|
+
import type { TypedEventTarget } from '../utils/typed-event-target';
|
|
6
|
+
export declare const normalizeTransport: (transport: Transport) => Transport;
|
|
7
|
+
export declare const mergeRevivableModules: <TUserModules extends readonly RevivableModule[]>(userModules: TUserModules | undefined) => readonly (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/transfer") | typeof import("../revivables/message-port") | typeof import("../revivables/promise") | typeof import("../revivables/function") | typeof import("../revivables/readable-stream") | typeof import("../revivables/abort-signal") | typeof import("../revivables/response") | typeof import("../revivables/request") | typeof import("../revivables/identity") | typeof import("../revivables/map") | typeof import("../revivables/set") | typeof import("../revivables/bigint") | typeof import("../revivables/event-target"))[] | readonly [...(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/transfer") | typeof import("../revivables/message-port") | typeof import("../revivables/promise") | typeof import("../revivables/function") | typeof import("../revivables/readable-stream") | typeof import("../revivables/abort-signal") | typeof import("../revivables/response") | typeof import("../revivables/request") | typeof import("../revivables/identity") | typeof import("../revivables/map") | typeof import("../revivables/set") | typeof import("../revivables/bigint") | typeof import("../revivables/event-target"))[], ...TUserModules];
|
|
8
|
+
export type ProtocolEventMap<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
9
|
+
message: CustomEvent<Message<TModules>>;
|
|
10
|
+
};
|
|
11
|
+
export type ProtocolEventTarget<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = TypedEventTarget<ProtocolEventMap<TModules>>;
|
|
12
|
+
export type ProtocolContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
13
|
+
transport: Transport;
|
|
14
|
+
value: Capable<TModules>;
|
|
15
|
+
revivableModules: TModules;
|
|
16
|
+
connectionContexts: Map<string, ConnectionContext<TModules>>;
|
|
17
|
+
getUuid: () => Uuid;
|
|
18
|
+
sendMessage: (message: MessageVariant) => void;
|
|
19
|
+
protocolEventTarget: ProtocolEventTarget<TModules>;
|
|
20
|
+
resolveRemoteValue: (value: Capable<TModules>) => void;
|
|
21
|
+
createConnectionEventTarget: () => TypedEventTarget<MessageEventMap<TModules>>;
|
|
22
|
+
};
|
|
23
|
+
export type StartConnectionsOptions<TUserModules extends readonly RevivableModule[] = readonly []> = {
|
|
24
|
+
transport: Transport;
|
|
25
|
+
name?: string;
|
|
26
|
+
remoteName?: string;
|
|
27
|
+
key?: string;
|
|
28
|
+
origin?: string;
|
|
29
|
+
unregisterSignal?: AbortSignal;
|
|
30
|
+
revivableModules?: TUserModules;
|
|
31
|
+
};
|