p2party 0.14.2 → 0.14.7

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.
Files changed (126) hide show
  1. package/README.md +230 -30
  2. package/docs/getting-started.md +15 -0
  3. package/docs/protocol-v4-security.md +40 -0
  4. package/docs/references.md +28 -8
  5. package/docs/session-api.md +10 -2
  6. package/lib/api/signalingServerApi.d.ts +13 -2
  7. package/lib/api/webrtc/applyIceConfiguration.d.ts +9 -0
  8. package/lib/api/webrtc/dataChannelHandler.d.ts +10 -0
  9. package/lib/api/webrtc/deleteRoomData.d.ts +13 -0
  10. package/lib/api/webrtc/disconnectFromAllRoomsQuery.d.ts +2 -1
  11. package/lib/api/webrtc/disconnectFromRoomQuery.d.ts +2 -1
  12. package/lib/api/webrtc/disconnectQuery.d.ts +2 -1
  13. package/lib/api/webrtc/iceRepair.d.ts +3 -1
  14. package/lib/api/webrtc/index.d.ts +2 -1
  15. package/lib/api/webrtc/interfaces.d.ts +37 -0
  16. package/lib/api/webrtc/negotiationLock.d.ts +24 -0
  17. package/lib/api/webrtc/pendingOffer.d.ts +29 -0
  18. package/lib/api/webrtc/rebindDeadline.d.ts +61 -0
  19. package/lib/api/webrtc/remoteTransportChange.d.ts +142 -0
  20. package/lib/api/webrtc/retiredRemoteTransports.d.ts +70 -0
  21. package/lib/api/webrtc/roomEdgeBudget.d.ts +10 -0
  22. package/lib/api/webrtc/setDescriptionQuery.d.ts +8 -1
  23. package/lib/api/webrtc/settleOnClose.d.ts +36 -0
  24. package/lib/blindRendezvous/admissionInput.d.ts +11 -0
  25. package/lib/blindRendezvous/admissionPolicy.d.ts +217 -0
  26. package/lib/blindRendezvous/canonicalSchema.d.ts +139 -0
  27. package/lib/blindRendezvous/carrierEnvelope.d.ts +105 -0
  28. package/lib/blindRendezvous/coreReduce.d.ts +199 -0
  29. package/lib/blindRendezvous/derivations.d.ts +381 -0
  30. package/lib/blindRendezvous/identityHelloAdmission.d.ts +89 -0
  31. package/lib/blindRendezvous/identityHelloAdmissionPersistence.d.ts +133 -0
  32. package/lib/blindRendezvous/identityHelloHistoricalEvidence.d.ts +52 -0
  33. package/lib/blindRendezvous/identityHelloOpen.d.ts +167 -0
  34. package/lib/blindRendezvous/identityHelloTrial.d.ts +271 -0
  35. package/lib/blindRendezvous/localAdmissibleProject.d.ts +101 -0
  36. package/lib/blindRendezvous/localPresenceKeyBinding.d.ts +108 -0
  37. package/lib/blindRendezvous/localStableIdentityCustody.d.ts +46 -0
  38. package/lib/blindRendezvous/normativeKernel.d.ts +222 -0
  39. package/lib/blindRendezvous/operation.d.ts +137 -0
  40. package/lib/blindRendezvous/operationPayload.d.ts +134 -0
  41. package/lib/blindRendezvous/pairBootstrapSuite.d.ts +93 -0
  42. package/lib/blindRendezvous/pairCrypto.d.ts +122 -0
  43. package/lib/blindRendezvous/pairLedger.d.ts +154 -0
  44. package/lib/blindRendezvous/pairOpenBudget.d.ts +67 -0
  45. package/lib/blindRendezvous/pairOpenReservation.d.ts +157 -0
  46. package/lib/blindRendezvous/pairPlaintext.d.ts +240 -0
  47. package/lib/blindRendezvous/pairStepEnvelope.d.ts +60 -0
  48. package/lib/blindRendezvous/plannerState.d.ts +61 -0
  49. package/lib/blindRendezvous/projections.d.ts +71 -0
  50. package/lib/blindRendezvous/publicWindow.d.ts +330 -0
  51. package/lib/blindRendezvous/retainedOperationStore.d.ts +187 -0
  52. package/lib/blindRendezvous/roomInviteV2.d.ts +92 -0
  53. package/lib/blindRendezvous/roomPolicyV4.d.ts +90 -0
  54. package/lib/blindRendezvous/schemas.d.ts +221 -0
  55. package/lib/blindRendezvous/storeDescriptor.d.ts +160 -0
  56. package/lib/cryptography/aeadWasm.d.ts +18 -0
  57. package/lib/cryptography/byteInput.d.ts +12 -0
  58. package/lib/cryptography/carrierAead.d.ts +23 -0
  59. package/lib/cryptography/chacha20poly1305.d.ts +7 -0
  60. package/lib/cryptography/fips202.d.ts +10 -0
  61. package/lib/cryptography/hpke.d.ts +84 -0
  62. package/lib/cryptography/hpkeSuite.d.ts +39 -0
  63. package/lib/cryptography/hybridKem.d.ts +42 -0
  64. package/lib/cryptography/hybridKemSuite.d.ts +22 -0
  65. package/lib/cryptography/interfaces.d.ts +3 -0
  66. package/lib/cryptography/mlkem.d.ts +27 -1
  67. package/lib/cryptography/mnemonic.d.ts +65 -1
  68. package/lib/cryptography/ownedEd25519KeyMaterial.d.ts +27 -0
  69. package/lib/cryptography/webCryptoSha256.d.ts +20 -0
  70. package/lib/cryptography/x25519.d.ts +18 -0
  71. package/lib/cryptography/xchacha20poly1305.d.ts +7 -0
  72. package/lib/db/api.d.ts +6 -3
  73. package/lib/db/identityEd25519ClientBoundary.d.ts +13 -0
  74. package/lib/db/src/getDB.d.ts +2 -2
  75. package/lib/db/types.d.ts +52 -4
  76. package/lib/db.worker.js +1 -1
  77. package/lib/handlers/coverChannelRegistry.d.ts +22 -0
  78. package/lib/handlers/edgeTeardownFollowUp.d.ts +35 -0
  79. package/lib/handlers/handleChallenge.d.ts +2 -1
  80. package/lib/handlers/handleConnectToPeer.d.ts +1 -1
  81. package/lib/handlers/handleHandshake.d.ts +2 -6
  82. package/lib/handlers/handleSendMessage.d.ts +60 -7
  83. package/lib/handlers/handleWebSocketMessage.d.ts +1 -1
  84. package/lib/handlers/handshakeCore.d.ts +2 -7
  85. package/lib/handlers/handshakeFrame.d.ts +25 -0
  86. package/lib/handlers/ratchetGateWait.d.ts +13 -0
  87. package/lib/handlers/reconcile.d.ts +24 -0
  88. package/lib/handlers/requestRoom.d.ts +30 -0
  89. package/lib/handlers/roomResponse.d.ts +53 -0
  90. package/lib/index.d.ts +99 -12
  91. package/lib/index.js +1 -1
  92. package/lib/index.min.js +1 -1
  93. package/lib/index.mjs +1 -1
  94. package/lib/libcrypto.provenance.json +5 -5
  95. package/lib/libcrypto.wasm +0 -0
  96. package/lib/middleware/roomListenerMiddleware.d.ts +4 -1
  97. package/lib/reducers/commonSlice.d.ts +3 -2
  98. package/lib/reducers/keyPairSlice.d.ts +3 -6
  99. package/lib/reducers/roomSlice.d.ts +81 -5
  100. package/lib/reducers/signalingServerSlice.d.ts +3 -2
  101. package/lib/session.d.ts +6 -3
  102. package/lib/session.js +1 -1
  103. package/lib/session.mjs +1 -1
  104. package/lib/store.d.ts +4 -2
  105. package/lib/utils/constants.d.ts +12 -0
  106. package/lib/utils/correlationId.d.ts +4 -0
  107. package/lib/utils/identityRestore.d.ts +108 -0
  108. package/lib/utils/interfaces.d.ts +25 -6
  109. package/lib/utils/roomConnectAdmission.d.ts +15 -0
  110. package/lib/utils/roomLeaveCoordinator.d.ts +38 -0
  111. package/lib/utils/roomRequestCoordinator.d.ts +104 -0
  112. package/lib/utils/roomRosterReconciler.d.ts +83 -0
  113. package/lib/utils/sdpFingerprint.d.ts +6 -0
  114. package/lib/utils/signalingAttemptLifecycle.d.ts +33 -0
  115. package/lib/utils/signalingAuth.d.ts +21 -2
  116. package/lib/utils/signalingBounds.d.ts +6 -0
  117. package/lib/utils/signalingFrame.d.ts +21 -0
  118. package/lib/utils/signalingHeartbeatWatchdog.d.ts +45 -0
  119. package/lib/utils/signalingIngressQueue.d.ts +49 -0
  120. package/lib/utils/signalingPeerRequestDebouncer.d.ts +13 -0
  121. package/lib/utils/signalingRoomLifecycle.d.ts +7 -0
  122. package/lib/utils/signalingRoomOperationLifecycle.d.ts +14 -0
  123. package/lib/utils/signalingServerBoundary.d.ts +11 -0
  124. package/lib/utils/terminalSettlement.d.ts +53 -0
  125. package/lib/utils/transportIdentity.d.ts +5 -0
  126. package/package.json +1 -1
