@resolveio/server-lib 20.11.8 → 20.11.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/client-server-app.js +2 -2
  2. package/collections/app-status.collection.js.map +1 -1
  3. package/collections/counter.collection.js.map +1 -1
  4. package/collections/cron-job-history.collection.js +2 -2
  5. package/collections/cron-job-history.collection.js.map +1 -1
  6. package/collections/cron-job.collection.js.map +1 -1
  7. package/collections/email-history.collection.js.map +1 -1
  8. package/collections/email-verified.collection.js.map +1 -1
  9. package/collections/file.collection.js.map +1 -1
  10. package/collections/flag-update.collection.js.map +1 -1
  11. package/collections/flag.collection.js.map +1 -1
  12. package/collections/log-method-latency.collection.js.map +1 -1
  13. package/collections/log-subscription.collection.js.map +1 -1
  14. package/collections/log.collection.js.map +1 -1
  15. package/collections/logged-in-users.collection.js.map +1 -1
  16. package/collections/monitor-cpu.collection.js.map +1 -1
  17. package/collections/monitor-function.collection.js.map +1 -1
  18. package/collections/monitor-memory.collection.js.map +1 -1
  19. package/collections/monitor-mongo.collection.js.map +1 -1
  20. package/collections/notification.collection.js.map +1 -1
  21. package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
  22. package/collections/report-builder-library.collection.js.map +1 -1
  23. package/collections/report-builder-report.collection.js.map +1 -1
  24. package/collections/user-group.collection.js.map +1 -1
  25. package/collections/user-guide.collection.js.map +1 -1
  26. package/collections/user.collection.js.map +1 -1
  27. package/cron/cron.d.ts +5 -5
  28. package/cron/cron.js +169 -51
  29. package/cron/cron.js.map +1 -1
  30. package/fixtures/cron-jobs.js +3 -4
  31. package/fixtures/cron-jobs.js.map +1 -1
  32. package/fixtures/init.js +3 -4
  33. package/fixtures/init.js.map +1 -1
  34. package/http/auth.js +13 -14
  35. package/http/auth.js.map +1 -1
  36. package/http/health.js +3 -4
  37. package/http/health.js.map +1 -1
  38. package/http/home.js +5 -6
  39. package/http/home.js.map +1 -1
  40. package/managers/cron.manager.js +95 -59
  41. package/managers/cron.manager.js.map +1 -1
  42. package/managers/local-log.manager.js.map +1 -1
  43. package/managers/method.manager.js +12 -12
  44. package/managers/method.manager.js.map +1 -1
  45. package/managers/mongo.manager.d.ts +6 -7
  46. package/managers/mongo.manager.js +129 -129
  47. package/managers/mongo.manager.js.map +1 -1
  48. package/managers/monitor.manager.js +2 -2
  49. package/managers/monitor.manager.js.map +1 -1
  50. package/managers/subscription.manager.js +20 -20
  51. package/managers/subscription.manager.js.map +1 -1
  52. package/managers/websocket.manager.js.map +1 -1
  53. package/managers/worker-dispatcher.manager.js.map +1 -1
  54. package/managers/worker-server.manager.js +6 -6
  55. package/managers/worker-server.manager.js.map +1 -1
  56. package/methods/accounts.js +7 -8
  57. package/methods/accounts.js.map +1 -1
  58. package/methods/aws.js +3 -4
  59. package/methods/aws.js.map +1 -1
  60. package/methods/collections.js +3 -4
  61. package/methods/collections.js.map +1 -1
  62. package/methods/counters.js +3 -4
  63. package/methods/counters.js.map +1 -1
  64. package/methods/cron-jobs.js +4 -5
  65. package/methods/cron-jobs.js.map +1 -1
  66. package/methods/flag-updates.js +1 -2
  67. package/methods/flag-updates.js.map +1 -1
  68. package/methods/flags.js +1 -2
  69. package/methods/flags.js.map +1 -1
  70. package/methods/logs.js +4 -5
  71. package/methods/logs.js.map +1 -1
  72. package/methods/monitor.js +3 -4
  73. package/methods/monitor.js.map +1 -1
  74. package/methods/pdf.js +30 -31
  75. package/methods/pdf.js.map +1 -1
  76. package/methods/report-builder.js +16 -17
  77. package/methods/report-builder.js.map +1 -1
  78. package/methods/support.js +3 -4
  79. package/methods/support.js.map +1 -1
  80. package/package.json +57 -59
  81. package/private/images/ResolveIO.png +0 -0
  82. package/publications/app-status.js +1 -2
  83. package/publications/app-status.js.map +1 -1
  84. package/publications/cron-jobs.js +1 -2
  85. package/publications/cron-jobs.js.map +1 -1
  86. package/publications/files.js +1 -2
  87. package/publications/files.js.map +1 -1
  88. package/publications/flags-update.js +1 -2
  89. package/publications/flags-update.js.map +1 -1
  90. package/publications/flags.js +1 -2
  91. package/publications/flags.js.map +1 -1
  92. package/publications/logs.js +1 -2
  93. package/publications/logs.js.map +1 -1
  94. package/publications/notifications.js +1 -2
  95. package/publications/notifications.js.map +1 -1
  96. package/publications/report-builder-dashboard-builders.js +1 -2
  97. package/publications/report-builder-dashboard-builders.js.map +1 -1
  98. package/publications/report-builder-libraries.js +3 -4
  99. package/publications/report-builder-libraries.js.map +1 -1
  100. package/publications/report-builder-reports.js +1 -2
  101. package/publications/report-builder-reports.js.map +1 -1
  102. package/publications/super-admin.js +1 -2
  103. package/publications/super-admin.js.map +1 -1
  104. package/publications/user-groups.js +1 -2
  105. package/publications/user-groups.js.map +1 -1
  106. package/publications/user-guides.js +1 -2
  107. package/publications/user-guides.js.map +1 -1
  108. package/resolveio-server-app.js +10 -10
  109. package/resolveio-server-app.js.map +1 -1
  110. package/server-app.d.ts +0 -1
  111. package/server-app.js +18 -10
  112. package/server-app.js.map +1 -1
  113. package/util/common.js +24 -25
  114. package/util/common.js.map +1 -1
  115. package/util/error-reporter.js +3 -3
  116. package/util/error-reporter.js.map +1 -1
  117. package/util/error-tracking.js +7 -8
  118. package/util/error-tracking.js.map +1 -1
  119. package/util/schema-report-builder.js +7 -8
  120. package/util/schema-report-builder.js.map +1 -1
  121. package/util/subscription-dependency-context.js +5 -6
  122. package/util/subscription-dependency-context.js.map +1 -1
package/util/common.js CHANGED
@@ -47,7 +47,30 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
47
47
  return to.concat(ar || Array.prototype.slice.call(from));
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.generateSearchTokensFromFields = exports.mergeDeep = exports.isObject = exports.toTitleCase = exports.randomString = exports.pad = exports.getBinarySize = exports.deepDiffDetails = exports.applyMongoUpdate = exports.getDeepDiff = exports.mergeUpdates = exports.getMongoMergeUpdatedDoc = exports.getMongoUpdates = exports.isAllowedOrigin = exports.getAllowedOrigins = exports.dateReviver = exports.deepCopy = exports.floorPrecision = exports.round = exports.roundPrecision = exports.throwErr = exports.buildRbLookups = exports.buildRbSchema = exports.objectIdHexString = void 0;
50
+ exports.objectIdHexString = objectIdHexString;
51
+ exports.buildRbSchema = buildRbSchema;
52
+ exports.buildRbLookups = buildRbLookups;
53
+ exports.throwErr = throwErr;
54
+ exports.roundPrecision = roundPrecision;
55
+ exports.round = round;
56
+ exports.floorPrecision = floorPrecision;
57
+ exports.deepCopy = deepCopy;
58
+ exports.dateReviver = dateReviver;
59
+ exports.getAllowedOrigins = getAllowedOrigins;
60
+ exports.isAllowedOrigin = isAllowedOrigin;
61
+ exports.getMongoUpdates = getMongoUpdates;
62
+ exports.getMongoMergeUpdatedDoc = getMongoMergeUpdatedDoc;
63
+ exports.mergeUpdates = mergeUpdates;
64
+ exports.getDeepDiff = getDeepDiff;
65
+ exports.applyMongoUpdate = applyMongoUpdate;
66
+ exports.deepDiffDetails = deepDiffDetails;
67
+ exports.getBinarySize = getBinarySize;
68
+ exports.pad = pad;
69
+ exports.randomString = randomString;
70
+ exports.toTitleCase = toTitleCase;
71
+ exports.isObject = isObject;
72
+ exports.mergeDeep = mergeDeep;
73
+ exports.generateSearchTokensFromFields = generateSearchTokensFromFields;
51
74
  /* eslint-disable no-restricted-properties */
52
75
  var rusDiff = require('rus-diff');
53
76
  var deepDiff = require('deep-diff').diff;
@@ -59,7 +82,6 @@ function objectIdHexString() {
59
82
  var objectId = new mongodb_1.ObjectId();
60
83
  return objectId.toHexString();
61
84
  }
