spasm.js 2.0.0-beta.5 → 2.0.0-beta.7

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 CHANGED
@@ -267,6 +267,7 @@ Option 1. Import separate functions:
267
267
  const {identifyObject} = require('spasm.js')
268
268
  const {convertToSpasm} = require('spasm.js')
269
269
  const {mergeSpasmEventsV2} = require('spasm.js')
270
+ const {mergeDifferentSpasmEventsV2} = require('spasm.js')
270
271
 
271
272
  const event = {
272
273
  // some event
@@ -279,9 +280,15 @@ const info = identifyObject(event)
279
280
  const spasmEvent = convertToSpasm(event)
280
281
 
281
282
  // Merge events into one event
282
- const spasmEvent = mergeSpasmEventsV2(
283
+ const spasmEvent = mergeSpasmEventsV2([
283
284
  event, eventWithStats, eventWithComments
284
- )
285
+ ])
286
+
287
+ // Merge different events
288
+ const spasmEvents = mergeDifferentSpasmEventsV2([
289
+ event, eventWithStats, eventWithComments,
290
+ anotherEvent, anotherEventWithStats
291
+ ])
285
292
  ```
286
293
 
287
294
  Option 2. Import all functions:
@@ -300,9 +307,15 @@ const info = spasm.identifyObject(event)
300
307
  const spasmEvent = spasm.convertToSpasm(event)
301
308
 
302
309
  // Merge events into one event
303
- const spasmEvent = spasm.mergeSpasmEventsV2(
310
+ const spasmEvent = spasm.mergeSpasmEventsV2([
304
311
  event, eventWithStats, eventWithComments
305
- )
312
+ ])
313
+
314
+ // Merge different events
315
+ const spasmEvents = spasm.mergeDifferentSpasmEventsV2([
316
+ event, eventWithStats, eventWithComments,
317
+ anotherEvent, anotherEventWithStats
318
+ ])
306
319
  ```
307
320
 
308
321
  #### ESM (import)
@@ -392,6 +405,38 @@ const rootIds = spasm.getAllRootIds(event)
392
405
  const signatures = spasm.getAllSignatures(event)
393
406
  ```
394
407
 
408
+ ```js
409
+ // Get a stat object of a specified action
410
+ const stats = spasm.getStatByAction(event, "react")
411
+ ```
412
+
413
+ ```js
414
+ // Get a total number of a specified action
415
+ const stats = spasm.getTotalOfAction(event, "reply")
416
+ ```
417
+
418
+ ```js
419
+ // Get a total number of a specified reaction
420
+ const stats = spasm.getTotalOfReaction(event, "upvote")
421
+ ```
422
+
423
+ ```js
424
+ // Get a total number of the most popular reaction
425
+ const stats = spasm.getTotalOfMostPopularReaction(event)
426
+ ```
427
+
428
+ ```js
429
+ // Get a total number of a react/reply action
430
+ const stats = spasm.getTotalOfReact(event)
431
+ const stats = spasm.getTotalOfReply(event)
432
+
433
+ // aliases
434
+ const stats = spasm.getTotalOfActionReact(event)
435
+ const stats = spasm.getTotalOfReactAction(event)
436
+ const stats = spasm.getTotalOfActionReply(event)
437
+ const stats = spasm.getTotalOfReplyAction(event)
438
+ ```
439
+
395
440
  ```js
396
441
  // Extract an ID from an event.
397
442
  const nostrId = spasm.getIdByFormat(event, { name: "nostr-hex" })
@@ -412,6 +457,29 @@ const spasmId = spasm.extractIdByFormat(event, {
412
457
  const spasmId = spasm.getSpasmId(event)
413
458
  ```
414
459
 
460
+ ```js
461
+ const ifEventHasThisId = spasm.checkIfEventHasThisId(
462
+ event, "spasmid01192d1f9994bf436f50841459d0a43c0de13ef4aaa5233827bdfe2ea2bc030d6f"
463
+ )
464
+ ```
465
+
466
+ ```js
467
+ const event = spasm.getEventById(
468
+ [ event1, event2, event3 ],
469
+ "spasmid01192d1f9994bf436f50841459d0a43c0de13ef4aaa5233827bdfe2ea2bc030d6f"
470
+ )
471
+ ```
472
+
473
+ ```js
474
+ const events = spasm.getEventsByIds(
475
+ [ event1, event2, event3 ],
476
+ [
477
+ "spasmid01192d1f9994bf436f50841459d0a43c0de13ef4aaa5233827bdfe2ea2bc030d6f",
478
+ "db300d320853b25b57fa03c586d18f69ad9786ec5e21114253fc3762b22a5651"
479
+ ]
480
+ )
481
+ ```
482
+
415
483
  ```js
416
484
  // Convert an event to SpasmEventV2 only if
417
485
  // it's not SpasmEventV2 yet.
@@ -1,5 +1,9 @@
1
1
  import { UnknownPostOrEvent, UnknownEvent, NostrSpasmEvent, NostrSpasmEventSignedOpened, NostrSpasmVersion, LinkObject, SpasmEventIdFormatV2, SpasmEventAddressFormatV2, SpasmEventSignatureFormatV2, SpasmEventV2, SpasmEventAuthorV2, SpasmEventBodyHostV2, SpasmEventMediaV2, SpasmEventIdV2, SpasmEventBodyReferenceV2, SpasmEventBodyParentV2, ConvertToSpasmConfig, CustomConvertToSpasmConfig, CustomSanitizationConfig, SanitizationConfig, UnknownEventV2, SpasmEventStatV2, SpasmEventChildV2 } from "./../types/interfaces.js";
2
2
  export declare const hasValue: (el?: any) => boolean;
3
+ export declare const isStringOrNumber: (val: any) => boolean;
4
+ export declare const isNumberOrString: (val: any) => boolean;
5
+ export declare const ifStringOrNumber: (val: any) => boolean;
6
+ export declare const ifNumberOrString: (val: any) => boolean;
3
7
  export declare const isObjectWithValues: (val: any) => boolean;
4
8
  export declare const isArrayWithValues: (array: any) => boolean;
5
9
  export declare const extractVersion: (versionString: string) => string;
@@ -59,11 +63,24 @@ export declare const getAllRootIds: (unknownEvent: UnknownEventV2, toLowerCase?:
59
63
  export declare const getAllSignatures: (unknownEvent: UnknownEventV2, toLowerCase?: boolean) => (string | number)[];
60
64
  export declare const getSignersListedIn: (unknownEvent: UnknownEventV2, list: (string | number)[]) => (string | number)[];
61
65
  export declare const getPubkeysListedIn: (unknownEvent: UnknownEventV2, list: (string | number)[]) => (string | number)[];
66
+ export declare const getStatByAction: (unknownEvent: any, action?: string | number) => SpasmEventStatV2 | null;
67
+ export declare const getTotalOfReaction: (unknownEvent: any, reaction?: string | number) => number;
68
+ export declare const getTotalOfMostPopularReaction: (unknownEvent: any) => number;
69
+ export declare const getTotalOfAction: (unknownEvent: any, action?: string | number) => number;
70
+ export declare const getTotalOfReply: (unknownEvent: any) => number;
71
+ export declare const getTotalOfReplyAction: (unknownEvent: any) => number;
72
+ export declare const getTotalOfActionReply: (unknownEvent: any) => number;
73
+ export declare const getTotalOfReact: (unknownEvent: any) => number;
74
+ export declare const getTotalOfReactAction: (unknownEvent: any) => number;
75
+ export declare const getTotalOfActionReact: (unknownEvent: any) => number;
62
76
  export declare const isAnySignerListedIn: (unknownEvent: UnknownEventV2, list: (string | number)[]) => boolean;
63
77
  export declare const isAnyPubkeyListedIn: (unknownEvent: UnknownEventV2, list: (string | number)[]) => boolean;
64
78
  export declare const areAllSignersListedIn: (unknownEvent: UnknownEventV2, list: (string | number)[]) => boolean;
65
79
  export declare const areAllPubkeysListedIn: (unknownEvent: UnknownEventV2, list: (string | number)[]) => boolean;
66
80
  export declare const getIdByFormat: (unknownEvent: UnknownEventV2, customIdFormat?: SpasmEventIdFormatV2) => string | number | null;
81
+ export declare const checkIfEventHasThisId: (unknownEvent: UnknownEventV2, id: (string | number)) => Boolean;
82
+ export declare const getEventById: (unknownEvents: UnknownEventV2[], id?: (string | number)) => SpasmEventV2 | null;
83
+ export declare const getEventsByIds: (unknownEvents: UnknownEventV2[], ids?: (string | number)[]) => SpasmEventV2[] | null;
67
84
  export declare const extractIdByFormat: (unknownEvent: UnknownEventV2, customIdFormat?: SpasmEventIdFormatV2) => string | number | null;
68
85
  export declare const extractSpasmId01: (unknownEvent: UnknownEventV2) => string | number;
69
86
  export declare const toBeSpasmEventV2: (unknownEvent: UnknownEventV2) => SpasmEventV2 | null;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src.ts/utils/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src.ts/utils/utils.ts"],"names":[],"mappings":"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"}
@@ -23,8 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.hasSiblingWeb2 = exports.hasSiblingNostr = exports.hasSiblingDmp = exports.hasSiblingSpasm = exports.hasSiblingOfProtocol = exports.hasSignatureNostr = exports.hasSignatureEthereum = exports.hasSignatureOfFormat = exports.mergeSanitizationConfigs = exports.mergeConfigs = exports.mergeObjects = exports.clearObject = exports.clearArray = exports.sanitizeEvent = exports.sanitizeEventWithDompurify = exports.sanitizeStringWithDompurify = exports.sanitizeEventWith = exports.executeFunctionForAllNestedValuesOfType = exports.utilsStatus = exports.verifyEthereumSignature = exports.markSpasmEventAddressAsVerified = exports.sortTagsForSpasmid01 = exports.sortParentForSpasmid01 = exports.sortReferencesForSpasmid01 = exports.sortMediasForSpasmid01 = exports.sortLinksForSpasmid01 = exports.sortLinksForSpasmEventV2 = exports.sortHostsForSpasmid01 = exports.sortHostsForSpasmEventV2 = exports.sortArrayOfObjectsByKeyValue = exports.sortAuthorsForSpasmid01 = exports.sortAuthorsForSpasmEventV2 = exports.sortArrayOfObjects = exports.sortArrayOfStringsAndNumbers = exports.keepTheseKeysInObjectsInArray = exports.keepTheseKeysInObject = exports.getHashOfString = exports.getFormatFromSignature = exports.getFormatFromAddress = exports.getFormatFromId = exports.getFormatFromValue = exports.createLinkObjectFromUrl = exports.isValidUrl = exports.getNostrSpasmVersion = exports.toBeTimestamp = exports.extractSealedEvent = exports.extractVersion = exports.isArrayWithValues = exports.isObjectWithValues = exports.hasValue = void 0;
27
- exports.mergeChildrenV2 = exports.mergeStatsV2 = exports.cleanSpasmEventV2 = exports.copyOf = exports.deepCopyOfObject = exports.ifEventsHaveSameSpasmId01 = exports.sortSpasmEventsV2 = exports.sortSpasmEventsV2ByDbAddedTimestamp = exports.mergeDifferentSpasmEventsV2 = exports.mergeSpasmEventsV2 = exports.extractSignerFromEthereumSignature = exports.toBeSpasmEventsV2 = exports.toBeSpasmEventV2 = exports.extractSpasmId01 = exports.extractIdByFormat = exports.getIdByFormat = exports.areAllPubkeysListedIn = exports.areAllSignersListedIn = exports.isAnyPubkeyListedIn = exports.isAnySignerListedIn = exports.getPubkeysListedIn = exports.getSignersListedIn = exports.getAllSignatures = exports.getAllRootIds = exports.getAllParentIds = exports.getAllEventIds = exports.getAllIdsFromArrayOfIdObjects = exports.getVerifiedSigners = exports.getAllSigners = void 0;
26
+ exports.hasSiblingOfProtocol = exports.hasSignatureNostr = exports.hasSignatureEthereum = exports.hasSignatureOfFormat = exports.mergeSanitizationConfigs = exports.mergeConfigs = exports.mergeObjects = exports.clearObject = exports.clearArray = exports.sanitizeEvent = exports.sanitizeEventWithDompurify = exports.sanitizeStringWithDompurify = exports.sanitizeEventWith = exports.executeFunctionForAllNestedValuesOfType = exports.utilsStatus = exports.verifyEthereumSignature = exports.markSpasmEventAddressAsVerified = exports.sortTagsForSpasmid01 = exports.sortParentForSpasmid01 = exports.sortReferencesForSpasmid01 = exports.sortMediasForSpasmid01 = exports.sortLinksForSpasmid01 = exports.sortLinksForSpasmEventV2 = exports.sortHostsForSpasmid01 = exports.sortHostsForSpasmEventV2 = exports.sortArrayOfObjectsByKeyValue = exports.sortAuthorsForSpasmid01 = exports.sortAuthorsForSpasmEventV2 = exports.sortArrayOfObjects = exports.sortArrayOfStringsAndNumbers = exports.keepTheseKeysInObjectsInArray = exports.keepTheseKeysInObject = exports.getHashOfString = exports.getFormatFromSignature = exports.getFormatFromAddress = exports.getFormatFromId = exports.getFormatFromValue = exports.createLinkObjectFromUrl = exports.isValidUrl = exports.getNostrSpasmVersion = exports.toBeTimestamp = exports.extractSealedEvent = exports.extractVersion = exports.isArrayWithValues = exports.isObjectWithValues = exports.ifNumberOrString = exports.ifStringOrNumber = exports.isNumberOrString = exports.isStringOrNumber = exports.hasValue = void 0;
27
+ exports.mergeChildrenV2 = exports.mergeStatsV2 = exports.cleanSpasmEventV2 = exports.copyOf = exports.deepCopyOfObject = exports.ifEventsHaveSameSpasmId01 = exports.sortSpasmEventsV2 = exports.sortSpasmEventsV2ByDbAddedTimestamp = exports.mergeDifferentSpasmEventsV2 = exports.mergeSpasmEventsV2 = exports.extractSignerFromEthereumSignature = exports.toBeSpasmEventsV2 = exports.toBeSpasmEventV2 = exports.extractSpasmId01 = exports.extractIdByFormat = exports.getEventsByIds = exports.getEventById = exports.checkIfEventHasThisId = exports.getIdByFormat = exports.areAllPubkeysListedIn = exports.areAllSignersListedIn = exports.isAnyPubkeyListedIn = exports.isAnySignerListedIn = exports.getTotalOfActionReact = exports.getTotalOfReactAction = exports.getTotalOfReact = exports.getTotalOfActionReply = exports.getTotalOfReplyAction = exports.getTotalOfReply = exports.getTotalOfAction = exports.getTotalOfMostPopularReaction = exports.getTotalOfReaction = exports.getStatByAction = exports.getPubkeysListedIn = exports.getSignersListedIn = exports.getAllSignatures = exports.getAllRootIds = exports.getAllParentIds = exports.getAllEventIds = exports.getAllIdsFromArrayOfIdObjects = exports.getVerifiedSigners = exports.getAllSigners = exports.hasSiblingWeb2 = exports.hasSiblingNostr = exports.hasSiblingDmp = exports.hasSiblingSpasm = void 0;
28
28
  /*
29
29
  * Using sha256 from 'js-sha256' npm package, because
30
30
  * built-in 'crypto' module works only in a server-side
@@ -92,6 +92,19 @@ const hasValue = (el) => {
92
92
  return true;
93
93
  };
94
94
  exports.hasValue = hasValue;
95
+ const isStringOrNumber = (val) => {
96
+ if (!val && val !== 0)
97
+ return false;
98
+ if (typeof (val) === "string")
99
+ return true;
100
+ if (typeof (val) === "number")
101
+ return true;
102
+ return false;
103
+ };
104
+ exports.isStringOrNumber = isStringOrNumber;
105
+ exports.isNumberOrString = exports.isStringOrNumber;
106
+ exports.ifStringOrNumber = exports.isStringOrNumber;
107
+ exports.ifNumberOrString = exports.isStringOrNumber;
95
108
  const isObjectWithValues = (val) => {
96
109
  if (!val)
97
110
  return false;
@@ -1210,6 +1223,126 @@ const getSignersListedIn = (unknownEvent, list) => {
1210
1223
  };
1211
1224
  exports.getSignersListedIn = getSignersListedIn;
1212
1225
  exports.getPubkeysListedIn = exports.getSignersListedIn;
1226
+ const getStatByAction = (unknownEvent, action = "react") => {
1227
+ if (!action || !exports.isStringOrNumber) {
1228
+ return null;
1229
+ }
1230
+ const spasmEvent = (0, exports.toBeSpasmEventV2)(unknownEvent);
1231
+ if (!spasmEvent || !(0, exports.isObjectWithValues)(spasmEvent)) {
1232
+ return null;
1233
+ }
1234
+ if (!("stats" in spasmEvent) || !spasmEvent.stats) {
1235
+ return null;
1236
+ }
1237
+ let spasmEventStat = null;
1238
+ spasmEvent.stats?.forEach(stat => {
1239
+ if ((0, exports.isObjectWithValues)(stat) &&
1240
+ "action" in stat && stat.action &&
1241
+ stat.action === action) {
1242
+ spasmEventStat = stat;
1243
+ }
1244
+ });
1245
+ return spasmEventStat;
1246
+ };
1247
+ exports.getStatByAction = getStatByAction;
1248
+ const getTotalOfReaction = (unknownEvent, reaction = "upvote") => {
1249
+ if (!reaction || !exports.isStringOrNumber) {
1250
+ return 0;
1251
+ }
1252
+ const spasmEvent = (0, exports.toBeSpasmEventV2)(unknownEvent);
1253
+ if (!spasmEvent || !(0, exports.isObjectWithValues)(spasmEvent)) {
1254
+ return 0;
1255
+ }
1256
+ const reactionStat = (0, exports.getStatByAction)(spasmEvent, "react");
1257
+ if (!reactionStat) {
1258
+ return 0;
1259
+ }
1260
+ if (!("contents" in reactionStat) || !reactionStat.contents ||
1261
+ !(0, exports.isArrayWithValues)(reactionStat.contents)) {
1262
+ return 0;
1263
+ }
1264
+ let total = 0;
1265
+ reactionStat.contents.forEach(content => {
1266
+ if ("value" in content && content.value &&
1267
+ content.value === reaction &&
1268
+ "total" in content && content.total) {
1269
+ if (typeof (content.total) === "number") {
1270
+ total = content.total;
1271
+ }
1272
+ else if (typeof (content.total) === "string") {
1273
+ total = Number(content.total);
1274
+ }
1275
+ }
1276
+ });
1277
+ return total;
1278
+ };
1279
+ exports.getTotalOfReaction = getTotalOfReaction;
1280
+ const getTotalOfMostPopularReaction = (unknownEvent) => {
1281
+ const spasmEvent = (0, exports.toBeSpasmEventV2)(unknownEvent);
1282
+ if (!spasmEvent || !(0, exports.isObjectWithValues)(spasmEvent)) {
1283
+ return 0;
1284
+ }
1285
+ const reactionStat = (0, exports.getStatByAction)(spasmEvent, "react");
1286
+ if (!reactionStat) {
1287
+ return 0;
1288
+ }
1289
+ if (!("contents" in reactionStat) || !reactionStat.contents ||
1290
+ !(0, exports.isArrayWithValues)(reactionStat.contents)) {
1291
+ return 0;
1292
+ }
1293
+ let total = 0;
1294
+ reactionStat.contents.forEach(content => {
1295
+ if ("total" in content && content.total) {
1296
+ let newTotal = 0;
1297
+ if (typeof (content.total) === "number") {
1298
+ newTotal = content.total;
1299
+ }
1300
+ else if (typeof (content.total) === "string") {
1301
+ newTotal = Number(content.total);
1302
+ }
1303
+ if (newTotal > total) {
1304
+ total = newTotal;
1305
+ }
1306
+ }
1307
+ });
1308
+ return total;
1309
+ };
1310
+ exports.getTotalOfMostPopularReaction = getTotalOfMostPopularReaction;
1311
+ const getTotalOfAction = (unknownEvent, action = "reply") => {
1312
+ if (!action || !exports.isStringOrNumber) {
1313
+ return 0;
1314
+ }
1315
+ const spasmEvent = (0, exports.toBeSpasmEventV2)(unknownEvent);
1316
+ if (!spasmEvent || !(0, exports.isObjectWithValues)(spasmEvent)) {
1317
+ return 0;
1318
+ }
1319
+ const actionStat = (0, exports.getStatByAction)(spasmEvent, action);
1320
+ if (!actionStat) {
1321
+ return 0;
1322
+ }
1323
+ if ("total" in actionStat && actionStat.total) {
1324
+ if (typeof (actionStat.total) === "number") {
1325
+ return actionStat.total;
1326
+ }
1327
+ else if (typeof (actionStat.total) === "string") {
1328
+ return Number(actionStat.total);
1329
+ }
1330
+ }
1331
+ return 0;
1332
+ };
1333
+ exports.getTotalOfAction = getTotalOfAction;
1334
+ const getTotalOfReply = (unknownEvent) => {
1335
+ return (0, exports.getTotalOfAction)(unknownEvent, "reply");
1336
+ };
1337
+ exports.getTotalOfReply = getTotalOfReply;
1338
+ exports.getTotalOfReplyAction = exports.getTotalOfReply;
1339
+ exports.getTotalOfActionReply = exports.getTotalOfReply;
1340
+ const getTotalOfReact = (unknownEvent) => {
1341
+ return (0, exports.getTotalOfAction)(unknownEvent, "react");
1342
+ };
1343
+ exports.getTotalOfReact = getTotalOfReact;
1344
+ exports.getTotalOfReactAction = exports.getTotalOfReact;
1345
+ exports.getTotalOfActionReact = exports.getTotalOfReact;
1213
1346
  const isAnySignerListedIn = (unknownEvent, list) => {
1214
1347
  const signersListedIn = (0, exports.getSignersListedIn)(unknownEvent, list);
1215
1348
  if (signersListedIn &&
@@ -1308,6 +1441,81 @@ const getIdByFormat = (unknownEvent, customIdFormat) => {
1308
1441
  return idValue;
1309
1442
  };
1310
1443
  exports.getIdByFormat = getIdByFormat;
1444
+ const checkIfEventHasThisId = (unknownEvent, id) => {
1445
+ if (!id || !(0, exports.isStringOrNumber)(id)) {
1446
+ return false;
1447
+ }
1448
+ const spasmEvent = (0, exports.toBeSpasmEventV2)(unknownEvent);
1449
+ if (!spasmEvent || !(0, exports.isObjectWithValues)(spasmEvent)) {
1450
+ return false;
1451
+ }
1452
+ const eventIds = (0, exports.getAllEventIds)(spasmEvent);
1453
+ if (!eventIds || !(0, exports.isArrayWithValues)(eventIds)) {
1454
+ return false;
1455
+ }
1456
+ if (eventIds.includes(id)) {
1457
+ return true;
1458
+ }
1459
+ else {
1460
+ return false;
1461
+ }
1462
+ };
1463
+ exports.checkIfEventHasThisId = checkIfEventHasThisId;
1464
+ const getEventById = (unknownEvents, id) => {
1465
+ if (!id || !(0, exports.isStringOrNumber)(id)) {
1466
+ return null;
1467
+ }
1468
+ const spasmEvents = (0, exports.toBeSpasmEventsV2)(unknownEvents);
1469
+ if (!spasmEvents || !spasmEvents[0] ||
1470
+ !(0, exports.isObjectWithValues)(spasmEvents[0]))
1471
+ return null;
1472
+ const foundEvents = [];
1473
+ spasmEvents.forEach(event => {
1474
+ if ((0, exports.checkIfEventHasThisId)(event, id)) {
1475
+ foundEvents.push(event);
1476
+ }
1477
+ });
1478
+ if (foundEvents && Array.isArray(foundEvents) &&
1479
+ foundEvents.length === 1 &&
1480
+ (0, exports.isObjectWithValues)(foundEvents[0])) {
1481
+ return foundEvents[0];
1482
+ }
1483
+ else if (foundEvents && Array.isArray(foundEvents) &&
1484
+ foundEvents.length > 1 &&
1485
+ (0, exports.isArrayWithValues)(foundEvents)) {
1486
+ const mergedEvent = (0, exports.mergeSpasmEventsV2)(foundEvents);
1487
+ if (mergedEvent) {
1488
+ return mergedEvent;
1489
+ }
1490
+ }
1491
+ return null;
1492
+ };
1493
+ exports.getEventById = getEventById;
1494
+ const getEventsByIds = (unknownEvents, ids) => {
1495
+ if (!ids || !(0, exports.isArrayWithValues)(ids)) {
1496
+ return null;
1497
+ }
1498
+ const spasmEvents = (0, exports.toBeSpasmEventsV2)(unknownEvents);
1499
+ if (!spasmEvents || !spasmEvents[0] ||
1500
+ !(0, exports.isObjectWithValues)(spasmEvents[0]))
1501
+ return null;
1502
+ const foundEvents = [];
1503
+ ids.forEach(id => {
1504
+ spasmEvents.forEach(event => {
1505
+ if ((0, exports.checkIfEventHasThisId)(event, id)) {
1506
+ foundEvents.push(event);
1507
+ }
1508
+ });
1509
+ });
1510
+ const mergedEvents = (0, exports.mergeDifferentSpasmEventsV2)(foundEvents);
1511
+ if (mergedEvents && (0, exports.isArrayWithValues)(mergedEvents)) {
1512
+ return mergedEvents;
1513
+ }
1514
+ else {
1515
+ return null;
1516
+ }
1517
+ };
1518
+ exports.getEventsByIds = getEventsByIds;
1311
1519
  exports.extractIdByFormat = exports.getIdByFormat;
1312
1520
  const extractSpasmId01 = (unknownEvent) => {
1313
1521
  return (0, exports.extractIdByFormat)(unknownEvent, { name: "spasmid", version: "01" });
@@ -1715,19 +1923,34 @@ const mergeDifferentSpasmEventsV2 = (unknownEvents, depth = 0) => {
1715
1923
  return null;
1716
1924
  const uniqueIds = new Set();
1717
1925
  const uniqueEvents = [];
1718
- // const nonUniqueEvents: SpasmEventV2[] = []
1926
+ const checkIfEventIsAlreadyInUnique = (event) => {
1927
+ const allEventIds = (0, exports.getAllEventIds)(event);
1928
+ let isAlreadyAdded = false;
1929
+ if (allEventIds && Array.isArray(allEventIds)) {
1930
+ allEventIds.forEach(id => {
1931
+ if (uniqueIds.has(id)) {
1932
+ isAlreadyAdded = true;
1933
+ }
1934
+ });
1935
+ }
1936
+ return isAlreadyAdded;
1937
+ };
1719
1938
  spasmEvents?.forEach(event => {
1720
1939
  // Spasm events might have multiple IDs so we need to use
1721
1940
  // flags below to avoid redoing the same actions.
1722
1941
  let isEventAddedToUnique = false;
1942
+ const isEventAlreadyInUnique = checkIfEventIsAlreadyInUnique(event);
1723
1943
  let isEventMerged = false;
1944
+ // TODO check if other IDs of an event
1945
+ // are not in uniqueIds
1724
1946
  if ('ids' in event && event.ids &&
1725
1947
  Array.isArray(event.ids)) {
1726
1948
  event.ids.forEach(id => {
1727
1949
  if ("value" in id && id.value &&
1728
1950
  (typeof (id.value) === "string" ||
1729
1951
  typeof (id.value) === "number")) {
1730
- if (!uniqueIds.has(id.value)) {
1952
+ if (!uniqueIds.has(id.value) &&
1953
+ !isEventAlreadyInUnique) {
1731
1954
  uniqueIds.add(id.value);
1732
1955
  if (!isEventAddedToUnique) {
1733
1956
  uniqueEvents.push(event);