@@ -12,7 +12,7 @@
12
12
  "release": "v1.2.0",
13
13
  "commit": "0ba906cb14b1c241476134d7403a811b382ca498",
14
14
  "sourceTreeSha256": "a2e15382a8dc0207752b3f5cdfc907886505fe304948183b4b61e99e7cb92ac6",
15
- "wrapperSha256": "181160a16f22e30eafc85d7be7a3be47be41026da14b0488f120ededc36ea072",
15
+ "wrapperSha256": "ec8250c5fefebf1b7958c5ad20ed92bf7ef0a3c5e7b0783c2079d2be678f090d",
16
16
  "backend": "portable-c",
17
17
  "parameterSets": [
18
18
  512,
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "toolchain": {
32
- "emscripten": "6.0.3"
32
+ "emscripten": "6.0.9"
33
33
  },
34
34
  "build": {
35
35
  "mode": "production",
@@ -38,8 +38,8 @@
38
38
  },
39
39
  "artifact": {
40
40
  "file": "libcrypto.wasm",
41
- "bytes": 209081,
42
- "sha256": "7eea31157e69ac61f3a512b624d5c210296302fd289fc2b65c63ecc31a056267",
43
- "sri": "sha384-pBMyUqQ3KBztxgeJMgDFZeohfj9QlAFNwt4/gRlqT0vlZ2kbkKxv+q5DwbZOBuUP"
41
+ "bytes": 211350,
42
+ "sha256": "7fc91b615f6ca7f7f61497b784c8e75102751cdc84251bcadcd688aaa17c4d76",
43
+ "sri": "sha384-K0QqktkF2/8IHMDEgDIcyDl/ywcUXUO8fF1ZzcwhVrUYfGn8jN8Foohn1+bw4HmZ"
44
44
  }
45
45
  }