62
- exports.objectIdHexString = objectIdHexString;
63
85
  function buildRbSchema(rbSchema) {
64
86
  Object.keys(rbSchema).forEach(function (key) {
65
87
  if (rbSchema[key].type === Object) {
@@ -92,7 +114,6 @@ function buildRbSchema(rbSchema) {
92
114
  });
93
115
  return rbSchema;
94
116
  }
95
- exports.buildRbSchema = buildRbSchema;
96
117
  function buildRbLookups(rbLookups, defaultSchema, default_checked_array) {
97
118
  // Remember: lkp.local_key will be removed later on, because it has 'id_'
98
119
  if (default_checked_array === void 0) { default_checked_array = []; }
@@ -139,7 +160,6 @@ function buildRbLookups(rbLookups, defaultSchema, default_checked_array) {
139
160
  }
140
161
  return defaultSchema;
141
162
  }
142
- exports.buildRbLookups = buildRbLookups;
143
163
  function throwErr(err, lkp, lookupNode, newPropertyName) {
144
164
  if (newPropertyName === void 0) { newPropertyName = ''; }
145
165
  // err could be from a try/throw/catch
@@ -151,7 +171,6 @@ function throwErr(err, lkp, lookupNode, newPropertyName) {
151
171
  console.log(lookupNode);
152
172
  process.exit(1);
153
173
  }
154
- exports.throwErr = throwErr;
155
174
  function roundPrecision(value, precision) {
156
175
  if (precision === void 0) { precision = 0; }
157
176
  var stringValue = value.toString();
@@ -164,14 +183,12 @@ function roundPrecision(value, precision) {
164
183
  var exponent = Math.pow(10, precision);
165
184
  return Math.round(parseFloat(stringValue) * exponent) / exponent;
166
185
  }
167
- exports.roundPrecision = roundPrecision;
168
186
  function round(value, precision) {
169
187
  if (precision === void 0) { precision = 0; }
170
188
  var power = Math.pow(10, precision);
171
189
  var adjustment = 1e-6;
172
190
  return Math.round((value * power) + adjustment) / power;
173
191
  }
174
- exports.round = round;
175
192
  function floorPrecision(value, precision) {
176
193
  if (precision === void 0) { precision = 0; }
177
194
  var stringValue = value.toString();
@@ -184,11 +201,9 @@ function floorPrecision(value, precision) {
184
201
  var exponent = Math.pow(10, precision);
185
202
  return Math.floor(parseFloat(stringValue) * exponent) / exponent;
186
203
  }
187
- exports.floorPrecision = floorPrecision;
188
204
  function deepCopy(value) {
189
205
  return clone(value);
190
206
  }
191
- exports.deepCopy = deepCopy;
192
207
  function dateReviver(key, value) {
193
208
  if (typeof value === 'string') {
194
209
  var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
@@ -198,7 +213,6 @@ function dateReviver(key, value) {
198
213
  }
199
214
  return value;
200
215
  }
201
- exports.dateReviver = dateReviver;
202
216
  function buildAllowedOrigins(configOrigins) {
203
217
  var origins = [];
204
218
  if (Array.isArray(configOrigins)) {
@@ -225,14 +239,12 @@ function getAllowedOrigins(serverConfig) {
225
239
  buildAllowedOrigins(process.env.ADDITIONAL_ALLOWED_ORIGINS).forEach(function (origin) { return allowedOrigins.add(origin); });
226
240
  return Array.from(allowedOrigins);
227
241
  }
228
- exports.getAllowedOrigins = getAllowedOrigins;
229
242
  function isAllowedOrigin(origin, serverConfig) {
230
243
  if (!origin) {
231
244
  return false;
232
245
  }
233
246
  return getAllowedOrigins(serverConfig).includes(origin);
234
247
  }
235
- exports.isAllowedOrigin = isAllowedOrigin;
236
248
  function getMongoUpdates(currDoc, modifiedDoc, incVersion) {
237
249
  if (currDoc.createdAt) {
238
250
  modifiedDoc.createdAt = currDoc.createdAt;
@@ -258,7 +270,6 @@ function getMongoUpdates(currDoc, modifiedDoc, incVersion) {
258
270
  }
259
271
  return updates;
260
272
  }
261
- exports.getMongoUpdates = getMongoUpdates;
262
273
  function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {
263
274
  var upDoc = deepCopy(currentDoc); // was oldDoc
264
275
  upDoc.__v = currentDoc.__v;
@@ -268,7 +279,6 @@ function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {
268
279
  applyMongoUpdate(upDoc, updates);
269
280
  return upDoc;
270
281
  }
271
- exports.getMongoMergeUpdatedDoc = getMongoMergeUpdatedDoc;
272
282
  function mergeUpdates() {
273
283
  var updatesToMerge = [];
274
284
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -298,7 +308,6 @@ function mergeUpdates() {
298
308
  });
299
309
  return merged;
300
310
  }
301
- exports.mergeUpdates = mergeUpdates;
302
311
  function handleEditedChange(merged, path, change) {
303
312
  // Later diffs override earlier ones
304
313
  if (typeof (change.rhs) === 'number' && (path.includes('quantity') || path.includes('qty'))) {
@@ -343,7 +352,6 @@ function getDeepDiff(doc1, doc2) {
343
352
  }
344
353
  return deepDiff(doc1, doc2);
345
354
  }
346
- exports.getDeepDiff = getDeepDiff;
347
355
  function applyMongoUpdate(uDoc, delta) {
348
356
  var orig = deepCopy(uDoc);
349
357
  if (delta) {
@@ -362,7 +370,6 @@ function applyMongoUpdate(uDoc, delta) {
362
370
  }
363
371
  return uDoc;
364
372
  }
365
- exports.applyMongoUpdate = applyMongoUpdate;
366
373
  function handleRename(uDoc, renameMap) {
367
374
  for (var k in renameMap) {
368
375
  var v = renameMap[k];
@@ -601,7 +608,6 @@ function deepDiffDetails(object1, object2) {
601
608
  });
602
609
  return diffString;
603
610
  }
604
- exports.deepDiffDetails = deepDiffDetails;
605
611
  function getBinarySize(string) {
606
612
  if (string) {
607
613
  return Buffer.byteLength(string, 'utf8');
@@ -610,7 +616,6 @@ function getBinarySize(string) {
610
616
  return 0;
611
617
  }
612
618
  }
613
- exports.getBinarySize = getBinarySize;
614
619
  function pad(num, size) {
615
620
  var s = num + '';
616
621
  while (s.length < size) {
@@ -618,7 +623,6 @@ function pad(num, size) {
618
623
  }
619
624
  return s;
620
625
  }
621
- exports.pad = pad;
622
626
  function randomString(length, chars) {
623
627
  var result = '';
624
628
  for (var i = length; i > 0; --i) {
@@ -626,17 +630,14 @@ function randomString(length, chars) {
626
630
  }
627
631
  return result;
628
632
  }
629
- exports.randomString = randomString;
630
633
  function toTitleCase(str) {
631
634
  return str.replace(/\w\S*/g, function (txt) {
632
635
  return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
633
636
  });
634
637
  }
635
- exports.toTitleCase = toTitleCase;
636
638
  function isObject(item) {
637
639
  return (item && typeof item === 'object' && !Array.isArray(item));
638
640
  }
639
- exports.isObject = isObject;
640
641
  function mergeDeep(target) {
641
642
  var _a, _b;
642
643
  var sources = [];
@@ -662,7 +663,6 @@ function mergeDeep(target) {
662
663
  }
663
664
  return mergeDeep.apply(void 0, __spreadArray([target], __read(sources), false));
664
665
  }
665
- exports.mergeDeep = mergeDeep;
666
666
  function generateSearchTokensFromFields(doc, fields) {
667
667
  var tokens = new Set();
668
668
  fields.forEach(function (field) {
@@ -678,6 +678,5 @@ function generateSearchTokensFromFields(doc, fields) {
678
678
  });
679
679
  return Array.from(tokens);
680
680
  }
681
- exports.generateSearchTokensFromFields = generateSearchTokensFromFields;
682
681
 
683
682
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["/* eslint-disable no-restricted-properties */\nlet rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { detailedDiff } from 'deep-object-diff';\nimport * as moment from 'moment-timezone';\nimport { ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\n\nexport function buildRbSchema(rbSchema: any) {\n\tObject.keys(rbSchema).forEach(key => {\n\t\tif (rbSchema[key].type === Object) {\n\t\t\trbSchema[key].type = 'Object';\n\t\t\trbSchema[key].rbType = 'Object';\n\t\t}\n\t\telse if (rbSchema[key].type === Array) {\n\t\t\trbSchema[key].type = 'Array';\n\t\t\trbSchema[key].rbType = 'Array';\n\t\t}\n\t\telse if (rbSchema[key].type === String) {\n\t\t\trbSchema[key].type = 'String';\n\t\t\trbSchema[key].rbType = 'String';\n\t\t}\n\t\telse if (rbSchema[key].type === Date) {\n\t\t\trbSchema[key].type = 'Date';\n\t\t\trbSchema[key].rbType = 'Date';\n\t\t}\n\t\telse if (rbSchema[key].type === Number) {\n\t\t\trbSchema[key].type = 'Number';\n\t\t\trbSchema[key].rbType = 'Number';\n\t\t}\n\t\telse if (rbSchema[key].type === Boolean) {\n\t\t\trbSchema[key].rbType = 'Boolean';\n\t\t\trbSchema[key].type = 'Boolean';\n\t\t}\n\t});\n\n\tObject.keys(rbSchema).forEach(key => {\n\t\tdelete rbSchema[key].type;\n\t});\n\n\treturn rbSchema;\n}\n\nexport function buildRbLookups(rbLookups: LookupTables[], defaultSchema: object, default_checked_array: string[] = []) {\n\t// Remember: lkp.local_key will be removed later on, because it has 'id_'\n\t\n\trbLookups.forEach(lkp => {\n\t\tlet errString = '';\n\t\tlet localKey, newPropertyName;\n\t\tlet localKeyDir = '';\n\t\tlet localKeyDirDot = '';\n\t\tlet collectionAlias = toTitleCase(lkp.lookup.replace(/\\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\\_/g, ' ').replace(/\\.\\$\\./g, ' -> ').replace(/\\./g, ' -> ')) + ') (Lookup)';\n\n\t\tif (lkp.local_key.match(/\\./)) {\n\t\t\tlocalKey = lkp.local_key.replace(/\\.\\$/g, '');\n\t\t\tlocalKeyDirDot = lkp.local_key.replace(/^(.+\\.).*$/, '$1');\n\t\t\tlocalKeyDir = localKeyDirDot.replace(/\\.$/, '');\n\t\t}\n\t\telse {\n\t\t\t// local_key is a root leaf node.\n\t\t\tlocalKey = lkp.local_key;\n\t\t}\n\t\tnewPropertyName = localKeyDirDot + collectionAlias;\n\t\t\n\t\tif (!defaultSchema[lkp.local_key]) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a valid schema path! ';\n\t\t}\n\t\telse if (defaultSchema[lkp.local_key].type !== String) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a String! ';\n\t\t}\n\t\tlet lookupNode = {\n\t\t\tlookup_collection: lkp.lookup,\n\t\t\tlookup_collection_alias: collectionAlias,\n\t\t\tlocal_key: localKey,\n\t\t\tfield_path: localKeyDir,\n\t\t\tlookup_as: newPropertyName,\n\t\t\tlookup_key: '_id',\n\t\t\ttype: 'Object',\n\t\t};\n\n\t\tdefaultSchema[newPropertyName] = lookupNode;\n\n\t\tif (errString) {\n\t\t\tthrowErr(errString, lkp, lookupNode, newPropertyName);\n\t\t}\n\t});\n\n\tfor (let ii = 0; ii < default_checked_array.length; ii++) {\n\t\tdefaultSchema[default_checked_array[ii]] = {};\n\t\tdefaultSchema[default_checked_array[ii]]['default_checked'] = true;\n\t\tObject.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);\n\t}\n\n\treturn defaultSchema;\n}\n\nexport function throwErr(err: any, lkp, lookupNode, newPropertyName = '') {\n\t// err could be from a try/throw/catch\n\tconsole.log('------- ERROR thrown by rbLookups: ');\n\tconsole.log(err);\n\tconsole.log('---item: ');\n\tconsole.log(lkp);\n\tconsole.log('---Attempted to create rbSchema[\\'' + newPropertyName + '\\']: ');\n\tconsole.log(lookupNode);\n\tprocess.exit(1);\n}\n\nexport function roundPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.round(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function round(value, precision = 0) {\n\tconst power = Math.pow(10, precision);\n\tconst adjustment = 1e-6;\n\treturn Math.round( (value * power) + adjustment) / power;\n}\n\nexport function floorPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.floor(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\n}\n\nexport function dateReviver(key, value) {\n\tif (typeof value === 'string') {\n\t\tlet a = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n\t\tif (a) {\n\t\t\treturn new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));\n\t\t}\n\t}\n\treturn value;\n}\n\nfunction buildAllowedOrigins(configOrigins): string[] {\n\tlet origins = [];\n\n\tif (Array.isArray(configOrigins)) {\n\t\torigins = configOrigins.map(origin => typeof origin === 'string' ? origin.trim() : origin);\n\t}\n\telse if (typeof configOrigins === 'string') {\n\t\tlet splitOrigins = configOrigins.split(',').map(origin => origin.trim()).filter(origin => origin);\n\t\torigins = splitOrigins;\n\t}\n\n\treturn origins.filter(origin => typeof origin === 'string' && origin.trim() !== '');\n}\n\nexport function getAllowedOrigins(serverConfig): string[] {\n\tlet allowedOrigins = new Set<string>();\n\tlet defaultKeys = ['ROOT_URL', 'SEC_ROOT_URL', 'RESOLVEIO_URL', 'RESOLVEIO_SECONDARY_URL'];\n\n\tdefaultKeys.forEach(key => {\n\t\tlet value = serverConfig[key];\n\t\tif (typeof value === 'string' && value.trim()) {\n\t\t\tallowedOrigins.add(value.trim());\n\t\t}\n\t});\n\n\tbuildAllowedOrigins(serverConfig['ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(serverConfig['ADDITIONAL_ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ADDITIONAL_ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\n\treturn Array.from(allowedOrigins);\n}\n\nexport function isAllowedOrigin(origin: string, serverConfig): boolean {\n\tif (!origin) {\n\t\treturn false;\n\t}\n\n\treturn getAllowedOrigins(serverConfig).includes(origin);\n}\n\nexport function getMongoUpdates(currDoc, modifiedDoc, incVersion) {\n\tif (currDoc.createdAt) {\n\t\tmodifiedDoc.createdAt = currDoc.createdAt;\n\t}\n\n\tif (currDoc.updatedAt) {\n\t\tmodifiedDoc.updatedAt = currDoc.updatedAt;\n\t}\n\n\tlet updates = rusDiff.diff(currDoc, modifiedDoc);\n\n\tif (updates) {\n\t\tif (updates.$set && !Object.keys(updates.$set).length) {\n\t\t\tdelete updates.$set;\n\t\t}\n\n\t\tif (incVersion) {\n\t\t\tupdates.$inc = {__v: 1};\n\t\t}\n\t}\n\telse {\n\t\tif (incVersion) {\n\t\t\tupdates = {\n\t\t\t\t$inc: {__v: 1}\n\t\t\t};\n\t\t}\n\t}\n\n\treturn updates;\n}\n\nexport function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {\n\tlet upDoc = deepCopy(currentDoc); // was oldDoc\n\tupDoc.__v = currentDoc.__v;\n\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\n\nexport function mergeUpdates(...updatesToMerge) {\n const merged = {\n $set: {},\n $unset: {},\n $inc: {},\n $push: {},\n $pull: {}\n };\n\n updatesToMerge.filter(Boolean).forEach(anUpdate => {\n anUpdate.forEach(change => {\n const path = change.path.join('.');\n\n switch (change.kind) {\n case 'E':\n handleEditedChange(merged, path, change);\n break;\n case 'A':\n handleArrayChange(merged, path, change);\n break;\n default:\n break;\n }\n });\n });\n\n return merged;\n}\n\nfunction handleEditedChange(merged, path, change) {\n\t// Later diffs override earlier ones\n\tif (typeof(change.rhs) === 'number' && (path.includes('quantity') || path.includes('qty'))) {\n\t\tmerged.$inc[path] = (merged.$inc[path] || 0) + change.rhs - change.lhs;\n\t}\n\telse {\n\t\tmerged.$set[path] = change.rhs;\n\t}\n}\n\n\nfunction handleArrayChange(merged, path, change) {\n\tif (change.item.kind === 'N') {\n\t\tif (!merged.$push[path]) merged.$push[path] = { $each: [] };\n\n\t\tif (!merged.$push[path].$each.some(a => JSON.stringify(a) === JSON.stringify(change.item.rhs))) {\n\t\t\tmerged.$push[path].$each.push(change.item.rhs);\n\t\t}\n\t}\n\telse if (change.item.kind === 'D') {\n\t\tif (!merged.$pull[path]) merged.$pull[path] = [];\n\n\t\tif (!merged.$pull[path].some(a => JSON.stringify(a) === JSON.stringify(change.item.lhs))) {\n\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t}\n\t}\n}\n\nexport function getDeepDiff(doc1, doc2) {\n\tdelete doc1._id;\n\tdelete doc1.__v;\n\n\tif (doc1.updatedAt) {\n\t\tdelete doc1.updatedAt;\n\t}\n\n\tif (doc1.createdAt) {\n\t\tdelete doc1.createdAt;\n\t}\n\n\tdelete doc2._id;\n\tdelete doc2.__v;\n\n\tif (doc2.updatedAt) {\n\t\tdelete doc2.updatedAt;\n\t}\n\n\tif (doc2.createdAt) {\n\t\tdelete doc2.createdAt;\n\t}\n\n\treturn deepDiff(doc1, doc2);\n}\n\nexport function applyMongoUpdate(uDoc: any, delta: any): any {\n const orig = deepCopy(uDoc);\n\n if (delta) {\n if (delta.$rename) handleRename(uDoc, delta.$rename);\n if (delta.$set) handleSet(uDoc, delta.$set);\n if (delta.$inc) handleInc(uDoc, delta.$inc);\n if (delta.$unset) handleUnset(uDoc, delta.$unset);\n if (delta.$pull) handlePull(uDoc, orig, delta.$pull);\n if (delta.$push) handlePush(uDoc, delta.$push);\n }\n\n return uDoc;\n}\n\nfunction handleRename(uDoc: any, renameMap: any) {\n for (const k in renameMap) {\n const v = renameMap[k];\n const [o1, n1] = resolve(uDoc, k);\n const [o2, n2] = resolve(uDoc, v);\n if (o1 && n1.length === 1) {\n if (o2 && n2.length === 1) {\n o2[n2[0]] = o1[n1[0]];\n delete o1[n1[0]];\n } else {\n logError(o2, n2, uDoc, v);\n }\n } else {\n logError(o1, n1, uDoc, k);\n }\n }\n}\n\nfunction handleSet(uDoc: any, setMap: any) {\n for (const k in setMap) {\n const v = setMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n o[n[0]] = v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleInc(uDoc: any, incMap: any) {\n for (const k in incMap) {\n const v = incMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n\t\t\tif (typeof o[n[0]] !== 'number') {\n\t\t\t\to[n[0]] = 0;\n\t\t\t}\n\t\t\to[n[0]] += v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleUnset(uDoc: any, unsetMap: any) {\n for (const k in unsetMap) {\n const [o, n] = resolve(uDoc, k);\n if (o && n.length === 1) {\n delete o[n[0]];\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handlePull(uDoc: any, orig: any, pullMap: any) {\n for (const pathk in pullMap) {\n const pullValues = pullMap[pathk];\n for (let vk of pullValues) {\n const [o, n] = resolve(uDoc, pathk);\n const [o2, n2] = resolve(orig, pathk);\n if (o && n.length === 1) {\n\t\t\t\tconst index = (<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk));\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\to[n[0]].splice(index, 1);\n\t\t\t\t}\n } else {\n logError(o, n, uDoc, pathk);\n }\n }\n }\n}\n\nfunction handlePush(uDoc: any, pushMap: any) {\n\tfor (const pathk in pushMap) {\n\t\tconst pushValues = pushMap[pathk];\n\n\t\t// Normalize ─ accept $each, scalar, or array\n\t\tlet values: any[] = [];\n\t\tif (Array.isArray(pushValues)) {\n\t\t\tvalues = pushValues;\n\t\t}\n\t\telse if (pushValues && typeof pushValues === 'object') {\n\t\t\tif (Array.isArray(pushValues.$each)) {\n\t\t\t\tvalues = pushValues.$each; // canonical `$each`\n\t\t\t} else {\n\t\t\t\tvalues = [pushValues]; // single element object\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tvalues = [pushValues]; // scalar push\n\t\t}\n\n\t\tfor (const vk of values) {\n\t\t\tconst [o, n] = resolve(uDoc, pathk);\n\t\t\tif (o && n.length === 1 && Array.isArray(o[n[0]])) {\n\t\t\t\to[n[0]].push(vk);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlogError(o, n, uDoc, pathk);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction logError(o: any, n: any, uDoc: any, key: any) {\n console.log('Error', o + '/' + n + ' - couldn\\'t resolve for ' + JSON.stringify(uDoc) + ' ' + key);\n}\n\nfunction resolve(a: any, path: string, options: any = {}): [any, any] {\n const stack = arrize(path);\n let last = [];\n\n if (stack.length > 0) {\n last.unshift(stack.pop());\n }\n\n let e = a;\n while (stack.length > 0) {\n const k = stack.shift();\n if (e[k] !== void 0) {\n e = e[k];\n } else {\n if (!options.force) {\n last.unshift(k);\n last = stack.concat(last);\n break;\n }\n const isNextNum = typeof stack[0] === 'number';\n const isLastNum = stack.length === 0 && typeof last[0] === 'number';\n e[k] = isNextNum || isLastNum ? [] : {};\n e = e[k];\n }\n }\n\n return [e, last];\n}\n\nfunction arrize(path: any, glue: string = '.'): string[] {\n if (Array.isArray(path)) {\n return path.slice();\n }\n\n if (path === void 0 || path === null || path === false || path === '') {\n return [];\n }\n\n return path.toString().split(glue)\n .map(e => {\n if ([void 0, null, false, ''].includes(e)) {\n return null;\n }\n return e.toString();\n })\n .filter(e => e !== null);\n}\n\nexport function deepDiffDetails(object1: Object, object2: Object): string {\n let obj1 = deepCopy(object1);\n\tlet obj2 = deepCopy(object2);\n\n\tlet diff = detailedDiff(obj1, obj2);\n\tlet diffString = '';\n\n\tconst formatValue = (value: any): string => {\n\t\tif (value instanceof Date) {\n\t\t\treturn moment(value).format('llll');\n\t\t} \n\t\telse if (typeof value === 'object' && value !== null) {\n\t\t\tObject.keys(value).filter(a => a.startsWith('_id') || a.startsWith('id_')).forEach(key => {\n\t\t\t\tdelete value[key];\n\t\t\t});\n\t\t\treturn JSON.stringify(value); // Pretty print objects\n\t\t} \n\t\telse {\n\t\t\treturn typeof value === 'string' ? `\"${value}\"` : String(value);\n\t\t}\n\t};\n\n\tconst customArrayDiff = (arr1: any[], arr2: any[]): string => {\n let arrayDiffResults = [];\n const maxLength = Math.max(arr1.length, arr2.length);\n\n for (let i = 0; i < maxLength; i++) {\n if (arr1[i] && !arr2[i]) {\n arrayDiffResults.push(`Removed at index ${i}: ${formatValue(arr1[i])}`);\n } \n\t\t\telse if (!arr1[i] && arr2[i]) {\n arrayDiffResults.push(`Added at index ${i}: ${formatValue(arr2[i])}`);\n } \n\t\t\telse if (arr1[i] && arr2[i] && JSON.stringify(arr1[i]) !== JSON.stringify(arr2[i])) {\n arrayDiffResults.push(`Changed at index ${i}: {${formatObjectDiff(arr1[i], arr2[i])}}`);\n }\n }\n\n return arrayDiffResults.join(', ');\n };\n\n\tconst formatObjectDiff = (obj1: any, obj2: any): string => {\n\t\tif (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n\t\t\treturn `from: ${formatValue(obj1)} to: ${formatValue(obj2)}`;\n\t\t}\n\n\t\tif (Array.isArray(obj1) || Array.isArray(obj2)) {\n\t\t\treturn customArrayDiff(Array.isArray(obj1) ? obj1 : [], Array.isArray(obj2) ? obj2 : []);\n\t\t}\n\n\t\treturn Object.keys({...obj1, ...obj2}).filter(a => !a.startsWith('_id') && !a.startsWith('id_')).map(key => {\n\t\t\tconst obj1Val = obj1 ? obj1[key] : undefined;\n\t\t\tconst obj2Val = obj2 ? obj2[key] : undefined;\n\t\t\treturn `${toTitleCase(key)}: ${formatObjectDiff(obj1Val, obj2Val)}`;\n\t\t}).join(', ');\n\t};\n\n\t// Handle each diff type\n\t['added', 'deleted', 'updated'].forEach(diffType => {\n\t\tif (Object.keys(diff[diffType]).length > 0) {\n\t\t\tconst updates = Object.keys(diff[diffType])\n\t\t\t\t.filter(key => diffType === 'added' ? true : (diffType === 'deleted' ? !diff['added'][key] : !diff['added'][key] && !diff['deleted'][key]))\n\t\t\t\t.filter(key => !key.startsWith('_id') && !key.startsWith('id_'))\n\t\t\t\t.map(key => `\\n${toTitleCase(key)}: ${formatObjectDiff(obj1[key], obj2[key])}`)\n\t\t\t\t.join(',');\n\n\t\t\tdiffString += updates ? `${updates}` : '';\n\t\t}\n\t});\n\n\treturn diffString;\n}\n\nexport function getBinarySize(string) {\n\tif (string) {\n\t\treturn Buffer.byteLength(string, 'utf8');\n\t}\n\telse {\n\t\treturn 0;\n\t}\n}\n\nexport function pad(num, size) {\n\tlet s = num + '';\n\twhile (s.length < size) { s = '0' + s; }\n\treturn s;\n}\n\nexport function randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}\n\nexport function toTitleCase(str) {\n\treturn str.replace(/\\w\\S*/g, function(txt){\n\t\treturn txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n\t});\n}\n\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeDeep(target, ...sources) {\n\tif (!sources.length) {\n\t\treturn target;\n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} });\n\t\t\t\t}\n\t\t\t\tmergeDeep(target[key], source[key]);\n\t\t\t} \n\t\t\telse {\n\t\t\t\tObject.assign(target, { [key]: source[key] });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn mergeDeep(target, ...sources);\n}\n\nexport function generateSearchTokensFromFields(doc: any, fields: string[]): string[] {\n\tconst tokens = new Set<string>();\n\n\tfields.forEach(field => {\n\t\tconst val = doc[field];\n\t\tif (typeof val === 'string' && val.trim().length) {\n\t\t\tconst words = val.toLowerCase().split(/\\s+/);\n\t\t\twords.forEach(word => {\n\t\t\t\tfor (let i = 3; i <= word.length; i++) {\n\t\t\t\t\ttokens.add(word.slice(0, i)); // prefix-based tokens only\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\treturn Array.from(tokens);\n}\n"]}
1
+ {"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["/* eslint-disable no-restricted-properties */\nlet rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { detailedDiff } from 'deep-object-diff';\nimport * as moment from 'moment-timezone';\nimport { ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\n\nexport function buildRbSchema(rbSchema: any) {\n\tObject.keys(rbSchema).forEach(key => {\n\t\tif (rbSchema[key].type === Object) {\n\t\t\trbSchema[key].type = 'Object';\n\t\t\trbSchema[key].rbType = 'Object';\n\t\t}\n\t\telse if (rbSchema[key].type === Array) {\n\t\t\trbSchema[key].type = 'Array';\n\t\t\trbSchema[key].rbType = 'Array';\n\t\t}\n\t\telse if (rbSchema[key].type === String) {\n\t\t\trbSchema[key].type = 'String';\n\t\t\trbSchema[key].rbType = 'String';\n\t\t}\n\t\telse if (rbSchema[key].type === Date) {\n\t\t\trbSchema[key].type = 'Date';\n\t\t\trbSchema[key].rbType = 'Date';\n\t\t}\n\t\telse if (rbSchema[key].type === Number) {\n\t\t\trbSchema[key].type = 'Number';\n\t\t\trbSchema[key].rbType = 'Number';\n\t\t}\n\t\telse if (rbSchema[key].type === Boolean) {\n\t\t\trbSchema[key].rbType = 'Boolean';\n\t\t\trbSchema[key].type = 'Boolean';\n\t\t}\n\t});\n\n\tObject.keys(rbSchema).forEach(key => {\n\t\tdelete rbSchema[key].type;\n\t});\n\n\treturn rbSchema;\n}\n\nexport function buildRbLookups(rbLookups: LookupTables[], defaultSchema: object, default_checked_array: string[] = []) {\n\t// Remember: lkp.local_key will be removed later on, because it has 'id_'\n\t\n\trbLookups.forEach(lkp => {\n\t\tlet errString = '';\n\t\tlet localKey, newPropertyName;\n\t\tlet localKeyDir = '';\n\t\tlet localKeyDirDot = '';\n\t\tlet collectionAlias = toTitleCase(lkp.lookup.replace(/\\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\\_/g, ' ').replace(/\\.\\$\\./g, ' -> ').replace(/\\./g, ' -> ')) + ') (Lookup)';\n\n\t\tif (lkp.local_key.match(/\\./)) {\n\t\t\tlocalKey = lkp.local_key.replace(/\\.\\$/g, '');\n\t\t\tlocalKeyDirDot = lkp.local_key.replace(/^(.+\\.).*$/, '$1');\n\t\t\tlocalKeyDir = localKeyDirDot.replace(/\\.$/, '');\n\t\t}\n\t\telse {\n\t\t\t// local_key is a root leaf node.\n\t\t\tlocalKey = lkp.local_key;\n\t\t}\n\t\tnewPropertyName = localKeyDirDot + collectionAlias;\n\t\t\n\t\tif (!defaultSchema[lkp.local_key]) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a valid schema path! ';\n\t\t}\n\t\telse if (defaultSchema[lkp.local_key].type !== String) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a String! ';\n\t\t}\n\t\tlet lookupNode = {\n\t\t\tlookup_collection: lkp.lookup,\n\t\t\tlookup_collection_alias: collectionAlias,\n\t\t\tlocal_key: localKey,\n\t\t\tfield_path: localKeyDir,\n\t\t\tlookup_as: newPropertyName,\n\t\t\tlookup_key: '_id',\n\t\t\ttype: 'Object',\n\t\t};\n\n\t\tdefaultSchema[newPropertyName] = lookupNode;\n\n\t\tif (errString) {\n\t\t\tthrowErr(errString, lkp, lookupNode, newPropertyName);\n\t\t}\n\t});\n\n\tfor (let ii = 0; ii < default_checked_array.length; ii++) {\n\t\tdefaultSchema[default_checked_array[ii]] = {};\n\t\tdefaultSchema[default_checked_array[ii]]['default_checked'] = true;\n\t\tObject.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);\n\t}\n\n\treturn defaultSchema;\n}\n\nexport function throwErr(err: any, lkp, lookupNode, newPropertyName = '') {\n\t// err could be from a try/throw/catch\n\tconsole.log('------- ERROR thrown by rbLookups: ');\n\tconsole.log(err);\n\tconsole.log('---item: ');\n\tconsole.log(lkp);\n\tconsole.log('---Attempted to create rbSchema[\\'' + newPropertyName + '\\']: ');\n\tconsole.log(lookupNode);\n\tprocess.exit(1);\n}\n\nexport function roundPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.round(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function round(value, precision = 0) {\n\tconst power = Math.pow(10, precision);\n\tconst adjustment = 1e-6;\n\treturn Math.round( (value * power) + adjustment) / power;\n}\n\nexport function floorPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.floor(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\n}\n\nexport function dateReviver(key, value) {\n\tif (typeof value === 'string') {\n\t\tlet a = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n\t\tif (a) {\n\t\t\treturn new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));\n\t\t}\n\t}\n\treturn value;\n}\n\nfunction buildAllowedOrigins(configOrigins): string[] {\n\tlet origins = [];\n\n\tif (Array.isArray(configOrigins)) {\n\t\torigins = configOrigins.map(origin => typeof origin === 'string' ? origin.trim() : origin);\n\t}\n\telse if (typeof configOrigins === 'string') {\n\t\tlet splitOrigins = configOrigins.split(',').map(origin => origin.trim()).filter(origin => origin);\n\t\torigins = splitOrigins;\n\t}\n\n\treturn origins.filter(origin => typeof origin === 'string' && origin.trim() !== '');\n}\n\nexport function getAllowedOrigins(serverConfig): string[] {\n\tlet allowedOrigins = new Set<string>();\n\tlet defaultKeys = ['ROOT_URL', 'SEC_ROOT_URL', 'RESOLVEIO_URL', 'RESOLVEIO_SECONDARY_URL'];\n\n\tdefaultKeys.forEach(key => {\n\t\tlet value = serverConfig[key];\n\t\tif (typeof value === 'string' && value.trim()) {\n\t\t\tallowedOrigins.add(value.trim());\n\t\t}\n\t});\n\n\tbuildAllowedOrigins(serverConfig['ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(serverConfig['ADDITIONAL_ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ADDITIONAL_ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\n\treturn Array.from(allowedOrigins);\n}\n\nexport function isAllowedOrigin(origin: string, serverConfig): boolean {\n\tif (!origin) {\n\t\treturn false;\n\t}\n\n\treturn getAllowedOrigins(serverConfig).includes(origin);\n}\n\nexport function getMongoUpdates(currDoc, modifiedDoc, incVersion) {\n\tif (currDoc.createdAt) {\n\t\tmodifiedDoc.createdAt = currDoc.createdAt;\n\t}\n\n\tif (currDoc.updatedAt) {\n\t\tmodifiedDoc.updatedAt = currDoc.updatedAt;\n\t}\n\n\tlet updates = rusDiff.diff(currDoc, modifiedDoc);\n\n\tif (updates) {\n\t\tif (updates.$set && !Object.keys(updates.$set).length) {\n\t\t\tdelete updates.$set;\n\t\t}\n\n\t\tif (incVersion) {\n\t\t\tupdates.$inc = {__v: 1};\n\t\t}\n\t}\n\telse {\n\t\tif (incVersion) {\n\t\t\tupdates = {\n\t\t\t\t$inc: {__v: 1}\n\t\t\t};\n\t\t}\n\t}\n\n\treturn updates;\n}\n\nexport function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {\n\tlet upDoc = deepCopy(currentDoc); // was oldDoc\n\tupDoc.__v = currentDoc.__v;\n\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\n\nexport function mergeUpdates(...updatesToMerge) {\n const merged = {\n $set: {},\n $unset: {},\n $inc: {},\n $push: {},\n $pull: {}\n };\n\n updatesToMerge.filter(Boolean).forEach(anUpdate => {\n anUpdate.forEach(change => {\n const path = change.path.join('.');\n\n switch (change.kind) {\n case 'E':\n handleEditedChange(merged, path, change);\n break;\n case 'A':\n handleArrayChange(merged, path, change);\n break;\n default:\n break;\n }\n });\n });\n\n return merged;\n}\n\nfunction handleEditedChange(merged, path, change) {\n\t// Later diffs override earlier ones\n\tif (typeof(change.rhs) === 'number' && (path.includes('quantity') || path.includes('qty'))) {\n\t\tmerged.$inc[path] = (merged.$inc[path] || 0) + change.rhs - change.lhs;\n\t}\n\telse {\n\t\tmerged.$set[path] = change.rhs;\n\t}\n}\n\n\nfunction handleArrayChange(merged, path, change) {\n\tif (change.item.kind === 'N') {\n\t\tif (!merged.$push[path]) merged.$push[path] = { $each: [] };\n\n\t\tif (!merged.$push[path].$each.some(a => JSON.stringify(a) === JSON.stringify(change.item.rhs))) {\n\t\t\tmerged.$push[path].$each.push(change.item.rhs);\n\t\t}\n\t}\n\telse if (change.item.kind === 'D') {\n\t\tif (!merged.$pull[path]) merged.$pull[path] = [];\n\n\t\tif (!merged.$pull[path].some(a => JSON.stringify(a) === JSON.stringify(change.item.lhs))) {\n\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t}\n\t}\n}\n\nexport function getDeepDiff(doc1, doc2) {\n\tdelete doc1._id;\n\tdelete doc1.__v;\n\n\tif (doc1.updatedAt) {\n\t\tdelete doc1.updatedAt;\n\t}\n\n\tif (doc1.createdAt) {\n\t\tdelete doc1.createdAt;\n\t}\n\n\tdelete doc2._id;\n\tdelete doc2.__v;\n\n\tif (doc2.updatedAt) {\n\t\tdelete doc2.updatedAt;\n\t}\n\n\tif (doc2.createdAt) {\n\t\tdelete doc2.createdAt;\n\t}\n\n\treturn deepDiff(doc1, doc2);\n}\n\nexport function applyMongoUpdate(uDoc: any, delta: any): any {\n const orig = deepCopy(uDoc);\n\n if (delta) {\n if (delta.$rename) handleRename(uDoc, delta.$rename);\n if (delta.$set) handleSet(uDoc, delta.$set);\n if (delta.$inc) handleInc(uDoc, delta.$inc);\n if (delta.$unset) handleUnset(uDoc, delta.$unset);\n if (delta.$pull) handlePull(uDoc, orig, delta.$pull);\n if (delta.$push) handlePush(uDoc, delta.$push);\n }\n\n return uDoc;\n}\n\nfunction handleRename(uDoc: any, renameMap: any) {\n for (const k in renameMap) {\n const v = renameMap[k];\n const [o1, n1] = resolve(uDoc, k);\n const [o2, n2] = resolve(uDoc, v);\n if (o1 && n1.length === 1) {\n if (o2 && n2.length === 1) {\n o2[n2[0]] = o1[n1[0]];\n delete o1[n1[0]];\n } else {\n logError(o2, n2, uDoc, v);\n }\n } else {\n logError(o1, n1, uDoc, k);\n }\n }\n}\n\nfunction handleSet(uDoc: any, setMap: any) {\n for (const k in setMap) {\n const v = setMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n o[n[0]] = v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleInc(uDoc: any, incMap: any) {\n for (const k in incMap) {\n const v = incMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n\t\t\tif (typeof o[n[0]] !== 'number') {\n\t\t\t\to[n[0]] = 0;\n\t\t\t}\n\t\t\to[n[0]] += v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleUnset(uDoc: any, unsetMap: any) {\n for (const k in unsetMap) {\n const [o, n] = resolve(uDoc, k);\n if (o && n.length === 1) {\n delete o[n[0]];\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handlePull(uDoc: any, orig: any, pullMap: any) {\n for (const pathk in pullMap) {\n const pullValues = pullMap[pathk];\n for (let vk of pullValues) {\n const [o, n] = resolve(uDoc, pathk);\n const [o2, n2] = resolve(orig, pathk);\n if (o && n.length === 1) {\n\t\t\t\tconst index = (<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk));\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\to[n[0]].splice(index, 1);\n\t\t\t\t}\n } else {\n logError(o, n, uDoc, pathk);\n }\n }\n }\n}\n\nfunction handlePush(uDoc: any, pushMap: any) {\n\tfor (const pathk in pushMap) {\n\t\tconst pushValues = pushMap[pathk];\n\n\t\t// Normalize ─ accept $each, scalar, or array\n\t\tlet values: any[] = [];\n\t\tif (Array.isArray(pushValues)) {\n\t\t\tvalues = pushValues;\n\t\t}\n\t\telse if (pushValues && typeof pushValues === 'object') {\n\t\t\tif (Array.isArray(pushValues.$each)) {\n\t\t\t\tvalues = pushValues.$each; // canonical `$each`\n\t\t\t} else {\n\t\t\t\tvalues = [pushValues]; // single element object\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tvalues = [pushValues]; // scalar push\n\t\t}\n\n\t\tfor (const vk of values) {\n\t\t\tconst [o, n] = resolve(uDoc, pathk);\n\t\t\tif (o && n.length === 1 && Array.isArray(o[n[0]])) {\n\t\t\t\to[n[0]].push(vk);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlogError(o, n, uDoc, pathk);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction logError(o: any, n: any, uDoc: any, key: any) {\n console.log('Error', o + '/' + n + ' - couldn\\'t resolve for ' + JSON.stringify(uDoc) + ' ' + key);\n}\n\nfunction resolve(a: any, path: string, options: any = {}): [any, any] {\n const stack = arrize(path);\n let last = [];\n\n if (stack.length > 0) {\n last.unshift(stack.pop());\n }\n\n let e = a;\n while (stack.length > 0) {\n const k = stack.shift();\n if (e[k] !== void 0) {\n e = e[k];\n } else {\n if (!options.force) {\n last.unshift(k);\n last = stack.concat(last);\n break;\n }\n const isNextNum = typeof stack[0] === 'number';\n const isLastNum = stack.length === 0 && typeof last[0] === 'number';\n e[k] = isNextNum || isLastNum ? [] : {};\n e = e[k];\n }\n }\n\n return [e, last];\n}\n\nfunction arrize(path: any, glue: string = '.'): string[] {\n if (Array.isArray(path)) {\n return path.slice();\n }\n\n if (path === void 0 || path === null || path === false || path === '') {\n return [];\n }\n\n return path.toString().split(glue)\n .map(e => {\n if ([void 0, null, false, ''].includes(e)) {\n return null;\n }\n return e.toString();\n })\n .filter(e => e !== null);\n}\n\nexport function deepDiffDetails(object1: Object, object2: Object): string {\n let obj1 = deepCopy(object1);\n\tlet obj2 = deepCopy(object2);\n\n\tlet diff = detailedDiff(obj1, obj2);\n\tlet diffString = '';\n\n\tconst formatValue = (value: any): string => {\n\t\tif (value instanceof Date) {\n\t\t\treturn moment(value).format('llll');\n\t\t} \n\t\telse if (typeof value === 'object' && value !== null) {\n\t\t\tObject.keys(value).filter(a => a.startsWith('_id') || a.startsWith('id_')).forEach(key => {\n\t\t\t\tdelete value[key];\n\t\t\t});\n\t\t\treturn JSON.stringify(value); // Pretty print objects\n\t\t} \n\t\telse {\n\t\t\treturn typeof value === 'string' ? `\"${value}\"` : String(value);\n\t\t}\n\t};\n\n\tconst customArrayDiff = (arr1: any[], arr2: any[]): string => {\n let arrayDiffResults = [];\n const maxLength = Math.max(arr1.length, arr2.length);\n\n for (let i = 0; i < maxLength; i++) {\n if (arr1[i] && !arr2[i]) {\n arrayDiffResults.push(`Removed at index ${i}: ${formatValue(arr1[i])}`);\n } \n\t\t\telse if (!arr1[i] && arr2[i]) {\n arrayDiffResults.push(`Added at index ${i}: ${formatValue(arr2[i])}`);\n } \n\t\t\telse if (arr1[i] && arr2[i] && JSON.stringify(arr1[i]) !== JSON.stringify(arr2[i])) {\n arrayDiffResults.push(`Changed at index ${i}: {${formatObjectDiff(arr1[i], arr2[i])}}`);\n }\n }\n\n return arrayDiffResults.join(', ');\n };\n\n\tconst formatObjectDiff = (obj1: any, obj2: any): string => {\n\t\tif (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n\t\t\treturn `from: ${formatValue(obj1)} to: ${formatValue(obj2)}`;\n\t\t}\n\n\t\tif (Array.isArray(obj1) || Array.isArray(obj2)) {\n\t\t\treturn customArrayDiff(Array.isArray(obj1) ? obj1 : [], Array.isArray(obj2) ? obj2 : []);\n\t\t}\n\n\t\treturn Object.keys({...obj1, ...obj2}).filter(a => !a.startsWith('_id') && !a.startsWith('id_')).map(key => {\n\t\t\tconst obj1Val = obj1 ? obj1[key] : undefined;\n\t\t\tconst obj2Val = obj2 ? obj2[key] : undefined;\n\t\t\treturn `${toTitleCase(key)}: ${formatObjectDiff(obj1Val, obj2Val)}`;\n\t\t}).join(', ');\n\t};\n\n\t// Handle each diff type\n\t['added', 'deleted', 'updated'].forEach(diffType => {\n\t\tif (Object.keys(diff[diffType]).length > 0) {\n\t\t\tconst updates = Object.keys(diff[diffType])\n\t\t\t\t.filter(key => diffType === 'added' ? true : (diffType === 'deleted' ? !diff['added'][key] : !diff['added'][key] && !diff['deleted'][key]))\n\t\t\t\t.filter(key => !key.startsWith('_id') && !key.startsWith('id_'))\n\t\t\t\t.map(key => `\\n${toTitleCase(key)}: ${formatObjectDiff(obj1[key], obj2[key])}`)\n\t\t\t\t.join(',');\n\n\t\t\tdiffString += updates ? `${updates}` : '';\n\t\t}\n\t});\n\n\treturn diffString;\n}\n\nexport function getBinarySize(string) {\n\tif (string) {\n\t\treturn Buffer.byteLength(string, 'utf8');\n\t}\n\telse {\n\t\treturn 0;\n\t}\n}\n\nexport function pad(num, size) {\n\tlet s = num + '';\n\twhile (s.length < size) { s = '0' + s; }\n\treturn s;\n}\n\nexport function randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}\n\nexport function toTitleCase(str) {\n\treturn str.replace(/\\w\\S*/g, function(txt){\n\t\treturn txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n\t});\n}\n\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeDeep(target, ...sources) {\n\tif (!sources.length) {\n\t\treturn target;\n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} });\n\t\t\t\t}\n\t\t\t\tmergeDeep(target[key], source[key]);\n\t\t\t} \n\t\t\telse {\n\t\t\t\tObject.assign(target, { [key]: source[key] });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn mergeDeep(target, ...sources);\n}\n\nexport function generateSearchTokensFromFields(doc: any, fields: string[]): string[] {\n\tconst tokens = new Set<string>();\n\n\tfields.forEach(field => {\n\t\tconst val = doc[field];\n\t\tif (typeof val === 'string' && val.trim().length) {\n\t\t\tconst words = val.toLowerCase().split(/\\s+/);\n\t\t\twords.forEach(word => {\n\t\t\t\tfor (let i = 3; i <= word.length; i++) {\n\t\t\t\t\ttokens.add(word.slice(0, i)); // prefix-based tokens only\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\treturn Array.from(tokens);\n}\n"]}
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -72,9 +72,9 @@ var ErrorReporter = /** @class */ (function () {
72
72
  function ErrorReporter() {
73
73
  }
74
74
  ErrorReporter.report = function (options) {
75
- var _a;
76
75
  return __awaiter(this, void 0, void 0, function () {
77
76
  var logger, config, normalizedApiUrl, clientName, sourceApp, environment, message, severity, stack, context, metadata, attachments, fingerprint, idempotencyKey, reportedAt, normalizedReportedSourceEnv, payload, transport, response, err_1;
77
+ var _a;
78
78
  return __generator(this, function (_b) {
79
79
  switch (_b.label) {
80
80
  case 0:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/error-reporter.ts"],"names":[],"mappings":"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","file":"error-reporter.js","sourcesContent":["import { createHash } from 'crypto';\nimport { ResolveIOServer } from '../resolveio-server-app';\n\nconst DEFAULT_ERROR_API_URL = 'https://backend.resolveio.com/api/errors/report';\nconst LOCAL_HOSTNAMES = new Set(['localhost', '127.0.0.1', '0.0.0.0', '::1']);\n\n// eslint-disable-next-line no-unused-vars\ntype FetchLike = (input: RequestInfo, init?: RequestInit) => Promise<Response>;\n\nexport interface ErrorReportAttachment {\n\tname: string;\n\turl?: string;\n\tcontentType?: string;\n\tsize?: number;\n}\n\nexport interface ErrorReportOptions {\n\tsourceApp?: string;\n\tmessage?: string;\n\tsubject?: string;\n\tenvironment?: string;\n\tclientId?: string;\n\tclientSlug?: string;\n\tclientName?: string;\n\tclientRepo?: string;\n\tclientEmail?: string;\n\tseverity?: string;\n\tstack?: string | Error;\n\terror?: unknown;\n\tcontext?: Record<string, any> | string | null;\n\tmetadata?: Record<string, any> | string | null;\n\tattachments?: ErrorReportAttachment[];\n\tfingerprint?: string;\n\tidempotencyKey?: string;\n\treportedBy?: string;\n\treportedAt?: string | Date;\n\treportedFor?: string;\n\treportedCount?: number;\n\treportedSourceHost?: string;\n\treportedSourceIp?: string;\n\treportedSourceVersion?: string;\n\treportedSourcePid?: number;\n\treportedSourceInstance?: string;\n\treportedSourceRegion?: string;\n\treportedSourceCluster?: string;\n\treportedSourceProcess?: string;\n\treportedSourceEnv?: Record<string, any>;\n\tcorrelationId?: string;\n\tapiUrl?: string;\n\tfetch?: FetchLike;\n\tlogger?: Pick<typeof console, 'error' | 'warn' | 'info' | 'log'>;\n}\n\nexport interface ErrorReportResult {\n\tdelivered: boolean;\n\tstatus?: number;\n\treason?: string;\n}\n\ninterface ErrorReportPayload {\n\tsourceApp: string;\n\tmessage: string;\n\tenvironment?: string;\n\tclientId?: string;\n\tclientSlug?: string;\n\tclientName?: string;\n\tclientRepo?: string;\n\tclientEmail?: string;\n\tseverity: string;\n\tstack?: string;\n\tcontext?: Record<string, any> | string;\n\tmetadata?: Record<string, any> | string;\n\tattachments?: ErrorReportAttachment[];\n\tfingerprint?: string;\n\tidempotencyKey?: string;\n\treportedBy?: string;\n\treportedAt?: string;\n\treportedFor?: string;\n\treportedCount?: number;\n\treportedSourceHost?: string;\n\treportedSourceIp?: string;\n\treportedSourceVersion?: string;\n\treportedSourcePid?: number;\n\treportedSourceInstance?: string;\n\treportedSourceRegion?: string;\n\treportedSourceCluster?: string;\n\treportedSourceProcess?: string;\n\treportedSourceEnv?: Record<string, any>;\n}\n\nexport class ErrorReporter {\n\tpublic static async report(options: ErrorReportOptions): Promise<ErrorReportResult> {\n\t\tconst logger = options.logger || console;\n\t\tconst config = getServerConfig();\n\t\tconst normalizedApiUrl = options.apiUrl || DEFAULT_ERROR_API_URL;\n\t\tconst clientName = options.clientName || config?.CLIENT_NAME || ResolveIOServer.getClientName?.() || 'resolveio';\n\t\tconst sourceApp = options.sourceApp || clientName || 'resolveio-server-lib';\n\t\tconst environment = options.environment || process.env.RESOLVEIO_ENV || config?.RESOLVEIO_ENV || config?.ENVIRONMENT || config?.ROOT_URL || process.env.NODE_ENV || 'unknown';\n\t\tconst message = options.message || options.subject || 'ResolveIO Error Detected';\n\t\tconst severity = options.severity || 'error';\n\t\tconst stack = normalizeStack(options.stack || options.error);\n\t\tconst context = normalizeStructured(options.context, options.correlationId);\n\t\tconst metadata = normalizeStructured(mergeMetadata(options.metadata, options.correlationId));\n\t\tconst attachments = Array.isArray(options.attachments) ? normalizeAttachments(options.attachments) : undefined;\n\t\tconst fingerprint = options.fingerprint || computeFingerprint(sourceApp, environment, message, stack);\n\t\tconst idempotencyKey = options.idempotencyKey;\n\t\tconst reportedAt = normalizeReportedAt(options.reportedAt);\n\t\tconst normalizedReportedSourceEnv = normalizeStructured(options.reportedSourceEnv);\n\t\tconst payload: ErrorReportPayload = removeEmptyFields({\n\t\t\tsourceApp,\n\t\t\tmessage,\n\t\t\tenvironment,\n\t\t\tclientId: options.clientId,\n\t\t\tclientSlug: options.clientSlug,\n\t\t\tclientName,\n\t\t\tclientRepo: options.clientRepo,\n\t\t\tclientEmail: options.clientEmail,\n\t\t\tseverity,\n\t\t\tstack,\n\t\t\tcontext,\n\t\t\tmetadata,\n\t\t\tattachments,\n\t\t\tfingerprint,\n\t\t\tidempotencyKey,\n\t\t\treportedBy: options.reportedBy,\n\t\t\treportedAt,\n\t\t\treportedFor: options.reportedFor,\n\t\t\treportedCount: options.reportedCount,\n\t\t\treportedSourceHost: options.reportedSourceHost,\n\t\t\treportedSourceIp: options.reportedSourceIp,\n\t\t\treportedSourceVersion: options.reportedSourceVersion,\n\t\t\treportedSourcePid: options.reportedSourcePid,\n\t\t\treportedSourceInstance: options.reportedSourceInstance,\n\t\t\treportedSourceRegion: options.reportedSourceRegion,\n\t\t\treportedSourceCluster: options.reportedSourceCluster,\n\t\t\treportedSourceProcess: options.reportedSourceProcess,\n\t\t\treportedSourceEnv: typeof normalizedReportedSourceEnv === 'string' ? undefined : normalizedReportedSourceEnv as Record<string, any>\n\t\t});\n\n\t\tif (shouldSuppressForLocalEnvironment(config, normalizedApiUrl)) {\n\t\t\tlogger.info('ErrorReporter suppressed: local environment detected');\n\t\t\tlogger.error('ErrorReporter payload (suppressed):', payload);\n\t\t\treturn { delivered: false, reason: 'local-environment' };\n\t\t}\n\n\t\tconst transport = options.fetch || globalThis.fetch;\n\t\tif (typeof transport !== 'function') {\n\t\t\tlogger.error('ErrorReporter failed: fetch is not available in this runtime');\n\t\t\tlogger.error('ErrorReporter payload (not sent):', payload);\n\t\t\treturn { delivered: false, reason: 'missing-fetch' };\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await transport(normalizedApiUrl, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: removeEmptyFields({\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t'X-ResolveIO-Error-Key': clientName,\n\t\t\t\t\t'X-ResolveIO-Error-Hash': fingerprint,\n\t\t\t\t\t'X-ResolveIO-Idempotency-Key': idempotencyKey\n\t\t\t\t}),\n\t\t\t\tbody: JSON.stringify(payload)\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlogger.error('ErrorReporter failed to deliver payload', { status: response.status, statusText: response.statusText });\n\t\t\t\treturn { delivered: false, status: response.status, reason: 'http-error' };\n\t\t\t}\n\n\t\t\treturn { delivered: true, status: response.status };\n\t\t}\n\t\tcatch (err) {\n\t\t\tlogger.error('ErrorReporter exception while delivering payload', err);\n\t\t\tlogger.error('ErrorReporter payload (not sent):', payload);\n\t\t\treturn { delivered: false, reason: 'network-error' };\n\t\t}\n\t}\n}\n\nfunction getServerConfig(): Record<string, any> | null {\n\ttry {\n\t\treturn ResolveIOServer.getServerConfig?.() || null;\n\t}\n\tcatch (err) {\n\t\tconsole.error('Failed to read ResolveIO server config', err);\n\t\treturn null;\n\t}\n}\n\nfunction normalizeStack(stack?: string | Error | unknown): string | undefined {\n\tif (!stack) {\n\t\treturn undefined;\n\t}\n\n\tif (typeof stack === 'string') {\n\t\treturn stack;\n\t}\n\n\tif (stack instanceof Error) {\n\t\treturn stack.stack || stack.message;\n\t}\n\n\tif (typeof stack === 'object' && stack !== null && typeof (stack as Record<string, any>).stack === 'string') {\n\t\treturn (stack as Record<string, any>).stack;\n\t}\n\n\tif (typeof stack === 'object' && stack !== null && typeof (stack as Record<string, any>).message === 'string') {\n\t\treturn (stack as Record<string, any>).message;\n\t}\n\n\treturn JSON.stringify(stack);\n}\n\nfunction normalizeStructured(value: any, correlationId?: string): Record<string, any> | string | undefined {\n\tif (value === null || value === undefined) {\n\t\treturn undefined;\n\t}\n\n\tif (typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tconst serialized = serializeValue(value);\n\tif (correlationId && typeof serialized === 'object' && serialized !== null && !serialized.correlationId) {\n\t\tserialized.correlationId = correlationId;\n\t}\n\treturn serialized;\n}\n\nfunction serializeValue(value: any, seen: WeakSet<object> = new WeakSet()): any {\n\tif (value === null || value === undefined) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'bigint') {\n\t\treturn value.toString();\n\t}\n\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\n\tif (value instanceof Error) {\n\t\tconst base = {\n\t\t\tname: value.name,\n\t\t\tmessage: value.message,\n\t\t\tstack: value.stack\n\t\t};\n\t\treturn Object.assign({}, base, serializeValue(Object.assign({}, value), seen));\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tif (seen.has(value)) {\n\t\t\treturn '[Circular]';\n\t\t}\n\t\tseen.add(value);\n\t\tconst arr = value.map(item => serializeValue(item, seen));\n\t\tseen.delete(value);\n\t\treturn arr;\n\t}\n\n\tif (typeof value === 'object') {\n\t\tif (seen.has(value)) {\n\t\t\treturn '[Circular]';\n\t\t}\n\t\tseen.add(value);\n\t\tconst obj: Record<string, any> = {};\n\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\tobj[key] = serializeValue(val, seen);\n\t\t}\n\t\tseen.delete(value);\n\t\treturn obj;\n\t}\n\n\treturn String(value);\n}\n\nfunction normalizeAttachments(attachments: ErrorReportAttachment[]): ErrorReportAttachment[] {\n\treturn attachments\n\t\t.filter(att => !!att && typeof att === 'object')\n\t\t.map(att => removeEmptyFields({\n\t\t\tname: att.name,\n\t\t\turl: att.url,\n\t\t\tcontentType: att.contentType,\n\t\t\tsize: typeof att.size === 'number' ? att.size : undefined\n\t\t}))\n\t\t.filter(att => !!att.name);\n}\n\nfunction normalizeReportedAt(value?: string | Date): string | undefined {\n\tif (!value) {\n\t\treturn new Date().toISOString();\n\t}\n\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\n\tconst date = new Date(value);\n\tif (!isNaN(date.getTime())) {\n\t\treturn date.toISOString();\n\t}\n\n\treturn new Date().toISOString();\n}\n\nfunction computeFingerprint(sourceApp: string, environment: string | undefined, message: string, stack?: string): string | undefined {\n\tconst signature = `${sourceApp || ''}:${environment || ''}:${message || ''}:${stack ? stack.split('\\n').slice(0, 5).join('|') : ''}`;\n\treturn createHash('sha256').update(signature).digest('hex');\n}\n\nfunction removeEmptyFields<T extends Record<string, any>>(obj: T): T {\n\tconst cleaned: Record<string, any> = {};\n\tfor (const [key, value] of Object.entries(obj || {})) {\n\t\tif (value === undefined || value === null || value === '') {\n\t\t\tcontinue;\n\t\t}\n\t\tcleaned[key] = value;\n\t}\n\treturn cleaned as T;\n}\n\nfunction mergeMetadata(metadata: Record<string, any> | string | null | undefined, correlationId?: string) {\n\tif (!metadata && !correlationId) {\n\t\treturn undefined;\n\t}\n\n\tconst base = metadata ? normalizeStructured(metadata) : undefined;\n\tif (!correlationId) {\n\t\treturn base;\n\t}\n\n\tif (typeof base === 'string') {\n\t\treturn {\n\t\t\tcorrelationId,\n\t\t\tmessage: base\n\t\t};\n\t}\n\n\tconst metadataObj = (base || {}) as Record<string, any>;\n\tif (!metadataObj.correlationId) {\n\t\tmetadataObj.correlationId = correlationId;\n\t}\n\treturn metadataObj;\n}\n\nfunction shouldSuppressForLocalEnvironment(config: Record<string, any> | null, apiUrl: string): boolean {\n\tif (isLocalUrl(config?.ROOT_URL) || isLocalUrl(config?.SERVER_URL) || process.env.NODE_ENV === 'development') {\n\t\treturn true;\n\t}\n\n\treturn isLocalUrl(apiUrl);\n}\n\nfunction isLocalUrl(url?: string): boolean {\n\tif (!url || typeof url !== 'string') {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn LOCAL_HOSTNAMES.has(parsed.hostname.toLowerCase());\n\t}\n\tcatch {\n\t\treturn /localhost|127\\.0\\.0\\.1|0\\.0\\.0\\.0|::1/.test(url);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/util/error-reporter.ts"],"names":[],"mappings":"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","file":"error-reporter.js","sourcesContent":["import { createHash } from 'crypto';\nimport { ResolveIOServer } from '../resolveio-server-app';\n\nconst DEFAULT_ERROR_API_URL = 'https://backend.resolveio.com/api/errors/report';\nconst LOCAL_HOSTNAMES = new Set(['localhost', '127.0.0.1', '0.0.0.0', '::1']);\n\n// eslint-disable-next-line no-unused-vars\ntype FetchLike = (input: RequestInfo, init?: RequestInit) => Promise<Response>;\n\nexport interface ErrorReportAttachment {\n\tname: string;\n\turl?: string;\n\tcontentType?: string;\n\tsize?: number;\n}\n\nexport interface ErrorReportOptions {\n\tsourceApp?: string;\n\tmessage?: string;\n\tsubject?: string;\n\tenvironment?: string;\n\tclientId?: string;\n\tclientSlug?: string;\n\tclientName?: string;\n\tclientRepo?: string;\n\tclientEmail?: string;\n\tseverity?: string;\n\tstack?: string | Error;\n\terror?: unknown;\n\tcontext?: Record<string, any> | string | null;\n\tmetadata?: Record<string, any> | string | null;\n\tattachments?: ErrorReportAttachment[];\n\tfingerprint?: string;\n\tidempotencyKey?: string;\n\treportedBy?: string;\n\treportedAt?: string | Date;\n\treportedFor?: string;\n\treportedCount?: number;\n\treportedSourceHost?: string;\n\treportedSourceIp?: string;\n\treportedSourceVersion?: string;\n\treportedSourcePid?: number;\n\treportedSourceInstance?: string;\n\treportedSourceRegion?: string;\n\treportedSourceCluster?: string;\n\treportedSourceProcess?: string;\n\treportedSourceEnv?: Record<string, any>;\n\tcorrelationId?: string;\n\tapiUrl?: string;\n\tfetch?: FetchLike;\n\tlogger?: Pick<typeof console, 'error' | 'warn' | 'info' | 'log'>;\n}\n\nexport interface ErrorReportResult {\n\tdelivered: boolean;\n\tstatus?: number;\n\treason?: string;\n}\n\ninterface ErrorReportPayload {\n\tsourceApp: string;\n\tmessage: string;\n\tenvironment?: string;\n\tclientId?: string;\n\tclientSlug?: string;\n\tclientName?: string;\n\tclientRepo?: string;\n\tclientEmail?: string;\n\tseverity: string;\n\tstack?: string;\n\tcontext?: Record<string, any> | string;\n\tmetadata?: Record<string, any> | string;\n\tattachments?: ErrorReportAttachment[];\n\tfingerprint?: string;\n\tidempotencyKey?: string;\n\treportedBy?: string;\n\treportedAt?: string;\n\treportedFor?: string;\n\treportedCount?: number;\n\treportedSourceHost?: string;\n\treportedSourceIp?: string;\n\treportedSourceVersion?: string;\n\treportedSourcePid?: number;\n\treportedSourceInstance?: string;\n\treportedSourceRegion?: string;\n\treportedSourceCluster?: string;\n\treportedSourceProcess?: string;\n\treportedSourceEnv?: Record<string, any>;\n}\n\nexport class ErrorReporter {\n\tpublic static async report(options: ErrorReportOptions): Promise<ErrorReportResult> {\n\t\tconst logger = options.logger || console;\n\t\tconst config = getServerConfig();\n\t\tconst normalizedApiUrl = options.apiUrl || DEFAULT_ERROR_API_URL;\n\t\tconst clientName = options.clientName || config?.CLIENT_NAME || ResolveIOServer.getClientName?.() || 'resolveio';\n\t\tconst sourceApp = options.sourceApp || clientName || 'resolveio-server-lib';\n\t\tconst environment = options.environment || process.env.RESOLVEIO_ENV || config?.RESOLVEIO_ENV || config?.ENVIRONMENT || config?.ROOT_URL || process.env.NODE_ENV || 'unknown';\n\t\tconst message = options.message || options.subject || 'ResolveIO Error Detected';\n\t\tconst severity = options.severity || 'error';\n\t\tconst stack = normalizeStack(options.stack || options.error);\n\t\tconst context = normalizeStructured(options.context, options.correlationId);\n\t\tconst metadata = normalizeStructured(mergeMetadata(options.metadata, options.correlationId));\n\t\tconst attachments = Array.isArray(options.attachments) ? normalizeAttachments(options.attachments) : undefined;\n\t\tconst fingerprint = options.fingerprint || computeFingerprint(sourceApp, environment, message, stack);\n\t\tconst idempotencyKey = options.idempotencyKey;\n\t\tconst reportedAt = normalizeReportedAt(options.reportedAt);\n\t\tconst normalizedReportedSourceEnv = normalizeStructured(options.reportedSourceEnv);\n\t\tconst payload: ErrorReportPayload = removeEmptyFields({\n\t\t\tsourceApp,\n\t\t\tmessage,\n\t\t\tenvironment,\n\t\t\tclientId: options.clientId,\n\t\t\tclientSlug: options.clientSlug,\n\t\t\tclientName,\n\t\t\tclientRepo: options.clientRepo,\n\t\t\tclientEmail: options.clientEmail,\n\t\t\tseverity,\n\t\t\tstack,\n\t\t\tcontext,\n\t\t\tmetadata,\n\t\t\tattachments,\n\t\t\tfingerprint,\n\t\t\tidempotencyKey,\n\t\t\treportedBy: options.reportedBy,\n\t\t\treportedAt,\n\t\t\treportedFor: options.reportedFor,\n\t\t\treportedCount: options.reportedCount,\n\t\t\treportedSourceHost: options.reportedSourceHost,\n\t\t\treportedSourceIp: options.reportedSourceIp,\n\t\t\treportedSourceVersion: options.reportedSourceVersion,\n\t\t\treportedSourcePid: options.reportedSourcePid,\n\t\t\treportedSourceInstance: options.reportedSourceInstance,\n\t\t\treportedSourceRegion: options.reportedSourceRegion,\n\t\t\treportedSourceCluster: options.reportedSourceCluster,\n\t\t\treportedSourceProcess: options.reportedSourceProcess,\n\t\t\treportedSourceEnv: typeof normalizedReportedSourceEnv === 'string' ? undefined : normalizedReportedSourceEnv as Record<string, any>\n\t\t});\n\n\t\tif (shouldSuppressForLocalEnvironment(config, normalizedApiUrl)) {\n\t\t\tlogger.info('ErrorReporter suppressed: local environment detected');\n\t\t\tlogger.error('ErrorReporter payload (suppressed):', payload);\n\t\t\treturn { delivered: false, reason: 'local-environment' };\n\t\t}\n\n\t\tconst transport = options.fetch || globalThis.fetch;\n\t\tif (typeof transport !== 'function') {\n\t\t\tlogger.error('ErrorReporter failed: fetch is not available in this runtime');\n\t\t\tlogger.error('ErrorReporter payload (not sent):', payload);\n\t\t\treturn { delivered: false, reason: 'missing-fetch' };\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await transport(normalizedApiUrl, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: removeEmptyFields({\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t'X-ResolveIO-Error-Key': clientName,\n\t\t\t\t\t'X-ResolveIO-Error-Hash': fingerprint,\n\t\t\t\t\t'X-ResolveIO-Idempotency-Key': idempotencyKey\n\t\t\t\t}),\n\t\t\t\tbody: JSON.stringify(payload)\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlogger.error('ErrorReporter failed to deliver payload', { status: response.status, statusText: response.statusText });\n\t\t\t\treturn { delivered: false, status: response.status, reason: 'http-error' };\n\t\t\t}\n\n\t\t\treturn { delivered: true, status: response.status };\n\t\t}\n\t\tcatch (err) {\n\t\t\tlogger.error('ErrorReporter exception while delivering payload', err);\n\t\t\tlogger.error('ErrorReporter payload (not sent):', payload);\n\t\t\treturn { delivered: false, reason: 'network-error' };\n\t\t}\n\t}\n}\n\nfunction getServerConfig(): Record<string, any> | null {\n\ttry {\n\t\treturn ResolveIOServer.getServerConfig?.() || null;\n\t}\n\tcatch (err) {\n\t\tconsole.error('Failed to read ResolveIO server config', err);\n\t\treturn null;\n\t}\n}\n\nfunction normalizeStack(stack?: string | Error | unknown): string | undefined {\n\tif (!stack) {\n\t\treturn undefined;\n\t}\n\n\tif (typeof stack === 'string') {\n\t\treturn stack;\n\t}\n\n\tif (stack instanceof Error) {\n\t\treturn stack.stack || stack.message;\n\t}\n\n\tif (typeof stack === 'object' && stack !== null && typeof (stack as Record<string, any>).stack === 'string') {\n\t\treturn (stack as Record<string, any>).stack;\n\t}\n\n\tif (typeof stack === 'object' && stack !== null && typeof (stack as Record<string, any>).message === 'string') {\n\t\treturn (stack as Record<string, any>).message;\n\t}\n\n\treturn JSON.stringify(stack);\n}\n\nfunction normalizeStructured(value: any, correlationId?: string): Record<string, any> | string | undefined {\n\tif (value === null || value === undefined) {\n\t\treturn undefined;\n\t}\n\n\tif (typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tconst serialized = serializeValue(value);\n\tif (correlationId && typeof serialized === 'object' && serialized !== null && !serialized.correlationId) {\n\t\tserialized.correlationId = correlationId;\n\t}\n\treturn serialized;\n}\n\nfunction serializeValue(value: any, seen: WeakSet<object> = new WeakSet()): any {\n\tif (value === null || value === undefined) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'bigint') {\n\t\treturn value.toString();\n\t}\n\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\n\tif (value instanceof Error) {\n\t\tconst base = {\n\t\t\tname: value.name,\n\t\t\tmessage: value.message,\n\t\t\tstack: value.stack\n\t\t};\n\t\treturn Object.assign({}, base, serializeValue(Object.assign({}, value), seen));\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tif (seen.has(value)) {\n\t\t\treturn '[Circular]';\n\t\t}\n\t\tseen.add(value);\n\t\tconst arr = value.map(item => serializeValue(item, seen));\n\t\tseen.delete(value);\n\t\treturn arr;\n\t}\n\n\tif (typeof value === 'object') {\n\t\tif (seen.has(value)) {\n\t\t\treturn '[Circular]';\n\t\t}\n\t\tseen.add(value);\n\t\tconst obj: Record<string, any> = {};\n\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\tobj[key] = serializeValue(val, seen);\n\t\t}\n\t\tseen.delete(value);\n\t\treturn obj;\n\t}\n\n\treturn String(value);\n}\n\nfunction normalizeAttachments(attachments: ErrorReportAttachment[]): ErrorReportAttachment[] {\n\treturn attachments\n\t\t.filter(att => !!att && typeof att === 'object')\n\t\t.map(att => removeEmptyFields({\n\t\t\tname: att.name,\n\t\t\turl: att.url,\n\t\t\tcontentType: att.contentType,\n\t\t\tsize: typeof att.size === 'number' ? att.size : undefined\n\t\t}))\n\t\t.filter(att => !!att.name);\n}\n\nfunction normalizeReportedAt(value?: string | Date): string | undefined {\n\tif (!value) {\n\t\treturn new Date().toISOString();\n\t}\n\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\n\tconst date = new Date(value);\n\tif (!isNaN(date.getTime())) {\n\t\treturn date.toISOString();\n\t}\n\n\treturn new Date().toISOString();\n}\n\nfunction computeFingerprint(sourceApp: string, environment: string | undefined, message: string, stack?: string): string | undefined {\n\tconst signature = `${sourceApp || ''}:${environment || ''}:${message || ''}:${stack ? stack.split('\\n').slice(0, 5).join('|') : ''}`;\n\treturn createHash('sha256').update(signature).digest('hex');\n}\n\nfunction removeEmptyFields<T extends Record<string, any>>(obj: T): T {\n\tconst cleaned: Record<string, any> = {};\n\tfor (const [key, value] of Object.entries(obj || {})) {\n\t\tif (value === undefined || value === null || value === '') {\n\t\t\tcontinue;\n\t\t}\n\t\tcleaned[key] = value;\n\t}\n\treturn cleaned as T;\n}\n\nfunction mergeMetadata(metadata: Record<string, any> | string | null | undefined, correlationId?: string) {\n\tif (!metadata && !correlationId) {\n\t\treturn undefined;\n\t}\n\n\tconst base = metadata ? normalizeStructured(metadata) : undefined;\n\tif (!correlationId) {\n\t\treturn base;\n\t}\n\n\tif (typeof base === 'string') {\n\t\treturn {\n\t\t\tcorrelationId,\n\t\t\tmessage: base\n\t\t};\n\t}\n\n\tconst metadataObj = (base || {}) as Record<string, any>;\n\tif (!metadataObj.correlationId) {\n\t\tmetadataObj.correlationId = correlationId;\n\t}\n\treturn metadataObj;\n}\n\nfunction shouldSuppressForLocalEnvironment(config: Record<string, any> | null, apiUrl: string): boolean {\n\tif (isLocalUrl(config?.ROOT_URL) || isLocalUrl(config?.SERVER_URL) || process.env.NODE_ENV === 'development') {\n\t\treturn true;\n\t}\n\n\treturn isLocalUrl(apiUrl);\n}\n\nfunction isLocalUrl(url?: string): boolean {\n\tif (!url || typeof url !== 'string') {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn LOCAL_HOSTNAMES.has(parsed.hostname.toLowerCase());\n\t}\n\tcatch {\n\t\treturn /localhost|127\\.0\\.0\\.1|0\\.0\\.0\\.0|::1/.test(url);\n\t}\n}\n"]}
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -36,7 +36,11 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.ensureErrorWithCorrelation = exports.runWithCorrelationContext = exports.ensureCorrelationId = exports.setCorrelationId = exports.getCorrelationId = void 0;
39
+ exports.getCorrelationId = getCorrelationId;
40
+ exports.setCorrelationId = setCorrelationId;
41
+ exports.ensureCorrelationId = ensureCorrelationId;
42
+ exports.runWithCorrelationContext = runWithCorrelationContext;
43
+ exports.ensureErrorWithCorrelation = ensureErrorWithCorrelation;
40
44
  var async_hooks_1 = require("async_hooks");
41
45
  var common_1 = require("./common");
42
46
  var errorContext = new async_hooks_1.AsyncLocalStorage();
@@ -44,14 +48,12 @@ function getCorrelationId() {
44
48
  var _a;
45
49
  return (_a = errorContext.getStore()) === null || _a === void 0 ? void 0 : _a.correlationId;
46
50
  }
47
- exports.getCorrelationId = getCorrelationId;
48
51
  function setCorrelationId(correlationId) {
49
52
  var store = errorContext.getStore();
50
53
  if (store) {
51
54
  store.correlationId = correlationId;
52
55
  }
53
56
  }
54
- exports.setCorrelationId = setCorrelationId;
55
57
  function ensureCorrelationId(fallbackId) {
56
58
  var correlationId = getCorrelationId();
57
59
  if (!correlationId) {
@@ -60,7 +62,6 @@ function ensureCorrelationId(fallbackId) {
60
62
  }
61
63
  return correlationId;
62
64
  }
63
- exports.ensureCorrelationId = ensureCorrelationId;
64
65
  function runWithCorrelationContext(correlationId, fn) {
65
66
  return __awaiter(this, void 0, void 0, function () {
66
67
  var store;
@@ -83,7 +84,6 @@ function runWithCorrelationContext(correlationId, fn) {
83
84
  });
84
85
  });
85
86
  }
86
- exports.runWithCorrelationContext = runWithCorrelationContext;
87
87
  function coerceError(error) {
88
88
  if (error instanceof Error) {
89
89
  return error;
@@ -116,6 +116,5 @@ function ensureErrorWithCorrelation(error, fallbackId) {
116
116
  setCorrelationId(correlationId);
117
117
  return { error: normalizedError, correlationId: correlationId };
118
118
  }
119
- exports.ensureErrorWithCorrelation = ensureErrorWithCorrelation;
120
119
 
121
120
  //# sourceMappingURL=error-tracking.js.map