p2party 0.8.0 → 0.14.2
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.md +202 -661
- package/README.md +736 -404
- package/THIRD_PARTY_NOTICES.md +458 -0
- package/docs/assets/p2party-cat.svg +1 -0
- package/docs/getting-started.md +203 -0
- package/docs/protocol-v4-security.md +158 -0
- package/docs/references.md +157 -0
- package/docs/session-api.md +457 -0
- package/docs/wire-format.md +103 -0
- package/examples/standalone-e2ee.ts +194 -0
- package/lib/api/signalingServerApi.d.ts +6 -7
- package/lib/api/webrtc/baseQuery.d.ts +1 -2
- package/lib/api/webrtc/disconnectFromAllRoomsQuery.d.ts +1 -2
- package/lib/api/webrtc/disconnectFromChannelLabelQuery.d.ts +1 -2
- package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts +1 -2
- package/lib/api/webrtc/disconnectFromPeerQuery.d.ts +3 -3
- package/lib/api/webrtc/disconnectFromRoomQuery.d.ts +1 -2
- package/lib/api/webrtc/disconnectQuery.d.ts +1 -2
- package/lib/api/webrtc/iceGeneration.d.ts +17 -0
- package/lib/api/webrtc/iceRepair.d.ts +10 -0
- package/lib/api/webrtc/index.d.ts +13 -13
- package/lib/api/webrtc/interfaces.d.ts +67 -11
- package/lib/api/webrtc/negotiationLock.d.ts +12 -0
- package/lib/api/webrtc/openChannelQuery.d.ts +1 -2
- package/lib/api/webrtc/pendingIceCandidates.d.ts +14 -0
- package/lib/api/webrtc/roomPeer.d.ts +11 -0
- package/lib/api/webrtc/sendMessageQuery.d.ts +7 -4
- package/lib/api/webrtc/setCandidateQuery.d.ts +1 -2
- package/lib/api/webrtc/setDescriptionQuery.d.ts +1 -2
- package/lib/cryptography/coverCell.d.ts +65 -0
- package/lib/cryptography/cpace.d.ts +41 -0
- package/lib/cryptography/ed25519.d.ts +0 -1
- package/lib/cryptography/hashStream.d.ts +15 -0
- package/lib/cryptography/hkdf.d.ts +3 -0
- package/lib/cryptography/identityCrossSig.d.ts +7 -0
- package/lib/cryptography/interfaces.d.ts +28 -13
- package/lib/cryptography/memory.d.ts +2 -4
- package/lib/cryptography/merkle.d.ts +0 -1
- package/lib/cryptography/mlkem.d.ts +117 -0
- package/lib/cryptography/mnemonic.d.ts +0 -1
- package/lib/cryptography/pqHealing.d.ts +268 -0
- package/lib/cryptography/pqHealingFrame.d.ts +39 -0
- package/lib/cryptography/pqMessageKey.d.ts +30 -0
- package/lib/cryptography/random.d.ts +22 -0
- package/lib/cryptography/ratchet.d.ts +146 -0
- package/lib/cryptography/testModule.d.ts +7 -0
- package/lib/cryptography/utils.d.ts +0 -1
- package/lib/cryptography/wasmLoader.d.ts +6 -1
- package/lib/cryptography/x25519.d.ts +15 -0
- package/lib/cryptography/x3dh.d.ts +9 -0
- package/lib/db/api.d.ts +54 -22
- package/lib/db/db.worker.d.ts +0 -1
- package/lib/db/ratchetWrap.d.ts +36 -0
- package/lib/db/src/getDB.d.ts +17 -4
- package/lib/db/types.d.ts +274 -32
- package/lib/db.worker.js +1 -2
- package/lib/handlers/chunkFrame.d.ts +13 -0
- package/lib/handlers/connectionSignal.d.ts +26 -0
- package/lib/handlers/coverEdge.d.ts +42 -0
- package/lib/handlers/coverRuntime.d.ts +91 -0
- package/lib/handlers/coverScheduler.d.ts +184 -0
- package/lib/handlers/coverTransfer.d.ts +46 -0
- package/lib/handlers/frameType.d.ts +10 -0
- package/lib/handlers/handleChallenge.d.ts +0 -1
- package/lib/handlers/handleConnectToPeer.d.ts +0 -1
- package/lib/handlers/handleHandshake.d.ts +74 -0
- package/lib/handlers/handleMessageQueueing.d.ts +53 -4
- package/lib/handlers/handleOpenChannel.d.ts +4 -2
- package/lib/handlers/handleQueuedIceCandidates.d.ts +0 -1
- package/lib/handlers/handleReadReceipt.d.ts +17 -4
- package/lib/handlers/handleReceiveMessage.d.ts +21 -3
- package/lib/handlers/handleSendMessage.d.ts +110 -2
- package/lib/handlers/handleWebSocketMessage.d.ts +1 -3
- package/lib/handlers/handshakeCore.d.ts +95 -0
- package/lib/handlers/messageChunkCrypto.d.ts +70 -0
- package/lib/handlers/peerRosterDelta.d.ts +12 -0
- package/lib/handlers/pqHealingOrchestrator.d.ts +46 -0
- package/lib/handlers/pqHealingRuntime.d.ts +82 -0
- package/lib/handlers/ratchetGate.d.ts +18 -0
- package/lib/handlers/ratchetPersist.d.ts +53 -0
- package/lib/handlers/receiptFrame.d.ts +18 -0
- package/lib/handlers/receiveMessageKeyLifetime.d.ts +24 -0
- package/lib/handlers/reconcile.d.ts +16 -0
- package/lib/handlers/transferAbort.d.ts +42 -0
- package/lib/index.d.ts +203 -46
- package/lib/index.js +1 -2
- package/lib/index.min.js +1 -2
- package/lib/index.mjs +1 -2
- package/lib/libcrypto.provenance.json +45 -0
- package/lib/libcrypto.wasm +0 -0
- package/lib/middleware/keyPairListenerMiddleware.d.ts +0 -1
- package/lib/middleware/roomListenerMiddleware.d.ts +0 -1
- package/lib/reducers/commonSlice.d.ts +0 -1
- package/lib/reducers/keyPairSlice.d.ts +0 -1
- package/lib/reducers/roomSlice.d.ts +65 -3
- package/lib/reducers/signalingServerSlice.d.ts +25 -4
- package/lib/roomInvite.d.ts +18 -0
- package/lib/roomPinAttempts.d.ts +12 -0
- package/lib/roomPinVault.d.ts +26 -0
- package/lib/roomPolicy.d.ts +60 -0
- package/lib/session.d.ts +110 -0
- package/lib/session.js +1 -0
- package/lib/session.mjs +1 -0
- package/lib/store.d.ts +40 -41
- package/lib/utils/channelLabel.d.ts +0 -1
- package/lib/utils/chunkBounds.d.ts +9 -0
- package/lib/utils/constants.d.ts +50 -6
- package/lib/utils/debug.d.ts +25 -0
- package/lib/utils/drainAndClose.d.ts +5 -0
- package/lib/utils/identityRole.d.ts +19 -0
- package/lib/utils/interfaces.d.ts +31 -43
- package/lib/utils/leafHash.d.ts +13 -0
- package/lib/utils/messageTypes.d.ts +0 -1
- package/lib/utils/metadata.d.ts +6 -1
- package/lib/utils/mutex.d.ts +24 -0
- package/lib/utils/protocolVersion.d.ts +5 -0
- package/lib/utils/receiptToken.d.ts +7 -0
- package/lib/utils/sendQueueKey.d.ts +2 -0
- package/lib/utils/signalingAuth.d.ts +8 -0
- package/lib/utils/signalingBounds.d.ts +9 -0
- package/lib/utils/splitToChunks.d.ts +7 -4
- package/lib/utils/uint8array.d.ts +1 -2
- package/lib/utils/waitForOpen.d.ts +3 -0
- package/lib/utils/zeroFree.d.ts +10 -0
- package/package.json +109 -49
- package/lib/api/signalingServerApi.d.ts.map +0 -1
- package/lib/api/webrtc/baseQuery.d.ts.map +0 -1
- package/lib/api/webrtc/disconnectFromAllRoomsQuery.d.ts.map +0 -1
- package/lib/api/webrtc/disconnectFromChannelLabelQuery.d.ts.map +0 -1
- package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts.map +0 -1
- package/lib/api/webrtc/disconnectFromPeerQuery.d.ts.map +0 -1
- package/lib/api/webrtc/disconnectFromRoomQuery.d.ts.map +0 -1
- package/lib/api/webrtc/disconnectQuery.d.ts.map +0 -1
- package/lib/api/webrtc/index.d.ts.map +0 -1
- package/lib/api/webrtc/interfaces.d.ts.map +0 -1
- package/lib/api/webrtc/openChannelQuery.d.ts.map +0 -1
- package/lib/api/webrtc/sendMessageQuery.d.ts.map +0 -1
- package/lib/api/webrtc/setCandidateQuery.d.ts.map +0 -1
- package/lib/api/webrtc/setDescriptionQuery.d.ts.map +0 -1
- package/lib/cryptography/chacha20poly1305.d.ts +0 -116
- package/lib/cryptography/chacha20poly1305.d.ts.map +0 -1
- package/lib/cryptography/ed25519.d.ts.map +0 -1
- package/lib/cryptography/interfaces.d.ts.map +0 -1
- package/lib/cryptography/memory.d.ts.map +0 -1
- package/lib/cryptography/merkle.d.ts.map +0 -1
- package/lib/cryptography/mnemonic.d.ts.map +0 -1
- package/lib/cryptography/utils.d.ts.map +0 -1
- package/lib/cryptography/wasmLoader.d.ts.map +0 -1
- package/lib/db/api.d.ts.map +0 -1
- package/lib/db/db.worker.d.ts.map +0 -1
- package/lib/db/src/getDB.d.ts.map +0 -1
- package/lib/db/types.d.ts.map +0 -1
- package/lib/db.worker.js.map +0 -1
- package/lib/handlers/handleChallenge.d.ts.map +0 -1
- package/lib/handlers/handleConnectToPeer.d.ts.map +0 -1
- package/lib/handlers/handleMessageQueueing.d.ts.map +0 -1
- package/lib/handlers/handleOpenChannel.d.ts.map +0 -1
- package/lib/handlers/handleQueuedIceCandidates.d.ts.map +0 -1
- package/lib/handlers/handleReadReceipt.d.ts.map +0 -1
- package/lib/handlers/handleReceiveMessage.d.ts.map +0 -1
- package/lib/handlers/handleSendMessage.d.ts.map +0 -1
- package/lib/handlers/handleWebSocketMessage.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/index.min.js.map +0 -1
- package/lib/index.mjs.map +0 -1
- package/lib/middleware/keyPairListenerMiddleware.d.ts.map +0 -1
- package/lib/middleware/roomListenerMiddleware.d.ts.map +0 -1
- package/lib/reducers/commonSlice.d.ts.map +0 -1
- package/lib/reducers/keyPairSlice.d.ts.map +0 -1
- package/lib/reducers/roomSlice.d.ts.map +0 -1
- package/lib/reducers/signalingServerSlice.d.ts.map +0 -1
- package/lib/store.d.ts.map +0 -1
- package/lib/utils/allocators.d.ts +0 -22
- package/lib/utils/allocators.d.ts.map +0 -1
- package/lib/utils/channelLabel.d.ts.map +0 -1
- package/lib/utils/constants.d.ts.map +0 -1
- package/lib/utils/interfaces.d.ts.map +0 -1
- package/lib/utils/messageTypes.d.ts.map +0 -1
- package/lib/utils/metadata.d.ts.map +0 -1
- package/lib/utils/splitToChunks.d.ts.map +0 -1
- package/lib/utils/uint8array.d.ts.map +0 -1
package/lib/index.d.ts
CHANGED
|
@@ -1,35 +1,150 @@
|
|
|
1
|
+
import { createSession, generateSessionIdentity, restoreSession } from "./session";
|
|
2
|
+
import { setWasmSourceUrl } from "./cryptography/wasmLoader";
|
|
3
|
+
import { setDebugLogging } from "./utils/debug";
|
|
4
|
+
import { WIRE_CHUNK_FRAME_LEN } from "./utils/constants";
|
|
5
|
+
import { DEFAULT_ROOM_POLICY_V1, MIN_COVER_CADENCE_MS, MAX_COVER_CADENCE_MS, MAX_COVER_LANES, MAX_COVER_FRAMES_PER_CELL, MIN_COVER_SLOT_MS, canonicalizeRoomPolicyV1, decodeRoomPolicyV1, encodeRoomPolicyV1, hashRoomPolicyV1, roomPoliciesEqualV1, validateRoomPolicyV1 } from "./roomPolicy";
|
|
1
6
|
import type { State } from "./store";
|
|
2
7
|
import type { Room, Peer, Channel, Message } from "./reducers/roomSlice";
|
|
3
8
|
import type { SignalingState } from "./reducers/signalingServerSlice";
|
|
4
9
|
import type { MimeType, FileExtension } from "./utils/messageTypes";
|
|
5
10
|
import type { WebSocketMessageRoomIdRequest, WebSocketMessageRoomIdResponse, WebSocketMessageChallengeRequest, WebSocketMessageChallengeResponse, WebSocketMessageDescriptionSend, WebSocketMessageDescriptionReceive, WebSocketMessageCandidateSend, WebSocketMessageCandidateReceive, WebSocketMessageError } from "./utils/interfaces";
|
|
6
11
|
import type { RoomData } from "./api/webrtc/interfaces";
|
|
7
|
-
import type { BlacklistedPeer, UsernamedPeer, UniqueRoom } from "./db/types";
|
|
12
|
+
import type { BlacklistedPeer, UsernamedPeer, UniqueRoom, RoomStats } from "./db/types";
|
|
8
13
|
import type { KeyPair } from "./reducers/keyPairSlice";
|
|
14
|
+
import type { RoomPolicyV1 } from "./roomPolicy";
|
|
15
|
+
import type { SendMessageResult } from "./handlers/handleSendMessage";
|
|
16
|
+
import { MessageDeliveryError } from "./handlers/handleSendMessage";
|
|
17
|
+
export interface ConnectRoomOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Canonical public room policy. Omit on reconnect to preserve the room's
|
|
20
|
+
* existing policy; a new room defaults to hybrid-PQ, no-PIN, immediate
|
|
21
|
+
* delivery over the currently shipped signaling path.
|
|
22
|
+
*/
|
|
23
|
+
policy?: RoomPolicyV1;
|
|
24
|
+
/**
|
|
25
|
+
* Required exactly when `policy.authMode` is `pin`. Copied into an in-memory
|
|
26
|
+
* vault keyed by the local room URL; never enters Redux, storage, or logs.
|
|
27
|
+
*/
|
|
28
|
+
pin?: Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
export interface WaitForRoomOptions {
|
|
31
|
+
/** Reject if the signaling service has not assigned an id in this long. */
|
|
32
|
+
timeoutMs?: number;
|
|
33
|
+
/** Cancel the wait, e.g. because the user navigated away. */
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve once the signaling service has assigned this room its id.
|
|
38
|
+
*
|
|
39
|
+
* `connect()` returns as soon as the join has been *started*; the id arrives
|
|
40
|
+
* later, on a `roomId` frame. Without this, every caller has to hand-roll the
|
|
41
|
+
* same store subscription — a mutable `unsubscribe` binding, an `inspect()`
|
|
42
|
+
* that must also be called once synchronously in case the room is already
|
|
43
|
+
* there, and no timeout — which is a lot of ceremony to learn one string.
|
|
44
|
+
*
|
|
45
|
+
* Resolves immediately when the room is already known.
|
|
46
|
+
*/
|
|
47
|
+
declare const waitForRoom: (roomUrl: string, options?: WaitForRoomOptions) => Promise<Room>;
|
|
48
|
+
/**
|
|
49
|
+
* Join a room and resolve once it has an id, in one call.
|
|
50
|
+
*
|
|
51
|
+
* This is `connect()` followed by `waitForRoom()`, which is what essentially
|
|
52
|
+
* every browser caller wants:
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* const invite = p2party.generateRoomInvite();
|
|
56
|
+
* const room = await p2party.joinRoom(invite);
|
|
57
|
+
* console.log("joined", room.id);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
declare const joinRoom: (roomUrl: string, signalingServerUrl?: string, rtcConfig?: RTCConfiguration, options?: ConnectRoomOptions & WaitForRoomOptions) => Promise<Room>;
|
|
61
|
+
export interface WaitForPeersOptions extends WaitForRoomOptions {
|
|
62
|
+
/** Resolve once this many peers have completed the handshake. Default 1. */
|
|
63
|
+
count?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve once `count` peers in the room have finished authenticating.
|
|
67
|
+
*
|
|
68
|
+
* A room having an id says nothing about whether anyone can receive a message:
|
|
69
|
+
* `sendMessage` to a room with no authenticated peer rejects. Callers were
|
|
70
|
+
* writing their own store subscription and peer-count poll to bridge that gap.
|
|
71
|
+
*/
|
|
72
|
+
declare const waitForPeers: (roomId: string, options?: WaitForPeersOptions) => Promise<Peer[]>;
|
|
73
|
+
export interface InboundMessage {
|
|
74
|
+
readonly roomId: string;
|
|
75
|
+
readonly fromPeerId: string;
|
|
76
|
+
readonly merkleRootHex: string;
|
|
77
|
+
readonly filename: string;
|
|
78
|
+
readonly size: number;
|
|
79
|
+
/** Text for a text message; a Blob for a completed file. */
|
|
80
|
+
readonly message: string | Blob;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Call `handler` once for each message that finishes arriving in a room.
|
|
84
|
+
*
|
|
85
|
+
* Without this, every application reimplements the same loop: subscribe to the
|
|
86
|
+
* store, diff the room's `messages` array against what it saw last time, skip
|
|
87
|
+
* anything still in flight, and call `readMessage` to decode. Returns an
|
|
88
|
+
* unsubscribe function.
|
|
89
|
+
*
|
|
90
|
+
* Handler errors are caught and logged rather than allowed to escape into the
|
|
91
|
+
* store's notify loop, where they would break unrelated subscribers.
|
|
92
|
+
*/
|
|
93
|
+
declare const onMessage: (roomId: string, handler: (message: InboundMessage) => void) => (() => void);
|
|
94
|
+
/**
|
|
95
|
+
* If no toChannel then broadcast the message everywhere to everyone.
|
|
96
|
+
* If toChannel then broadcast to all peers with that channel.
|
|
97
|
+
*/
|
|
98
|
+
export interface MessageTransferHandle {
|
|
99
|
+
readonly transferId: string;
|
|
100
|
+
/**
|
|
101
|
+
* Settles only after every started peer send/reconciliation and cleanup
|
|
102
|
+
* finishes, preserving the ordered per-peer delivery outcomes.
|
|
103
|
+
*
|
|
104
|
+
* This promise REJECTS when no peer took delivery — for example every edge
|
|
105
|
+
* failed, or the transfer was cancelled. The rejection is a
|
|
106
|
+
* {@link MessageDeliveryError}, whose `result.outcomes` carries the same
|
|
107
|
+
* per-peer detail a resolved value would have, and whose `errors` holds the
|
|
108
|
+
* underlying per-peer failures. Always attach a catch:
|
|
109
|
+
*
|
|
110
|
+
* ```ts
|
|
111
|
+
* const handle = p2party.sendMessage(data, "chat", roomId);
|
|
112
|
+
* try {
|
|
113
|
+
* const result = await handle.done;
|
|
114
|
+
* } catch (error) {
|
|
115
|
+
* if (error instanceof p2party.MessageDeliveryError)
|
|
116
|
+
* console.table(error.result.outcomes);
|
|
117
|
+
* }
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
readonly done: Promise<SendMessageResult | undefined>;
|
|
121
|
+
/** Cancels exactly this logical send, even before hashing/WASM setup finishes. */
|
|
122
|
+
cancel(): Promise<void>;
|
|
123
|
+
}
|
|
9
124
|
export declare const p2party: {
|
|
10
125
|
store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
11
126
|
commonState: import("./reducers/commonSlice").CommonState;
|
|
12
127
|
keyPair: KeyPair;
|
|
13
128
|
rooms: Room[];
|
|
14
129
|
signalingServer: SignalingState;
|
|
15
|
-
signalingServerApi: import("@reduxjs/toolkit/
|
|
16
|
-
connectWebSocket: import("@reduxjs/toolkit/
|
|
17
|
-
disconnectWebSocket: import("@reduxjs/toolkit/
|
|
18
|
-
sendMessage: import("@reduxjs/toolkit/
|
|
19
|
-
connectWithPeer: import("@reduxjs/toolkit/
|
|
130
|
+
signalingServerApi: import("@reduxjs/toolkit/query").CombinedState<{
|
|
131
|
+
connectWebSocket: import("@reduxjs/toolkit/query").MutationDefinition<string, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
132
|
+
disconnectWebSocket: import("@reduxjs/toolkit/query").MutationDefinition<undefined, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
133
|
+
sendMessage: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/signalingServerApi").WebSocketMessage, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
134
|
+
connectWithPeer: import("@reduxjs/toolkit/query").MutationDefinition<import("./utils/interfaces").WebSocketPeerConnectionParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
20
135
|
}, never, "signalingServerApi">;
|
|
21
|
-
webrtcApi: import("@reduxjs/toolkit/
|
|
22
|
-
connectWithPeer: import("@reduxjs/toolkit/
|
|
23
|
-
setDescription: import("@reduxjs/toolkit/
|
|
24
|
-
setCandidate: import("@reduxjs/toolkit/
|
|
25
|
-
openChannel: import("@reduxjs/toolkit/
|
|
26
|
-
sendMessage: import("@reduxjs/toolkit/
|
|
27
|
-
disconnect: import("@reduxjs/toolkit/
|
|
28
|
-
disconnectFromRoom: import("@reduxjs/toolkit/
|
|
29
|
-
disconnectFromAllRooms: import("@reduxjs/toolkit/
|
|
30
|
-
disconnectFromPeer: import("@reduxjs/toolkit/
|
|
31
|
-
disconnectFromChannelLabel: import("@reduxjs/toolkit/
|
|
32
|
-
disconnectFromPeerChannelLabel: import("@reduxjs/toolkit/
|
|
136
|
+
webrtcApi: import("@reduxjs/toolkit/query").CombinedState<{
|
|
137
|
+
connectWithPeer: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCPeerConnectionParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
138
|
+
setDescription: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetDescriptionParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
139
|
+
setCandidate: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetCandidateParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
140
|
+
openChannel: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCOpenChannelParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
141
|
+
sendMessage: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSendMessageParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, SendMessageResult | undefined, "webrtcApi", undefined>;
|
|
142
|
+
disconnect: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
143
|
+
disconnectFromRoom: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromRoomParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
144
|
+
disconnectFromAllRooms: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromAllRoomsParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
145
|
+
disconnectFromPeer: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
146
|
+
disconnectFromChannelLabel: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromChannelLabelParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
147
|
+
disconnectFromPeerChannelLabel: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerChannelLabelParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
33
148
|
}, never, "webrtcApi">;
|
|
34
149
|
}, import("redux").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
|
|
35
150
|
dispatch: import("redux-thunk").ThunkDispatch<{
|
|
@@ -37,24 +152,24 @@ export declare const p2party: {
|
|
|
37
152
|
keyPair: KeyPair;
|
|
38
153
|
rooms: Room[];
|
|
39
154
|
signalingServer: SignalingState;
|
|
40
|
-
signalingServerApi: import("@reduxjs/toolkit/
|
|
41
|
-
connectWebSocket: import("@reduxjs/toolkit/
|
|
42
|
-
disconnectWebSocket: import("@reduxjs/toolkit/
|
|
43
|
-
sendMessage: import("@reduxjs/toolkit/
|
|
44
|
-
connectWithPeer: import("@reduxjs/toolkit/
|
|
155
|
+
signalingServerApi: import("@reduxjs/toolkit/query").CombinedState<{
|
|
156
|
+
connectWebSocket: import("@reduxjs/toolkit/query").MutationDefinition<string, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
157
|
+
disconnectWebSocket: import("@reduxjs/toolkit/query").MutationDefinition<undefined, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
158
|
+
sendMessage: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/signalingServerApi").WebSocketMessage, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
159
|
+
connectWithPeer: import("@reduxjs/toolkit/query").MutationDefinition<import("./utils/interfaces").WebSocketPeerConnectionParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, undefined, "signalingServerApi", undefined>;
|
|
45
160
|
}, never, "signalingServerApi">;
|
|
46
|
-
webrtcApi: import("@reduxjs/toolkit/
|
|
47
|
-
connectWithPeer: import("@reduxjs/toolkit/
|
|
48
|
-
setDescription: import("@reduxjs/toolkit/
|
|
49
|
-
setCandidate: import("@reduxjs/toolkit/
|
|
50
|
-
openChannel: import("@reduxjs/toolkit/
|
|
51
|
-
sendMessage: import("@reduxjs/toolkit/
|
|
52
|
-
disconnect: import("@reduxjs/toolkit/
|
|
53
|
-
disconnectFromRoom: import("@reduxjs/toolkit/
|
|
54
|
-
disconnectFromAllRooms: import("@reduxjs/toolkit/
|
|
55
|
-
disconnectFromPeer: import("@reduxjs/toolkit/
|
|
56
|
-
disconnectFromChannelLabel: import("@reduxjs/toolkit/
|
|
57
|
-
disconnectFromPeerChannelLabel: import("@reduxjs/toolkit/
|
|
161
|
+
webrtcApi: import("@reduxjs/toolkit/query").CombinedState<{
|
|
162
|
+
connectWithPeer: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCPeerConnectionParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
163
|
+
setDescription: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetDescriptionParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
164
|
+
setCandidate: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetCandidateParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
165
|
+
openChannel: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCOpenChannelParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
166
|
+
sendMessage: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSendMessageParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, SendMessageResult | undefined, "webrtcApi", undefined>;
|
|
167
|
+
disconnect: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
168
|
+
disconnectFromRoom: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromRoomParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
169
|
+
disconnectFromAllRooms: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromAllRoomsParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
170
|
+
disconnectFromPeer: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
171
|
+
disconnectFromChannelLabel: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromChannelLabelParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
172
|
+
disconnectFromPeerChannelLabel: import("@reduxjs/toolkit/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerChannelLabelParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, undefined>, never, undefined, "webrtcApi", undefined>;
|
|
58
173
|
}, never, "webrtcApi">;
|
|
59
174
|
}, undefined, import("redux").UnknownAction> & ((action: import("redux").Action<"listenerMiddleware/add">) => import("@reduxjs/toolkit").UnsubscribeListener);
|
|
60
175
|
}>, import("redux").StoreEnhancer]>>;
|
|
@@ -62,7 +177,7 @@ export declare const p2party: {
|
|
|
62
177
|
signalingServerSelector: (state: State) => SignalingState;
|
|
63
178
|
roomSelector: (state: State) => Room[];
|
|
64
179
|
keyPairSelector: (state: State) => KeyPair;
|
|
65
|
-
connect: (roomUrl: string, signalingServerUrl?: string, rtcConfig?: RTCConfiguration) => Promise<void>;
|
|
180
|
+
connect: (roomUrl: string, signalingServerUrl?: string, rtcConfig?: RTCConfiguration, options?: ConnectRoomOptions) => Promise<void>;
|
|
66
181
|
connectToSignalingServer: (roomUrl: string, signalingServerUrl?: string) => Promise<void>;
|
|
67
182
|
disconnectFromSignalingServer: () => Promise<void>;
|
|
68
183
|
disconnectFromRoom: (roomId: string, deleteMessages?: boolean) => Promise<void>;
|
|
@@ -70,17 +185,18 @@ export declare const p2party: {
|
|
|
70
185
|
disconnectFromPeer: (peerId: string) => Promise<void>;
|
|
71
186
|
allowConnectionRelay: (roomId: string, allowed?: boolean) => void;
|
|
72
187
|
onlyAllowConnectionsFromAddressBook: (roomUrl: string, onlyAllow: boolean) => Promise<void>;
|
|
73
|
-
addPeerToAddressBook: (username: string, peerId: string, peerPublicKey: string) => Promise<
|
|
188
|
+
addPeerToAddressBook: (username: string, peerId: string, peerPublicKey: string) => Promise<undefined>;
|
|
74
189
|
getPeerAddressBookEntry: (peerId?: string, peerPublicKey?: string) => Promise<UsernamedPeer | undefined>;
|
|
75
190
|
getAllPeersInAddressBook: () => Promise<UsernamedPeer[]>;
|
|
76
191
|
getAllPeersInBlacklist: () => Promise<BlacklistedPeer[]>;
|
|
77
192
|
deletePeerFromAddressBook: (username?: string, peerId?: string, peerPublicKey?: string) => Promise<void>;
|
|
78
193
|
blacklistPeer: (peerId: string, peerPublicKey: string) => Promise<void>;
|
|
79
194
|
getPeerIsBlacklisted: (peerId?: string, peerPublicKey?: string) => Promise<boolean>;
|
|
80
|
-
removePeerFromBlacklist: (peerId?: string, peerPublicKey?: string) => Promise<
|
|
195
|
+
removePeerFromBlacklist: (peerId?: string, peerPublicKey?: string) => Promise<undefined>;
|
|
81
196
|
getAllExistingRooms: () => Promise<UniqueRoom[]>;
|
|
82
|
-
|
|
83
|
-
|
|
197
|
+
getRoomStats: (roomId: string) => Promise<RoomStats>;
|
|
198
|
+
sendMessage: (data: string | File, toChannel: string, roomId: string, percentageFilledChunk?: number, minChunks?: number, chunkSize?: number, metadataSchemaVersion?: number, transferId?: string) => MessageTransferHandle;
|
|
199
|
+
readMessage: (merkleRootHex: string, hashHex?: string, materialize?: boolean) => Promise<{
|
|
84
200
|
message: string | Blob;
|
|
85
201
|
percentage: number;
|
|
86
202
|
size: number;
|
|
@@ -88,23 +204,60 @@ export declare const p2party: {
|
|
|
88
204
|
mimeType: MimeType;
|
|
89
205
|
extension: FileExtension;
|
|
90
206
|
category: string;
|
|
207
|
+
chunksReceivedTotal?: number;
|
|
208
|
+
chunksReceivedReal?: number;
|
|
209
|
+
retransmits?: number;
|
|
91
210
|
}>;
|
|
92
|
-
|
|
93
|
-
|
|
211
|
+
getSendChunksCount: (transferId: string) => Promise<number>;
|
|
212
|
+
cancelMessage: (roomId: string, channelLabel: string, merkleRoot?: string | Uint8Array, hash?: string | Uint8Array, transferId?: string) => Promise<void>;
|
|
213
|
+
createTransferId: () => string;
|
|
214
|
+
deleteMessage: (roomId: string, merkleRoot?: string | Uint8Array, hash?: string | Uint8Array) => Promise<void>;
|
|
94
215
|
purgeIdentity: () => Promise<void>;
|
|
95
216
|
purgeRoom: (roomUrl: string) => Promise<void>;
|
|
96
217
|
purge: () => Promise<void>;
|
|
97
218
|
generateRandomRoomUrl: () => Promise<string>;
|
|
98
|
-
|
|
99
|
-
|
|
219
|
+
generateRoomInvite: () => string;
|
|
220
|
+
generateRoomCapability: () => Uint8Array;
|
|
221
|
+
encodeRoomCapabilityBase64Url: (capability: Uint8Array) => string;
|
|
222
|
+
decodeRoomCapabilityBase64Url: (encoded: string) => Uint8Array;
|
|
223
|
+
decodeRoomCapability: (encoded: string) => Uint8Array;
|
|
224
|
+
normalizeRoomCapability: (encoded: string) => string;
|
|
225
|
+
encodeRoomInviteFragment: (capability: Uint8Array) => string;
|
|
226
|
+
decodeRoomInviteFragment: (fragment: string) => Uint8Array;
|
|
227
|
+
encodeRoomCapabilityWords: (capability: Uint8Array) => Promise<string>;
|
|
228
|
+
decodeRoomCapabilityWords: (encoded: string) => Promise<Uint8Array>;
|
|
229
|
+
ROOM_INVITE_WORDLIST_ID: string;
|
|
100
230
|
sign: (message: Uint8Array, secretKey: Uint8Array, module?: import("./cryptography/libcrypto").LibCrypto) => Promise<Uint8Array>;
|
|
101
231
|
verify: (message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array, module?: import("./cryptography/libcrypto").LibCrypto) => Promise<boolean>;
|
|
232
|
+
createSession: (options: import("./session").CreateSessionOptions) => Promise<import("./session").P2PartySession>;
|
|
233
|
+
restoreSession: (snapshot: Uint8Array, crypto?: import("./session").SessionCryptoOptions) => Promise<import("./session").P2PartySession>;
|
|
234
|
+
generateSessionIdentity: (options?: import("./session").GenerateSessionIdentityOptions) => Promise<import("./session").GeneratedSessionIdentity>;
|
|
235
|
+
setWasmSourceUrl: (source: string | URL) => void;
|
|
236
|
+
DEFAULT_ROOM_POLICY_V1: Readonly<RoomPolicyV1>;
|
|
237
|
+
encodeRoomPolicyV1: (policy: RoomPolicyV1) => Uint8Array;
|
|
238
|
+
decodeRoomPolicyV1: (encoded: Uint8Array) => RoomPolicyV1;
|
|
239
|
+
hashRoomPolicyV1: (policy: RoomPolicyV1) => Promise<Uint8Array>;
|
|
240
|
+
roomPoliciesEqualV1: (left: RoomPolicyV1, right: RoomPolicyV1) => boolean;
|
|
241
|
+
generateKeyPair: (module?: import("./cryptography/libcrypto").LibCrypto) => Promise<import("./cryptography/interfaces").SignKeyPair>;
|
|
102
242
|
newKeyPair: (module?: import("./cryptography/libcrypto").LibCrypto) => Promise<import("./cryptography/interfaces").SignKeyPair>;
|
|
103
243
|
generateMnemonic: (strength?: 128 | 160 | 192 | 224 | 256 | 288 | 320 | 352 | 384 | 416 | 448 | 480 | 512) => Promise<string>;
|
|
104
244
|
keyPairFromMnemonic: (mnemonic: string, password?: string) => Promise<import("./cryptography/interfaces").SignKeyPair>;
|
|
105
245
|
MIN_CHUNKS: number;
|
|
106
246
|
MIN_CHUNK_SIZE: number;
|
|
107
247
|
MAX_CHUNK_SIZE: number;
|
|
248
|
+
WIRE_CHUNK_FRAME_LEN: number;
|
|
249
|
+
MIN_COVER_CADENCE_MS: number;
|
|
250
|
+
MAX_COVER_CADENCE_MS: number;
|
|
251
|
+
MAX_COVER_LANES: number;
|
|
252
|
+
MAX_COVER_FRAMES_PER_CELL: number;
|
|
253
|
+
MIN_COVER_SLOT_MS: number;
|
|
254
|
+
validateRoomPolicyV1: (policy: RoomPolicyV1) => void;
|
|
255
|
+
MessageDeliveryError: typeof MessageDeliveryError;
|
|
256
|
+
joinRoom: (roomUrl: string, signalingServerUrl?: string, rtcConfig?: RTCConfiguration, options?: ConnectRoomOptions & WaitForRoomOptions) => Promise<Room>;
|
|
257
|
+
waitForRoom: (roomUrl: string, options?: WaitForRoomOptions) => Promise<Room>;
|
|
258
|
+
waitForPeers: (roomId: string, options?: WaitForPeersOptions) => Promise<Peer[]>;
|
|
259
|
+
onMessage: (roomId: string, handler: (message: InboundMessage) => void) => (() => void);
|
|
260
|
+
setDebugLogging: (value: boolean) => void;
|
|
108
261
|
MIN_PERCENTAGE_FILLED_CHUNK: number;
|
|
109
262
|
MAX_PERCENTAGE_FILLED_CHUNK: number;
|
|
110
263
|
ROOM_URL_LENGTH: number;
|
|
@@ -194,6 +347,10 @@ declare global {
|
|
|
194
347
|
p2party: typeof p2party;
|
|
195
348
|
}
|
|
196
349
|
}
|
|
197
|
-
export type { State, Room, Peer, Channel, Message, RoomData, MimeType, FileExtension, UsernamedPeer, BlacklistedPeer, UniqueRoom, SignalingState, KeyPair, WebSocketMessageRoomIdRequest, WebSocketMessageRoomIdResponse, WebSocketMessageChallengeRequest, WebSocketMessageChallengeResponse, WebSocketMessageDescriptionSend, WebSocketMessageDescriptionReceive, WebSocketMessageCandidateSend, WebSocketMessageCandidateReceive, WebSocketMessageError, };
|
|
350
|
+
export type { State, Room, Peer, Channel, Message, RoomData, MimeType, FileExtension, UsernamedPeer, BlacklistedPeer, UniqueRoom, RoomStats, SignalingState, KeyPair, RoomPolicyV1, WebSocketMessageRoomIdRequest, WebSocketMessageRoomIdResponse, WebSocketMessageChallengeRequest, WebSocketMessageChallengeResponse, WebSocketMessageDescriptionSend, WebSocketMessageDescriptionReceive, WebSocketMessageCandidateSend, WebSocketMessageCandidateReceive, WebSocketMessageError, };
|
|
351
|
+
export { createSession, restoreSession, generateSessionIdentity, setWasmSourceUrl, MessageDeliveryError, joinRoom, waitForRoom, waitForPeers, onMessage, setDebugLogging, };
|
|
352
|
+
export { DEFAULT_ROOM_POLICY_V1, canonicalizeRoomPolicyV1, decodeRoomPolicyV1, encodeRoomPolicyV1, hashRoomPolicyV1, roomPoliciesEqualV1, };
|
|
353
|
+
export { MIN_COVER_CADENCE_MS, MAX_COVER_CADENCE_MS, MAX_COVER_LANES, MAX_COVER_FRAMES_PER_CELL, MIN_COVER_SLOT_MS, validateRoomPolicyV1, WIRE_CHUNK_FRAME_LEN, };
|
|
354
|
+
export type { RoomAuthMode, RoomCoverMode, RoomPqMode, RoomRendezvousMode, } from "./roomPolicy";
|
|
355
|
+
export type { CreateSessionOptions, EncryptedSessionMessage, GenerateSessionIdentityOptions, GeneratedSessionIdentity, HandshakeTransport, LocalSessionIdentity, P2PartySession, SessionChannelBinding, SessionCryptoOptions, } from "./session";
|
|
198
356
|
export default p2party;
|
|
199
|
-
//# sourceMappingURL=index.d.ts.map
|