p2party 0.6.15

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 (71) hide show
  1. package/LICENSE.md +661 -0
  2. package/README.md +417 -0
  3. package/lib/api/signalingServerApi.d.ts +19 -0
  4. package/lib/api/webrtc/baseQuery.d.ts +11 -0
  5. package/lib/api/webrtc/baseQuery.d.ts.map +1 -0
  6. package/lib/api/webrtc/disconnectFromAllRoomsQuery.d.ts +9 -0
  7. package/lib/api/webrtc/disconnectFromAllRoomsQuery.d.ts.map +1 -0
  8. package/lib/api/webrtc/disconnectFromChannelLabelQuery.d.ts +8 -0
  9. package/lib/api/webrtc/disconnectFromChannelLabelQuery.d.ts.map +1 -0
  10. package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts +9 -0
  11. package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts.map +1 -0
  12. package/lib/api/webrtc/disconnectFromPeerQuery.d.ts +9 -0
  13. package/lib/api/webrtc/disconnectFromPeerQuery.d.ts.map +1 -0
  14. package/lib/api/webrtc/disconnectFromRoomQuery.d.ts +9 -0
  15. package/lib/api/webrtc/disconnectFromRoomQuery.d.ts.map +1 -0
  16. package/lib/api/webrtc/disconnectQuery.d.ts +9 -0
  17. package/lib/api/webrtc/disconnectQuery.d.ts.map +1 -0
  18. package/lib/api/webrtc/index.d.ts +19 -0
  19. package/lib/api/webrtc/index.d.ts.map +1 -0
  20. package/lib/api/webrtc/interfaces.d.ts +101 -0
  21. package/lib/api/webrtc/interfaces.d.ts.map +1 -0
  22. package/lib/api/webrtc/openChannelQuery.d.ts +11 -0
  23. package/lib/api/webrtc/openChannelQuery.d.ts.map +1 -0
  24. package/lib/api/webrtc/sendMessageQuery.d.ts +12 -0
  25. package/lib/api/webrtc/sendMessageQuery.d.ts.map +1 -0
  26. package/lib/api/webrtc/setCandidateQuery.d.ts +9 -0
  27. package/lib/api/webrtc/setCandidateQuery.d.ts.map +1 -0
  28. package/lib/api/webrtc/setDescriptionQuery.d.ts +12 -0
  29. package/lib/api/webrtc/setDescriptionQuery.d.ts.map +1 -0
  30. package/lib/cryptography/chacha20poly1305.d.ts +116 -0
  31. package/lib/cryptography/ed25519.d.ts +12 -0
  32. package/lib/cryptography/hasher.d.ts +11 -0
  33. package/lib/cryptography/interfaces.d.ts +40 -0
  34. package/lib/cryptography/memory.d.ts +15 -0
  35. package/lib/cryptography/merkle.d.ts +43 -0
  36. package/lib/cryptography/mnemonic.d.ts +30 -0
  37. package/lib/cryptography/utils.d.ts +13 -0
  38. package/lib/db/api.d.ts +35 -0
  39. package/lib/db/db.worker.d.ts +2 -0
  40. package/lib/db/src/getDB.d.ts +68 -0
  41. package/lib/db/src/getDB.d.ts.map +1 -0
  42. package/lib/db/types.d.ts +234 -0
  43. package/lib/db.worker.js +2 -0
  44. package/lib/handlers/handleChallenge.d.ts +5 -0
  45. package/lib/handlers/handleConnectToPeer.d.ts +4 -0
  46. package/lib/handlers/handleOpenChannel.d.ts +15 -0
  47. package/lib/handlers/handleQueuedIceCandidates.d.ts +3 -0
  48. package/lib/handlers/handleReadReceipt.d.ts +5 -0
  49. package/lib/handlers/handleReceiveMessage.d.ts +16 -0
  50. package/lib/handlers/handleSendMessage.d.ts +6 -0
  51. package/lib/handlers/handleSendMessageWebsocket.d.ts +4 -0
  52. package/lib/handlers/handleWebSocketMessage.d.ts +7 -0
  53. package/lib/index.d.ts +202 -0
  54. package/lib/index.js +2 -0
  55. package/lib/index.min.js +2 -0
  56. package/lib/index.mjs +2 -0
  57. package/lib/middleware/keyPairListenerMiddleware.d.ts +3 -0
  58. package/lib/middleware/roomListenerMiddleware.d.ts +3 -0
  59. package/lib/reducers/commonSlice.d.ts +9 -0
  60. package/lib/reducers/keyPairSlice.d.ts +33 -0
  61. package/lib/reducers/roomSlice.d.ts +113 -0
  62. package/lib/reducers/signalingServerSlice.d.ts +16 -0
  63. package/lib/store.d.ts +55 -0
  64. package/lib/utils/channelLabel.d.ts +12 -0
  65. package/lib/utils/interfaces.d.ts +138 -0
  66. package/lib/utils/mediasource.d.ts +2 -0
  67. package/lib/utils/messageTypes.d.ts +88 -0
  68. package/lib/utils/metadata.d.ts +17 -0
  69. package/lib/utils/splitToChunks.d.ts +29 -0
  70. package/lib/utils/uint8array.d.ts +21 -0
  71. package/package.json +115 -0