Binary file
@@ -1,2 +1,5 @@
1
- declare const roomListenerMiddleware: import("@reduxjs/toolkit").ListenerMiddlewareInstance<unknown, import("redux-thunk").ThunkDispatch<unknown, unknown, import("redux").UnknownAction>, unknown>;
1
+ import type { UnknownAction } from "@reduxjs/toolkit";
2
+ import type { RoomRosterReconciler } from "../utils/roomRosterReconciler";
3
+ export declare const createRoomListenerMiddleware: (reconciler?: RoomRosterReconciler) => import("@reduxjs/toolkit").ListenerMiddlewareInstance<unknown, import("redux-thunk").ThunkDispatch<unknown, unknown, UnknownAction>, unknown>;
4
+ declare const roomListenerMiddleware: import("@reduxjs/toolkit").ListenerMiddlewareInstance<unknown, import("redux-thunk").ThunkDispatch<unknown, unknown, UnknownAction>, unknown>;
2
5
  export default roomListenerMiddleware;
@@ -1,8 +1,9 @@
1
- import type { State } from "../store";
2
1
  export interface CommonState {
3
2
  currentRoomUrl: string;
4
3
  }
5
4
  export declare const setCurrentRoomUrl: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "commonState/setCurrentRoomUrl">;
6
- export declare const commonStateSelector: (state: State) => CommonState;
5
+ export declare const commonStateSelector: (state: {
6
+ readonly commonState: CommonState;
7
+ }) => CommonState;
7
8
  declare const _default: import("redux").Reducer<CommonState>;
8
9
  export default _default;
