dropspace 0.0.0-stage → 0.1.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/README.md +17 -2
- package/dist/automerge/index.d.ts +103 -0
- package/dist/automerge/index.d.ts.map +1 -0
- package/dist/automerge/index.js +394 -0
- package/dist/automerge/index.js.map +1 -0
- package/dist/client/channel.d.ts +131 -0
- package/dist/client/channel.d.ts.map +1 -0
- package/dist/client/channel.js +566 -0
- package/dist/client/channel.js.map +1 -0
- package/dist/client/client.d.ts +310 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +1176 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/events.d.ts +14 -0
- package/dist/client/events.d.ts.map +1 -0
- package/dist/client/events.js +71 -0
- package/dist/client/events.js.map +1 -0
- package/dist/client/identity.d.ts +89 -0
- package/dist/client/identity.d.ts.map +1 -0
- package/dist/client/identity.js +274 -0
- package/dist/client/identity.js.map +1 -0
- package/dist/client/index.d.ts +8 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/peer-connection.d.ts +182 -0
- package/dist/client/peer-connection.d.ts.map +1 -0
- package/dist/client/peer-connection.js +593 -0
- package/dist/client/peer-connection.js.map +1 -0
- package/dist/client/peer-selection.d.ts +70 -0
- package/dist/client/peer-selection.d.ts.map +1 -0
- package/dist/client/peer-selection.js +193 -0
- package/dist/client/peer-selection.js.map +1 -0
- package/dist/client/storage.d.ts +118 -0
- package/dist/client/storage.d.ts.map +1 -0
- package/dist/client/storage.js +463 -0
- package/dist/client/storage.js.map +1 -0
- package/dist/files/index.d.ts +136 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +701 -0
- package/dist/files/index.js.map +1 -0
- package/dist/files/sha256.d.ts +24 -0
- package/dist/files/sha256.d.ts.map +1 -0
- package/dist/files/sha256.js +133 -0
- package/dist/files/sha256.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol/envelope.d.ts +61 -0
- package/dist/protocol/envelope.d.ts.map +1 -0
- package/dist/protocol/envelope.js +260 -0
- package/dist/protocol/envelope.js.map +1 -0
- package/dist/protocol/framing.d.ts +56 -0
- package/dist/protocol/framing.d.ts.map +1 -0
- package/dist/protocol/framing.js +93 -0
- package/dist/protocol/framing.js.map +1 -0
- package/dist/protocol/index.d.ts +3 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +3 -0
- package/dist/protocol/index.js.map +1 -0
- package/fixtures/envelopes.json +132 -0
- package/package.json +43 -4
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { WireFrameType, type AckSemantics, type WireFrameHeader, type DecodedWireFrame } from "../protocol/index.js";
|
|
2
|
+
import { TypedEventEmitter } from "./events.js";
|
|
3
|
+
export interface DataChannelLike {
|
|
4
|
+
readonly label: string;
|
|
5
|
+
readyState: "connecting" | "open" | "closing" | "closed";
|
|
6
|
+
bufferedAmount: number;
|
|
7
|
+
bufferedAmountLowThreshold: number;
|
|
8
|
+
binaryType?: BinaryType;
|
|
9
|
+
send(data: Uint8Array | ArrayBuffer): void;
|
|
10
|
+
close(): void;
|
|
11
|
+
addEventListener(type: string, listener: (ev: any) => void): void;
|
|
12
|
+
removeEventListener(type: string, listener: (ev: any) => void): void;
|
|
13
|
+
}
|
|
14
|
+
export interface SendMessageOptions {
|
|
15
|
+
channel?: string;
|
|
16
|
+
messageId?: string;
|
|
17
|
+
ack?: AckSemantics | false;
|
|
18
|
+
ackTimeoutMs?: number;
|
|
19
|
+
maxRetries?: number;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
timeoutMs?: number;
|
|
22
|
+
viaHubDeviceId?: string;
|
|
23
|
+
spaceId?: string;
|
|
24
|
+
maxHops?: number;
|
|
25
|
+
meta?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
export interface IncomingMessageEvent {
|
|
28
|
+
peerDeviceId: string;
|
|
29
|
+
channel: string;
|
|
30
|
+
messageId: string;
|
|
31
|
+
frameType: WireFrameType;
|
|
32
|
+
header: WireFrameHeader;
|
|
33
|
+
binary: Uint8Array;
|
|
34
|
+
json?: unknown;
|
|
35
|
+
routedViaHub?: string;
|
|
36
|
+
/** Call when using manual `persisted` or `processed` ACK semantics */
|
|
37
|
+
acknowledge(semantics?: AckSemantics): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export declare class MessagingError extends Error {
|
|
40
|
+
readonly code: "QUEUE_OVERFLOW" | "CHANNEL_CLOSED" | "ABORTED" | "TIMEOUT" | "ACK_TIMEOUT" | "MESSAGE_TOO_LARGE" | "HUB_ROUTE_FAILED";
|
|
41
|
+
constructor(message: string, code: "QUEUE_OVERFLOW" | "CHANNEL_CLOSED" | "ABORTED" | "TIMEOUT" | "ACK_TIMEOUT" | "MESSAGE_TOO_LARGE" | "HUB_ROUTE_FAILED");
|
|
42
|
+
}
|
|
43
|
+
export interface ChannelMultiplexerOptions {
|
|
44
|
+
peerDeviceId: string;
|
|
45
|
+
localDeviceId: string;
|
|
46
|
+
maxFramePayloadBytes?: number;
|
|
47
|
+
bufferedAmountHighWaterMark?: number;
|
|
48
|
+
bufferedAmountLowWaterMark?: number;
|
|
49
|
+
maxSendQueueFrames?: number;
|
|
50
|
+
maxSendQueueBytes?: number;
|
|
51
|
+
dedupWindowMs?: number;
|
|
52
|
+
maxDedupEntries?: number;
|
|
53
|
+
onRawFrame?: (frame: DecodedWireFrame) => void;
|
|
54
|
+
}
|
|
55
|
+
export type ChannelMultiplexerEvents = {
|
|
56
|
+
message: IncomingMessageEvent;
|
|
57
|
+
transferFrame: DecodedWireFrame;
|
|
58
|
+
crdtFrame: DecodedWireFrame;
|
|
59
|
+
hubRelayFrame: DecodedWireFrame;
|
|
60
|
+
backpressureChange: {
|
|
61
|
+
bufferedAmount: number;
|
|
62
|
+
queuedBytes: number;
|
|
63
|
+
paused: boolean;
|
|
64
|
+
};
|
|
65
|
+
error: Error;
|
|
66
|
+
close: void;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Reliable binary-first framing, chunking, backpressure queue, and optional application ACK engine
|
|
70
|
+
* over an underlying `RTCDataChannel` (Section 13).
|
|
71
|
+
*
|
|
72
|
+
* Important Transport Note:
|
|
73
|
+
* Even an ordered, reliable `RTCDataChannel` only guarantees SCTP in-order delivery within a single
|
|
74
|
+
* active transport association. Across reconnects or new `RTCPeerConnection` instances, in-flight
|
|
75
|
+
* SCTP packets can be lost or re-sent. Enable `ack: "received" | "persisted" | "processed"` when
|
|
76
|
+
* application-level delivery confirmation and deduplication across retries are required.
|
|
77
|
+
*/
|
|
78
|
+
export declare class PeerChannelMultiplexer {
|
|
79
|
+
private readonly options;
|
|
80
|
+
readonly events: TypedEventEmitter<ChannelMultiplexerEvents>;
|
|
81
|
+
private dataChannel;
|
|
82
|
+
private readonly maxFramePayloadBytes;
|
|
83
|
+
private readonly highWaterMark;
|
|
84
|
+
private readonly lowWaterMark;
|
|
85
|
+
private readonly maxQueueFrames;
|
|
86
|
+
private readonly maxQueueBytes;
|
|
87
|
+
private readonly dedupWindowMs;
|
|
88
|
+
private readonly maxDedupEntries;
|
|
89
|
+
private readonly sendQueue;
|
|
90
|
+
private queuedBytes;
|
|
91
|
+
private isFlushing;
|
|
92
|
+
private backpressurePaused;
|
|
93
|
+
private closed;
|
|
94
|
+
private readonly pendingAcks;
|
|
95
|
+
private readonly seenMessageIds;
|
|
96
|
+
private readonly partialAssemblies;
|
|
97
|
+
private readonly boundOnMessage;
|
|
98
|
+
private readonly boundOnBufferedAmountLow;
|
|
99
|
+
private readonly boundOnClose;
|
|
100
|
+
constructor(options: ChannelMultiplexerOptions);
|
|
101
|
+
attachDataChannel(dc: DataChannelLike): void;
|
|
102
|
+
detachDataChannel(): void;
|
|
103
|
+
getQueueMetrics(): {
|
|
104
|
+
queuedFrames: number;
|
|
105
|
+
queuedBytes: number;
|
|
106
|
+
bufferedAmount: number;
|
|
107
|
+
};
|
|
108
|
+
sendBinary(payload: Uint8Array, options?: SendMessageOptions): Promise<{
|
|
109
|
+
messageId: string;
|
|
110
|
+
ackSemantics?: AckSemantics;
|
|
111
|
+
}>;
|
|
112
|
+
sendJson(value: unknown, options?: SendMessageOptions): Promise<{
|
|
113
|
+
messageId: string;
|
|
114
|
+
ackSemantics?: AckSemantics;
|
|
115
|
+
}>;
|
|
116
|
+
sendRawWireFrame(frameType: WireFrameType, header: WireFrameHeader, payload?: Uint8Array, signal?: AbortSignal): Promise<void>;
|
|
117
|
+
private sendInternal;
|
|
118
|
+
private waitForAck;
|
|
119
|
+
private enqueueEncodedFrame;
|
|
120
|
+
private flushQueue;
|
|
121
|
+
private waitForBufferDrain;
|
|
122
|
+
private handleIncomingRaw;
|
|
123
|
+
private handleControlFrame;
|
|
124
|
+
private handleApplicationFrame;
|
|
125
|
+
deliverHubUnwrappedFrame(innerFrame: DecodedWireFrame, hubDeviceId: string): void;
|
|
126
|
+
private deliverReassembledMessage;
|
|
127
|
+
private pruneDeduplicationMap;
|
|
128
|
+
private rejectQueuedFrames;
|
|
129
|
+
close(): void;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/client/channel.ts"],"names":[],"mappings":"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"}
|