@@ -0,0 +1,234 @@
1
+ import type { Peer } from "../reducers/roomSlice";
2
+ export interface UsernamedPeer extends Peer {
3
+ username: string;
4
+ }
5
+ export interface AddressBook extends UsernamedPeer {
6
+ dateAdded: number;
7
+ challenge?: string;
8
+ signature?: string;
9
+ }
10
+ export interface BlacklistedPeer extends Peer {
11
+ dateAdded: number;
12
+ }
13
+ export interface UniqueRoom {
14
+ roomUrl: string;
15
+ roomId: string;
16
+ messageCount: number;
17
+ lastMessageMerkleRoot: string;
18
+ createdAt: number;
19
+ updatedAt: number;
20
+ }
21
+ export interface MessageData {
22
+ roomId: string;
23
+ timestamp: number;
24
+ fromPeerId: string;
25
+ channelLabel: string;
26
+ hash: string;
27
+ merkleRoot: string;
28
+ filename: string;
29
+ messageType: number;
30
+ savedSize: number;
31
+ totalSize: number;
32
+ }
33
+ export interface Chunk {
34
+ merkleRoot: string;
35
+ hash: string;
36
+ chunkIndex: number;
37
+ data: ArrayBuffer;
38
+ mimeType: string;
39
+ }
40
+ export interface NewChunk {
41
+ hash: string;
42
+ chunkIndex: number;
43
+ merkleRoot: string;
44
+ realChunkHash: string;
45
+ data: ArrayBuffer;
46
+ metadata: ArrayBuffer;
47
+ merkleProof: ArrayBuffer;
48
+ }
49
+ export interface SendQueue {
50
+ position: number;
51
+ label: string;
52
+ toPeerId: string;
53
+ encryptedData: ArrayBuffer;
54
+ }
55
+ export type WorkerMessages = {
56
+ id: number;
57
+ method: "getDBAddressBookEntry";
58
+ args: [peerId?: string, peerPublicKey?: string];
59
+ } | {
60
+ id: number;
61
+ method: "getAllDBAddressBookEntries";
62
+ args: [];
63
+ } | {
64
+ id: number;
65
+ method: "setDBAddressBookEntry";
66
+ args: [username: string, peerId: string, peerPublicKey: string];
67
+ } | {
68
+ id: number;
69
+ method: "deleteDBAddressBookEntry";
70
+ args: [username?: string, peerId?: string, peerPublicKey?: string];
71
+ } | {
72
+ id: number;
73
+ method: "getDBPeerIsBlacklisted";
74
+ args: [peerId?: string, peerPublicKey?: string];
75
+ } | {
76
+ id: number;
77
+ method: "getAllDBBlacklisted";
78
+ args: [];
79
+ } | {
80
+ id: number;
81
+ method: "setDBPeerInBlacklist";
82
+ args: [peerId: string, peerPublicKey: string];
83
+ } | {
84
+ id: number;
85
+ method: "getAllDBUniqueRooms";
86
+ args: [];
87
+ } | {
88
+ id: number;
89
+ method: "setDBUniqueRoom";
90
+ args: [roomUrl: string, roomId: string];
91
+ } | {
92
+ id: number;
93
+ method: "deleteDBPeerFromBlacklist";
94
+ args: [peerId?: string, peerPublicKey?: string];
95
+ } | {
96
+ id: number;
97
+ method: "getDBMessageData";
98
+ args: [merkleRootHex?: string, hashHex?: string];
99
+ } | {
100
+ id: number;
101
+ method: "getDBRoomMessageData";
102
+ args: [roomId: string];
103
+ } | {
104
+ id: number;
105
+ method: "setDBRoomMessageData";
106
+ args: [
107
+ roomId: string,
108
+ merkleRootHex: string,
109
+ sha512Hex: string,
110
+ fromPeerId: string,
111
+ chunkSize: number,
112
+ totalSize: number,
113
+ messageType: number,
114
+ filename: string,
115
+ channelLabel: string,
116
+ timestamp: number
117
+ ];
118
+ } | {
119
+ id: number;
120
+ method: "getDBChunk";
121
+ args: [hashHex: string, chunkIndex: number];
122
+ } | {
123
+ id: number;
124
+ method: "existsDBChunk";
125
+ args: [hashHex: string, chunkIndex: number];
126
+ } | {
127
+ id: number;
128
+ method: "getDBNewChunk";
129
+ args: [hashHex: string, chunkIndex?: number];
130
+ } | {
131
+ id: number;
132
+ method: "existsDBNewChunk";
133
+ args: [hashHex: string, chunkIndex: number];
134
+ } | {
135
+ id: number;
136
+ method: "getDBSendQueue";
137
+ args: [label: string, toPeerId: string, position?: number];
138
+ } | {
139
+ id: number;
140
+ method: "getDBAllChunks";
141
+ args: [merkleRootHex?: string, hashHex?: string];
142
+ } | {
143
+ id: number;
144
+ method: "getDBAllChunksCount";
145
+ args: [merkleRootHex?: string, hashHex?: string];
146
+ } | {
147
+ id: number;
148
+ method: "setDBChunk";
149
+ args: [chunk: Chunk];
150
+ } | {
151
+ id: number;
152
+ method: "getDBAllNewChunks";
153
+ args: [hashHex?: string, merkleRootHex?: string];
154
+ } | {
155
+ id: number;
156
+ method: "getDBAllNewChunksCount";
157
+ args: [hashHex: string];
158
+ } | {
159
+ id: number;
160
+ method: "setDBNewChunk";
161
+ args: [chunk: NewChunk];
162
+ } | {
163
+ id: number;
164
+ method: "setDBSendQueue";
165
+ args: [item: SendQueue];
166
+ } | {
167
+ id: number;
168
+ method: "countDBSendQueue";
169
+ args: [label: string, toPeerId: string];
170
+ } | {
171
+ id: number;
172
+ method: "deleteDBChunk";
173
+ args: [hashHex: string, chunkIndex?: number];
174
+ } | {
175
+ id: number;
176
+ method: "deleteDBNewChunk";
177
+ args: [
178
+ merkleRootHex?: string,
179
+ realChunkHashHex?: string,
180
+ hashHex?: string,
181
+ chunkIndex?: number
182
+ ];
183
+ } | {
184
+ id: number;
185
+ method: "deleteDBMessageData";
186
+ args: [merkleRootHex: string];
187
+ } | {
188
+ id: number;
189
+ method: "deleteDBSendQueue";
190
+ args: [label: string, toPeerId: string, position?: number];
191
+ } | {
192
+ id: number;
193
+ method: "deleteDBUniqueRoom";
194
+ args: [roomId: string];
195
+ } | {
196
+ id: number;
197
+ method: "deleteDB";
198
+ args: [];
199
+ };
200
+ export interface WorkerMethodReturnTypes {
201
+ getDBAddressBookEntry: UsernamedPeer | undefined;
202
+ getAllDBAddressBookEntries: UsernamedPeer[];
203
+ setDBAddressBookEntry: void;
204
+ deleteDBAddressBookEntry: string;
205
+ getDBPeerIsBlacklisted: boolean;
206
+ getAllDBBlacklisted: BlacklistedPeer[];
207
+ setDBPeerInBlacklist: void;
208
+ getAllDBUniqueRooms: UniqueRoom[];
209
+ setDBUniqueRoom: void;
210
+ deleteDBPeerFromBlacklist: void;
211
+ getDBMessageData: MessageData | undefined;
212
+ getDBRoomMessageData: MessageData[];
213
+ getDBChunk: ArrayBuffer | undefined;
214
+ existsDBChunk: boolean;
215
+ getDBNewChunk: NewChunk | undefined;
216
+ existsDBNewChunk: boolean;
217
+ getDBSendQueue: SendQueue[];
218
+ getDBAllChunks: Chunk[];
219
+ getDBAllChunksCount: number;
220
+ setDBChunk: void;
221
+ getDBAllNewChunks: NewChunk[];
222
+ getDBAllNewChunksCount: number;
223
+ setDBNewChunk: void;
224
+ setDBRoomMessageData: void;
225
+ setDBSendQueue: void;
226
+ countDBSendQueue: number;
227
+ deleteDBChunk: void;
228
+ deleteDBNewChunk: void;
229
+ deleteDBMessageData: void;
230
+ deleteDBSendQueue: void;
231
+ deleteDBUniqueRoom: void;
232
+ deleteDB: void;
233
+ }
234
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,2 @@
1
+ const e=(e,t)=>t.some(t=>e instanceof t);let t,a;const n=new WeakMap,o=new WeakMap,r=new WeakMap;let s={get(e,t,a){if(e instanceof IDBTransaction){if("done"===t)return n.get(e);if("store"===t)return a.objectStoreNames[1]?void 0:a.objectStore(a.objectStoreNames[0])}return d(e[t])},set:(e,t,a)=>(e[t]=a,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function i(e){s=e(s)}function c(e){return(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(l(this),t),d(this.request)}:function(...t){return d(e.apply(l(this),t))}}function u(a){return"function"==typeof a?c(a):(a instanceof IDBTransaction&&function(e){if(n.has(e))return;const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("complete",o),e.removeEventListener("error",r),e.removeEventListener("abort",r)},o=()=>{t(),n()},r=()=>{a(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",o),e.addEventListener("error",r),e.addEventListener("abort",r)});n.set(e,t)}(a),e(a,t||(t=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(a,s):a)}function d(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("success",o),e.removeEventListener("error",r)},o=()=>{t(d(e.result)),n()},r=()=>{a(e.error),n()};e.addEventListener("success",o),e.addEventListener("error",r)});return r.set(t,e),t}(e);if(o.has(e))return o.get(e);const t=u(e);return t!==e&&(o.set(e,t),r.set(t,e)),t}const l=e=>r.get(e);const w=["get","getKey","getAll","getAllKeys","count"],h=["put","add","delete","clear"],g=new Map;function m(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(g.get(t))return g.get(t);const a=t.replace(/FromIndex$/,""),n=t!==a,o=h.includes(a);if(!(a in(n?IDBIndex:IDBObjectStore).prototype)||!o&&!w.includes(a))return;const r=async function(e,...t){const r=this.transaction(e,o?"readwrite":"readonly");let s=r.store;return n&&(s=s.index(t.shift())),(await Promise.all([s[a](...t),o&&r.done]))[0]};return g.set(t,r),r}i(e=>({...e,get:(t,a,n)=>m(t,a)||e.get(t,a,n),has:(t,a)=>!!m(t,a)||e.has(t,a)}));const k=["continue","continuePrimaryKey","advance"],y={},b=new WeakMap,f=new WeakMap,I={get(e,t){if(!k.includes(t))return e[t];let a=y[t];return a||(a=y[t]=function(...e){b.set(this,f.get(this)[t](...e))}),a}};async function*x(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const a=new Proxy(t,I);for(f.set(a,t),r.set(a,l(t));t;)yield a,t=await(b.get(a)||t.continue()),b.delete(a)}function p(t,a){return a===Symbol.asyncIterator&&e(t,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===a&&e(t,[IDBIndex,IDBObjectStore])}i(e=>({...e,get:(t,a,n)=>p(t,a)?x:e.get(t,a,n),has:(t,a)=>p(t,a)||e.has(t,a)}));const D=64*Uint8Array.BYTES_PER_ELEMENT,B="p2party";async function S(){return function(e,t,{blocked:a,upgrade:n,blocking:o,terminated:r}={}){const s=indexedDB.open(e,t),i=d(s);return n&&s.addEventListener("upgradeneeded",e=>{n(d(s.result),e.oldVersion,e.newVersion,d(s.transaction),e)}),a&&s.addEventListener("blocked",e=>a(e.oldVersion,e.newVersion,e)),i.then(e=>{r&&e.addEventListener("close",()=>r()),o&&e.addEventListener("versionchange",e=>o(e.oldVersion,e.newVersion,e))}).catch(()=>{}),i}(B,16,{upgrade(e,t,a,n){if(e.objectStoreNames.contains("addressBook")){const e=n.objectStore("addressBook");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("addressBook",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("blacklist")){const e=n.objectStore("blacklist");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("blacklist",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("uniqueRoom")){const e=n.objectStore("uniqueRoom");e.indexNames.contains("roomUrl")||e.createIndex("roomUrl","roomUrl",{unique:!0}),e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!0})}else{const t=e.createObjectStore("uniqueRoom",{keyPath:["roomId"]});t.createIndex("roomUrl","roomUrl",{unique:!0}),t.createIndex("roomId","roomId",{unique:!0})}if(e.objectStoreNames.contains("messageData")){const e=n.objectStore("messageData");e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!0}),e.indexNames.contains("fromPeerId")||e.createIndex("fromPeerId","fromPeerId",{unique:!1})}else{const t=e.createObjectStore("messageData",{keyPath:["timestamp","roomId","merkleRoot"]});t.createIndex("roomId","roomId",{unique:!1}),t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!0}),t.createIndex("fromPeerId","fromPeerId",{unique:!1})}if(e.objectStoreNames.contains("chunks")){const e=n.objectStore("chunks");e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1})}else{const t=e.createObjectStore("chunks",{keyPath:["merkleRoot","chunkIndex"]});t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("hash","hash",{unique:!1})}if(e.objectStoreNames.contains("newChunks")){const e=n.objectStore("newChunks");e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("realChunkHash")||e.createIndex("realChunkHash","realChunkHash",{unique:!0})}else{const t=e.createObjectStore("newChunks",{keyPath:["hash","chunkIndex"]});t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("realChunkHash","realChunkHash",{unique:!0})}if(e.objectStoreNames.contains("sendQueue")){const e=n.objectStore("sendQueue");e.indexNames.contains("labelPeer")||e.createIndex("labelPeer",["label","toPeerId"],{unique:!1})}else{e.createObjectStore("sendQueue",{keyPath:["position","label","toPeerId"]}).createIndex("labelPeer",["label","toPeerId"],{unique:!1})}}})}async function R(){await function(e,{blocked:t}={}){const a=indexedDB.deleteDatabase(e);return t&&a.addEventListener("blocked",e=>t(e.oldVersion,e)),d(a).then(()=>{})}(B,{blocked(){console.error("DB deletion BLOCKED")}})}onmessage=async e=>{const t=e.data,{id:a,method:n}=t;try{let e;switch(n){case"getDBAddressBookEntry":e=await async function(e,t){if(!e&&!t)return;if(e&&e.length<10&&!t)return;if(t&&64!==t.length&&!e)return;const a=await S();try{const n=a.transaction("addressBook","readonly"),o=e?n.objectStore("addressBook").index("peerId"):n.objectStore("addressBook").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),r?{username:r.username,peerId:r.peerId,peerPublicKey:r.peerPublicKey}:void 0}catch(e){return void a.close()}}(...t.args);break;case"getAllDBAddressBookEntries":e=await async function(){try{const e=await S(),t=await e.getAll("addressBook");return e.close(),t}catch(e){return[]}}(...t.args);break;case"setDBAddressBookEntry":e=await async function(e,t,a){try{const n=await S(),o=n.transaction(["addressBook"],"readwrite"),r=o.objectStore("addressBook"),s=r.index("peerId"),i=r.index("peerPublicKey"),c=await s.get(t),u=await i.get(a);(!c&&!u||c&&!u||!c&&u)&&await r.put({username:e,peerId:t,peerPublicKey:a,dateAdded:Date.now()}),await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBAddressBookEntry":e=await async function(e,t,a){const n=!e||0===e.length,o=!t||t.length<10,r=!a||64!==a.length;if(n&&o&&r)throw new Error("Cannot delete address book with no data");let s=t??"";try{const n=await S(),i=n.transaction("addressBook","readwrite"),c=i.objectStore("addressBook");if(o)if(r){const t=c.index("username"),a=await t.getKey(e);if(a){const n=await t.get(e);s=n?.peerId??"",await c.delete(a)}}else{const e=c.index("peerPublicKey"),t=await e.getKey(a);if(t){const n=await e.get(a);s=n?.peerId??"",await c.delete(t)}}else{const e=c.index("peerId"),a=await e.getKey(t);a&&await c.delete(a)}await i.done,n.close()}catch{}return s}(...t.args);break;case"getDBPeerIsBlacklisted":e=await async function(e,t){if(!e&&!t)return!1;if(e&&e.length<10&&!t)return!1;if(t&&64!==t.length&&!e)return!1;try{const a=await S(),n=a.transaction("blacklist","readonly"),o=e?n.objectStore("blacklist").index("peerId"):n.objectStore("blacklist").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),!!r}catch(e){return!1}}(...t.args);break;case"getAllDBBlacklisted":e=await async function(){const e=await S();try{const t=await e.getAll("blacklist");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBPeerInBlacklist":e=await async function(e,t){try{const a=await S(),n=a.transaction(["blacklist"],"readwrite"),o=n.objectStore("blacklist"),r=o.index("peerId"),s=o.index("peerPublicKey"),i=await r.get(e),c=await s.get(t);(!i&&!c||i&&!c||!i&&c)&&await o.put({peerId:e,peerPublicKey:t,dateAdded:Date.now()}),await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBPeerFromBlacklist":e=await async function(e,t){const a=!e||e.length<10,n=!t||64!==t.length;if(a&&n)throw new Error("Cannot delete blacklisted with no data");try{const n=await S(),o=n.transaction("blacklist","readwrite"),r=o.objectStore("blacklist");if(a){const e=r.index("peerPublicKey"),a=await e.getKey(t);a&&await r.delete(a)}else{const t=r.index("peerId"),a=await t.getKey(e);a&&await r.delete(a)}await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"getAllDBUniqueRooms":e=await async function(){const e=await S();try{const t=await e.getAll("uniqueRoom");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBUniqueRoom":e=await async function(e,t){try{const a=await S(),n=a.transaction(["uniqueRoom"],"readwrite"),o=n.objectStore("uniqueRoom"),r=o.index("roomUrl"),s=o.index("roomId"),i=await r.get(e),c=await s.get(t);if(!i&&!c){const a=Date.now();await o.put({roomId:t,roomUrl:e,messageCount:0,lastMessageMerkleRoot:"",createdAt:a,updatedAt:a})}await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"getDBMessageData":e=await async function(e,t){try{const a=await S(),n=a.transaction(["messageData"],"readonly"),o=n.objectStore("messageData"),r=o.index("merkleRoot"),s=o.index("hash");if(e&&e.length===2*D){const o=await r.get(e);if(o)return await n.done,a.close(),o;if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}catch(e){return void console.error(e)}}(...t.args);break;case"getDBRoomMessageData":e=await async function(e){const t=await S(),a=await t.getAllFromIndex("messageData","roomId",e);t.close();const n=a.length,o=[];for(let t=0;t<n;t++)o.push({roomId:e,merkleRoot:a[t].merkleRoot,hash:a[t].hash,fromPeerId:a[t].fromPeerId,filename:a[t].filename,messageType:a[t].messageType,savedSize:a[t].savedSize,totalSize:a[t].totalSize,channelLabel:a[t].channelLabel,timestamp:a[t].timestamp});return o}(...t.args);break;case"setDBRoomMessageData":e=await async function(e,t,a,n,o,r,s,i,c,u){try{const d=await S(),l=d.transaction(["messageData","uniqueRoom"],"readwrite"),w=l.objectStore("messageData"),h=l.objectStore("uniqueRoom"),g=await w.index("merkleRoot").get(t),m=g?.savedSize??0;try{await w.put({roomId:e,timestamp:u,merkleRoot:t,hash:a,fromPeerId:n,filename:i,messageType:s,savedSize:m!==r?o+m:o,totalSize:r,channelLabel:c})}catch(e){throw e}if(!g){const a=await h.index("roomId").get(e);if(a&&a.lastMessageMerkleRoot!==t)try{await h.put({...a,lastMessageMerkleRoot:t,messageCount:a.messageCount+1,updatedAt:Date.now()})}catch(e){throw e}}await l.done,d.close()}catch(e){throw console.error(e),e}}(...t.args);break;case"getDBChunk":e=await async function(e,t){const a=await S(),n=await a.get("chunks",[e,t]);return a.close(),n?.data}(...t.args);break;case"existsDBChunk":e=await async function(e,t){const a=await S(),n=await a.count("chunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBNewChunk":e=await async function(e,t){try{const a=await S(),n=t??-1;if(n>-1){const t=await a.get("newChunks",[e,n]);return a.close(),t}{const t=a.transaction("newChunks"),n=t.objectStore("newChunks").index("realChunkHash"),o=await n.get(e);return await t.done,a.close(),o}}catch(e){return void console.error(e)}}(...t.args);break;case"existsDBNewChunk":e=await async function(e,t){const a=await S(),n=await a.count("newChunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBSendQueue":e=await async function(e,t,a){const n=await S();if(a){const o=await n.get("sendQueue",[a,e,t]);return n.close(),o?[o]:[]}const o=n.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),r=IDBKeyRange.only([e,t]),s=await o.getAll(r);return n.close(),s}(...t.args);break;case"getDBAllChunks":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(e&&e.length===2*D){const o=await s.getAll(e);if(0===o.length){if(t&&t.length===2*D){const e=await r.getAll(t);return await n.done,a.close(),e}return await n.done,a.close(),[]}return await n.done,a.close(),o}if(t&&t.length===2*D){const e=await r.getAll(t);return await n.done,a.close(),e}return await n.done,a.close(),[]}catch(e){return console.error(e),[]}}(...t.args);break;case"getDBAllChunksCount":e=await async function(e,t){try{const a=await S(),n=a.transaction(["chunks"],"readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(t&&t.length===2*D){const o=await r.count(t);if(0===o){if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}return await n.done,a.close(),o}if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}catch(e){return 0}}(...t.args);break;case"setDBChunk":e=await async function(e){const t=await S();await t.add("chunks",e),t.close()}(...t.args);break;case"getDBAllNewChunks":e=await async function(e,t){if(!e&&!t)return[];if(e?.length!==2*D&&t?.length!==2*D)return[];const a=await S();if((e?await a.countFromIndex("newChunks","hash",e):await a.countFromIndex("newChunks","merkleRoot",t))>0){const n=e?await a.getAllFromIndex("newChunks","hash",e):await a.getAllFromIndex("newChunks","merkleRoot",t);return a.close(),n}{const n=a.transaction("newChunks","readonly").objectStore("newChunks"),o=e?n.index("hash"):n.index("merkleRoot"),r=e?IDBKeyRange.only(e):IDBKeyRange.only(t),s=await o.getAll(r);return a.close(),s}}(...t.args);break;case"getDBAllNewChunksCount":e=await async function(e){const t=await S(),a=await t.countFromIndex("newChunks","hash",e);return t.close(),a}(...t.args);break;case"setDBNewChunk":e=await async function(e){const t=await S();await t.put("newChunks",e),t.close()}(...t.args);break;case"setDBSendQueue":e=await async function(e){const t=await S();await t.put("sendQueue",e),t.close()}(...t.args);break;case"countDBSendQueue":e=await async function(e,t){const a=await S(),n=a.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),o=IDBKeyRange.only([e,t]),r=await n.count(o);return a.close(),r}(...t.args);break;case"deleteDBChunk":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readwrite"),o=n.objectStore("chunks");if(t){const a=IDBKeyRange.only([e,t]);await o.delete(a)}else{const t=o.index("hash"),a=await t.getAllKeys(e),n=a.length;if(0===n){const t=o.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await o.delete(a[e])}else for(let e=0;e<n;e++)await o.delete(a[e])}await n.done,a.close()}catch(e){}}(...t.args);break;case"deleteDBNewChunk":e=await async function(e,t,a,n){try{const o=await S(),r=o.transaction("newChunks","readwrite"),s=r.objectStore("newChunks");if(e){const t=s.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await s.delete(a[e])}else if(a&&n)await s.delete([a,n]);else if(a){const e=s.index("hash"),t=await e.getAllKeys(a),n=t.length;for(let e=0;e<n;e++)await s.delete(t[e])}else if(t){const e=s.index("realChunkHash"),a=await e.getKey(t);a&&await s.delete(a)}await r.done,o.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBMessageData":e=await async function(e){try{const t=await S(),a=t.transaction(["messageData","uniqueRoom"],"readwrite"),n=a.objectStore("messageData"),o=a.objectStore("uniqueRoom"),r=n.index("merkleRoot"),s=await r.getAllKeys(e),i=s.length;let c="";for(let e=0;e<i;e++){if(0===e||0===c.length){const t=await n.get(s[e]);c=t?.roomId??""}await n.delete(s[e])}if(c.length>0){const e=o.index("roomId"),t=await e.get(c);if(t){const e=n.index("roomId"),a=await e.getAllKeys(c),r=a.length,s=r>0?await n.get(a[r-1]):void 0;await o.put({...t,messageCount:t.messageCount>0?t.messageCount-1:0,updatedAt:s?.timestamp??Date.now(),lastMessageMerkleRoot:s?.merkleRoot??""})}}await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBUniqueRoom":e=await async function(e){try{const t=await S(),a=t.transaction("uniqueRoom","readwrite"),n=a.objectStore("uniqueRoom"),o=n.index("roomId"),r=await o.getKey(e);r&&await n.delete(r),await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBSendQueue":e=await async function(e,t,a){try{const n=await S();if(a)await n.delete("sendQueue",[a,e,t]);else{const a=IDBKeyRange.only([e,t]);await n.delete("sendQueue",a)}n.close()}catch(e){}}(...t.args);break;case"deleteDB":e=await R();break;default:return void postMessage({id:a,error:"Method not found"})}postMessage({id:a,result:e})}catch(e){postMessage({id:a,error:String(e)})}};
2
+ //# sourceMappingURL=db.worker.js.map
@@ -0,0 +1,5 @@
1
+ import type { MiddlewareAPI, Dispatch, UnknownAction } from "@reduxjs/toolkit";
2
+ import type { KeyPair } from "../reducers/keyPairSlice";
3
+ declare const handleChallenge: (keyPair: KeyPair, peerId: string, challenge: string, store: MiddlewareAPI<Dispatch<UnknownAction>, any>) => Promise<void>;
4
+ export default handleChallenge;
5
+ //# sourceMappingURL=handleChallenge.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { BaseQueryApi } from "@reduxjs/toolkit/query";
2
+ import type { IRTCPeerConnection, RTCPeerConnectionParams } from "../api/webrtc/interfaces";
3
+ export declare const handleConnectToPeer: ({ peerId, peerPublicKey, roomId, initiator, rtcConfig, }: RTCPeerConnectionParams, api: BaseQueryApi) => Promise<IRTCPeerConnection>;
4
+ //# sourceMappingURL=handleConnectToPeer.d.ts.map
@@ -0,0 +1,15 @@
1
+ import type { BaseQueryApi } from "@reduxjs/toolkit/query";
2
+ import type { IRTCPeerConnection, IRTCDataChannel } from "../api/webrtc/interfaces";
3
+ import type { LibCrypto } from "../cryptography/libcrypto";
4
+ export interface OpenChannelHelperParams {
5
+ channel: string | RTCDataChannel;
6
+ epc: IRTCPeerConnection;
7
+ roomId: string;
8
+ dataChannels: IRTCDataChannel[];
9
+ decryptionModule: LibCrypto;
10
+ merkleModule: LibCrypto;
11
+ }
12
+ export declare const KB64: number;
13
+ export declare const MAX_BUFFERED_AMOUNT: number;
14
+ export declare const handleOpenChannel: ({ channel, epc, roomId, dataChannels, decryptionModule, merkleModule, }: OpenChannelHelperParams, api: BaseQueryApi) => Promise<IRTCDataChannel>;
15
+ //# sourceMappingURL=handleOpenChannel.d.ts.map
@@ -0,0 +1,3 @@
1
+ import type { IRTCPeerConnection } from "../api/webrtc/interfaces";
2
+ export declare const handleQueuedIceCandidates: (epc: IRTCPeerConnection) => Promise<void>;
3
+ //# sourceMappingURL=handleQueuedIceCandidates.d.ts.map
@@ -0,0 +1,5 @@
1
+ import type { IRTCDataChannel } from "../api/webrtc/interfaces";
2
+ import type { BaseQueryApi } from "@reduxjs/toolkit/dist/query";
3
+ import type { Room } from "../reducers/roomSlice";
4
+ export declare const handleReadReceipt: (receivedChunkHash: Uint8Array, channel: IRTCDataChannel, room: Room, api: BaseQueryApi, dataChannels: IRTCDataChannel[]) => Promise<void>;
5
+ //# sourceMappingURL=handleReadReceipt.d.ts.map
@@ -0,0 +1,16 @@
1
+ import type { LibCrypto } from "../cryptography/libcrypto";
2
+ import type { Room } from "../reducers/roomSlice";
3
+ export declare const handleReceiveMessage: (data: ArrayBuffer, merkleRoot: Uint8Array, hashHex: string, senderPublicKey: Uint8Array, receiverSecretKey: Uint8Array, room: Room, decryptionModule: LibCrypto, merkleModule: LibCrypto) => Promise<{
4
+ date: Date;
5
+ chunkSize: number;
6
+ savedSize: number;
7
+ totalSize: number;
8
+ chunkIndex: number;
9
+ chunkHash: Uint8Array;
10
+ receivedFullSize: boolean;
11
+ messageAlreadyExists: boolean;
12
+ chunkAlreadyExists: boolean;
13
+ messageType: number;
14
+ filename: string;
15
+ }>;
16
+ //# sourceMappingURL=handleReceiveMessage.d.ts.map
@@ -0,0 +1,6 @@
1
+ import type { IRTCDataChannel, IRTCPeerConnection } from "../api/webrtc/interfaces";
2
+ import type { LibCrypto } from "../cryptography/libcrypto";
3
+ import type { BaseQueryApi } from "@reduxjs/toolkit/query";
4
+ export declare const wait: (milliseconds: number) => Promise<unknown>;
5
+ export declare const handleSendMessage: (data: string | File, api: BaseQueryApi, label: string, roomId: string, peerConnections: IRTCPeerConnection[], dataChannels: IRTCDataChannel[], encryptionModule: LibCrypto, decryptionModule: LibCrypto, merkleModule: LibCrypto, minChunks?: number, chunkSize?: number, percentageFilledChunk?: number, metadataSchemaVersion?: number) => Promise<void>;
6
+ //# sourceMappingURL=handleSendMessage.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { BaseQueryApi } from "@reduxjs/toolkit/query";
2
+ import type { LibCrypto } from "../cryptography/libcrypto";
3
+ export declare const handleSendMessageWebsocket: (data: string | File, roomId: string, encryptionModule: LibCrypto, api: BaseQueryApi, label: string) => Promise<void>;
4
+ //# sourceMappingURL=handleSendMessageWebsocket.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { BaseQueryApi } from "@reduxjs/toolkit/query";
2
+ export declare const rtcDataChannelMessageLimit: number;
3
+ export declare const messageLen: number;
4
+ export declare const encryptedLen: number;
5
+ declare const handleWebSocketMessage: (event: MessageEvent, ws: WebSocket, api: BaseQueryApi) => Promise<void>;
6
+ export default handleWebSocketMessage;
7
+ //# sourceMappingURL=handleWebSocketMessage.d.ts.map
package/lib/index.d.ts ADDED
@@ -0,0 +1,202 @@
1
+ import type { State } from "./store";
2
+ import type { Room, Peer, Channel, Message } from "./reducers/roomSlice";
3
+ import type { SignalingState } from "./reducers/signalingServerSlice";
4
+ import type { MimeType, FileExtension } from "./utils/messageTypes";
5
+ import type { WebSocketMessageRoomIdRequest, WebSocketMessageRoomIdResponse, WebSocketMessageChallengeRequest, WebSocketMessageChallengeResponse, WebSocketMessageDescriptionSend, WebSocketMessageDescriptionReceive, WebSocketMessageCandidateSend, WebSocketMessageCandidateReceive, WebSocketMessageError } from "./utils/interfaces";
6
+ import type { RoomData } from "./api/webrtc/interfaces";
7
+ import type { BlacklistedPeer, UsernamedPeer, UniqueRoom } from "./db/types";
8
+ import type { KeyPair } from "./reducers/keyPairSlice";
9
+ export declare const p2party: {
10
+ store: import("@reduxjs/toolkit").EnhancedStore<{
11
+ commonState: import("./reducers/commonSlice").CommonState;
12
+ keyPair: KeyPair;
13
+ rooms: Room[];
14
+ signalingServer: SignalingState;
15
+ signalingServerApi: import("@reduxjs/toolkit/dist/query").CombinedState<{
16
+ connectWebSocket: import("@reduxjs/toolkit/dist/query").MutationDefinition<string, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
17
+ disconnectWebSocket: import("@reduxjs/toolkit/dist/query").MutationDefinition<void, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
18
+ sendMessage: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/signalingServerApi").WebSocketMessage, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
19
+ connectWithPeer: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./utils/interfaces").WebSocketPeerConnectionParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
20
+ }, never, "signalingServerApi">;
21
+ webrtcApi: import("@reduxjs/toolkit/dist/query").CombinedState<{
22
+ connectWithPeer: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCPeerConnectionParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
23
+ setDescription: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetDescriptionParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
24
+ setCandidate: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetCandidateParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
25
+ openChannel: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCOpenChannelParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
26
+ sendMessage: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSendMessageParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
27
+ disconnect: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
28
+ disconnectFromRoom: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromRoomParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
29
+ disconnectFromAllRooms: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromAllRoomsParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
30
+ disconnectFromPeer: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
31
+ disconnectFromChannelLabel: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromChannelLabelParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
32
+ disconnectFromPeerChannelLabel: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerChannelLabelParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
33
+ }, never, "webrtcApi">;
34
+ }, import("redux").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
35
+ dispatch: import("redux-thunk").ThunkDispatch<{
36
+ commonState: import("./reducers/commonSlice").CommonState;
37
+ keyPair: KeyPair;
38
+ rooms: Room[];
39
+ signalingServer: SignalingState;
40
+ signalingServerApi: import("@reduxjs/toolkit/dist/query").CombinedState<{
41
+ connectWebSocket: import("@reduxjs/toolkit/dist/query").MutationDefinition<string, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
42
+ disconnectWebSocket: import("@reduxjs/toolkit/dist/query").MutationDefinition<void, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
43
+ sendMessage: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/signalingServerApi").WebSocketMessage, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
44
+ connectWithPeer: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./utils/interfaces").WebSocketPeerConnectionParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/signalingServerApi").WebSocketParams, undefined>, never, void, "signalingServerApi", undefined>;
45
+ }, never, "signalingServerApi">;
46
+ webrtcApi: import("@reduxjs/toolkit/dist/query").CombinedState<{
47
+ connectWithPeer: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCPeerConnectionParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
48
+ setDescription: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetDescriptionParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
49
+ setCandidate: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSetCandidateParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
50
+ openChannel: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCOpenChannelParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
51
+ sendMessage: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCSendMessageParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
52
+ disconnect: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
53
+ disconnectFromRoom: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromRoomParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
54
+ disconnectFromAllRooms: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromAllRoomsParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
55
+ disconnectFromPeer: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
56
+ disconnectFromChannelLabel: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromChannelLabelParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
57
+ disconnectFromPeerChannelLabel: import("@reduxjs/toolkit/dist/query").MutationDefinition<import("./api/webrtc/interfaces").RTCDisconnectFromPeerChannelLabelParams, import("@reduxjs/toolkit/dist/query").BaseQueryFn<import("./api/webrtc/baseQuery").RTCPeerConnectionParamsExtend, void, unknown>, never, void, "webrtcApi", void>;
58
+ }, never, "webrtcApi">;
59
+ }, undefined, import("redux").UnknownAction> & ((action: import("redux").Action<"listenerMiddleware/add">) => import("@reduxjs/toolkit").UnsubscribeListener);
60
+ }>, import("redux").StoreEnhancer]>>;
61
+ commonStateSelector: (state: State) => import("./reducers/commonSlice").CommonState;
62
+ signalingServerSelector: (state: State) => SignalingState;
63
+ roomSelector: (state: State) => Room[];
64
+ keyPairSelector: (state: State) => KeyPair;
65
+ connect: (roomUrl: string, signalingServerUrl?: string, rtcConfig?: RTCConfiguration) => void;
66
+ connectToSignalingServer: (roomUrl: string, signalingServerUrl?: string) => void;
67
+ disconnectFromSignalingServer: () => void;
68
+ disconnectFromRoom: (roomId: string, deleteMessages?: boolean) => void;
69
+ disconnectFromAllRooms: (deleteMessages?: boolean, exceptionRoomIds?: string[]) => void;
70
+ disconnectFromPeer: (peerId: string) => void;
71
+ allowConnectionRelay: (roomId: string, allowed?: boolean) => void;
72
+ onlyAllowConnectionsFromAddressBook: (roomUrl: string, onlyAllow: boolean) => Promise<void>;
73
+ addPeerToAddressBook: (username: string, peerId: string, peerPublicKey: string) => Promise<void>;
74
+ getPeerAddressBookEntry: (peerId?: string, peerPublicKey?: string) => Promise<UsernamedPeer | undefined>;
75
+ getAllPeersInAddressBook: () => Promise<UsernamedPeer[]>;
76
+ getAllPeersInBlacklist: () => Promise<BlacklistedPeer[]>;
77
+ deletePeerFromAddressBook: (username?: string, peerId?: string, peerPublicKey?: string) => Promise<void>;
78
+ blacklistPeer: (peerId: string, peerPublicKey: string) => Promise<void>;
79
+ getPeerIsBlacklisted: (peerId?: string, peerPublicKey?: string) => Promise<boolean>;
80
+ removePeerFromBlacklist: (peerId?: string, peerPublicKey?: string) => Promise<void>;
81
+ getAllExistingRooms: () => Promise<UniqueRoom[]>;
82
+ openChannel: (roomId: string, label: string, withPeers?: {
83
+ peerId: string;
84
+ peerPublicKey: string;
85
+ }[]) => Promise<void>;
86
+ sendMessage: (data: string | File, toChannel: string, roomId: string, percentageFilledChunk?: number, minChunks?: number, chunkSize?: number, metadataSchemaVersion?: number) => void;
87
+ readMessage: (merkleRootHex?: string, hashHex?: string) => Promise<{
88
+ message: string | Blob;
89
+ percentage: number;
90
+ size: number;
91
+ filename: string;
92
+ mimeType: MimeType;
93
+ extension: FileExtension;
94
+ category: string;
95
+ }>;
96
+ cancelMessage: (channelLabel: string, merkleRoot?: string | Uint8Array, hash?: string | Uint8Array) => Promise<void>;
97
+ deleteMessage: (merkleRoot?: string | Uint8Array, hash?: string | Uint8Array) => Promise<void>;
98
+ purgeIdentity: () => void;
99
+ purgeRoom: (roomUrl: string) => void;
100
+ purge: () => Promise<void>;
101
+ generateRandomRoomUrl: () => Promise<string>;
102
+ encrypt: (message: Uint8Array, receiverPublicKey: Uint8Array, senderSecretKey: Uint8Array, additionalData: Uint8Array, module?: import("./cryptography/libcrypto").LibCrypto) => Promise<Uint8Array>;
103
+ decrypt: (encrypted: Uint8Array, publicKey: Uint8Array, secretKey: Uint8Array, additionalData: Uint8Array, module?: import("./cryptography/libcrypto").LibCrypto) => Promise<Uint8Array>;
104
+ sign: (message: Uint8Array, secretKey: Uint8Array, module?: import("./cryptography/libcrypto").LibCrypto) => Promise<Uint8Array>;
105
+ verify: (message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array, module?: import("./cryptography/libcrypto").LibCrypto) => Promise<boolean>;
106
+ newKeyPair: (module?: import("./cryptography/libcrypto").LibCrypto) => Promise<import("./cryptography/interfaces").SignKeyPair>;
107
+ generateMnemonic: (strength?: 128 | 160 | 192 | 224 | 256 | 288 | 320 | 352 | 384 | 416 | 448 | 480 | 512) => Promise<string>;
108
+ keyPairFromMnemonic: (mnemonic: string, password?: string) => Promise<import("./cryptography/interfaces").SignKeyPair>;
109
+ MIN_CHUNKS: number;
110
+ MIN_CHUNK_SIZE: number;
111
+ MAX_CHUNK_SIZE: number;
112
+ MIN_PERCENTAGE_FILLED_CHUNK: number;
113
+ MAX_PERCENTAGE_FILLED_CHUNK: number;
114
+ ROOM_URL_LENGTH: number;
115
+ MessageType: {
116
+ Text: number;
117
+ ImagePNG: number;
118
+ ImageJPEG: number;
119
+ ImageJPG: number;
120
+ ImageGIF: number;
121
+ ImageBMP: number;
122
+ ImageTIFF: number;
123
+ ImageSVG: number;
124
+ ImageWEBP: number;
125
+ ImageHEIC: number;
126
+ DocumentPDF: number;
127
+ DocumentDOC: number;
128
+ DocumentDOCX: number;
129
+ DocumentXLS: number;
130
+ DocumentXLSX: number;
131
+ DocumentPPT: number;
132
+ DocumentPPTX: number;
133
+ DocumentTXT: number;
134
+ DocumentRTF: number;
135
+ DocumentODT: number;
136
+ AudioMP3: number;
137
+ AudioWAV: number;
138
+ AudioAAC: number;
139
+ AudioFLAC: number;
140
+ AudioOGG: number;
141
+ AudioM4A: number;
142
+ VideoMP4: number;
143
+ VideoAVI: number;
144
+ VideoMKV: number;
145
+ VideoMOV: number;
146
+ VideoWMV: number;
147
+ VideoFLV: number;
148
+ VideoWEBM: number;
149
+ CompressedZIP: number;
150
+ CompressedRAR: number;
151
+ Compressed7Z: number;
152
+ CompressedTAR: number;
153
+ CompressedGZ: number;
154
+ CodeHTML: number;
155
+ CodeCSS: number;
156
+ CodeJS: number;
157
+ CodeJSX: number;
158
+ CodeTS: number;
159
+ CodeTSX: number;
160
+ CodeJSON: number;
161
+ CodeXML: number;
162
+ CodePY: number;
163
+ CodeJAVA: number;
164
+ CodeC: number;
165
+ CodeCPP: number;
166
+ CodeCS: number;
167
+ CodeRB: number;
168
+ CodePHP: number;
169
+ CodeSQL: number;
170
+ EbookEPUB: number;
171
+ EbookMOBI: number;
172
+ EbookAZW: number;
173
+ FontTTF: number;
174
+ FontOTF: number;
175
+ ImageICO: number;
176
+ ExecutableEXE: number;
177
+ ExecutableDMG: number;
178
+ ExecutableAPK: number;
179
+ Unknown: number;
180
+ };
181
+ MessageCategory: {
182
+ Text: string;
183
+ Image: string;
184
+ Document: string;
185
+ Audio: string;
186
+ Video: string;
187
+ Compressed: string;
188
+ Code: string;
189
+ Ebook: string;
190
+ Font: string;
191
+ Executable: string;
192
+ Unknown: string;
193
+ };
194
+ };
195
+ declare global {
196
+ interface Window {
197
+ p2party: typeof p2party;
198
+ }
199
+ }
200
+ export type { State, Room, Peer, Channel, Message, RoomData, MimeType, FileExtension, UsernamedPeer, BlacklistedPeer, UniqueRoom, SignalingState, KeyPair, WebSocketMessageRoomIdRequest, WebSocketMessageRoomIdResponse, WebSocketMessageChallengeRequest, WebSocketMessageChallengeResponse, WebSocketMessageDescriptionSend, WebSocketMessageDescriptionReceive, WebSocketMessageCandidateSend, WebSocketMessageCandidateReceive, WebSocketMessageError, };
201
+ export default p2party;
202
+ //# sourceMappingURL=index.d.ts.map