@@ -1,4 +1,3 @@
1
- import type { State } from "../store";
2
1
  export interface KeyPair {
3
2
  peerId: string;
4
3
  challengeId: string;
@@ -18,15 +17,13 @@ export interface SetPeerData {
18
17
  }
19
18
  export interface SetChallengeId {
20
19
  challengeId: string;
21
- username?: string;
22
- credential?: string;
23
20
  }
24
21
  export interface SetReconnectData extends SetPeerData {
25
22
  challengeId: string;
26
- username?: string;
27
- credential?: string;
28
23
  }
29
24
  export declare const setKeyPair: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetKeyPair, "keyPair/setKeyPair">, setReconnectData: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetReconnectData, "keyPair/setReconnectData">, setPeerData: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetPeerData, "keyPair/setPeerData">, setChallengeId: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetChallengeId, "keyPair/setChallengeId">, resetIdentity: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"keyPair/resetIdentity">;
30
- export declare const keyPairSelector: (state: State) => KeyPair;
25
+ export declare const keyPairSelector: (state: {
26
+ readonly keyPair: KeyPair;
27
+ }) => KeyPair;
31
28
  declare const _default: import("redux").Reducer<KeyPair>;
32
29
  export default _default;
@@ -1,6 +1,6 @@
1
- import type { State } from "../store";
2
1
  import type { RoomPolicyV1 } from "../roomPolicy";
3
2
  import type { CoverSchedulerStatus } from "../handlers/coverScheduler";
3
+ import type { TurnCredentials } from "../utils/interfaces";
4
4
  export interface Channel {
5
5
  label: string;
6
6
  peerIds: string[];
@@ -54,6 +54,27 @@ export interface SetIceServersArgs {
54
54
  roomId: string;
55
55
  iceServers: RTCIceServer[];
56
56
  }
57
+ export interface ApplyRoomResponseArgs {
58
+ roomUrl: string;
59
+ roomId: string;
60
+ roomRequestId: string;
61
+ requestGeneration: number;
62
+ turnCredentials: TurnCredentials | null;
63
+ }
64
+ export interface ExpireRoomTurnCredentialsArgs {
65
+ roomUrl: string;
66
+ expiresAtUnixSeconds: number;
67
+ requestGeneration: number;
68
+ }
69
+ export interface RollbackRoomResponseArgs {
70
+ roomUrl: string;
71
+ failedRoomId: string;
72
+ failedRequestGeneration: number;
73
+ previousRoomId: string;
74
+ previousRequestGeneration: number;
75
+ previousTurnCredentials: TurnCredentials | null;
76
+ previousSignalingActive: boolean;
77
+ }
57
78
  export interface SetMessageArgs {
58
79
  roomId: string;
59
80
  transferId?: string;
@@ -107,6 +128,7 @@ export interface DeleteChannelArgs {
107
128
  }
108
129
  export interface SetCanOnlyConnectWithKnownPeers {
109
130
  roomId: string;
131
+ roomUrl?: string;
110
132
  onlyConnectWithKnownPeers: boolean;
111
133
  }
112
134
  export interface SetPeerCoverStatusArgs {
@@ -126,7 +148,23 @@ export interface PeerHandshakeStatus {
126
148
  reason?: PeerHandshakeFailureReason;
127
149
  /** Absolute epoch ms after which a throttled PIN retry may succeed. */
128
150
  retryAfter?: number;
151
+ /**
152
+ * The stable identity this status describes, in the same hex spelling as
153
+ * `Peer.peerPublicKey`. A peerId is a per-session signaling handle: a peer
154
+ * that fails and reconnects arrives under a new one, and a joiner that fails
155
+ * is dropped from `peers` altogether — so a UI that keys a failure on the
156
+ * peerId either loses it or leaves a stale one on top of a working room.
157
+ * The identity is what stays the same across both.
158
+ *
159
+ * Optional only because a status persisted by an older build has none.
160
+ */
161
+ peerPublicKey?: string;
129
162
  }
163
+ /**
164
+ * `peerPublicKey` is inherited as optional so a caller that only has a peerId
165
+ * still compiles, but every in-library dispatch supplies it: the edge always
166
+ * knows the identity it is authenticating against (`epc.withPeerPublicKey`).
167
+ */
130
168
  export interface SetPeerHandshakeStatusArgs extends PeerHandshakeStatus {
131
169
  roomId: string;
132
170
  peerId: string;
@@ -137,7 +175,16 @@ export interface Room extends SetRoomArgs {
137
175
  connectedToPeers: boolean;
138
176
  canBeConnectionRelay: boolean;
139
177
  onlyConnectWithKnownAddresses: boolean;
178
+ /** Caller-owned configuration. Signaling credentials never mutate it. */
179
+ callerRtcConfig?: RTCConfiguration;
180
+ /** Current signaling-owned TURN bundle, replaced atomically per response. */
181
+ signalingTurnCredentials?: TurnCredentials | null;
182
+ /** Compatibility projection derived from the two authoritative inputs. */
140
183
  rtcConfig: RTCConfiguration;
184
+ /** Last accepted wire-correlated response generation for this room URL. */
185
+ roomResponseGeneration?: number;
186
+ /** False after deleteRoom so retained room metadata is not auto-rejoined. */
187
+ signalingActive?: boolean;
141
188
  peers: Peer[];
142
189
  channels: Channel[];
143
190
  messages: Message[];
@@ -156,10 +203,37 @@ export interface Room extends SetRoomArgs {
156
203
  */
157
204
  handshakeStatusByPeer?: Record<string, PeerHandshakeStatus>;
158
205
  }
206
+ /** Fully normalized reducer state; public Room keeps new fields optional. */
207
+ export interface ManagedRoom extends Room {
208
+ callerRtcConfig: RTCConfiguration;
209
+ signalingTurnCredentials: TurnCredentials | null;
210
+ roomResponseGeneration: number;
211
+ signalingActive: boolean;
212
+ }
159
213
  export declare const defaultRTCConfig: RTCConfiguration;
160
- export declare const setRoom: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetRoomArgs, "rooms/setRoom">, setRoomPolicy: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetRoomPolicyArgs, "rooms/setRoomPolicy">, setConnectingToPeers: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
214
+ export declare const cloneRTCConfiguration: (configuration: RTCConfiguration) => RTCConfiguration;
215
+ export declare const rtcConfigurationsEqual: (left: RTCConfiguration, right: RTCConfiguration) => boolean;
216
+ /**
217
+ * Replace credentials only for endpoints present in an incoming ICE server.
218
+ *
219
+ * This preserves every unrelated caller-supplied STUN/TURN entry and every
220
+ * non-ICE RTCConfiguration option. Replacing overlapping URLs is required:
221
+ * TURN REST credentials expire, so retaining the first credential for a URL
222
+ * would make a later authenticated room join silently keep stale access.
223
+ */
224
+ export declare const mergeIceServers: (existing: readonly RTCIceServer[] | undefined, incoming: readonly RTCIceServer[]) => RTCIceServer[];
225
+ /**
226
+ * Derive the browser configuration from two single-source inputs.
227
+ *
228
+ * A managed URL replaces an overlapping caller URL only in this projection.
229
+ * Clearing the managed bundle therefore restores the caller's exact input,
230
+ * while rotation cannot accidentally retain an older signaling credential.
231
+ */
232
+ export declare const deriveEffectiveRTCConfig: (callerRtcConfig: RTCConfiguration, signalingTurnCredentials: TurnCredentials | null) => RTCConfiguration;
233
+ export declare const setRoom: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetRoomArgs, "rooms/setRoom">, applyRoomResponse: import("@reduxjs/toolkit").ActionCreatorWithPayload<ApplyRoomResponseArgs, "rooms/applyRoomResponse">, rollbackRoomResponse: import("@reduxjs/toolkit").ActionCreatorWithPayload<RollbackRoomResponseArgs, "rooms/rollbackRoomResponse">, expireRoomTurnCredentials: import("@reduxjs/toolkit").ActionCreatorWithPayload<ExpireRoomTurnCredentialsArgs, "rooms/expireRoomTurnCredentials">, setRoomPolicy: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetRoomPolicyArgs, "rooms/setRoomPolicy">, setConnectingToPeers: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
161
234
  roomId: string;
162
235
  connectingToPeers: boolean;
236
+ reason?: "redial" | "reconcile";
163
237
  }, "rooms/setConnectingToPeers">, setConnectedToPeers: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
164
238
  roomId: string;
165
239
  connectedToPeers: boolean;
@@ -169,7 +243,9 @@ export declare const setRoom: import("@reduxjs/toolkit").ActionCreatorWithPayloa
169
243
  }, "rooms/setConnectionRelay">, setOnlyConnectWithKnownPeers: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetCanOnlyConnectWithKnownPeers, "rooms/setOnlyConnectWithKnownPeers">, setPeer: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetPeerArgs, "rooms/setPeer">, setPeerCoverStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetPeerCoverStatusArgs, "rooms/setPeerCoverStatus">, setPeerHandshakeStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetPeerHandshakeStatusArgs, "rooms/setPeerHandshakeStatus">, setChannel: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetChannelArgs, "rooms/setChannel">, setIceServers: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetIceServersArgs, "rooms/setIceServers">, setMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetMessageArgs, "rooms/setMessage">, setMessageAllChunks: import("@reduxjs/toolkit").ActionCreatorWithPayload<SetMessageAllChunksArgs, "rooms/setMessageAllChunks">, incrementMessageStats: import("@reduxjs/toolkit").ActionCreatorWithPayload<IncrementMessageStatsArgs, "rooms/incrementMessageStats">, deletePeer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
170
244
  peerId: string;
171
245
  roomId?: string;
172
- }, "rooms/deletePeer">, deleteChannel: import("@reduxjs/toolkit").ActionCreatorWithPayload<DeleteChannelArgs, "rooms/deleteChannel">, deleteMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<DeleteMessageArgs, "rooms/deleteMessage">, deleteRoom: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "rooms/deleteRoom">;
173
- export declare const roomSelector: (state: State) => Room[];
174
- declare const _default: import("redux").Reducer<Room[]>;
246
+ }, "rooms/deletePeer">, deleteChannel: import("@reduxjs/toolkit").ActionCreatorWithPayload<DeleteChannelArgs, "rooms/deleteChannel">, deleteMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<DeleteMessageArgs, "rooms/deleteMessage">, deleteMessageStateOnly: import("@reduxjs/toolkit").ActionCreatorWithPayload<DeleteMessageArgs, "rooms/deleteMessageStateOnly">, deleteRoom: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "rooms/deleteRoom">, purgeAllRooms: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"rooms/purgeAllRooms">;
247
+ export declare const roomSelector: <TRoom extends Room>(state: {
248
+ readonly rooms: TRoom[];
249
+ }) => TRoom[];
250
+ declare const _default: import("redux").Reducer<ManagedRoom[]>;
175
251
  export default _default;
@@ -1,5 +1,4 @@
1
1
  import type { PayloadAction } from "@reduxjs/toolkit";
2
- import type { State } from "../store";
3
2
  export interface SignalingState {
4
3
  isEstablishingConnection: boolean;
5
4
  isConnected: boolean;
@@ -32,6 +31,8 @@ export declare const signalingServerActions: import("@reduxjs/toolkit").CaseRedu
32
31
  serverUrl: string;
33
32
  }) => void;
34
33
  }, "signalingServer">;
