@xmtp/node-sdk 0.0.31 → 0.0.33
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/package.json +7 -9
- package/dist/index.cjs +0 -701
- package/dist/index.cjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmtp/node-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
4
4
|
"description": "XMTP Node client SDK for interacting with XMTP networks",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xmtp",
|
|
@@ -26,13 +26,11 @@
|
|
|
26
26
|
"exports": {
|
|
27
27
|
".": {
|
|
28
28
|
"types": "./dist/index.d.ts",
|
|
29
|
-
"
|
|
30
|
-
"require": "./dist/index.cjs"
|
|
29
|
+
"default": "./dist/index.js"
|
|
31
30
|
},
|
|
32
31
|
"./package.json": "./package.json"
|
|
33
32
|
},
|
|
34
|
-
"main": "dist/index.
|
|
35
|
-
"module": "dist/index.js",
|
|
33
|
+
"main": "dist/index.js",
|
|
36
34
|
"types": "dist/index.d.ts",
|
|
37
35
|
"files": [
|
|
38
36
|
"dist"
|
|
@@ -50,10 +48,10 @@
|
|
|
50
48
|
"typecheck": "tsc"
|
|
51
49
|
},
|
|
52
50
|
"dependencies": {
|
|
53
|
-
"@xmtp/content-type-group-updated": "^
|
|
54
|
-
"@xmtp/content-type-primitives": "^
|
|
55
|
-
"@xmtp/content-type-text": "^
|
|
56
|
-
"@xmtp/node-bindings": "^0.0.
|
|
51
|
+
"@xmtp/content-type-group-updated": "^2.0.0",
|
|
52
|
+
"@xmtp/content-type-primitives": "^2.0.0",
|
|
53
|
+
"@xmtp/content-type-text": "^2.0.0",
|
|
54
|
+
"@xmtp/node-bindings": "^0.0.29",
|
|
57
55
|
"@xmtp/proto": "^3.72.3"
|
|
58
56
|
},
|
|
59
57
|
"devDependencies": {
|
package/dist/index.cjs
DELETED
|
@@ -1,701 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var node_path = require('node:path');
|
|
4
|
-
var process = require('node:process');
|
|
5
|
-
var contentTypeGroupUpdated = require('@xmtp/content-type-group-updated');
|
|
6
|
-
var contentTypeText = require('@xmtp/content-type-text');
|
|
7
|
-
var nodeBindings = require('@xmtp/node-bindings');
|
|
8
|
-
var contentTypePrimitives = require('@xmtp/content-type-primitives');
|
|
9
|
-
|
|
10
|
-
class AsyncStream {
|
|
11
|
-
#done = false;
|
|
12
|
-
#resolveNext;
|
|
13
|
-
#queue;
|
|
14
|
-
onReturn = undefined;
|
|
15
|
-
constructor() {
|
|
16
|
-
this.#queue = [];
|
|
17
|
-
this.#resolveNext = null;
|
|
18
|
-
this.#done = false;
|
|
19
|
-
}
|
|
20
|
-
get isDone() {
|
|
21
|
-
return this.#done;
|
|
22
|
-
}
|
|
23
|
-
callback = (error, value) => {
|
|
24
|
-
if (error) {
|
|
25
|
-
throw error;
|
|
26
|
-
}
|
|
27
|
-
if (this.#done) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (this.#resolveNext) {
|
|
31
|
-
this.#resolveNext({
|
|
32
|
-
done: false,
|
|
33
|
-
value,
|
|
34
|
-
});
|
|
35
|
-
this.#resolveNext = null;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this.#queue.push(value);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
next = () => {
|
|
42
|
-
if (this.#queue.length > 0) {
|
|
43
|
-
return Promise.resolve({
|
|
44
|
-
done: false,
|
|
45
|
-
value: this.#queue.shift(),
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else if (this.#done) {
|
|
49
|
-
return Promise.resolve({
|
|
50
|
-
done: true,
|
|
51
|
-
value: undefined,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return new Promise((resolve) => {
|
|
56
|
-
this.#resolveNext = resolve;
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
return = (value) => {
|
|
61
|
-
this.#done = true;
|
|
62
|
-
this.onReturn?.();
|
|
63
|
-
return Promise.resolve({
|
|
64
|
-
done: true,
|
|
65
|
-
value,
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
[Symbol.asyncIterator]() {
|
|
69
|
-
return this;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function nsToDate(ns) {
|
|
74
|
-
return new Date(ns / 1_000_000);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
class DecodedMessage {
|
|
78
|
-
#client;
|
|
79
|
-
content;
|
|
80
|
-
contentType;
|
|
81
|
-
conversationId;
|
|
82
|
-
deliveryStatus;
|
|
83
|
-
fallback;
|
|
84
|
-
compression;
|
|
85
|
-
id;
|
|
86
|
-
kind;
|
|
87
|
-
parameters;
|
|
88
|
-
senderInboxId;
|
|
89
|
-
sentAt;
|
|
90
|
-
sentAtNs;
|
|
91
|
-
constructor(client, message) {
|
|
92
|
-
this.#client = client;
|
|
93
|
-
this.id = message.id;
|
|
94
|
-
this.sentAtNs = message.sentAtNs;
|
|
95
|
-
this.sentAt = nsToDate(message.sentAtNs);
|
|
96
|
-
this.conversationId = message.convoId;
|
|
97
|
-
this.senderInboxId = message.senderInboxId;
|
|
98
|
-
switch (message.kind) {
|
|
99
|
-
case 0 /* GroupMessageKind.Application */:
|
|
100
|
-
this.kind = "application";
|
|
101
|
-
break;
|
|
102
|
-
case 1 /* GroupMessageKind.MembershipChange */:
|
|
103
|
-
this.kind = "membership_change";
|
|
104
|
-
break;
|
|
105
|
-
// no default
|
|
106
|
-
}
|
|
107
|
-
switch (message.deliveryStatus) {
|
|
108
|
-
case 0 /* DeliveryStatus.Unpublished */:
|
|
109
|
-
this.deliveryStatus = "unpublished";
|
|
110
|
-
break;
|
|
111
|
-
case 1 /* DeliveryStatus.Published */:
|
|
112
|
-
this.deliveryStatus = "published";
|
|
113
|
-
break;
|
|
114
|
-
case 2 /* DeliveryStatus.Failed */:
|
|
115
|
-
this.deliveryStatus = "failed";
|
|
116
|
-
break;
|
|
117
|
-
// no default
|
|
118
|
-
}
|
|
119
|
-
this.contentType = message.content.type
|
|
120
|
-
? new contentTypePrimitives.ContentTypeId(message.content.type)
|
|
121
|
-
: undefined;
|
|
122
|
-
this.parameters = message.content.parameters;
|
|
123
|
-
this.fallback = message.content.fallback;
|
|
124
|
-
this.compression = message.content.compression;
|
|
125
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
126
|
-
this.content = this.contentType
|
|
127
|
-
? this.#client.decodeContent(message, this.contentType)
|
|
128
|
-
: undefined;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
class Conversation {
|
|
133
|
-
#client;
|
|
134
|
-
#group;
|
|
135
|
-
constructor(client, group) {
|
|
136
|
-
this.#client = client;
|
|
137
|
-
this.#group = group;
|
|
138
|
-
}
|
|
139
|
-
get id() {
|
|
140
|
-
return this.#group.id();
|
|
141
|
-
}
|
|
142
|
-
get name() {
|
|
143
|
-
return this.#group.groupName();
|
|
144
|
-
}
|
|
145
|
-
async updateName(name) {
|
|
146
|
-
return this.#group.updateGroupName(name);
|
|
147
|
-
}
|
|
148
|
-
get imageUrl() {
|
|
149
|
-
return this.#group.groupImageUrlSquare();
|
|
150
|
-
}
|
|
151
|
-
async updateImageUrl(imageUrl) {
|
|
152
|
-
return this.#group.updateGroupImageUrlSquare(imageUrl);
|
|
153
|
-
}
|
|
154
|
-
get description() {
|
|
155
|
-
return this.#group.groupDescription();
|
|
156
|
-
}
|
|
157
|
-
async updateDescription(description) {
|
|
158
|
-
return this.#group.updateGroupDescription(description);
|
|
159
|
-
}
|
|
160
|
-
get pinnedFrameUrl() {
|
|
161
|
-
return this.#group.groupPinnedFrameUrl();
|
|
162
|
-
}
|
|
163
|
-
async updatePinnedFrameUrl(pinnedFrameUrl) {
|
|
164
|
-
return this.#group.updateGroupPinnedFrameUrl(pinnedFrameUrl);
|
|
165
|
-
}
|
|
166
|
-
get isActive() {
|
|
167
|
-
return this.#group.isActive();
|
|
168
|
-
}
|
|
169
|
-
get addedByInboxId() {
|
|
170
|
-
return this.#group.addedByInboxId();
|
|
171
|
-
}
|
|
172
|
-
get createdAtNs() {
|
|
173
|
-
return this.#group.createdAtNs();
|
|
174
|
-
}
|
|
175
|
-
get createdAt() {
|
|
176
|
-
return nsToDate(this.createdAtNs);
|
|
177
|
-
}
|
|
178
|
-
get metadata() {
|
|
179
|
-
const metadata = this.#group.groupMetadata();
|
|
180
|
-
return {
|
|
181
|
-
creatorInboxId: metadata.creatorInboxId(),
|
|
182
|
-
conversationType: metadata.conversationType(),
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
async members() {
|
|
186
|
-
return this.#group.listMembers();
|
|
187
|
-
}
|
|
188
|
-
get admins() {
|
|
189
|
-
return this.#group.adminList();
|
|
190
|
-
}
|
|
191
|
-
get superAdmins() {
|
|
192
|
-
return this.#group.superAdminList();
|
|
193
|
-
}
|
|
194
|
-
get permissions() {
|
|
195
|
-
return {
|
|
196
|
-
policyType: this.#group.groupPermissions().policyType(),
|
|
197
|
-
policySet: this.#group.groupPermissions().policySet(),
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
isAdmin(inboxId) {
|
|
201
|
-
return this.#group.isAdmin(inboxId);
|
|
202
|
-
}
|
|
203
|
-
isSuperAdmin(inboxId) {
|
|
204
|
-
return this.#group.isSuperAdmin(inboxId);
|
|
205
|
-
}
|
|
206
|
-
async sync() {
|
|
207
|
-
return this.#group.sync();
|
|
208
|
-
}
|
|
209
|
-
stream(callback) {
|
|
210
|
-
const asyncStream = new AsyncStream();
|
|
211
|
-
const stream = this.#group.stream((error, value) => {
|
|
212
|
-
const message = value
|
|
213
|
-
? new DecodedMessage(this.#client, value)
|
|
214
|
-
: undefined;
|
|
215
|
-
asyncStream.callback(error, message);
|
|
216
|
-
callback?.(error, message);
|
|
217
|
-
});
|
|
218
|
-
asyncStream.onReturn = stream.end.bind(stream);
|
|
219
|
-
return asyncStream;
|
|
220
|
-
}
|
|
221
|
-
async addMembers(accountAddresses) {
|
|
222
|
-
return this.#group.addMembers(accountAddresses);
|
|
223
|
-
}
|
|
224
|
-
async addMembersByInboxId(inboxIds) {
|
|
225
|
-
return this.#group.addMembersByInboxId(inboxIds);
|
|
226
|
-
}
|
|
227
|
-
async removeMembers(accountAddresses) {
|
|
228
|
-
return this.#group.removeMembers(accountAddresses);
|
|
229
|
-
}
|
|
230
|
-
async removeMembersByInboxId(inboxIds) {
|
|
231
|
-
return this.#group.removeMembersByInboxId(inboxIds);
|
|
232
|
-
}
|
|
233
|
-
async addAdmin(inboxId) {
|
|
234
|
-
return this.#group.addAdmin(inboxId);
|
|
235
|
-
}
|
|
236
|
-
async removeAdmin(inboxId) {
|
|
237
|
-
return this.#group.removeAdmin(inboxId);
|
|
238
|
-
}
|
|
239
|
-
async addSuperAdmin(inboxId) {
|
|
240
|
-
return this.#group.addSuperAdmin(inboxId);
|
|
241
|
-
}
|
|
242
|
-
async removeSuperAdmin(inboxId) {
|
|
243
|
-
return this.#group.removeSuperAdmin(inboxId);
|
|
244
|
-
}
|
|
245
|
-
async publishMessages() {
|
|
246
|
-
return this.#group.publishMessages();
|
|
247
|
-
}
|
|
248
|
-
sendOptimistic(content, contentType) {
|
|
249
|
-
if (typeof content !== "string" && !contentType) {
|
|
250
|
-
throw new Error("Content type is required when sending content other than text");
|
|
251
|
-
}
|
|
252
|
-
const encodedContent = typeof content === "string"
|
|
253
|
-
? this.#client.encodeContent(content, contentType ?? contentTypeText.ContentTypeText)
|
|
254
|
-
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
255
|
-
this.#client.encodeContent(content, contentType);
|
|
256
|
-
return this.#group.sendOptimistic(encodedContent);
|
|
257
|
-
}
|
|
258
|
-
async send(content, contentType) {
|
|
259
|
-
if (typeof content !== "string" && !contentType) {
|
|
260
|
-
throw new Error("Content type is required when sending content other than text");
|
|
261
|
-
}
|
|
262
|
-
const encodedContent = typeof content === "string"
|
|
263
|
-
? this.#client.encodeContent(content, contentType ?? contentTypeText.ContentTypeText)
|
|
264
|
-
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
265
|
-
this.#client.encodeContent(content, contentType);
|
|
266
|
-
return this.#group.send(encodedContent);
|
|
267
|
-
}
|
|
268
|
-
messages(options) {
|
|
269
|
-
return (this.#group
|
|
270
|
-
.findMessages(options)
|
|
271
|
-
.map((message) => new DecodedMessage(this.#client, message))
|
|
272
|
-
// filter out messages without content
|
|
273
|
-
.filter((message) => message.content !== undefined));
|
|
274
|
-
}
|
|
275
|
-
get consentState() {
|
|
276
|
-
return this.#group.consentState();
|
|
277
|
-
}
|
|
278
|
-
updateConsentState(consentState) {
|
|
279
|
-
this.#group.updateConsentState(consentState);
|
|
280
|
-
}
|
|
281
|
-
get dmPeerInboxId() {
|
|
282
|
-
return this.#group.dmPeerInboxId();
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
class Conversations {
|
|
287
|
-
#client;
|
|
288
|
-
#conversations;
|
|
289
|
-
constructor(client, conversations) {
|
|
290
|
-
this.#client = client;
|
|
291
|
-
this.#conversations = conversations;
|
|
292
|
-
}
|
|
293
|
-
getConversationById(id) {
|
|
294
|
-
try {
|
|
295
|
-
// findGroupById will throw if group is not found
|
|
296
|
-
const group = this.#conversations.findGroupById(id);
|
|
297
|
-
return new Conversation(this.#client, group);
|
|
298
|
-
}
|
|
299
|
-
catch {
|
|
300
|
-
return null;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
getDmByInboxId(inboxId) {
|
|
304
|
-
try {
|
|
305
|
-
// findDmByTargetInboxId will throw if group is not found
|
|
306
|
-
const group = this.#conversations.findDmByTargetInboxId(inboxId);
|
|
307
|
-
return new Conversation(this.#client, group);
|
|
308
|
-
}
|
|
309
|
-
catch {
|
|
310
|
-
return null;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
getMessageById(id) {
|
|
314
|
-
try {
|
|
315
|
-
// findMessageById will throw if message is not found
|
|
316
|
-
const message = this.#conversations.findMessageById(id);
|
|
317
|
-
return new DecodedMessage(this.#client, message);
|
|
318
|
-
}
|
|
319
|
-
catch {
|
|
320
|
-
return null;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
async newGroup(accountAddresses, options) {
|
|
324
|
-
const group = await this.#conversations.createGroup(accountAddresses, options);
|
|
325
|
-
const conversation = new Conversation(this.#client, group);
|
|
326
|
-
return conversation;
|
|
327
|
-
}
|
|
328
|
-
async newDm(accountAddress) {
|
|
329
|
-
const group = await this.#conversations.createDm(accountAddress);
|
|
330
|
-
const conversation = new Conversation(this.#client, group);
|
|
331
|
-
return conversation;
|
|
332
|
-
}
|
|
333
|
-
async list(options) {
|
|
334
|
-
const groups = await this.#conversations.list(options);
|
|
335
|
-
return groups.map((group) => {
|
|
336
|
-
const conversation = new Conversation(this.#client, group);
|
|
337
|
-
return conversation;
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
async listGroups(options) {
|
|
341
|
-
const groups = await this.#conversations.listGroups(options);
|
|
342
|
-
return groups.map((group) => {
|
|
343
|
-
const conversation = new Conversation(this.#client, group);
|
|
344
|
-
return conversation;
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
async listDms(options) {
|
|
348
|
-
const groups = await this.#conversations.listDms(options);
|
|
349
|
-
return groups.map((group) => {
|
|
350
|
-
const conversation = new Conversation(this.#client, group);
|
|
351
|
-
return conversation;
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
async sync() {
|
|
355
|
-
return this.#conversations.sync();
|
|
356
|
-
}
|
|
357
|
-
async syncAll() {
|
|
358
|
-
return this.#conversations.syncAllConversations();
|
|
359
|
-
}
|
|
360
|
-
stream(callback) {
|
|
361
|
-
const asyncStream = new AsyncStream();
|
|
362
|
-
const stream = this.#conversations.stream((err, value) => {
|
|
363
|
-
const conversation = value
|
|
364
|
-
? new Conversation(this.#client, value)
|
|
365
|
-
: undefined;
|
|
366
|
-
asyncStream.callback(err, conversation);
|
|
367
|
-
callback?.(err, conversation);
|
|
368
|
-
});
|
|
369
|
-
asyncStream.onReturn = stream.end.bind(stream);
|
|
370
|
-
return asyncStream;
|
|
371
|
-
}
|
|
372
|
-
streamGroups(callback) {
|
|
373
|
-
const asyncStream = new AsyncStream();
|
|
374
|
-
const stream = this.#conversations.streamGroups((err, value) => {
|
|
375
|
-
const conversation = value
|
|
376
|
-
? new Conversation(this.#client, value)
|
|
377
|
-
: undefined;
|
|
378
|
-
asyncStream.callback(err, conversation);
|
|
379
|
-
callback?.(err, conversation);
|
|
380
|
-
});
|
|
381
|
-
asyncStream.onReturn = stream.end.bind(stream);
|
|
382
|
-
return asyncStream;
|
|
383
|
-
}
|
|
384
|
-
streamDms(callback) {
|
|
385
|
-
const asyncStream = new AsyncStream();
|
|
386
|
-
const stream = this.#conversations.streamDms((err, value) => {
|
|
387
|
-
const conversation = value
|
|
388
|
-
? new Conversation(this.#client, value)
|
|
389
|
-
: undefined;
|
|
390
|
-
asyncStream.callback(err, conversation);
|
|
391
|
-
callback?.(err, conversation);
|
|
392
|
-
});
|
|
393
|
-
asyncStream.onReturn = stream.end.bind(stream);
|
|
394
|
-
return asyncStream;
|
|
395
|
-
}
|
|
396
|
-
async streamAllMessages(callback) {
|
|
397
|
-
// sync conversations first
|
|
398
|
-
await this.sync();
|
|
399
|
-
const asyncStream = new AsyncStream();
|
|
400
|
-
const stream = this.#conversations.streamAllMessages((err, value) => {
|
|
401
|
-
const decodedMessage = value
|
|
402
|
-
? new DecodedMessage(this.#client, value)
|
|
403
|
-
: undefined;
|
|
404
|
-
asyncStream.callback(err, decodedMessage);
|
|
405
|
-
callback?.(err, decodedMessage);
|
|
406
|
-
});
|
|
407
|
-
asyncStream.onReturn = stream.end.bind(stream);
|
|
408
|
-
return asyncStream;
|
|
409
|
-
}
|
|
410
|
-
async streamAllGroupMessages(callback) {
|
|
411
|
-
// sync conversations first
|
|
412
|
-
await this.sync();
|
|
413
|
-
const asyncStream = new AsyncStream();
|
|
414
|
-
const stream = this.#conversations.streamAllGroupMessages((err, value) => {
|
|
415
|
-
const decodedMessage = value
|
|
416
|
-
? new DecodedMessage(this.#client, value)
|
|
417
|
-
: undefined;
|
|
418
|
-
asyncStream.callback(err, decodedMessage);
|
|
419
|
-
callback?.(err, decodedMessage);
|
|
420
|
-
});
|
|
421
|
-
asyncStream.onReturn = stream.end.bind(stream);
|
|
422
|
-
return asyncStream;
|
|
423
|
-
}
|
|
424
|
-
async streamAllDmMessages(callback) {
|
|
425
|
-
// sync conversations first
|
|
426
|
-
await this.sync();
|
|
427
|
-
const asyncStream = new AsyncStream();
|
|
428
|
-
const stream = this.#conversations.streamAllDmMessages((err, value) => {
|
|
429
|
-
const decodedMessage = value
|
|
430
|
-
? new DecodedMessage(this.#client, value)
|
|
431
|
-
: undefined;
|
|
432
|
-
asyncStream.callback(err, decodedMessage);
|
|
433
|
-
callback?.(err, decodedMessage);
|
|
434
|
-
});
|
|
435
|
-
asyncStream.onReturn = stream.end.bind(stream);
|
|
436
|
-
return asyncStream;
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
const isSmartContractSigner = (signer) => "getBlockNumber" in signer && "getChainId" in signer;
|
|
441
|
-
|
|
442
|
-
const ApiUrls = {
|
|
443
|
-
local: "http://localhost:5556",
|
|
444
|
-
dev: "https://grpc.dev.xmtp.network:443",
|
|
445
|
-
production: "https://grpc.production.xmtp.network:443",
|
|
446
|
-
};
|
|
447
|
-
class Client {
|
|
448
|
-
#innerClient;
|
|
449
|
-
#conversations;
|
|
450
|
-
#signer;
|
|
451
|
-
#codecs;
|
|
452
|
-
constructor(client, signer, codecs) {
|
|
453
|
-
this.#innerClient = client;
|
|
454
|
-
this.#conversations = new Conversations(this, client.conversations());
|
|
455
|
-
this.#signer = signer;
|
|
456
|
-
this.#codecs = new Map(codecs.map((codec) => [codec.contentType.toString(), codec]));
|
|
457
|
-
}
|
|
458
|
-
static async create(signer, encryptionKey, options) {
|
|
459
|
-
const accountAddress = await signer.getAddress();
|
|
460
|
-
const host = options?.apiUrl ?? ApiUrls[options?.env ?? "dev"];
|
|
461
|
-
const isSecure = host.startsWith("https");
|
|
462
|
-
const dbPath = options?.dbPath ??
|
|
463
|
-
node_path.join(process.cwd(), `xmtp-${options?.env ?? "dev"}-${accountAddress}.db3`);
|
|
464
|
-
const inboxId = (await nodeBindings.getInboxIdForAddress(host, isSecure, accountAddress)) ||
|
|
465
|
-
nodeBindings.generateInboxId(accountAddress);
|
|
466
|
-
const logOptions = {
|
|
467
|
-
structured: options?.structuredLogging ?? false,
|
|
468
|
-
level: options?.loggingLevel ?? "off" /* LogLevel.off */,
|
|
469
|
-
};
|
|
470
|
-
const client = new Client(await nodeBindings.createClient(host, isSecure, dbPath, inboxId, accountAddress, encryptionKey, options?.requestHistorySync, logOptions), signer, [new contentTypeGroupUpdated.GroupUpdatedCodec(), new contentTypeText.TextCodec(), ...(options?.codecs ?? [])]);
|
|
471
|
-
if (!options?.disableAutoRegister) {
|
|
472
|
-
await client.register();
|
|
473
|
-
}
|
|
474
|
-
return client;
|
|
475
|
-
}
|
|
476
|
-
get accountAddress() {
|
|
477
|
-
return this.#innerClient.accountAddress;
|
|
478
|
-
}
|
|
479
|
-
get inboxId() {
|
|
480
|
-
return this.#innerClient.inboxId();
|
|
481
|
-
}
|
|
482
|
-
get installationId() {
|
|
483
|
-
return this.#innerClient.installationId();
|
|
484
|
-
}
|
|
485
|
-
get installationIdBytes() {
|
|
486
|
-
return this.#innerClient.installationIdBytes();
|
|
487
|
-
}
|
|
488
|
-
get isRegistered() {
|
|
489
|
-
return this.#innerClient.isRegistered();
|
|
490
|
-
}
|
|
491
|
-
async #createInboxSignatureText() {
|
|
492
|
-
try {
|
|
493
|
-
const signatureText = await this.#innerClient.createInboxSignatureText();
|
|
494
|
-
return signatureText;
|
|
495
|
-
}
|
|
496
|
-
catch {
|
|
497
|
-
return null;
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
async #addAccountSignatureText(newAccountAddress) {
|
|
501
|
-
try {
|
|
502
|
-
const signatureText = await this.#innerClient.addWalletSignatureText(newAccountAddress);
|
|
503
|
-
return signatureText;
|
|
504
|
-
}
|
|
505
|
-
catch {
|
|
506
|
-
return null;
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
async #removeAccountSignatureText(accountAddress) {
|
|
510
|
-
try {
|
|
511
|
-
const signatureText = await this.#innerClient.revokeWalletSignatureText(accountAddress);
|
|
512
|
-
return signatureText;
|
|
513
|
-
}
|
|
514
|
-
catch {
|
|
515
|
-
return null;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
async #revokeInstallationsSignatureText() {
|
|
519
|
-
try {
|
|
520
|
-
const signatureText = await this.#innerClient.revokeInstallationsSignatureText();
|
|
521
|
-
return signatureText;
|
|
522
|
-
}
|
|
523
|
-
catch {
|
|
524
|
-
return null;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
async #addSignature(signatureType, signatureText, signer) {
|
|
528
|
-
const signature = await signer.signMessage(signatureText);
|
|
529
|
-
if (isSmartContractSigner(signer)) {
|
|
530
|
-
await this.#innerClient.addScwSignature(signatureType, signature, signer.getChainId(), signer.getBlockNumber());
|
|
531
|
-
}
|
|
532
|
-
else {
|
|
533
|
-
await this.#innerClient.addSignature(signatureType, signature);
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
async #applySignatures() {
|
|
537
|
-
return this.#innerClient.applySignatureRequests();
|
|
538
|
-
}
|
|
539
|
-
async register() {
|
|
540
|
-
const signatureText = await this.#createInboxSignatureText();
|
|
541
|
-
// if the signature text is not available, the client is already registered
|
|
542
|
-
if (!signatureText) {
|
|
543
|
-
return;
|
|
544
|
-
}
|
|
545
|
-
await this.#addSignature(1 /* SignatureRequestType.CreateInbox */, signatureText, this.#signer);
|
|
546
|
-
return this.#innerClient.registerIdentity();
|
|
547
|
-
}
|
|
548
|
-
async addAccount(newAccountSigner) {
|
|
549
|
-
const signatureText = await this.#addAccountSignatureText(await newAccountSigner.getAddress());
|
|
550
|
-
if (!signatureText) {
|
|
551
|
-
throw new Error("Unable to generate add account signature text");
|
|
552
|
-
}
|
|
553
|
-
await this.#addSignature(0 /* SignatureRequestType.AddWallet */, signatureText, newAccountSigner);
|
|
554
|
-
await this.#applySignatures();
|
|
555
|
-
}
|
|
556
|
-
async removeAccount(accountAddress) {
|
|
557
|
-
const signatureText = await this.#removeAccountSignatureText(accountAddress);
|
|
558
|
-
if (!signatureText) {
|
|
559
|
-
throw new Error("Unable to generate remove account signature text");
|
|
560
|
-
}
|
|
561
|
-
await this.#addSignature(2 /* SignatureRequestType.RevokeWallet */, signatureText, this.#signer);
|
|
562
|
-
await this.#applySignatures();
|
|
563
|
-
}
|
|
564
|
-
async revokeInstallations() {
|
|
565
|
-
const signatureText = await this.#revokeInstallationsSignatureText();
|
|
566
|
-
if (!signatureText) {
|
|
567
|
-
throw new Error("Unable to generate revoke installations signature text");
|
|
568
|
-
}
|
|
569
|
-
await this.#addSignature(3 /* SignatureRequestType.RevokeInstallations */, signatureText, this.#signer);
|
|
570
|
-
await this.#applySignatures();
|
|
571
|
-
}
|
|
572
|
-
async canMessage(accountAddresses) {
|
|
573
|
-
const canMessage = await this.#innerClient.canMessage(accountAddresses);
|
|
574
|
-
return new Map(Object.entries(canMessage));
|
|
575
|
-
}
|
|
576
|
-
static async canMessage(accountAddresses, env) {
|
|
577
|
-
const accountAddress = "0x0000000000000000000000000000000000000000";
|
|
578
|
-
const host = ApiUrls[env ?? "dev"];
|
|
579
|
-
const isSecure = host.startsWith("https");
|
|
580
|
-
const inboxId = (await nodeBindings.getInboxIdForAddress(host, isSecure, accountAddress)) ||
|
|
581
|
-
nodeBindings.generateInboxId(accountAddress);
|
|
582
|
-
const signer = {
|
|
583
|
-
getAddress: () => accountAddress,
|
|
584
|
-
signMessage: () => new Uint8Array(),
|
|
585
|
-
};
|
|
586
|
-
const client = new Client(await nodeBindings.createClient(host, isSecure, undefined, inboxId, accountAddress), signer, []);
|
|
587
|
-
return client.canMessage(accountAddresses);
|
|
588
|
-
}
|
|
589
|
-
get conversations() {
|
|
590
|
-
return this.#conversations;
|
|
591
|
-
}
|
|
592
|
-
codecFor(contentType) {
|
|
593
|
-
return this.#codecs.get(contentType.toString());
|
|
594
|
-
}
|
|
595
|
-
encodeContent(content, contentType) {
|
|
596
|
-
const codec = this.codecFor(contentType);
|
|
597
|
-
if (!codec) {
|
|
598
|
-
throw new Error(`no codec for ${contentType.toString()}`);
|
|
599
|
-
}
|
|
600
|
-
const encoded = codec.encode(content, this);
|
|
601
|
-
const fallback = codec.fallback(content);
|
|
602
|
-
if (fallback) {
|
|
603
|
-
encoded.fallback = fallback;
|
|
604
|
-
}
|
|
605
|
-
return encoded;
|
|
606
|
-
}
|
|
607
|
-
decodeContent(message, contentType) {
|
|
608
|
-
const codec = this.codecFor(contentType);
|
|
609
|
-
if (!codec) {
|
|
610
|
-
throw new Error(`no codec for ${contentType.toString()}`);
|
|
611
|
-
}
|
|
612
|
-
// throw an error if there's an invalid group membership change message
|
|
613
|
-
if (contentType.sameAs(contentTypeGroupUpdated.ContentTypeGroupUpdated) &&
|
|
614
|
-
message.kind !== 1 /* GroupMessageKind.MembershipChange */) {
|
|
615
|
-
throw new Error("Error decoding group membership change");
|
|
616
|
-
}
|
|
617
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
618
|
-
return codec.decode(message.content, this);
|
|
619
|
-
}
|
|
620
|
-
async requestHistorySync() {
|
|
621
|
-
return this.#innerClient.sendHistorySyncRequest();
|
|
622
|
-
}
|
|
623
|
-
async getInboxIdByAddress(accountAddress) {
|
|
624
|
-
return this.#innerClient.findInboxIdByAddress(accountAddress);
|
|
625
|
-
}
|
|
626
|
-
async inboxState(refreshFromNetwork = false) {
|
|
627
|
-
return this.#innerClient.inboxState(refreshFromNetwork);
|
|
628
|
-
}
|
|
629
|
-
async getLatestInboxState(inboxId) {
|
|
630
|
-
return this.#innerClient.getLatestInboxState(inboxId);
|
|
631
|
-
}
|
|
632
|
-
async inboxStateFromInboxIds(inboxIds, refreshFromNetwork) {
|
|
633
|
-
return this.#innerClient.addressesFromInboxId(refreshFromNetwork ?? false, inboxIds);
|
|
634
|
-
}
|
|
635
|
-
async setConsentStates(consentStates) {
|
|
636
|
-
return this.#innerClient.setConsentStates(consentStates);
|
|
637
|
-
}
|
|
638
|
-
async getConsentState(entityType, entity) {
|
|
639
|
-
return this.#innerClient.getConsentState(entityType, entity);
|
|
640
|
-
}
|
|
641
|
-
signWithInstallationKey(signatureText) {
|
|
642
|
-
return this.#innerClient.signWithInstallationKey(signatureText);
|
|
643
|
-
}
|
|
644
|
-
verifySignedWithInstallationKey(signatureText, signatureBytes) {
|
|
645
|
-
try {
|
|
646
|
-
this.#innerClient.verifySignedWithInstallationKey(signatureText, signatureBytes);
|
|
647
|
-
return true;
|
|
648
|
-
}
|
|
649
|
-
catch {
|
|
650
|
-
return false;
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
static verifySignedWithPublicKey(signatureText, signatureBytes, publicKey) {
|
|
654
|
-
try {
|
|
655
|
-
nodeBindings.verifySignedWithPublicKey(signatureText, signatureBytes, publicKey);
|
|
656
|
-
return true;
|
|
657
|
-
}
|
|
658
|
-
catch {
|
|
659
|
-
return false;
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
static async isAddressAuthorized(inboxId, address, options) {
|
|
663
|
-
const host = options?.apiUrl || ApiUrls[options?.env || "dev"];
|
|
664
|
-
return await nodeBindings.isAddressAuthorized(host, inboxId, address);
|
|
665
|
-
}
|
|
666
|
-
static async isInstallationAuthorized(inboxId, installation, options) {
|
|
667
|
-
const host = options?.apiUrl || ApiUrls[options?.env || "dev"];
|
|
668
|
-
return await nodeBindings.isInstallationAuthorized(host, inboxId, installation);
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
const generateInboxId = (accountAddress) => {
|
|
673
|
-
return nodeBindings.generateInboxId(accountAddress);
|
|
674
|
-
};
|
|
675
|
-
const getInboxIdForAddress = async (accountAddress, env = "dev") => {
|
|
676
|
-
const host = ApiUrls[env];
|
|
677
|
-
const isSecure = host.startsWith("https");
|
|
678
|
-
return nodeBindings.getInboxIdForAddress(host, isSecure, accountAddress);
|
|
679
|
-
};
|
|
680
|
-
|
|
681
|
-
Object.defineProperty(exports, "GroupMember", {
|
|
682
|
-
enumerable: true,
|
|
683
|
-
get: function () { return nodeBindings.GroupMember; }
|
|
684
|
-
});
|
|
685
|
-
Object.defineProperty(exports, "GroupMetadata", {
|
|
686
|
-
enumerable: true,
|
|
687
|
-
get: function () { return nodeBindings.GroupMetadata; }
|
|
688
|
-
});
|
|
689
|
-
Object.defineProperty(exports, "GroupPermissions", {
|
|
690
|
-
enumerable: true,
|
|
691
|
-
get: function () { return nodeBindings.GroupPermissions; }
|
|
692
|
-
});
|
|
693
|
-
exports.ApiUrls = ApiUrls;
|
|
694
|
-
exports.Client = Client;
|
|
695
|
-
exports.Conversation = Conversation;
|
|
696
|
-
exports.Conversations = Conversations;
|
|
697
|
-
exports.DecodedMessage = DecodedMessage;
|
|
698
|
-
exports.generateInboxId = generateInboxId;
|
|
699
|
-
exports.getInboxIdForAddress = getInboxIdForAddress;
|
|
700
|
-
exports.isSmartContractSigner = isSmartContractSigner;
|
|
701
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/AsyncStream.ts","../src/helpers/date.ts","../src/DecodedMessage.ts","../src/Conversation.ts","../src/Conversations.ts","../src/helpers/signer.ts","../src/Client.ts","../src/helpers/inboxId.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["ContentTypeId","ContentTypeText","join","getInboxIdForAddress","generateInboxId","createClient","GroupUpdatedCodec","TextCodec","ContentTypeGroupUpdated","verifySignedWithPublicKeyBinding","isAddressAuthorizedBinding","isInstallationAuthorizedBinding","generateInboxIdBinding","getInboxIdForAddressBinding"],"mappings":"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"}
|