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.
- package/LICENSE.md +661 -0
- package/README.md +417 -0
- package/lib/api/signalingServerApi.d.ts +19 -0
- package/lib/api/webrtc/baseQuery.d.ts +11 -0
- package/lib/api/webrtc/baseQuery.d.ts.map +1 -0
- package/lib/api/webrtc/disconnectFromAllRoomsQuery.d.ts +9 -0
- package/lib/api/webrtc/disconnectFromAllRoomsQuery.d.ts.map +1 -0
- package/lib/api/webrtc/disconnectFromChannelLabelQuery.d.ts +8 -0
- package/lib/api/webrtc/disconnectFromChannelLabelQuery.d.ts.map +1 -0
- package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts +9 -0
- package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts.map +1 -0
- package/lib/api/webrtc/disconnectFromPeerQuery.d.ts +9 -0
- package/lib/api/webrtc/disconnectFromPeerQuery.d.ts.map +1 -0
- package/lib/api/webrtc/disconnectFromRoomQuery.d.ts +9 -0
- package/lib/api/webrtc/disconnectFromRoomQuery.d.ts.map +1 -0
- package/lib/api/webrtc/disconnectQuery.d.ts +9 -0
- package/lib/api/webrtc/disconnectQuery.d.ts.map +1 -0
- package/lib/api/webrtc/index.d.ts +19 -0
- package/lib/api/webrtc/index.d.ts.map +1 -0
- package/lib/api/webrtc/interfaces.d.ts +101 -0
- package/lib/api/webrtc/interfaces.d.ts.map +1 -0
- package/lib/api/webrtc/openChannelQuery.d.ts +11 -0
- package/lib/api/webrtc/openChannelQuery.d.ts.map +1 -0
- package/lib/api/webrtc/sendMessageQuery.d.ts +12 -0
- package/lib/api/webrtc/sendMessageQuery.d.ts.map +1 -0
- package/lib/api/webrtc/setCandidateQuery.d.ts +9 -0
- package/lib/api/webrtc/setCandidateQuery.d.ts.map +1 -0
- package/lib/api/webrtc/setDescriptionQuery.d.ts +12 -0
- package/lib/api/webrtc/setDescriptionQuery.d.ts.map +1 -0
- package/lib/cryptography/chacha20poly1305.d.ts +116 -0
- package/lib/cryptography/ed25519.d.ts +12 -0
- package/lib/cryptography/hasher.d.ts +11 -0
- package/lib/cryptography/interfaces.d.ts +40 -0
- package/lib/cryptography/memory.d.ts +15 -0
- package/lib/cryptography/merkle.d.ts +43 -0
- package/lib/cryptography/mnemonic.d.ts +30 -0
- package/lib/cryptography/utils.d.ts +13 -0
- package/lib/db/api.d.ts +35 -0
- package/lib/db/db.worker.d.ts +2 -0
- package/lib/db/src/getDB.d.ts +68 -0
- package/lib/db/src/getDB.d.ts.map +1 -0
- package/lib/db/types.d.ts +234 -0
- package/lib/db.worker.js +2 -0
- package/lib/handlers/handleChallenge.d.ts +5 -0
- package/lib/handlers/handleConnectToPeer.d.ts +4 -0
- package/lib/handlers/handleOpenChannel.d.ts +15 -0
- package/lib/handlers/handleQueuedIceCandidates.d.ts +3 -0
- package/lib/handlers/handleReadReceipt.d.ts +5 -0
- package/lib/handlers/handleReceiveMessage.d.ts +16 -0
- package/lib/handlers/handleSendMessage.d.ts +6 -0
- package/lib/handlers/handleSendMessageWebsocket.d.ts +4 -0
- package/lib/handlers/handleWebSocketMessage.d.ts +7 -0
- package/lib/index.d.ts +202 -0
- package/lib/index.js +2 -0
- package/lib/index.min.js +2 -0
- package/lib/index.mjs +2 -0
- package/lib/middleware/keyPairListenerMiddleware.d.ts +3 -0
- package/lib/middleware/roomListenerMiddleware.d.ts +3 -0
- package/lib/reducers/commonSlice.d.ts +9 -0
- package/lib/reducers/keyPairSlice.d.ts +33 -0
- package/lib/reducers/roomSlice.d.ts +113 -0
- package/lib/reducers/signalingServerSlice.d.ts +16 -0
- package/lib/store.d.ts +55 -0
- package/lib/utils/channelLabel.d.ts +12 -0
- package/lib/utils/interfaces.d.ts +138 -0
- package/lib/utils/mediasource.d.ts +2 -0
- package/lib/utils/messageTypes.d.ts +88 -0
- package/lib/utils/metadata.d.ts +17 -0
- package/lib/utils/splitToChunks.d.ts +29 -0
- package/lib/utils/uint8array.d.ts +21 -0
- 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
|
package/lib/db.worker.js
ADDED
|
@@ -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,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
|