35
- export declare const signalingServerSelector: (state: State) => SignalingState;
34
+ export declare const signalingServerSelector: (state: {
35
+ readonly signalingServer: SignalingState;
36
+ }) => SignalingState;
36
37
  declare const _default: import("redux").Reducer<SignalingState>;
37
38
  export default _default;
package/lib/session.d.ts CHANGED
@@ -28,8 +28,11 @@ export interface SessionChannelBinding {
28
28
  }
29
29
  export interface SessionCryptoOptions {
30
30
  /**
31
- * Local/self-hosted libcrypto.wasm bytes. Supply this in Node/Bun or offline
32
- * deployments; when omitted the versioned p2party CDN loader is used.
31
+ * Local/self-hosted libcrypto.wasm bytes; an override, rarely a necessity.
32
+ * Omitted, the loader reads this release's WASM from the installed package on
33
+ * Node and Bun and checks it against the build-pinned SHA-384, so an offline
34
+ * install already works; it falls back to the versioned p2party CDN under the
35
+ * same SRI when that read fails, which is also the only path in a browser.
33
36
  */
34
37
  wasmBinary?: ArrayBuffer | Uint8Array;
35
38
  }
@@ -55,7 +58,7 @@ export interface EncryptedSessionMessage {
55
58
  protocolVersion: 4;
56
59
  /** The message Merkle root; authenticated as AEAD additional data. */
57
60
  root: Uint8Array;
58
- /** Uniform protocol-v3 chunk frames. */
61
+ /** Uniform protocol-v4 chunk frames. */
59
62
  frames: Uint8Array[];
60
63
  }
61
64
  /**