@vex-chat/libvex 6.7.0 → 7.0.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.
- package/dist/Client.d.ts +18 -7
- package/dist/Client.d.ts.map +1 -1
- package/dist/Client.js +220 -124
- package/dist/Client.js.map +1 -1
- package/dist/Storage.d.ts +6 -0
- package/dist/Storage.d.ts.map +1 -1
- package/dist/__tests__/harness/memory-storage.d.ts +2 -1
- package/dist/__tests__/harness/memory-storage.d.ts.map +1 -1
- package/dist/__tests__/harness/memory-storage.js +27 -0
- package/dist/__tests__/harness/memory-storage.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/messageExtra.d.ts +132 -0
- package/dist/messageExtra.d.ts.map +1 -0
- package/dist/messageExtra.js +487 -0
- package/dist/messageExtra.js.map +1 -0
- package/dist/storage/sqlite.d.ts +2 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +47 -1
- package/dist/storage/sqlite.js.map +1 -1
- package/package.json +4 -4
- package/src/Client.ts +330 -168
- package/src/Storage.ts +11 -0
- package/src/__tests__/harness/memory-storage.ts +42 -1
- package/src/__tests__/messageExtra.test.ts +135 -0
- package/src/index.ts +34 -1
- package/src/messageExtra.ts +730 -0
- package/src/storage/sqlite.ts +65 -3
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-2026 Vex Heavy Industries LLC
|
|
3
|
+
* Licensed under AGPL-3.0. See LICENSE for details.
|
|
4
|
+
* Commercial licenses available at vex.wtf
|
|
5
|
+
*/
|
|
6
|
+
export const MESSAGE_EXTRA_VERSION = 1;
|
|
7
|
+
export function createMessageDeleteBatchEventExtra(targetMailIDs, currentExtra) {
|
|
8
|
+
return serializeMessageExtra({
|
|
9
|
+
...parseMessageExtra(currentExtra),
|
|
10
|
+
messageDeleteEvent: {
|
|
11
|
+
action: "delete",
|
|
12
|
+
targetMailIDs,
|
|
13
|
+
},
|
|
14
|
+
version: MESSAGE_EXTRA_VERSION,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function createMessageDeleteEventExtra(targetMailID, currentExtra) {
|
|
18
|
+
return serializeMessageExtra({
|
|
19
|
+
...parseMessageExtra(currentExtra),
|
|
20
|
+
messageDeleteEvent: {
|
|
21
|
+
action: "delete",
|
|
22
|
+
targetMailID,
|
|
23
|
+
},
|
|
24
|
+
version: MESSAGE_EXTRA_VERSION,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export function createMessageEmbedExtra(embed, currentExtra) {
|
|
28
|
+
return serializeMessageExtra({
|
|
29
|
+
...parseMessageExtra(currentExtra),
|
|
30
|
+
embed,
|
|
31
|
+
version: MESSAGE_EXTRA_VERSION,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export function createMessageUpdateEventExtra(targetMailID, message, currentExtra) {
|
|
35
|
+
return serializeMessageExtra({
|
|
36
|
+
...parseMessageExtra(currentExtra),
|
|
37
|
+
messageUpdateEvent: {
|
|
38
|
+
action: "update",
|
|
39
|
+
message,
|
|
40
|
+
targetMailID,
|
|
41
|
+
},
|
|
42
|
+
version: MESSAGE_EXTRA_VERSION,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function parseMessageExtra(extra) {
|
|
46
|
+
if (!extra) {
|
|
47
|
+
return { version: MESSAGE_EXTRA_VERSION };
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const raw = JSON.parse(extra);
|
|
51
|
+
if (!isRecord(raw)) {
|
|
52
|
+
return { version: MESSAGE_EXTRA_VERSION };
|
|
53
|
+
}
|
|
54
|
+
const rest = { ...raw };
|
|
55
|
+
delete rest["embed"];
|
|
56
|
+
delete rest["messageDeleteEvent"];
|
|
57
|
+
delete rest["messageUpdateEvent"];
|
|
58
|
+
delete rest["reactionEvent"];
|
|
59
|
+
delete rest["reactions"];
|
|
60
|
+
delete rest["version"];
|
|
61
|
+
const embed = parseMessageEmbed(raw["embed"]);
|
|
62
|
+
const messageDeleteEvent = parseMessageDeleteEvent(raw["messageDeleteEvent"]);
|
|
63
|
+
const messageUpdateEvent = parseMessageUpdateEvent(raw["messageUpdateEvent"]);
|
|
64
|
+
const reactionEvent = parseMessageReactionEvent(raw["reactionEvent"]);
|
|
65
|
+
const reactions = parseMessageReactions(raw["reactions"]);
|
|
66
|
+
return {
|
|
67
|
+
...rest,
|
|
68
|
+
...(embed ? { embed } : {}),
|
|
69
|
+
...(messageDeleteEvent ? { messageDeleteEvent } : {}),
|
|
70
|
+
...(messageUpdateEvent ? { messageUpdateEvent } : {}),
|
|
71
|
+
...(reactionEvent ? { reactionEvent } : {}),
|
|
72
|
+
...(reactions.length > 0 ? { reactions } : {}),
|
|
73
|
+
version: MESSAGE_EXTRA_VERSION,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return { version: MESSAGE_EXTRA_VERSION };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export function serializeMessageExtra(extra) {
|
|
81
|
+
const normalized = normalizeMessageExtra(extra);
|
|
82
|
+
if (Object.keys(normalized).length === 1) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return JSON.stringify(normalized);
|
|
86
|
+
}
|
|
87
|
+
function copyOptionalBoolean(target, source, key) {
|
|
88
|
+
const value = source[key];
|
|
89
|
+
if (typeof value === "boolean") {
|
|
90
|
+
Reflect.set(target, key, value);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function copyOptionalNumber(target, source, key) {
|
|
94
|
+
const value = source[key];
|
|
95
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
96
|
+
Reflect.set(target, key, value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function copyOptionalString(target, source, key) {
|
|
100
|
+
const value = source[key];
|
|
101
|
+
if (typeof value === "string") {
|
|
102
|
+
Reflect.set(target, key, value);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function isEmbedTone(value) {
|
|
106
|
+
return (value === "danger" ||
|
|
107
|
+
value === "default" ||
|
|
108
|
+
value === "info" ||
|
|
109
|
+
value === "success" ||
|
|
110
|
+
value === "warning");
|
|
111
|
+
}
|
|
112
|
+
function isMessageEmbedMediaType(value) {
|
|
113
|
+
return (value === "audio" ||
|
|
114
|
+
value === "file" ||
|
|
115
|
+
value === "image" ||
|
|
116
|
+
value === "svg" ||
|
|
117
|
+
value === "video");
|
|
118
|
+
}
|
|
119
|
+
function isRecord(value) {
|
|
120
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
121
|
+
}
|
|
122
|
+
function normalizeMessageExtra(extra) {
|
|
123
|
+
const embed = parseMessageEmbed(extra.embed);
|
|
124
|
+
const messageDeleteEvent = parseMessageDeleteEvent(extra.messageDeleteEvent);
|
|
125
|
+
const messageUpdateEvent = parseMessageUpdateEvent(extra.messageUpdateEvent);
|
|
126
|
+
const reactionEvent = parseMessageReactionEvent(extra.reactionEvent);
|
|
127
|
+
const reactions = parseMessageReactions(extra.reactions);
|
|
128
|
+
const normalized = {
|
|
129
|
+
...extra,
|
|
130
|
+
version: MESSAGE_EXTRA_VERSION,
|
|
131
|
+
};
|
|
132
|
+
if (embed) {
|
|
133
|
+
normalized.embed = embed;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
delete normalized.embed;
|
|
137
|
+
}
|
|
138
|
+
if (messageDeleteEvent) {
|
|
139
|
+
normalized.messageDeleteEvent = messageDeleteEvent;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
delete normalized.messageDeleteEvent;
|
|
143
|
+
}
|
|
144
|
+
if (messageUpdateEvent) {
|
|
145
|
+
normalized.messageUpdateEvent = messageUpdateEvent;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
delete normalized.messageUpdateEvent;
|
|
149
|
+
}
|
|
150
|
+
if (reactionEvent) {
|
|
151
|
+
normalized.reactionEvent = reactionEvent;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
delete normalized.reactionEvent;
|
|
155
|
+
}
|
|
156
|
+
if (reactions.length > 0) {
|
|
157
|
+
normalized.reactions = reactions;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
delete normalized.reactions;
|
|
161
|
+
}
|
|
162
|
+
return normalized;
|
|
163
|
+
}
|
|
164
|
+
function parseAttachment(value) {
|
|
165
|
+
if (!isRecord(value))
|
|
166
|
+
return null;
|
|
167
|
+
const { contentType, fileID, fileName, fileSize, key } = value;
|
|
168
|
+
if (typeof contentType !== "string" ||
|
|
169
|
+
typeof fileID !== "string" ||
|
|
170
|
+
typeof fileName !== "string" ||
|
|
171
|
+
typeof fileSize !== "number" ||
|
|
172
|
+
!Number.isFinite(fileSize) ||
|
|
173
|
+
typeof key !== "string") {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
contentType,
|
|
178
|
+
fileID,
|
|
179
|
+
fileName,
|
|
180
|
+
fileSize: Math.max(0, Math.round(fileSize)),
|
|
181
|
+
key,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function parseMessageDeleteEvent(value) {
|
|
185
|
+
if (!isRecord(value) || value["action"] !== "delete") {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
const targetMailID = typeof value["targetMailID"] === "string" &&
|
|
189
|
+
value["targetMailID"].length > 0
|
|
190
|
+
? value["targetMailID"]
|
|
191
|
+
: undefined;
|
|
192
|
+
const targetMailIDs = parseMessageDeleteTargets(value["targetMailIDs"]);
|
|
193
|
+
if (!targetMailID && targetMailIDs.length === 0) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const event = {
|
|
197
|
+
action: "delete",
|
|
198
|
+
...(targetMailID ? { targetMailID } : {}),
|
|
199
|
+
...(targetMailIDs.length > 0 ? { targetMailIDs } : {}),
|
|
200
|
+
};
|
|
201
|
+
copyOptionalString(event, value, "deletedAt");
|
|
202
|
+
return event;
|
|
203
|
+
}
|
|
204
|
+
function parseMessageDeleteTargets(value) {
|
|
205
|
+
if (!Array.isArray(value)) {
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
const targets = [];
|
|
209
|
+
const seen = new Set();
|
|
210
|
+
for (const item of value) {
|
|
211
|
+
if (typeof item !== "string" || item.length === 0 || seen.has(item)) {
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
seen.add(item);
|
|
215
|
+
targets.push(item);
|
|
216
|
+
}
|
|
217
|
+
return targets;
|
|
218
|
+
}
|
|
219
|
+
function parseMessageEmbed(value) {
|
|
220
|
+
if (!isRecord(value))
|
|
221
|
+
return null;
|
|
222
|
+
const display = value["display"];
|
|
223
|
+
const kind = value["kind"];
|
|
224
|
+
const title = value["title"];
|
|
225
|
+
if ((display !== "decorate" && display !== "replace") ||
|
|
226
|
+
typeof kind !== "string" ||
|
|
227
|
+
typeof title !== "string") {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
const embed = {
|
|
231
|
+
display,
|
|
232
|
+
kind,
|
|
233
|
+
title,
|
|
234
|
+
version: MESSAGE_EXTRA_VERSION,
|
|
235
|
+
};
|
|
236
|
+
copyOptionalString(embed, value, "icon");
|
|
237
|
+
const iconAttachment = parseAttachment(value["iconAttachment"]);
|
|
238
|
+
if (iconAttachment)
|
|
239
|
+
embed.iconAttachment = iconAttachment;
|
|
240
|
+
copyOptionalString(embed, value, "subtitle");
|
|
241
|
+
copyOptionalBoolean(embed, value, "suppressLinkPreview");
|
|
242
|
+
copyOptionalString(embed, value, "timestamp");
|
|
243
|
+
if (isEmbedTone(value["tone"])) {
|
|
244
|
+
embed.tone = value["tone"];
|
|
245
|
+
}
|
|
246
|
+
const actions = parseMessageEmbedActions(value["actions"]);
|
|
247
|
+
if (actions.length > 0)
|
|
248
|
+
embed.actions = actions;
|
|
249
|
+
const blocks = parseMessageEmbedBlocks(value["blocks"]);
|
|
250
|
+
if (blocks.length > 0)
|
|
251
|
+
embed.blocks = blocks;
|
|
252
|
+
const fields = parseMessageEmbedFields(value["fields"]);
|
|
253
|
+
if (fields.length > 0)
|
|
254
|
+
embed.fields = fields;
|
|
255
|
+
const source = parseMessageEmbedSource(value["source"]);
|
|
256
|
+
if (source)
|
|
257
|
+
embed.source = source;
|
|
258
|
+
return embed;
|
|
259
|
+
}
|
|
260
|
+
function parseMessageEmbedAction(value) {
|
|
261
|
+
if (!isRecord(value))
|
|
262
|
+
return null;
|
|
263
|
+
if (value["type"] !== "link" ||
|
|
264
|
+
typeof value["label"] !== "string" ||
|
|
265
|
+
typeof value["url"] !== "string") {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
label: value["label"],
|
|
270
|
+
type: "link",
|
|
271
|
+
url: value["url"],
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
function parseMessageEmbedActions(value) {
|
|
275
|
+
if (!Array.isArray(value))
|
|
276
|
+
return [];
|
|
277
|
+
return value.flatMap((item) => {
|
|
278
|
+
const action = parseMessageEmbedAction(item);
|
|
279
|
+
return action ? [action] : [];
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
function parseMessageEmbedBlock(value) {
|
|
283
|
+
if (!isRecord(value))
|
|
284
|
+
return null;
|
|
285
|
+
switch (value["type"]) {
|
|
286
|
+
case "code":
|
|
287
|
+
return parseMessageEmbedCodeBlock(value);
|
|
288
|
+
case "divider":
|
|
289
|
+
return { type: "divider" };
|
|
290
|
+
case "file":
|
|
291
|
+
return parseMessageEmbedFileBlock(value);
|
|
292
|
+
case "gallery":
|
|
293
|
+
return parseMessageEmbedGalleryBlock(value);
|
|
294
|
+
case "markdown":
|
|
295
|
+
return parseMessageEmbedMarkdownBlock(value);
|
|
296
|
+
case "media":
|
|
297
|
+
return parseMessageEmbedMediaBlock(value);
|
|
298
|
+
default:
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
function parseMessageEmbedBlocks(value) {
|
|
303
|
+
if (!Array.isArray(value))
|
|
304
|
+
return [];
|
|
305
|
+
return value.flatMap((item) => {
|
|
306
|
+
const block = parseMessageEmbedBlock(item);
|
|
307
|
+
return block ? [block] : [];
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
function parseMessageEmbedCodeBlock(value) {
|
|
311
|
+
if (typeof value["code"] !== "string")
|
|
312
|
+
return null;
|
|
313
|
+
const block = {
|
|
314
|
+
code: value["code"],
|
|
315
|
+
type: "code",
|
|
316
|
+
};
|
|
317
|
+
copyOptionalString(block, value, "language");
|
|
318
|
+
return block;
|
|
319
|
+
}
|
|
320
|
+
function parseMessageEmbedField(value) {
|
|
321
|
+
if (!isRecord(value) ||
|
|
322
|
+
typeof value["label"] !== "string" ||
|
|
323
|
+
typeof value["value"] !== "string") {
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
const field = {
|
|
327
|
+
label: value["label"],
|
|
328
|
+
value: value["value"],
|
|
329
|
+
};
|
|
330
|
+
copyOptionalBoolean(field, value, "mono");
|
|
331
|
+
copyOptionalBoolean(field, value, "short");
|
|
332
|
+
return field;
|
|
333
|
+
}
|
|
334
|
+
function parseMessageEmbedFields(value) {
|
|
335
|
+
if (!Array.isArray(value))
|
|
336
|
+
return [];
|
|
337
|
+
return value.flatMap((item) => {
|
|
338
|
+
const field = parseMessageEmbedField(item);
|
|
339
|
+
return field ? [field] : [];
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
function parseMessageEmbedFileBlock(value) {
|
|
343
|
+
const attachment = parseAttachment(value["attachment"]);
|
|
344
|
+
if (!attachment)
|
|
345
|
+
return null;
|
|
346
|
+
const block = {
|
|
347
|
+
attachment,
|
|
348
|
+
type: "file",
|
|
349
|
+
};
|
|
350
|
+
copyOptionalString(block, value, "role");
|
|
351
|
+
return block;
|
|
352
|
+
}
|
|
353
|
+
function parseMessageEmbedGalleryBlock(value) {
|
|
354
|
+
if (!Array.isArray(value["items"]))
|
|
355
|
+
return null;
|
|
356
|
+
const items = value["items"].flatMap((item) => {
|
|
357
|
+
const media = parseMessageEmbedMediaItem(item);
|
|
358
|
+
return media ? [media] : [];
|
|
359
|
+
});
|
|
360
|
+
return items.length > 0 ? { items, type: "gallery" } : null;
|
|
361
|
+
}
|
|
362
|
+
function parseMessageEmbedMarkdownBlock(value) {
|
|
363
|
+
const text = value["text"];
|
|
364
|
+
const source = value["source"];
|
|
365
|
+
if (text !== undefined &&
|
|
366
|
+
typeof text !== "string" &&
|
|
367
|
+
source !== "message") {
|
|
368
|
+
return null;
|
|
369
|
+
}
|
|
370
|
+
if (text === undefined && source !== "message")
|
|
371
|
+
return null;
|
|
372
|
+
const block = { type: "markdown" };
|
|
373
|
+
copyOptionalNumber(block, value, "maxLines");
|
|
374
|
+
if (source === "message")
|
|
375
|
+
block.source = "message";
|
|
376
|
+
if (typeof text === "string")
|
|
377
|
+
block.text = text;
|
|
378
|
+
return block;
|
|
379
|
+
}
|
|
380
|
+
function parseMessageEmbedMediaBlock(value) {
|
|
381
|
+
const media = parseMessageEmbedMediaItem(value);
|
|
382
|
+
return media ? { ...media, type: "media" } : null;
|
|
383
|
+
}
|
|
384
|
+
function parseMessageEmbedMediaItem(value) {
|
|
385
|
+
if (!isRecord(value) || !isMessageEmbedMediaType(value["mediaType"])) {
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
const attachment = parseAttachment(value["attachment"]);
|
|
389
|
+
if (!attachment)
|
|
390
|
+
return null;
|
|
391
|
+
const media = {
|
|
392
|
+
attachment,
|
|
393
|
+
mediaType: value["mediaType"],
|
|
394
|
+
};
|
|
395
|
+
copyOptionalString(media, value, "alt");
|
|
396
|
+
copyOptionalNumber(media, value, "aspectRatio");
|
|
397
|
+
copyOptionalString(media, value, "caption");
|
|
398
|
+
copyOptionalString(media, value, "title");
|
|
399
|
+
const thumbnail = parseAttachment(value["thumbnail"]);
|
|
400
|
+
if (thumbnail)
|
|
401
|
+
media.thumbnail = thumbnail;
|
|
402
|
+
return media;
|
|
403
|
+
}
|
|
404
|
+
function parseMessageEmbedSource(value) {
|
|
405
|
+
if (!isRecord(value))
|
|
406
|
+
return null;
|
|
407
|
+
const source = {};
|
|
408
|
+
copyOptionalString(source, value, "id");
|
|
409
|
+
copyOptionalString(source, value, "mailID");
|
|
410
|
+
copyOptionalString(source, value, "provider");
|
|
411
|
+
copyOptionalString(source, value, "url");
|
|
412
|
+
return Object.keys(source).length > 0 ? source : null;
|
|
413
|
+
}
|
|
414
|
+
function parseMessageEmoji(value) {
|
|
415
|
+
if (!isRecord(value))
|
|
416
|
+
return null;
|
|
417
|
+
if (value["kind"] === "unicode" && typeof value["value"] === "string") {
|
|
418
|
+
return {
|
|
419
|
+
kind: "unicode",
|
|
420
|
+
...(typeof value["shortcode"] === "string"
|
|
421
|
+
? { shortcode: value["shortcode"] }
|
|
422
|
+
: {}),
|
|
423
|
+
value: value["value"],
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
if (value["kind"] === "custom" && typeof value["name"] === "string") {
|
|
427
|
+
return {
|
|
428
|
+
...(typeof value["imageUrl"] === "string"
|
|
429
|
+
? { imageUrl: value["imageUrl"] }
|
|
430
|
+
: {}),
|
|
431
|
+
kind: "custom",
|
|
432
|
+
name: value["name"],
|
|
433
|
+
...(typeof value["sourceID"] === "string"
|
|
434
|
+
? { sourceID: value["sourceID"] }
|
|
435
|
+
: {}),
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
function parseMessageReaction(value) {
|
|
441
|
+
if (!isRecord(value) || !Array.isArray(value["userIDs"]))
|
|
442
|
+
return null;
|
|
443
|
+
const emoji = parseMessageEmoji(value["emoji"]);
|
|
444
|
+
if (!emoji)
|
|
445
|
+
return null;
|
|
446
|
+
const userIDs = value["userIDs"].filter((id) => typeof id === "string");
|
|
447
|
+
return userIDs.length > 0 ? { emoji, userIDs } : null;
|
|
448
|
+
}
|
|
449
|
+
function parseMessageReactionEvent(value) {
|
|
450
|
+
if (!isRecord(value) ||
|
|
451
|
+
value["action"] !== "toggle" ||
|
|
452
|
+
typeof value["targetMailID"] !== "string") {
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
const emoji = parseMessageEmoji(value["emoji"]);
|
|
456
|
+
return emoji
|
|
457
|
+
? {
|
|
458
|
+
action: "toggle",
|
|
459
|
+
emoji,
|
|
460
|
+
targetMailID: value["targetMailID"],
|
|
461
|
+
}
|
|
462
|
+
: null;
|
|
463
|
+
}
|
|
464
|
+
function parseMessageReactions(value) {
|
|
465
|
+
if (!Array.isArray(value))
|
|
466
|
+
return [];
|
|
467
|
+
return value.flatMap((item) => {
|
|
468
|
+
const reaction = parseMessageReaction(item);
|
|
469
|
+
return reaction ? [reaction] : [];
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
function parseMessageUpdateEvent(value) {
|
|
473
|
+
if (!isRecord(value) ||
|
|
474
|
+
value["action"] !== "update" ||
|
|
475
|
+
typeof value["message"] !== "string" ||
|
|
476
|
+
typeof value["targetMailID"] !== "string") {
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
const event = {
|
|
480
|
+
action: "update",
|
|
481
|
+
message: value["message"],
|
|
482
|
+
targetMailID: value["targetMailID"],
|
|
483
|
+
};
|
|
484
|
+
copyOptionalString(event, value, "editedAt");
|
|
485
|
+
return event;
|
|
486
|
+
}
|
|
487
|
+
//# sourceMappingURL=messageExtra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageExtra.js","sourceRoot":"","sources":["../src/messageExtra.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/sqlite.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Commercial licenses available at vex.wtf
|
|
5
5
|
*/
|
|
6
6
|
import type { Message } from "../index.js";
|
|
7
|
-
import type { Storage } from "../Storage.js";
|
|
7
|
+
import type { MessageUpdatePatch, Storage } from "../Storage.js";
|
|
8
8
|
import type { PreKeysCrypto, SessionCrypto, UnsavedPreKey } from "../types/index.js";
|
|
9
9
|
import type { ClientDatabase } from "./schema.js";
|
|
10
10
|
import type { Device, PreKeysSQL, SessionSQL } from "@vex-chat/types";
|
|
@@ -42,6 +42,7 @@ export declare class SqliteStorage extends EventEmitter implements Storage {
|
|
|
42
42
|
saveMessage(message: Message): Promise<void>;
|
|
43
43
|
savePreKeys(preKeys: UnsavedPreKey[], oneTime: boolean): Promise<PreKeysSQL[]>;
|
|
44
44
|
saveSession(session: SessionSQL): Promise<void>;
|
|
45
|
+
updateMessage(mailID: string, patch: MessageUpdatePatch): Promise<boolean>;
|
|
45
46
|
private decryptMessagesAsync;
|
|
46
47
|
private deviceRowToDevice;
|
|
47
48
|
private ensureMessageExtraColumn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/sqlite.js
CHANGED
|
@@ -482,7 +482,6 @@ export class SqliteStorage extends EventEmitter {
|
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
}
|
|
485
|
-
// ── Devices ──────────────────────────────────────────────────────────────
|
|
486
485
|
async savePreKeys(preKeys, oneTime) {
|
|
487
486
|
await this.untilReady();
|
|
488
487
|
if (this.closing) {
|
|
@@ -511,6 +510,7 @@ export class SqliteStorage extends EventEmitter {
|
|
|
511
510
|
}
|
|
512
511
|
return saved;
|
|
513
512
|
}
|
|
513
|
+
// ── Devices ──────────────────────────────────────────────────────────────
|
|
514
514
|
async saveSession(session) {
|
|
515
515
|
if (this.closing) {
|
|
516
516
|
return;
|
|
@@ -578,6 +578,52 @@ export class SqliteStorage extends EventEmitter {
|
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
580
|
}
|
|
581
|
+
async updateMessage(mailID, patch) {
|
|
582
|
+
if (this.isClosingNow()) {
|
|
583
|
+
return false;
|
|
584
|
+
}
|
|
585
|
+
await this.untilReady();
|
|
586
|
+
if (patch.message === undefined &&
|
|
587
|
+
!Object.prototype.hasOwnProperty.call(patch, "extra")) {
|
|
588
|
+
return false;
|
|
589
|
+
}
|
|
590
|
+
const row = await this.db
|
|
591
|
+
.selectFrom("messages")
|
|
592
|
+
.selectAll()
|
|
593
|
+
.where("mailID", "=", mailID)
|
|
594
|
+
.executeTakeFirst();
|
|
595
|
+
if (!row) {
|
|
596
|
+
return false;
|
|
597
|
+
}
|
|
598
|
+
const current = (await this.decryptMessagesAsync([row]))[0];
|
|
599
|
+
if (!current) {
|
|
600
|
+
return false;
|
|
601
|
+
}
|
|
602
|
+
const next = {
|
|
603
|
+
...current,
|
|
604
|
+
...(patch.message !== undefined ? { message: patch.message } : {}),
|
|
605
|
+
...(Object.prototype.hasOwnProperty.call(patch, "extra")
|
|
606
|
+
? { extra: patch.extra }
|
|
607
|
+
: {}),
|
|
608
|
+
};
|
|
609
|
+
const storedPlaintext = encodeStoredMessagePlaintext(next);
|
|
610
|
+
const fips = getCryptoProfile() === "fips";
|
|
611
|
+
const ct = fips
|
|
612
|
+
? await xSecretboxAsync(XUtils.decodeUTF8(storedPlaintext), XUtils.decodeHex(row.nonce), this.atRestAesKey)
|
|
613
|
+
: xSecretbox(XUtils.decodeUTF8(storedPlaintext), XUtils.decodeHex(row.nonce), this.atRestAesKey);
|
|
614
|
+
if (this.isClosingNow()) {
|
|
615
|
+
return false;
|
|
616
|
+
}
|
|
617
|
+
const result = await this.db
|
|
618
|
+
.updateTable("messages")
|
|
619
|
+
.set({
|
|
620
|
+
extra: null,
|
|
621
|
+
message: XUtils.encodeHex(ct),
|
|
622
|
+
})
|
|
623
|
+
.where("mailID", "=", mailID)
|
|
624
|
+
.executeTakeFirst();
|
|
625
|
+
return Number(result.numUpdatedRows) > 0;
|
|
626
|
+
}
|
|
581
627
|
// ── Purge ────────────────────────────────────────────────────────────────
|
|
582
628
|
async decryptMessagesAsync(messages) {
|
|
583
629
|
const fips = getCryptoProfile() === "fips";
|