@simplito/privmx-webendpoint 2.0.5 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/Types.d.ts +407 -0
  2. package/Types.js +27 -0
  3. package/api/Api.d.ts +20 -0
  4. package/api/Api.js +48 -0
  5. package/api/BaseNative.d.ts +20 -0
  6. package/api/BaseNative.js +35 -0
  7. package/api/ConnectionNative.d.ts +24 -0
  8. package/api/ConnectionNative.js +51 -0
  9. package/api/CryptoApiNative.d.ts +25 -0
  10. package/api/CryptoApiNative.js +54 -0
  11. package/api/EventQueueNative.d.ts +20 -0
  12. package/api/EventQueueNative.js +37 -0
  13. package/api/IdGenerator.d.ts +14 -0
  14. package/api/IdGenerator.js +21 -0
  15. package/api/InboxApiNative.d.ts +38 -0
  16. package/api/InboxApiNative.js +90 -0
  17. package/api/StoreApiNative.d.ts +37 -0
  18. package/api/StoreApiNative.js +87 -0
  19. package/api/ThreadApiNative.d.ts +31 -0
  20. package/api/ThreadApiNative.js +69 -0
  21. package/assets/endpoint-wasm-module.js +20 -0
  22. package/assets/endpoint-wasm-module.wasm +0 -0
  23. package/bundle/privmx-endpoint-web.js +2 -0
  24. package/bundle/privmx-endpoint-web.js.LICENSE.txt +10 -0
  25. package/bundle.d.ts +12 -0
  26. package/bundle.js +16 -0
  27. package/extra/__tests__/__mocks__/constants.d.ts +36 -0
  28. package/extra/__tests__/__mocks__/constants.js +42 -0
  29. package/extra/__tests__/__mocks__/mockContainerSubscriber.d.ts +12 -0
  30. package/extra/__tests__/__mocks__/mockContainerSubscriber.js +25 -0
  31. package/extra/__tests__/__mocks__/mockEventAPIs.d.ts +30 -0
  32. package/extra/__tests__/__mocks__/mockEventAPIs.js +70 -0
  33. package/extra/__tests__/__mocks__/mockEventQueue.d.ts +13 -0
  34. package/extra/__tests__/__mocks__/mockEventQueue.js +45 -0
  35. package/extra/__tests__/__mocks__/utils.d.ts +8 -0
  36. package/extra/__tests__/__mocks__/utils.js +21 -0
  37. package/extra/__tests__/eventsManager.test.d.ts +1 -0
  38. package/extra/__tests__/eventsManager.test.js +73 -0
  39. package/extra/__tests__/inboxEventManager.test.d.ts +1 -0
  40. package/extra/__tests__/inboxEventManager.test.js +56 -0
  41. package/extra/__tests__/storeEventManager.test.d.ts +1 -0
  42. package/extra/__tests__/storeEventManager.test.js +56 -0
  43. package/extra/__tests__/threadEventManager.test.d.ts +1 -0
  44. package/extra/__tests__/threadEventManager.test.js +60 -0
  45. package/extra/__tests__/utils.test.d.ts +1 -0
  46. package/extra/__tests__/utils.test.js +52 -0
  47. package/extra/events.d.ts +234 -0
  48. package/extra/events.js +270 -0
  49. package/extra/files.d.ts +120 -0
  50. package/extra/files.js +216 -0
  51. package/extra/generics.d.ts +19 -0
  52. package/extra/generics.js +2 -0
  53. package/extra/inbox.d.ts +38 -0
  54. package/extra/inbox.js +35 -0
  55. package/extra/index.d.ts +8 -0
  56. package/extra/index.js +23 -0
  57. package/extra/utils.d.ts +24 -0
  58. package/extra/utils.js +68 -0
  59. package/index.d.ts +14 -0
  60. package/index.js +25 -0
  61. package/package.json +45 -3
  62. package/service/BaseApi.d.ts +16 -0
  63. package/service/BaseApi.js +29 -0
  64. package/service/Connection.d.ts +45 -0
  65. package/service/Connection.js +57 -0
  66. package/service/CryptoApi.d.ts +83 -0
  67. package/service/CryptoApi.js +113 -0
  68. package/service/EndpointFactory.d.ts +89 -0
  69. package/service/EndpointFactory.js +173 -0
  70. package/service/EventQueue.d.ts +20 -0
  71. package/service/EventQueue.js +37 -0
  72. package/service/InboxApi.d.ts +183 -0
  73. package/service/InboxApi.js +262 -0
  74. package/service/StoreApi.d.ts +170 -0
  75. package/service/StoreApi.js +246 -0
  76. package/service/ThreadApi.d.ts +124 -0
  77. package/service/ThreadApi.js +186 -0
  78. package/service/index.d.ts +9 -0
  79. package/service/index.js +19 -0
  80. package/README.md +0 -13
  81. package/webAssets/LICENSE.md +0 -76
  82. package/webAssets/endpoint-wasm-module.js +0 -20
  83. package/webAssets/endpoint-wasm-module.wasm +0 -0
  84. package/webAssets/privmx-endpoint-web.js +0 -2
  85. /package/{webAssets → assets}/driver-web-context.js +0 -0
  86. /package/{webAssets → assets}/endpoint-wasm-module.worker.js +0 -0
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ /*!
3
+ PrivMX Web Endpoint.
4
+ Copyright © 2024 Simplito sp. z o.o.
5
+
6
+ This file is part of the PrivMX Platform (https://privmx.dev).
7
+ This software is Licensed under the PrivMX Free License.
8
+
9
+ See the License for the specific language governing permissions and
10
+ limitations under the License.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.StoreApi = void 0;
14
+ const BaseApi_1 = require("./BaseApi");
15
+ class StoreApi extends BaseApi_1.BaseApi {
16
+ native;
17
+ constructor(native, ptr) {
18
+ super(ptr);
19
+ this.native = native;
20
+ }
21
+ /**
22
+ * Creates a new Store in given Context.
23
+ *
24
+ * @param {string} contextId ID of the Context to create the Store in
25
+ * @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created Store
26
+ * @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to the
27
+ * created Store
28
+ * @param {Uint8Array} publicMeta public (unencrypted) metadata
29
+ * @param {Uint8Array} privateMeta private (encrypted) metadata
30
+ * @param {ContainerPolicy} policies Store's policies
31
+ * @returns {string} created Store ID
32
+ */
33
+ async createStore(contextId, users, managers, publicMeta, privateMeta, policies) {
34
+ return this.native.createStore(this.servicePtr, [
35
+ contextId,
36
+ users,
37
+ managers,
38
+ publicMeta,
39
+ privateMeta,
40
+ policies
41
+ ]);
42
+ }
43
+ /**
44
+ * Updates an existing Store.
45
+ *
46
+ * @param {string} storeId ID of the Store to update
47
+ * @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created Store
48
+ * @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to the
49
+ * created Store
50
+ * @param {Uint8Array} publicMeta public (unencrypted) metadata
51
+ * @param {Uint8Array} privateMeta private (encrypted) metadata
52
+ * @param {number} version current version of the updated Store
53
+ * @param {boolean} force force update (without checking version)
54
+ * @param {boolean} forceGenerateNewKey force to regenerate a key for the Store
55
+ * @param {ContainerPolicy} policies Store's policies
56
+ */
57
+ async updateStore(storeId, users, managers, publicMeta, privateMeta, version, force, forceGenerateNewKey, policies) {
58
+ return this.native.updateStore(this.servicePtr, [
59
+ storeId,
60
+ users,
61
+ managers,
62
+ publicMeta,
63
+ privateMeta,
64
+ version,
65
+ force,
66
+ forceGenerateNewKey,
67
+ policies
68
+ ]);
69
+ }
70
+ /**
71
+ * Deletes a Store by given Store ID.
72
+ *
73
+ * @param {string} storeId ID of the Store to delete
74
+ */
75
+ async deleteStore(storeId) {
76
+ return this.native.deleteStore(this.servicePtr, [storeId]);
77
+ }
78
+ /**
79
+ * Gets a single Store by given Store ID.
80
+ *
81
+ * @param {string} storeId ID of the Store to get
82
+ * @returns {Store} struct containing information about the Store
83
+ */
84
+ async getStore(storeId) {
85
+ return this.native.getStore(this.servicePtr, [storeId]);
86
+ }
87
+ /**
88
+ * Gets a list of Stores in given Context.
89
+ *
90
+ * @param {string} contextId ID of the Context to get the Stores from
91
+ * @param {PagingQuery} pagingQuery struct with list query parameters
92
+ * @returns {PagingList<Store>} struct containing list of Stores
93
+ */
94
+ async listStores(contextId, pagingQuery) {
95
+ return this.native.listStores(this.servicePtr, [contextId, pagingQuery]);
96
+ }
97
+ /**
98
+ * Creates a new file in a Store.
99
+ *
100
+ * @param {string} storeId ID of the Store to create the file in
101
+ * @param {Uint8Array} publicMeta public file metadata
102
+ * @param {Uint8Array} privateMeta private file metadata
103
+ * @param {number} size size of the file
104
+ * @returns {number} handle to write data
105
+ */
106
+ async createFile(storeId, publicMeta, privateMeta, size) {
107
+ return this.native.createFile(this.servicePtr, [
108
+ storeId,
109
+ publicMeta,
110
+ privateMeta,
111
+ size,
112
+ ]);
113
+ }
114
+ /**
115
+ * Update an existing file in a Store.
116
+ *
117
+ * @param {string} fileId ID of the file to update
118
+ * @param {Uint8Array} publicMeta public file metadata
119
+ * @param {Uint8Array} privateMeta private file metadata
120
+ * @param {number} size size of the file
121
+ * @returns {number} handle to write file data
122
+ */
123
+ async updateFile(fileId, publicMeta, privateMeta, size) {
124
+ return this.native.updateFile(this.servicePtr, [
125
+ fileId,
126
+ publicMeta,
127
+ privateMeta,
128
+ size,
129
+ ]);
130
+ }
131
+ /**
132
+ * Update metadata of an existing file in a Store.
133
+ *
134
+ * @param {string} fileId ID of the file to update
135
+ * @param {Uint8Array} publicMeta public file metadata
136
+ * @param {Uint8Array} privateMeta private file metadata
137
+ */
138
+ async updateFileMeta(fileId, publicMeta, privateMeta) {
139
+ return this.native.updateFileMeta(this.servicePtr, [
140
+ fileId,
141
+ publicMeta,
142
+ privateMeta,
143
+ ]);
144
+ }
145
+ /**
146
+ * Writes a file data.
147
+ *
148
+ * @param {number} fileHandle handle to write file data
149
+ * @param {Uint8Array} dataChunk file data chunk
150
+ */
151
+ async writeToFile(fileHandle, dataChunk) {
152
+ return this.native.writeToFile(this.servicePtr, [fileHandle, dataChunk]);
153
+ }
154
+ /**
155
+ * Deletes a file by given ID.
156
+ *
157
+ * @param {string} fileId ID of the file to delete
158
+ */
159
+ async deleteFile(fileId) {
160
+ return this.native.deleteFile(this.servicePtr, [fileId]);
161
+ }
162
+ /**
163
+ * Gets a single file by the given file ID.
164
+ *
165
+ * @param {string} fileId ID of the file to get
166
+ * @returns {File} struct containing information about the file
167
+ */
168
+ async getFile(fileId) {
169
+ return this.native.getFile(this.servicePtr, [fileId]);
170
+ }
171
+ /**
172
+ * Gets a list of files in given Store.
173
+ *
174
+ * @param {string} storeId ID of the Store to get files from
175
+ * @param {PagingQuery} pagingQuery struct with list query parameters
176
+ * @returns {PagingList<File>} struct containing list of files
177
+ */
178
+ async listFiles(storeId, pagingQuery) {
179
+ return this.native.listFiles(this.servicePtr, [storeId, pagingQuery]);
180
+ }
181
+ /**
182
+ * Opens a file to read.
183
+ *
184
+ * @param {string} fileId ID of the file to read
185
+ * @returns {number} handle to read file data
186
+ */
187
+ async openFile(fileId) {
188
+ return this.native.openFile(this.servicePtr, [fileId]);
189
+ }
190
+ /**
191
+ * Reads file data.
192
+ * Single read call moves the files's cursor position by declared length or set it at the end of the file.
193
+ *
194
+ * @param {string} fileHandle handle to write file data
195
+ * @param {number} length size of data to read
196
+ * @returns {Uint8Array} array buffer with file data chunk
197
+ */
198
+ async readFromFile(fileHandle, length) {
199
+ return this.native.readFromFile(this.servicePtr, [fileHandle, length]);
200
+ }
201
+ /**
202
+ * Moves read cursor.
203
+ *
204
+ * @param {string} fileHandle handle to write file data
205
+ * @param {number} position new cursor position
206
+ */
207
+ async seekInFile(fileHandle, position) {
208
+ return this.native.seekInFile(this.servicePtr, [fileHandle, position]);
209
+ }
210
+ /**
211
+ * Closes the file handle.
212
+ *
213
+ * @param {string} fileHandle handle to read/write file data
214
+ * @returns {string} ID of closed file
215
+ */
216
+ async closeFile(fileHandle) {
217
+ return this.native.closeFile(this.servicePtr, [fileHandle]);
218
+ }
219
+ /**
220
+ * Subscribes for the Store module main events.
221
+ */
222
+ async subscribeForStoreEvents() {
223
+ return this.native.subscribeForStoreEvents(this.servicePtr, []);
224
+ }
225
+ /**
226
+ * Unsubscribes from the Store module main events.
227
+ */
228
+ async unsubscribeFromStoreEvents() {
229
+ return this.native.unsubscribeFromStoreEvents(this.servicePtr, []);
230
+ }
231
+ /**
232
+ * Subscribes for events in given Store.
233
+ * @param {string} storeId ID of the Store to subscribe
234
+ */
235
+ async subscribeForFileEvents(storeId) {
236
+ return this.native.subscribeForFileEvents(this.servicePtr, [storeId]);
237
+ }
238
+ /**
239
+ * Unsubscribes from events in given Store.
240
+ * @param {string} storeId ID of the Store to unsubscribe
241
+ */
242
+ async unsubscribeFromFileEvents(storeId) {
243
+ return this.native.unsubscribeFromFileEvents(this.servicePtr, [storeId]);
244
+ }
245
+ }
246
+ exports.StoreApi = StoreApi;
@@ -0,0 +1,124 @@
1
+ /*!
2
+ PrivMX Web Endpoint.
3
+ Copyright © 2024 Simplito sp. z o.o.
4
+
5
+ This file is part of the PrivMX Platform (https://privmx.dev).
6
+ This software is Licensed under the PrivMX Free License.
7
+
8
+ See the License for the specific language governing permissions and
9
+ limitations under the License.
10
+ */
11
+ import { BaseApi } from "./BaseApi";
12
+ import { ThreadApiNative } from "../api/ThreadApiNative";
13
+ import { PagingQuery, PagingList, UserWithPubKey, Thread, Message, ContainerPolicy } from "../Types";
14
+ export declare class ThreadApi extends BaseApi {
15
+ protected native: ThreadApiNative;
16
+ constructor(native: ThreadApiNative, ptr: number);
17
+ /**
18
+ * Creates a new Thread in given Context.
19
+ *
20
+ * @param {string} contextId ID of the Context to create the Thread in
21
+ * @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created Thread
22
+ * @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to
23
+ * the created Thread
24
+ * @param {Uint8Array} publicMeta public (unencrypted) metadata
25
+ * @param {Uint8Array} privateMeta private (encrypted) metadata
26
+ * @param {ContainerPolicy} policies Thread's policies
27
+ * @returns {string} ID of the created Thread
28
+ */
29
+ createThread(contextId: string, users: UserWithPubKey[], managers: UserWithPubKey[], publicMeta: Uint8Array, privateMeta: Uint8Array, policies?: ContainerPolicy): Promise<string>;
30
+ /**
31
+ * Updates an existing Thread.
32
+ *
33
+ * @param {string} threadId ID of the Thread to update
34
+ * @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created Thread
35
+ * @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to
36
+ * the created Thread
37
+ * @param {Uint8Array} publicMeta public (unencrypted) metadata
38
+ * @param {Uint8Array} privateMeta private (encrypted) metadata
39
+ * @param {number} version current version of the updated Thread
40
+ * @param {boolean} force force update (without checking version)
41
+ * @param {boolean} forceGenerateNewKey force to regenerate a key for the Thread
42
+ * @param {ContainerPolicy} policies Thread's policies
43
+ */
44
+ updateThread(threadId: string, users: UserWithPubKey[], managers: UserWithPubKey[], publicMeta: Uint8Array, privateMeta: Uint8Array, version: number, force: boolean, forceGenerateNewKey: boolean, policies?: ContainerPolicy): Promise<void>;
45
+ /**
46
+ * Deletes a Thread by given Thread ID.
47
+ *
48
+ * @param {string} threadId ID of the Thread to delete
49
+ */
50
+ deleteThread(threadId: string): Promise<void>;
51
+ /**
52
+ * Gets a Thread by given Thread ID.
53
+ *
54
+ * @param {string} threadId ID of Thread to get
55
+ * @returns {Thread} struct containing info about the Thread
56
+ */
57
+ getThread(threadId: string): Promise<Thread>;
58
+ /**
59
+ * Gets a list of Threads in given Context.
60
+ *
61
+ * @param {string} contextId ID of the Context to get the Threads from
62
+ * @param {PagingQuery} pagingQuery struct with list query parameters
63
+ * @returns {PagingList<Thread>} struct containing a list of Threads
64
+ */
65
+ listThreads(contextId: string, pagingQuery: PagingQuery): Promise<PagingList<Thread>>;
66
+ /**
67
+ * Gets a message by given message ID.
68
+ *
69
+ * @param {string} messageId ID of the message to get
70
+ * @returns {Message} struct containing the message
71
+ */
72
+ getMessage(messageId: string): Promise<Message>;
73
+ /**
74
+ * Gets a list of messages from a Thread.
75
+ *
76
+ * @param {string} threadId ID of the Thread to list messages from
77
+ * @param {PagingQuery} pagingQuery struct with list query parameters
78
+ * @returns {PagingList<Message>} struct containing a list of messages
79
+ */
80
+ listMessages(threadId: string, pagingQuery: PagingQuery): Promise<PagingList<Message>>;
81
+ /**
82
+ * Sends a message in a Thread.
83
+ *
84
+ * @param {string} threadId ID of the Thread to send message to
85
+ * @param {Uint8Array} publicMeta public message metadata
86
+ * @param {Uint8Array} privateMeta private message metadata
87
+ * @param {Uint8Array} data content of the message
88
+ * @returns {string} ID of the new message
89
+ */
90
+ sendMessage(threadId: string, publicMeta: Uint8Array, privateMeta: Uint8Array, data: Uint8Array): Promise<string>;
91
+ /**
92
+ * Deletes a message by given message ID.
93
+ *
94
+ * @param {string} messageId ID of the message to delete
95
+ */
96
+ deleteMessage(messageId: string): Promise<void>;
97
+ /**
98
+ * Update message in a Thread.
99
+ *
100
+ * @param {string} messageId ID of the message to update
101
+ * @param {Uint8Array} publicMeta public message metadata
102
+ * @param {Uint8Array} privateMeta private message metadata
103
+ * @param {Uint8Array} data content of the message
104
+ */
105
+ updateMessage(messageId: string, publicMeta: Uint8Array, privateMeta: Uint8Array, data: Uint8Array): Promise<void>;
106
+ /**
107
+ * Subscribes for the Thread module main events.
108
+ */
109
+ subscribeForThreadEvents(): Promise<void>;
110
+ /**
111
+ * Unsubscribes from the Thread module main events.
112
+ */
113
+ unsubscribeFromThreadEvents(): Promise<void>;
114
+ /**
115
+ * Subscribes for events in given Thread.
116
+ * @param {string} threadId ID of the Thread to subscribe
117
+ */
118
+ subscribeForMessageEvents(threadId: string): Promise<void>;
119
+ /**
120
+ * Unsubscribes from events in given Thread.
121
+ * @param {string} threadId ID of the Thread to unsubscribe
122
+ */
123
+ unsubscribeFromMessageEvents(threadId: string): Promise<void>;
124
+ }
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ /*!
3
+ PrivMX Web Endpoint.
4
+ Copyright © 2024 Simplito sp. z o.o.
5
+
6
+ This file is part of the PrivMX Platform (https://privmx.dev).
7
+ This software is Licensed under the PrivMX Free License.
8
+
9
+ See the License for the specific language governing permissions and
10
+ limitations under the License.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ThreadApi = void 0;
14
+ const BaseApi_1 = require("./BaseApi");
15
+ class ThreadApi extends BaseApi_1.BaseApi {
16
+ native;
17
+ constructor(native, ptr) {
18
+ super(ptr);
19
+ this.native = native;
20
+ }
21
+ /**
22
+ * Creates a new Thread in given Context.
23
+ *
24
+ * @param {string} contextId ID of the Context to create the Thread in
25
+ * @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created Thread
26
+ * @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to
27
+ * the created Thread
28
+ * @param {Uint8Array} publicMeta public (unencrypted) metadata
29
+ * @param {Uint8Array} privateMeta private (encrypted) metadata
30
+ * @param {ContainerPolicy} policies Thread's policies
31
+ * @returns {string} ID of the created Thread
32
+ */
33
+ async createThread(contextId, users, managers, publicMeta, privateMeta, policies) {
34
+ return this.native.createThread(this.servicePtr, [
35
+ contextId,
36
+ users,
37
+ managers,
38
+ publicMeta,
39
+ privateMeta,
40
+ policies,
41
+ ]);
42
+ }
43
+ /**
44
+ * Updates an existing Thread.
45
+ *
46
+ * @param {string} threadId ID of the Thread to update
47
+ * @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created Thread
48
+ * @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to
49
+ * the created Thread
50
+ * @param {Uint8Array} publicMeta public (unencrypted) metadata
51
+ * @param {Uint8Array} privateMeta private (encrypted) metadata
52
+ * @param {number} version current version of the updated Thread
53
+ * @param {boolean} force force update (without checking version)
54
+ * @param {boolean} forceGenerateNewKey force to regenerate a key for the Thread
55
+ * @param {ContainerPolicy} policies Thread's policies
56
+ */
57
+ async updateThread(threadId, users, managers, publicMeta, privateMeta, version, force, forceGenerateNewKey, policies) {
58
+ return this.native.updateThread(this.servicePtr, [
59
+ threadId,
60
+ users,
61
+ managers,
62
+ publicMeta,
63
+ privateMeta,
64
+ version,
65
+ force,
66
+ forceGenerateNewKey,
67
+ policies,
68
+ ]);
69
+ }
70
+ /**
71
+ * Deletes a Thread by given Thread ID.
72
+ *
73
+ * @param {string} threadId ID of the Thread to delete
74
+ */
75
+ async deleteThread(threadId) {
76
+ return this.native.deleteThread(this.servicePtr, [threadId]);
77
+ }
78
+ /**
79
+ * Gets a Thread by given Thread ID.
80
+ *
81
+ * @param {string} threadId ID of Thread to get
82
+ * @returns {Thread} struct containing info about the Thread
83
+ */
84
+ async getThread(threadId) {
85
+ return this.native.getThread(this.servicePtr, [threadId]);
86
+ }
87
+ /**
88
+ * Gets a list of Threads in given Context.
89
+ *
90
+ * @param {string} contextId ID of the Context to get the Threads from
91
+ * @param {PagingQuery} pagingQuery struct with list query parameters
92
+ * @returns {PagingList<Thread>} struct containing a list of Threads
93
+ */
94
+ async listThreads(contextId, pagingQuery) {
95
+ return this.native.listThreads(this.servicePtr, [contextId, pagingQuery]);
96
+ }
97
+ /**
98
+ * Gets a message by given message ID.
99
+ *
100
+ * @param {string} messageId ID of the message to get
101
+ * @returns {Message} struct containing the message
102
+ */
103
+ async getMessage(messageId) {
104
+ return this.native.getMessage(this.servicePtr, [messageId]);
105
+ }
106
+ /**
107
+ * Gets a list of messages from a Thread.
108
+ *
109
+ * @param {string} threadId ID of the Thread to list messages from
110
+ * @param {PagingQuery} pagingQuery struct with list query parameters
111
+ * @returns {PagingList<Message>} struct containing a list of messages
112
+ */
113
+ async listMessages(threadId, pagingQuery) {
114
+ return this.native.listMessages(this.servicePtr, [threadId, pagingQuery]);
115
+ }
116
+ /**
117
+ * Sends a message in a Thread.
118
+ *
119
+ * @param {string} threadId ID of the Thread to send message to
120
+ * @param {Uint8Array} publicMeta public message metadata
121
+ * @param {Uint8Array} privateMeta private message metadata
122
+ * @param {Uint8Array} data content of the message
123
+ * @returns {string} ID of the new message
124
+ */
125
+ async sendMessage(threadId, publicMeta, privateMeta, data) {
126
+ return this.native.sendMessage(this.servicePtr, [
127
+ threadId,
128
+ publicMeta,
129
+ privateMeta,
130
+ data,
131
+ ]);
132
+ }
133
+ /**
134
+ * Deletes a message by given message ID.
135
+ *
136
+ * @param {string} messageId ID of the message to delete
137
+ */
138
+ async deleteMessage(messageId) {
139
+ return this.native.deleteMessage(this.servicePtr, [messageId]);
140
+ }
141
+ /**
142
+ * Update message in a Thread.
143
+ *
144
+ * @param {string} messageId ID of the message to update
145
+ * @param {Uint8Array} publicMeta public message metadata
146
+ * @param {Uint8Array} privateMeta private message metadata
147
+ * @param {Uint8Array} data content of the message
148
+ */
149
+ async updateMessage(messageId, publicMeta, privateMeta, data) {
150
+ return this.native.updateMessage(this.servicePtr, [
151
+ messageId,
152
+ publicMeta,
153
+ privateMeta,
154
+ data,
155
+ ]);
156
+ }
157
+ /**
158
+ * Subscribes for the Thread module main events.
159
+ */
160
+ async subscribeForThreadEvents() {
161
+ return this.native.subscribeForThreadEvents(this.servicePtr, []);
162
+ }
163
+ /**
164
+ * Unsubscribes from the Thread module main events.
165
+ */
166
+ async unsubscribeFromThreadEvents() {
167
+ return this.native.unsubscribeFromThreadEvents(this.servicePtr, []);
168
+ }
169
+ /**
170
+ * Subscribes for events in given Thread.
171
+ * @param {string} threadId ID of the Thread to subscribe
172
+ */
173
+ async subscribeForMessageEvents(threadId) {
174
+ return this.native.subscribeForMessageEvents(this.servicePtr, [threadId]);
175
+ }
176
+ /**
177
+ * Unsubscribes from events in given Thread.
178
+ * @param {string} threadId ID of the Thread to unsubscribe
179
+ */
180
+ async unsubscribeFromMessageEvents(threadId) {
181
+ return this.native.unsubscribeFromMessageEvents(this.servicePtr, [
182
+ threadId,
183
+ ]);
184
+ }
185
+ }
186
+ exports.ThreadApi = ThreadApi;
@@ -0,0 +1,9 @@
1
+ import { EndpointFactory } from "./EndpointFactory";
2
+ import { ThreadApi } from "./ThreadApi";
3
+ import { StoreApi } from "./StoreApi";
4
+ import { InboxApi } from "./InboxApi";
5
+ import { CryptoApi } from "./CryptoApi";
6
+ import { Connection } from "./Connection";
7
+ import { EventQueue } from "./EventQueue";
8
+ import { BaseApi } from "./BaseApi";
9
+ export { EndpointFactory, ThreadApi, StoreApi, InboxApi, CryptoApi, Connection, EventQueue, BaseApi };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseApi = exports.EventQueue = exports.Connection = exports.CryptoApi = exports.InboxApi = exports.StoreApi = exports.ThreadApi = exports.EndpointFactory = void 0;
4
+ const EndpointFactory_1 = require("./EndpointFactory");
5
+ Object.defineProperty(exports, "EndpointFactory", { enumerable: true, get: function () { return EndpointFactory_1.EndpointFactory; } });
6
+ const ThreadApi_1 = require("./ThreadApi");
7
+ Object.defineProperty(exports, "ThreadApi", { enumerable: true, get: function () { return ThreadApi_1.ThreadApi; } });
8
+ const StoreApi_1 = require("./StoreApi");
9
+ Object.defineProperty(exports, "StoreApi", { enumerable: true, get: function () { return StoreApi_1.StoreApi; } });
10
+ const InboxApi_1 = require("./InboxApi");
11
+ Object.defineProperty(exports, "InboxApi", { enumerable: true, get: function () { return InboxApi_1.InboxApi; } });
12
+ const CryptoApi_1 = require("./CryptoApi");
13
+ Object.defineProperty(exports, "CryptoApi", { enumerable: true, get: function () { return CryptoApi_1.CryptoApi; } });
14
+ const Connection_1 = require("./Connection");
15
+ Object.defineProperty(exports, "Connection", { enumerable: true, get: function () { return Connection_1.Connection; } });
16
+ const EventQueue_1 = require("./EventQueue");
17
+ Object.defineProperty(exports, "EventQueue", { enumerable: true, get: function () { return EventQueue_1.EventQueue; } });
18
+ const BaseApi_1 = require("./BaseApi");
19
+ Object.defineProperty(exports, "BaseApi", { enumerable: true, get: function () { return BaseApi_1.BaseApi; } });
package/README.md DELETED
@@ -1,13 +0,0 @@
1
- # PrivMX Web Endpoint
2
- PrivMX Web Endpoint is a JavaScript library designed to work in browser environment. It is used by applications and devices which are the ends of PrivMX secure communication channels. It encrypts and decrypts data, manages network connections and provides a functional API on the top of the WebAssembly build made of the native PrivMX Endpoint library written in C++. This allows applications to build their E2EE communication channels based on a few universal, client-side encrypted tools: Threads, Stores, and Inboxes.
3
-
4
- For more details, visit the [PrivMX Platform](https://privmx.dev) website and the [PrivMX Web Endpoint](https://github.com/simplito/privmx-webendpoint) repository on GitHub.
5
-
6
-
7
- ---
8
- Copyright © 2024 Simplito sp. z o.o.
9
-
10
- This software is the part of the [PrivMX Platform](https://privmx.dev).
11
- This software is Licensed under the PrivMX Free License.
12
-
13
- See the License for the specific language governing permissions and limitations under the License.
@@ -1,76 +0,0 @@
1
-
2
- # PrivMX Free License
3
-
4
- ver. 1.0, 18.10.2024
5
-
6
- This document contains information about the legal rules of using PrivMX Software. It is a binding agreement, which means that as a User of PrivMX Software, you are obliged to comply with it.
7
-
8
- In this document, we use the term PrivMX Software – a general name describing a software system created by us, consisting of, among others, PrivMX Bridge and PrivMX Endpoint. PrivMX Bridge is a server-side component which is used together with PrivMX Endpoint - programming libraries and tools which are the client-side part of the PrivMX Software.
9
-
10
- The license document also uses the concept of PrivMX Solution, which is a PrivMX Bridge runtime structure, enabling one programming solution (e.g., one application) to use PrivMX Software functions.
11
-
12
- ## The contract is concluded between us, that is:
13
-
14
- Simplito sp. z o.o. with its registered office in Toruń, Republic of Poland, address: Grudziądzka 1-3, 87-100 Toruń, entered into the Register of Entrepreneurs of the National Court Registry by the District Court in Toruń, VIIth Commercial Division of the National Court Registry under KRS number: 0000305883,
15
-
16
- and any User of PrivMX Software – you become one if you download, install, or use PrivMX Software. This includes, in particular, installing PrivMX Software within your own IT infrastructure in order to use it. You are also a User when you access source code of PrivMX Software or integrate it with other solutions.
17
-
18
- ## Using PrivMX Software within an Organization
19
-
20
- If you perform any of these activities involving PrivMX Software, in connection with your activity in an Organization, then the User, and therefore a party to the license agreement, is that Organization. If we use the term Organization in this agreement, we mean any legal person, organized group of people, or organizational unit (whether in form of national government, local government, or private entity) – e.g., enterprise, company, governmental authority, foundation, religious association, nongovernmental organization, school, or scientific organization.
21
-
22
- In this case, by accepting the terms of this license agreement, you state that you are authorized to enter into this license agreement on behalf of your Organization.
23
-
24
- By activity within the Organization, we mean in particular the use of PrivMX Software in the creation or development of IT solutions used in the Organization, the creation of other commercial solutions utilizing PrivMX Software, testing PrivMX Software due to its potential use within the Organization, conducting research activities with PrivMX Software within the Organization.
25
-
26
- If in this agreement we use terms such as we, us, our, ours, it refers to Simplito sp. z o.o.
27
-
28
- If in this agreement we use terms such as you, your, yours, etc., it refers to the User who is a party to this license agreement – either an individual or an Organization.
29
-
30
- ## What you can do with PrivMX Software
31
-
32
- As part of the license granted to you to use PrivMX Software, you may use it for your permissible personal use. This means that you have the right, acting as an individual, to use PrivMX Software for your own personal purposes, e.g. to create solutions aimed at contacting family or friends, or to test PrivMX Software functions in regards to your personal interests, knowledge development or individual research activities.
33
-
34
- You may modify PrivMX Software and its source code for your own needs.
35
-
36
- You can use multiple PrivMX Solutions under the terms of this license, however you are obliged to meet the requirements of the license in each case.
37
-
38
- ## What you can’t do with PrivMX Software
39
-
40
- With the exception described below in the next paragraph, you may not use PrivMX Software for commercial purposes. We understand commercial purposes as any activities related to PrivMX Software that meet at least one of the following criteria:
41
- * are aimed at making profit – e.g., creation of your own IT solutions using PrivMX Software and offering them to third parties,
42
- * are used for the internal needs of the Organization – e.g., for communication within the Organization, communication with its customers or other people who interact with the Organization in any way,
43
- * they are used to achieve other objectives of the Organization – e.g., development and research activities, including the creation of its own products or services.
44
-
45
- If you want to use PrivMX Software commercially, you are obliged to purchase a separate commercial license. Detailed information regarding this matter can be found at privmx.com.
46
-
47
- As the User of PrivMX Software, you may not rent, license, distribute, transfer to public repositories, copy for sale, or publish PrivMX Software, its source code and any related materials, derivative works, modified versions and rights.
48
-
49
- You may also not provide PrivMX Software hosting services to third parties.
50
-
51
- ## Exception
52
-
53
- You or your Organization can use PrivMX Software in order to carry out research or development activities related to the creation of your original IT solutions at the stage of development and internal testing. You may do so only until making a given solution production-ready - public or available to customers, members of your own staff, or other end users and 3rd parties.
54
-
55
- ## Copyright notice
56
-
57
- We have full copyright to PrivMX Software. We have the right to decide on its distribution, modification, development, or licensing.
58
-
59
- ## Responsibility
60
-
61
- Unless otherwise required by applicable law or otherwise agreed upon in writing, PrivMX Software is provided on an "as is" basis.
62
-
63
- Other than as provided in this agreement, we make no other warranties, express or implied, and hereby disclaim all implied warranties, including the ones regarding the operation of PrivMX Software.
64
-
65
- You are solely responsible for evaluating whether your use of PrivMX Software is fit for your particular purposes.
66
-
67
- Our liability for damages resulting from the use of PrivMX Software is excluded to the maximum extent permitted by applicable law. Accordingly, we will not be liable to you under any circumstances for any damages, including actual damages or lost profits, that result from the use of PrivMX Software (including damages resulting from damage to the reputation of the company, errors of other computer programs, malfunction of IT systems), even if we have been advised of the possibility of such damages.
68
-
69
- ## Other provisions
70
-
71
- The license indicated in this agreement is granted without territorial limitations, in a non-exclusive, free, and indefinite period.
72
-
73
- We have the right to conduct activities aimed at verifying that your use of PrivMX Software is in accordance with the content of the license granted to you.
74
-
75
- The license is governed by the laws of the Republic of Poland. The license is subject to the jurisdiction of Polish courts. Any disputes related to the license will be resolved by the common courts having jurisdiction over the registered office of our company, unless specific provisions of law say otherwise.
76
-