@only-chat/elasticsearch-store 0.2.0-beta.10

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/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # only-chat
2
+ This is an Elasticsearch messages store implementation for only-chat.
@@ -0,0 +1,13 @@
1
+ import { ClientOptions } from '@elastic/elasticsearch';
2
+ import type { MessageStore, SaveResponse } from '@only-chat/types/store.js';
3
+ export type { ClientOptions } from '@elastic/elasticsearch';
4
+ export interface Config {
5
+ options: ClientOptions;
6
+ connectionsIndex: string;
7
+ conversationsIndex: string;
8
+ instancesIndex: string;
9
+ messagesIndex: string;
10
+ peerToPeerConversationsIndex: string;
11
+ }
12
+ export declare function saveInstance(appId: string, details?: string): Promise<SaveResponse>;
13
+ export declare function initialize(config: Config): Promise<MessageStore>;
package/dist/index.js ADDED
@@ -0,0 +1,555 @@
1
+ import { Client } from '@elastic/elasticsearch';
2
+ let client = undefined;
3
+ let connectionsIndex = undefined;
4
+ let conversationsIndex = undefined;
5
+ let instancesIndex = undefined;
6
+ let messagesIndex = undefined;
7
+ let peerToPeerConversationsIndex = undefined;
8
+ async function findMessages(r) {
9
+ const must_not = [{
10
+ exists: {
11
+ field: 'deletedAt'
12
+ }
13
+ }];
14
+ if (r.excludeIds?.length) {
15
+ must_not.push({
16
+ ids: {
17
+ values: r.excludeIds,
18
+ }
19
+ });
20
+ }
21
+ const must = [];
22
+ if (r.ids?.length) {
23
+ must.push({
24
+ ids: {
25
+ values: r.ids,
26
+ }
27
+ });
28
+ }
29
+ if (r.conversationIds?.length) {
30
+ must.push({
31
+ terms: {
32
+ conversationId: r.conversationIds,
33
+ }
34
+ });
35
+ }
36
+ if (r.text) {
37
+ must.push({
38
+ match: {
39
+ 'data.text': {
40
+ query: r.text,
41
+ }
42
+ }
43
+ });
44
+ }
45
+ if (r.fromIds?.length) {
46
+ must.push({
47
+ terms: {
48
+ fromId: r.fromIds,
49
+ }
50
+ });
51
+ }
52
+ if (r.types?.length) {
53
+ must.push({
54
+ terms: {
55
+ type: r.types,
56
+ }
57
+ });
58
+ }
59
+ if (r.clientMessageIds?.length) {
60
+ must.push({
61
+ terms: {
62
+ clientMessageId: r.clientMessageIds,
63
+ }
64
+ });
65
+ }
66
+ const filter = [];
67
+ if (r.createdFrom) {
68
+ filter.push({ range: { createdAt: { gte: r.createdFrom.valueOf() } } });
69
+ }
70
+ if (r.createdTo) {
71
+ filter.push({ range: { createdAt: { lte: r.createdTo.valueOf() } } });
72
+ }
73
+ const query = {
74
+ bool: {
75
+ must,
76
+ must_not,
77
+ filter,
78
+ }
79
+ };
80
+ const sort = [];
81
+ if (r.sort) {
82
+ const sortOrder = r.sortDesc ? 'desc' : 'asc';
83
+ sort.push({ [r.sort]: sortOrder });
84
+ }
85
+ if (r.size !== 0 && !r.size || r.size < 0) {
86
+ r.size = 100;
87
+ }
88
+ if (!r.from || r.from < 0) {
89
+ r.from = 0;
90
+ }
91
+ const result = await client.search({
92
+ index: messagesIndex,
93
+ from: r.from,
94
+ size: r.size,
95
+ sort,
96
+ query,
97
+ aggs: {
98
+ total_count: { value_count: { field: '_id' } }
99
+ }
100
+ });
101
+ return {
102
+ messages: result.hits.hits.map(h => ({ ...h._source, id: h._id })),
103
+ from: r.from,
104
+ size: r.size,
105
+ total: result.aggregations?.total_count.value || result.hits.hits.length,
106
+ };
107
+ }
108
+ const getConversationById = getParticipantConversationById.bind(this, undefined);
109
+ async function getLastMessagesTimestamps(fromId, conversationId) {
110
+ const aggs = {
111
+ conversation_timestamp_agg: {
112
+ aggs: {
113
+ type_agg: {
114
+ aggs: { timestamp_agg: { max: { field: 'createdAt' } } },
115
+ terms: { field: 'type' }
116
+ }
117
+ },
118
+ terms: {
119
+ field: 'conversationId',
120
+ size: conversationId.length,
121
+ }
122
+ }
123
+ };
124
+ const types = ['file', 'text'];
125
+ const query = {
126
+ bool: {
127
+ must_not: [{ exists: { field: 'deletedAt' } }],
128
+ must: [
129
+ { terms: { conversationId } },
130
+ {
131
+ bool: {
132
+ should: [
133
+ { terms: { types } },
134
+ { term: { fromId: { value: fromId } } },
135
+ ],
136
+ },
137
+ },
138
+ ],
139
+ }
140
+ };
141
+ const result = await client.search({
142
+ index: messagesIndex,
143
+ size: 0,
144
+ aggs,
145
+ query,
146
+ });
147
+ const buckets = result.aggregations?.conversation_timestamp_agg.buckets;
148
+ const should = [];
149
+ for (const b of buckets) {
150
+ if (b.key) {
151
+ const type_buckets = b.type_agg.buckets;
152
+ for (const tb of type_buckets) {
153
+ if (tb.key && tb.timestamp_agg?.value) {
154
+ should.push({
155
+ bool: {
156
+ must: [
157
+ { term: { conversationId: { value: b.key } } },
158
+ { term: { type: { value: tb.key } } },
159
+ { term: { createdAt: { value: tb.timestamp_agg.value } } },
160
+ ]
161
+ }
162
+ });
163
+ }
164
+ }
165
+ }
166
+ }
167
+ const resultLastMessages = await client.search({
168
+ index: messagesIndex,
169
+ size: conversationId.length * 10,
170
+ query: {
171
+ bool: {
172
+ must_not: [{ exists: { field: 'deletedAt' } }],
173
+ should,
174
+ },
175
+ },
176
+ });
177
+ return resultLastMessages.hits.hits.reduce((prev, current) => {
178
+ const m = current?._source;
179
+ if (!m) {
180
+ return prev;
181
+ }
182
+ ;
183
+ m.id = current?._id;
184
+ const id = m.conversationId;
185
+ if (prev[id]) {
186
+ if (!prev[id].left || prev[id].left < m.createdAt) {
187
+ prev[id].left = m.createdAt;
188
+ }
189
+ }
190
+ else {
191
+ prev[id] = { left: m.createdAt };
192
+ }
193
+ if (types.includes(m.type)) {
194
+ const latest = prev[id].latest;
195
+ if (!latest || latest.createdAt < m.createdAt) {
196
+ prev[id].latest = m;
197
+ }
198
+ }
199
+ return prev;
200
+ }, {});
201
+ }
202
+ async function getParticipantConversationById(participant, id) {
203
+ const must = [
204
+ {
205
+ ids: {
206
+ values: [id],
207
+ }
208
+ }
209
+ ];
210
+ if (participant) {
211
+ must.push({
212
+ term: {
213
+ participants: {
214
+ value: participant,
215
+ }
216
+ }
217
+ });
218
+ }
219
+ const result = await client.search({
220
+ index: conversationsIndex,
221
+ size: 1,
222
+ query: {
223
+ bool: {
224
+ must,
225
+ must_not: {
226
+ exists: {
227
+ field: 'deletedAt'
228
+ }
229
+ },
230
+ }
231
+ }
232
+ });
233
+ const h = result.hits.hits[0];
234
+ return h?._source ? { ...h._source, id: h._id } : undefined;
235
+ }
236
+ async function getParticipantConversations(participant, excludeIds, from = 0, size = 100) {
237
+ let ids = [];
238
+ if (size > 0) {
239
+ const messagesResult = await client.search({
240
+ index: messagesIndex,
241
+ size: 0,
242
+ query: {
243
+ bool: {
244
+ must: {
245
+ term: {
246
+ participants: {
247
+ value: participant,
248
+ },
249
+ },
250
+ },
251
+ must_not: { terms: { conversationId: excludeIds } },
252
+ },
253
+ },
254
+ aggs: {
255
+ conversation_id_agg: {
256
+ aggs: {
257
+ timestamp_agg: {
258
+ max: {
259
+ script: 'Math.max(doc.createdAt.value.millis, Math.max(doc.updatedAt.size()==0 ? 0 : doc.updatedAt.value.millis, doc.deletedAt.size()==0 ? 0 : doc.deletedAt.value.millis))',
260
+ },
261
+ },
262
+ timestamp_bucket_sort: {
263
+ bucket_sort: { sort: [{ timestamp_agg: 'desc' }], size },
264
+ },
265
+ },
266
+ terms: { field: 'conversationId', size, order: { timestamp_agg: 'desc' } },
267
+ },
268
+ },
269
+ });
270
+ const buckets = messagesResult.aggregations.conversation_id_agg.buckets;
271
+ ids = buckets.map(b => b.key).filter(b => !!b);
272
+ }
273
+ const query = {
274
+ bool: {
275
+ must: {
276
+ term: {
277
+ participants: {
278
+ value: participant,
279
+ }
280
+ },
281
+ },
282
+ must_not: [
283
+ {
284
+ ids: {
285
+ values: excludeIds,
286
+ }
287
+ },
288
+ {
289
+ exists: {
290
+ field: 'deletedAt'
291
+ }
292
+ }
293
+ ],
294
+ }
295
+ };
296
+ const result = await client.search({
297
+ index: conversationsIndex,
298
+ from,
299
+ size,
300
+ sort: [
301
+ {
302
+ _script: {
303
+ script: `int index = ${JSON.stringify(ids)}.indexOf(doc._id.value); index < 0 ? Integer.MAX_VALUE : index`,
304
+ type: 'number',
305
+ }
306
+ },
307
+ { createdAt: 'desc' },
308
+ { _id: 'desc' },
309
+ ],
310
+ query,
311
+ aggs: {
312
+ total_count: { value_count: { field: '_id' } }
313
+ }
314
+ });
315
+ const hits = result.hits.hits.map(h => ({ ...h._source, id: h._id }));
316
+ var m = new Map(hits.map(i => [i.id, i]));
317
+ const conversations = ids.map(id => m.get(id)).filter(c => !!c);
318
+ if (conversations.length < size) {
319
+ const h = new Set(ids);
320
+ conversations.push(...hits.filter(c => !h.has(c.id)).slice(0, size - conversations.length));
321
+ }
322
+ return {
323
+ conversations,
324
+ from,
325
+ size,
326
+ total: result.aggregations?.total_count.value || result.hits.hits.length,
327
+ };
328
+ }
329
+ async function getParticipantLastMessage(participant, conversationId) {
330
+ const result = await client.search({
331
+ index: messagesIndex,
332
+ size: 1,
333
+ sort: [
334
+ { createdAt: 'desc' },
335
+ { _id: 'desc' },
336
+ ],
337
+ query: {
338
+ bool: {
339
+ // must_not: [{ exists: { field: 'deletedAt' } }],
340
+ must: [
341
+ { term: { fromId: { value: participant } } },
342
+ { term: { conversationId: { value: conversationId } } },
343
+ ],
344
+ }
345
+ }
346
+ });
347
+ if (result?.hits.hits.length) {
348
+ return result?.hits.hits.map(h => ({ ...h._source, id: h._id }))[0];
349
+ }
350
+ }
351
+ async function getPeerToPeerConversationId(peer1, peer2) {
352
+ const id = [peer1, peer2].sort(undefined).join('-');
353
+ const request = {
354
+ index: peerToPeerConversationsIndex,
355
+ size: 1,
356
+ query: {
357
+ bool: {
358
+ must: {
359
+ ids: {
360
+ values: [id],
361
+ }
362
+ },
363
+ must_not: {
364
+ exists: {
365
+ field: 'deletedAt'
366
+ }
367
+ },
368
+ }
369
+ }
370
+ };
371
+ const result = await client.search(request);
372
+ const conversationId = result.hits.hits?.[0]?._source?.conversationId;
373
+ if (conversationId) {
374
+ return conversationId;
375
+ }
376
+ const saveResult = await client.index({
377
+ index: conversationsIndex,
378
+ body: {},
379
+ refresh: 'wait_for',
380
+ });
381
+ if (saveResult.result !== 'created') {
382
+ return;
383
+ }
384
+ const indexResult = await client.index({
385
+ id,
386
+ index: peerToPeerConversationsIndex,
387
+ body: { conversationId: saveResult._id },
388
+ refresh: 'wait_for',
389
+ op_type: 'create',
390
+ });
391
+ if (indexResult.result !== 'created') {
392
+ const deleteResult = await client.delete({
393
+ id: saveResult._id,
394
+ index: conversationsIndex,
395
+ refresh: 'wait_for',
396
+ });
397
+ if (deleteResult.result !== 'deleted') {
398
+ throw new Error('Delete null conversation failed');
399
+ }
400
+ const refreshResult = await client.indices.refresh({ index: conversationsIndex });
401
+ if (refreshResult._shards.successful > 0) {
402
+ const result2 = await client.search(request);
403
+ return result2.hits.hits?.[0]?._source?.conversationId;
404
+ }
405
+ }
406
+ return saveResult._id;
407
+ }
408
+ function saveConnection(userId, instanceId) {
409
+ return client.index({
410
+ index: connectionsIndex,
411
+ body: { userId, instanceId, timestamp: new Date() },
412
+ });
413
+ }
414
+ function saveConversation(c) {
415
+ return client.index({
416
+ id: c.id,
417
+ index: conversationsIndex,
418
+ body: { ...c, id: undefined },
419
+ refresh: 'wait_for',
420
+ });
421
+ }
422
+ function saveMessage(m) {
423
+ return client.index({
424
+ id: m.id,
425
+ index: messagesIndex,
426
+ body: { ...m, id: undefined },
427
+ refresh: 'wait_for',
428
+ });
429
+ }
430
+ export function saveInstance(appId, details) {
431
+ return client.index({
432
+ index: instancesIndex,
433
+ body: { appId, details, timestamp: new Date() },
434
+ });
435
+ }
436
+ export async function initialize(config) {
437
+ if (client) {
438
+ throw new Error('Already initialized');
439
+ }
440
+ connectionsIndex = config.connectionsIndex;
441
+ conversationsIndex = config.conversationsIndex;
442
+ instancesIndex = config.instancesIndex;
443
+ messagesIndex = config.messagesIndex;
444
+ peerToPeerConversationsIndex = config.peerToPeerConversationsIndex;
445
+ client = new Client(config.options);
446
+ let exists = await client.indices.exists({ index: instancesIndex });
447
+ if (!exists) {
448
+ await client.indices.create({
449
+ index: instancesIndex,
450
+ mappings: {
451
+ dynamic: 'strict',
452
+ properties: {
453
+ appId: { type: 'keyword' },
454
+ details: { type: 'text' },
455
+ timestamp: { type: 'date' },
456
+ }
457
+ }
458
+ });
459
+ }
460
+ exists = await client.indices.exists({ index: connectionsIndex });
461
+ if (!exists) {
462
+ await client.indices.create({
463
+ index: connectionsIndex,
464
+ mappings: {
465
+ dynamic: 'strict',
466
+ properties: {
467
+ instanceId: { type: 'keyword' },
468
+ userId: { type: 'keyword' },
469
+ timestamp: { type: 'date' },
470
+ }
471
+ }
472
+ });
473
+ }
474
+ exists = await client.indices.exists({ index: conversationsIndex });
475
+ if (!exists) {
476
+ await client.indices.create({
477
+ index: conversationsIndex,
478
+ mappings: {
479
+ dynamic: 'strict',
480
+ properties: {
481
+ title: { type: 'text' },
482
+ participants: { type: 'keyword' },
483
+ createdBy: { type: 'keyword' },
484
+ createdAt: { type: 'date' },
485
+ updatedAt: { type: 'date' },
486
+ closedAt: { type: 'date' },
487
+ deletedAt: { type: 'date' },
488
+ }
489
+ }
490
+ });
491
+ }
492
+ exists = await client.indices.exists({ index: peerToPeerConversationsIndex });
493
+ if (!exists) {
494
+ await client.indices.create({
495
+ index: peerToPeerConversationsIndex,
496
+ mappings: {
497
+ dynamic: 'strict',
498
+ properties: {
499
+ conversationId: { type: 'keyword' },
500
+ }
501
+ }
502
+ });
503
+ }
504
+ exists = await client.indices.exists({ index: messagesIndex });
505
+ if (!exists) {
506
+ await client.indices.create({
507
+ index: messagesIndex,
508
+ mappings: {
509
+ dynamic: 'strict',
510
+ properties: {
511
+ type: { type: 'keyword' },
512
+ conversationId: { type: 'keyword' },
513
+ participants: { type: 'keyword' },
514
+ connectionId: { type: 'keyword' },
515
+ fromId: { type: 'keyword' },
516
+ clientMessageId: { type: 'keyword' },
517
+ createdAt: { type: 'date_nanos' },
518
+ updatedAt: { type: 'date' },
519
+ deletedAt: { type: 'date' },
520
+ data: {
521
+ dynamic: 'strict',
522
+ properties: {
523
+ conversationId: { type: 'keyword' },
524
+ messagesSize: { type: 'long', index: false },
525
+ closedAt: { type: 'date', index: false },
526
+ deletedAt: { type: 'date', index: false },
527
+ updatedAt: { type: 'date', index: false },
528
+ participants: { type: 'keyword', index: false },
529
+ title: { type: 'text', index: false },
530
+ messageId: { type: 'keyword' },
531
+ text: { type: 'text', index: false },
532
+ link: { type: 'keyword', index: false },
533
+ name: { type: 'keyword', index: false },
534
+ type: { type: 'keyword', index: false },
535
+ size: { type: 'long', index: false },
536
+ }
537
+ }
538
+ }
539
+ }
540
+ });
541
+ }
542
+ return {
543
+ findMessages,
544
+ getConversationById,
545
+ getLastMessagesTimestamps,
546
+ getParticipantConversationById,
547
+ getParticipantConversations,
548
+ getParticipantLastMessage,
549
+ getPeerToPeerConversationId,
550
+ saveConnection,
551
+ saveConversation,
552
+ saveMessage,
553
+ };
554
+ }
555
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@only-chat/elasticsearch-store",
3
+ "version": "0.2.0-beta.10",
4
+ "description": "Elasticsearchn storage for only-chat",
5
+ "homepage": "https://github.com/only-chat/node-backend/packages/stores/elasticsearch",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "type": "module",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/only-chat/node-backend.git",
12
+ "directory": "packages/stores/elasticsearch"
13
+ },
14
+ "scripts": {
15
+ "build": "tsc"
16
+ },
17
+ "author": "only-chat",
18
+ "license": "MIT",
19
+ "dependencies": {
20
+ "@elastic/elasticsearch": "8.15.0"
21
+ },
22
+ "devDependencies": {
23
+ "@only-chat/types": "0.2.0-beta.10",
24
+ "@types/node": "^22.7.4",
25
+ "typescript": "^5.4.5"
26
+ },
27
+ "files": [
28
+ "dist/"
29
+ ],
30
+ "keywords": [
31
+ "elasticsearch",
32
+ "node",
33
+ "only-chat",
34
+ "store"
35
+ ]
36
+ }