o11y 246.2.0 → 246.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/modules/o11y/client/client.js +282 -26
  2. package/dist/modules/o11y/client/client.js.map +1 -1
  3. package/dist/modules/o11y/client/core_envelope/CoreEnvelopeBuilder.d.ts +0 -1
  4. package/dist/modules/o11y/client/core_envelope/interfaces/LogMessage.d.ts +2 -0
  5. package/dist/modules/o11y/client/core_envelope/interfaces/LogMessageRaw.d.ts +2 -0
  6. package/dist/modules/o11y/client/interfaces/Communicator.d.ts +1 -0
  7. package/dist/modules/o11y/client/interfaces/InstrumentedAppMethods.d.ts +5 -0
  8. package/dist/modules/o11y/client/interfaces/InstrumentedAppOptions.d.ts +6 -0
  9. package/dist/modules/o11y/client/interfaces/LogMeta.d.ts +3 -0
  10. package/dist/modules/o11y/client/interfaces/index.d.ts +35 -34
  11. package/dist/modules/o11y/client/interfaces-private/BucketHistogram.d.ts +11 -0
  12. package/dist/modules/o11y/client/interfaces-private/MetricTag.d.ts +4 -0
  13. package/dist/modules/o11y/client/interfaces-private/SenderLogMessage.d.ts +7 -0
  14. package/dist/modules/o11y/client/interfaces-private/SenderMetricsMessage.d.ts +8 -0
  15. package/dist/modules/o11y/client/interfaces-private/UpCounter.d.ts +10 -0
  16. package/dist/modules/o11y/client/interfaces-private/ValueRecorder.d.ts +10 -0
  17. package/dist/modules/o11y/client/interfaces-private/index.d.ts +10 -4
  18. package/dist/modules/o11y/client/library/BucketHistogramImpl.d.ts +1 -1
  19. package/dist/modules/o11y/client/library/MetricsStore.d.ts +11 -0
  20. package/dist/modules/o11y/client/library/NextgenImpl.d.ts +9 -1
  21. package/dist/modules/o11y/client/library/ReceiverConnector.d.ts +20 -0
  22. package/dist/modules/o11y/client/library/SenderConnector.d.ts +28 -0
  23. package/dist/modules/o11y/client/library/UpCounterImpl.d.ts +1 -1
  24. package/dist/modules/o11y/client/library/ValueRecorderImpl.d.ts +1 -1
  25. package/dist/modules/o11y/client/sender_collector/SenderCollector.d.ts +13 -0
  26. package/dist/modules/o11y/client/shared/MetricsUtility.d.ts +11 -0
  27. package/dist/modules/o11y/client/shared/Utility.d.ts +2 -0
  28. package/dist/modules/o11y/client/shared/index.d.ts +5 -4
  29. package/dist/modules/o11y/client/version.d.ts +1 -1
  30. package/dist/modules/o11y/collectors/collectors.js +11 -6
  31. package/dist/modules/o11y/collectors/collectors.js.map +1 -1
  32. package/dist/modules/o11y/collectors/core_envelope/CoreEnvelopeBuilder.d.ts +0 -1
  33. package/dist/modules/o11y/collectors/core_envelope/interfaces/LogMessage.d.ts +2 -0
  34. package/dist/modules/o11y/collectors/core_envelope/interfaces/LogMessageRaw.d.ts +2 -0
  35. package/dist/modules/o11y/collectors/interfaces/Communicator.d.ts +1 -0
  36. package/dist/modules/o11y/collectors/interfaces/InstrumentedAppMethods.d.ts +5 -0
  37. package/dist/modules/o11y/collectors/interfaces/InstrumentedAppOptions.d.ts +6 -0
  38. package/dist/modules/o11y/collectors/interfaces/LogMeta.d.ts +3 -0
  39. package/dist/modules/o11y/collectors/interfaces/index.d.ts +35 -34
  40. package/dist/modules/o11y/collectors/interfaces-private/BucketHistogram.d.ts +11 -0
  41. package/dist/modules/o11y/collectors/interfaces-private/MetricTag.d.ts +4 -0
  42. package/dist/modules/o11y/collectors/interfaces-private/SenderLogMessage.d.ts +7 -0
  43. package/dist/modules/o11y/collectors/interfaces-private/SenderMetricsMessage.d.ts +8 -0
  44. package/dist/modules/o11y/collectors/interfaces-private/UpCounter.d.ts +10 -0
  45. package/dist/modules/o11y/collectors/interfaces-private/ValueRecorder.d.ts +10 -0
  46. package/dist/modules/o11y/collectors/interfaces-private/index.d.ts +10 -4
  47. package/dist/modules/o11y/collectors/library/BucketHistogramImpl.d.ts +1 -1
  48. package/dist/modules/o11y/collectors/library/MetricsStore.d.ts +11 -0
  49. package/dist/modules/o11y/collectors/library/NextgenImpl.d.ts +9 -1
  50. package/dist/modules/o11y/collectors/library/ReceiverConnector.d.ts +20 -0
  51. package/dist/modules/o11y/collectors/library/SenderConnector.d.ts +28 -0
  52. package/dist/modules/o11y/collectors/library/UpCounterImpl.d.ts +1 -1
  53. package/dist/modules/o11y/collectors/library/ValueRecorderImpl.d.ts +1 -1
  54. package/dist/modules/o11y/collectors/sender_collector/SenderCollector.d.ts +13 -0
  55. package/dist/modules/o11y/collectors/shared/MetricsUtility.d.ts +11 -0
  56. package/dist/modules/o11y/collectors/shared/Utility.d.ts +2 -0
  57. package/dist/modules/o11y/collectors/shared/index.d.ts +5 -4
  58. package/dist/modules/o11y/collectors/version.d.ts +1 -1
  59. package/dist/modules/o11y/core_envelope/core_envelope/CoreEnvelopeBuilder.d.ts +0 -1
  60. package/dist/modules/o11y/core_envelope/core_envelope/interfaces/LogMessage.d.ts +2 -0
  61. package/dist/modules/o11y/core_envelope/core_envelope/interfaces/LogMessageRaw.d.ts +2 -0
  62. package/dist/modules/o11y/core_envelope/core_envelope.js +5 -61
  63. package/dist/modules/o11y/core_envelope/core_envelope.js.map +1 -1
  64. package/dist/modules/o11y/core_envelope/interfaces/Communicator.d.ts +1 -0
  65. package/dist/modules/o11y/core_envelope/interfaces/InstrumentedAppMethods.d.ts +5 -0
  66. package/dist/modules/o11y/core_envelope/interfaces/InstrumentedAppOptions.d.ts +6 -0
  67. package/dist/modules/o11y/core_envelope/interfaces/LogMeta.d.ts +3 -0
  68. package/dist/modules/o11y/core_envelope/interfaces/index.d.ts +35 -34
  69. package/dist/modules/o11y/core_envelope/interfaces-private/BucketHistogram.d.ts +11 -0
  70. package/dist/modules/o11y/core_envelope/interfaces-private/MetricTag.d.ts +4 -0
  71. package/dist/modules/o11y/core_envelope/interfaces-private/SenderLogMessage.d.ts +7 -0
  72. package/dist/modules/o11y/core_envelope/interfaces-private/SenderMetricsMessage.d.ts +8 -0
  73. package/dist/modules/o11y/core_envelope/interfaces-private/UpCounter.d.ts +10 -0
  74. package/dist/modules/o11y/core_envelope/interfaces-private/ValueRecorder.d.ts +10 -0
  75. package/dist/modules/o11y/core_envelope/interfaces-private/index.d.ts +10 -4
  76. package/dist/modules/o11y/core_envelope/library/BucketHistogramImpl.d.ts +1 -1
  77. package/dist/modules/o11y/core_envelope/library/MetricsStore.d.ts +11 -0
  78. package/dist/modules/o11y/core_envelope/library/NextgenImpl.d.ts +9 -1
  79. package/dist/modules/o11y/core_envelope/library/ReceiverConnector.d.ts +20 -0
  80. package/dist/modules/o11y/core_envelope/library/SenderConnector.d.ts +28 -0
  81. package/dist/modules/o11y/core_envelope/library/UpCounterImpl.d.ts +1 -1
  82. package/dist/modules/o11y/core_envelope/library/ValueRecorderImpl.d.ts +1 -1
  83. package/dist/modules/o11y/core_envelope/sender_collector/SenderCollector.d.ts +13 -0
  84. package/dist/modules/o11y/core_envelope/shared/MetricsUtility.d.ts +11 -0
  85. package/dist/modules/o11y/core_envelope/shared/Utility.d.ts +2 -0
  86. package/dist/modules/o11y/core_envelope/shared/index.d.ts +5 -4
  87. package/dist/modules/o11y/core_envelope/version.d.ts +1 -1
  88. package/dist/modules/o11y/shared/core_envelope/CoreEnvelopeBuilder.d.ts +0 -1
  89. package/dist/modules/o11y/shared/core_envelope/interfaces/LogMessage.d.ts +2 -0
  90. package/dist/modules/o11y/shared/core_envelope/interfaces/LogMessageRaw.d.ts +2 -0
  91. package/dist/modules/o11y/shared/interfaces/Communicator.d.ts +1 -0
  92. package/dist/modules/o11y/shared/interfaces/InstrumentedAppMethods.d.ts +5 -0
  93. package/dist/modules/o11y/shared/interfaces/InstrumentedAppOptions.d.ts +6 -0
  94. package/dist/modules/o11y/shared/interfaces/LogMeta.d.ts +3 -0
  95. package/dist/modules/o11y/shared/interfaces/index.d.ts +35 -34
  96. package/dist/modules/o11y/shared/interfaces-private/BucketHistogram.d.ts +11 -0
  97. package/dist/modules/o11y/shared/interfaces-private/MetricTag.d.ts +4 -0
  98. package/dist/modules/o11y/shared/interfaces-private/SenderLogMessage.d.ts +7 -0
  99. package/dist/modules/o11y/shared/interfaces-private/SenderMetricsMessage.d.ts +8 -0
  100. package/dist/modules/o11y/shared/interfaces-private/UpCounter.d.ts +10 -0
  101. package/dist/modules/o11y/shared/interfaces-private/ValueRecorder.d.ts +10 -0
  102. package/dist/modules/o11y/shared/interfaces-private/index.d.ts +10 -4
  103. package/dist/modules/o11y/shared/library/BucketHistogramImpl.d.ts +1 -1
  104. package/dist/modules/o11y/shared/library/MetricsStore.d.ts +11 -0
  105. package/dist/modules/o11y/shared/library/NextgenImpl.d.ts +9 -1
  106. package/dist/modules/o11y/shared/library/ReceiverConnector.d.ts +20 -0
  107. package/dist/modules/o11y/shared/library/SenderConnector.d.ts +28 -0
  108. package/dist/modules/o11y/shared/library/UpCounterImpl.d.ts +1 -1
  109. package/dist/modules/o11y/shared/library/ValueRecorderImpl.d.ts +1 -1
  110. package/dist/modules/o11y/shared/sender_collector/SenderCollector.d.ts +13 -0
  111. package/dist/modules/o11y/shared/shared/MetricsUtility.d.ts +11 -0
  112. package/dist/modules/o11y/shared/shared/Utility.d.ts +2 -0
  113. package/dist/modules/o11y/shared/shared/index.d.ts +5 -4
  114. package/dist/modules/o11y/shared/shared.js +83 -1
  115. package/dist/modules/o11y/shared/shared.js.map +1 -1
  116. package/dist/modules/o11y/shared/version.d.ts +1 -1
  117. package/dist/modules/o11y/simple_collector/core_envelope/CoreEnvelopeBuilder.d.ts +0 -1
  118. package/dist/modules/o11y/simple_collector/core_envelope/interfaces/LogMessage.d.ts +2 -0
  119. package/dist/modules/o11y/simple_collector/core_envelope/interfaces/LogMessageRaw.d.ts +2 -0
  120. package/dist/modules/o11y/simple_collector/interfaces/Communicator.d.ts +1 -0
  121. package/dist/modules/o11y/simple_collector/interfaces/InstrumentedAppMethods.d.ts +5 -0
  122. package/dist/modules/o11y/simple_collector/interfaces/InstrumentedAppOptions.d.ts +6 -0
  123. package/dist/modules/o11y/simple_collector/interfaces/LogMeta.d.ts +3 -0
  124. package/dist/modules/o11y/simple_collector/interfaces/index.d.ts +35 -34
  125. package/dist/modules/o11y/simple_collector/interfaces-private/BucketHistogram.d.ts +11 -0
  126. package/dist/modules/o11y/simple_collector/interfaces-private/MetricTag.d.ts +4 -0
  127. package/dist/modules/o11y/simple_collector/interfaces-private/SenderLogMessage.d.ts +7 -0
  128. package/dist/modules/o11y/simple_collector/interfaces-private/SenderMetricsMessage.d.ts +8 -0
  129. package/dist/modules/o11y/simple_collector/interfaces-private/UpCounter.d.ts +10 -0
  130. package/dist/modules/o11y/simple_collector/interfaces-private/ValueRecorder.d.ts +10 -0
  131. package/dist/modules/o11y/simple_collector/interfaces-private/index.d.ts +10 -4
  132. package/dist/modules/o11y/simple_collector/library/BucketHistogramImpl.d.ts +1 -1
  133. package/dist/modules/o11y/simple_collector/library/MetricsStore.d.ts +11 -0
  134. package/dist/modules/o11y/simple_collector/library/NextgenImpl.d.ts +9 -1
  135. package/dist/modules/o11y/simple_collector/library/ReceiverConnector.d.ts +20 -0
  136. package/dist/modules/o11y/simple_collector/library/SenderConnector.d.ts +28 -0
  137. package/dist/modules/o11y/simple_collector/library/UpCounterImpl.d.ts +1 -1
  138. package/dist/modules/o11y/simple_collector/library/ValueRecorderImpl.d.ts +1 -1
  139. package/dist/modules/o11y/simple_collector/sender_collector/SenderCollector.d.ts +13 -0
  140. package/dist/modules/o11y/simple_collector/shared/MetricsUtility.d.ts +11 -0
  141. package/dist/modules/o11y/simple_collector/shared/Utility.d.ts +2 -0
  142. package/dist/modules/o11y/simple_collector/shared/index.d.ts +5 -4
  143. package/dist/modules/o11y/simple_collector/simple_collector.js +4 -2
  144. package/dist/modules/o11y/simple_collector/simple_collector.js.map +1 -1
  145. package/dist/modules/o11y/simple_collector/version.d.ts +1 -1
  146. package/dist/modules/o11y/web_vitals/core_envelope/CoreEnvelopeBuilder.d.ts +0 -1
  147. package/dist/modules/o11y/web_vitals/core_envelope/interfaces/LogMessage.d.ts +2 -0
  148. package/dist/modules/o11y/web_vitals/core_envelope/interfaces/LogMessageRaw.d.ts +2 -0
  149. package/dist/modules/o11y/web_vitals/interfaces/Communicator.d.ts +1 -0
  150. package/dist/modules/o11y/web_vitals/interfaces/InstrumentedAppMethods.d.ts +5 -0
  151. package/dist/modules/o11y/web_vitals/interfaces/InstrumentedAppOptions.d.ts +6 -0
  152. package/dist/modules/o11y/web_vitals/interfaces/LogMeta.d.ts +3 -0
  153. package/dist/modules/o11y/web_vitals/interfaces/index.d.ts +35 -34
  154. package/dist/modules/o11y/web_vitals/interfaces-private/BucketHistogram.d.ts +11 -0
  155. package/dist/modules/o11y/web_vitals/interfaces-private/MetricTag.d.ts +4 -0
  156. package/dist/modules/o11y/web_vitals/interfaces-private/SenderLogMessage.d.ts +7 -0
  157. package/dist/modules/o11y/web_vitals/interfaces-private/SenderMetricsMessage.d.ts +8 -0
  158. package/dist/modules/o11y/web_vitals/interfaces-private/UpCounter.d.ts +10 -0
  159. package/dist/modules/o11y/web_vitals/interfaces-private/ValueRecorder.d.ts +10 -0
  160. package/dist/modules/o11y/web_vitals/interfaces-private/index.d.ts +10 -4
  161. package/dist/modules/o11y/web_vitals/library/BucketHistogramImpl.d.ts +1 -1
  162. package/dist/modules/o11y/web_vitals/library/MetricsStore.d.ts +11 -0
  163. package/dist/modules/o11y/web_vitals/library/NextgenImpl.d.ts +9 -1
  164. package/dist/modules/o11y/web_vitals/library/ReceiverConnector.d.ts +20 -0
  165. package/dist/modules/o11y/web_vitals/library/SenderConnector.d.ts +28 -0
  166. package/dist/modules/o11y/web_vitals/library/UpCounterImpl.d.ts +1 -1
  167. package/dist/modules/o11y/web_vitals/library/ValueRecorderImpl.d.ts +1 -1
  168. package/dist/modules/o11y/web_vitals/sender_collector/SenderCollector.d.ts +13 -0
  169. package/dist/modules/o11y/web_vitals/shared/MetricsUtility.d.ts +11 -0
  170. package/dist/modules/o11y/web_vitals/shared/Utility.d.ts +2 -0
  171. package/dist/modules/o11y/web_vitals/shared/index.d.ts +5 -4
  172. package/dist/modules/o11y/web_vitals/version.d.ts +1 -1
  173. package/package.json +6 -6
@@ -1,4 +1,4 @@
1
- import { utility, PublicSafety, schemaUtil } from 'o11y/shared';
1
+ import { utility, PublicSafety, schemaUtil, metricsUtility } from 'o11y/shared';
2
2
 
3
3
  const activity={namespace:"sf.instrumentation",name:"Activity",pbjsSchema:{"nested":{"sf":{"nested":{"instrumentation":{"nested":{"Activity":{"reserved":[[5,5],[7,7]],"fields":{"duration":{"id":3,"type":"double"},"stopReason":{"id":6,"type":"string"},"isRoot":{"id":8,"type":"bool"},"timerOverridden":{"id":12,"type":"uint32"},"name":{"options":{"(meta.max_length)":25},"id":2,"type":"string"},"isSampled":{"id":11,"type":"bool"},"preRootId":{"id":9,"type":"string"},"id":{"id":1,"type":"string"},
4
4
  "userPayload":{"id":4,"type":"Payload"},"errorCount":{"id":10,"type":"uint32"},"parentId":{"id":13,"type":"string"}}},"Payload":{"fields":{"payload":{"id":2,"type":"bytes"},"schemaName":{"id":1,"type":"string"}}}}}}}}}};
@@ -1068,14 +1068,20 @@ class LogValidator {
1068
1068
  const logValidator = new LogValidator();
1069
1069
 
1070
1070
  class BucketHistogramImpl {
1071
- constructor(_name, _ownerName, _ownerAppName, _tags, _buckets) {
1071
+ constructor(_name, _ownerName, _ownerAppName, _tags, _buckets, createdOn, lastUpdatedOn, values) {
1072
1072
  this._name = _name;
1073
1073
  this._ownerName = _ownerName;
1074
1074
  this._ownerAppName = _ownerAppName;
1075
1075
  this._tags = _tags;
1076
1076
  this._buckets = _buckets;
1077
1077
  this._values = new Array();
1078
- this._createdOn = utility.time().tsNow;
1078
+ this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;
1079
+ if (lastUpdatedOn !== undefined) {
1080
+ this._lastUpdatedOn = lastUpdatedOn;
1081
+ }
1082
+ if (values !== undefined) {
1083
+ this._values = values;
1084
+ }
1079
1085
  }
1080
1086
  getName() {
1081
1087
  return this._name;
@@ -1122,13 +1128,19 @@ class BucketHistogramImpl {
1122
1128
  }
1123
1129
 
1124
1130
  class UpCounterImpl {
1125
- constructor(_name, _ownerName, _ownerAppName, _tags) {
1131
+ constructor(_name, _ownerName, _ownerAppName, _tags, createdOn, lastUpdatedOn, value) {
1126
1132
  this._name = _name;
1127
1133
  this._ownerName = _ownerName;
1128
1134
  this._ownerAppName = _ownerAppName;
1129
1135
  this._tags = _tags;
1130
1136
  this._value = 0;
1131
- this._createdOn = utility.time().tsNow;
1137
+ this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;
1138
+ if (lastUpdatedOn !== undefined) {
1139
+ this._lastUpdatedOn = lastUpdatedOn;
1140
+ }
1141
+ if (value !== undefined) {
1142
+ this._value = value;
1143
+ }
1132
1144
  }
1133
1145
  getName() {
1134
1146
  return this._name;
@@ -1166,13 +1178,19 @@ class UpCounterImpl {
1166
1178
  }
1167
1179
 
1168
1180
  class ValueRecorderImpl {
1169
- constructor(_name, _ownerName, _ownerAppName, _tags) {
1181
+ constructor(_name, _ownerName, _ownerAppName, _tags, createdOn, lastUpdatedOn, values) {
1170
1182
  this._name = _name;
1171
1183
  this._ownerName = _ownerName;
1172
1184
  this._ownerAppName = _ownerAppName;
1173
1185
  this._tags = _tags;
1174
1186
  this._values = new Array();
1175
- this._createdOn = utility.time().tsNow;
1187
+ this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;
1188
+ if (lastUpdatedOn !== undefined) {
1189
+ this._lastUpdatedOn = lastUpdatedOn;
1190
+ }
1191
+ if (values !== undefined) {
1192
+ this._values = values;
1193
+ }
1176
1194
  }
1177
1195
  getName() {
1178
1196
  return this._name;
@@ -1370,7 +1388,7 @@ class InstrumentationImpl {
1370
1388
  return new MetricsImpl(this.name, () => this._nextGen.appName || InstrumentationImpl.defaultAppName);
1371
1389
  }
1372
1390
  _incrementError(increment = 1) {
1373
- this._metrics.incrementCounter(reservedMetricNames.internalError, increment, false);
1391
+ this._metrics.incrementCounter(reservedMetricNames.internalError, increment, true);
1374
1392
  }
1375
1393
  get name() {
1376
1394
  return this._name;
@@ -1848,9 +1866,190 @@ class AutomaticClickTracker {
1848
1866
  }
1849
1867
  }
1850
1868
 
1869
+ const MESSAGE_FROM_RECEIVER = 'o11y:receiver';
1870
+ var CommState;
1871
+ (function (CommState) {
1872
+ CommState[CommState["Unknown"] = 0] = "Unknown";
1873
+ CommState[CommState["Opening"] = 1] = "Opening";
1874
+ })(CommState || (CommState = {}));
1875
+ class ReceiverConnector {
1876
+ constructor(_logCallback, _metricsCallback, _commErrorCallback) {
1877
+ this._logCallback = _logCallback;
1878
+ this._metricsCallback = _metricsCallback;
1879
+ this._commErrorCallback = _commErrorCallback;
1880
+ this._senders = new Map();
1881
+ utility.requireArgument(this._logCallback, '_logCallback', 'function');
1882
+ utility.requireArgument(this._metricsCallback, '_metricsCallback', 'function');
1883
+ utility.requireArgument(this._commErrorCallback, '_commErrorCallback', 'function');
1884
+ }
1885
+ openComms(sender) {
1886
+ utility.requireArgument(sender, 'sender', 'object');
1887
+ if (!this._senders.has(sender)) {
1888
+ const messageChannel = new MessageChannel();
1889
+ const status = {
1890
+ state: CommState.Opening,
1891
+ port: messageChannel.port1
1892
+ };
1893
+ this._senders.set(sender, status);
1894
+ status.port.onmessage = this._messagePortEventHandler.bind(this);
1895
+ status.port.onmessageerror = this._messagePortErrorHandler.bind(this);
1896
+ sender.postMessage({
1897
+ from: MESSAGE_FROM_RECEIVER,
1898
+ type: MESSAGE_TYPE_HANDSHAKE
1899
+ }, '*', [messageChannel.port2]);
1900
+ }
1901
+ }
1902
+ closeComms(sender) {
1903
+ const status = this._senders.get(sender);
1904
+ if (status) {
1905
+ status.port.onmessage = undefined;
1906
+ status.port.onmessageerror = undefined;
1907
+ this._senders.delete(sender);
1908
+ }
1909
+ }
1910
+ _messagePortEventHandler(e) {
1911
+ if (e.data.type === MESSAGE_TYPE_LOG) {
1912
+ this._logCallback(e.data.data);
1913
+ }
1914
+ else if (e.data.type === MESSAGE_TYPE_METRICS) {
1915
+ this._metricsCallback(e.data.data);
1916
+ }
1917
+ }
1918
+ _messagePortErrorHandler() {
1919
+ this._commErrorCallback();
1920
+ }
1921
+ }
1922
+
1923
+ const MESSAGE_TYPE_HANDSHAKE = 'handshake';
1924
+ const MESSAGE_TYPE_LOG = 'log';
1925
+ const MESSAGE_TYPE_METRICS = 'metrics';
1926
+ class SenderConnector {
1927
+ constructor(_self, _allowedOrigins) {
1928
+ this._self = _self;
1929
+ this._allowedOrigins = _allowedOrigins;
1930
+ this._messageEventHandlerFunc = this._messageEventHandler.bind(this);
1931
+ this._handshakeComplete = false;
1932
+ this._logBuffer = [];
1933
+ this._metricsBuffer = [];
1934
+ utility.requireArgument(this._self, '_self', 'object');
1935
+ utility.requireArgumentIfDefined(_allowedOrigins, 'allowedOrigins', Array);
1936
+ this._self.addEventListener('message', this._messageEventHandlerFunc);
1937
+ }
1938
+ _messageEventHandler(e) {
1939
+ if (e.data.from === MESSAGE_FROM_RECEIVER &&
1940
+ e.data.type === MESSAGE_TYPE_HANDSHAKE &&
1941
+ e.ports[0] instanceof MessagePort &&
1942
+ utility.isAllowedOrigin(e.origin, this._allowedOrigins)) {
1943
+ this._handshakeComplete = true;
1944
+ this._self.removeEventListener('message', this._messageEventHandlerFunc);
1945
+ this._otherPort = e.ports[0];
1946
+ this._emptyBuffers();
1947
+ }
1948
+ }
1949
+ sendLog(log) {
1950
+ if (!this._handshakeComplete) {
1951
+ this._logBuffer.push(log);
1952
+ }
1953
+ else {
1954
+ this._otherPort.postMessage({
1955
+ type: MESSAGE_TYPE_LOG,
1956
+ data: log
1957
+ });
1958
+ }
1959
+ }
1960
+ sendMetrics(metrics) {
1961
+ if (!this._handshakeComplete) {
1962
+ this._metricsBuffer.push(metrics);
1963
+ }
1964
+ else {
1965
+ this._otherPort.postMessage({
1966
+ type: MESSAGE_TYPE_METRICS,
1967
+ data: metrics
1968
+ });
1969
+ }
1970
+ }
1971
+ _emptyBuffers() {
1972
+ this._logBuffer.forEach((log) => this.sendLog(log));
1973
+ this._metricsBuffer.forEach((metrics) => this.sendMetrics(metrics));
1974
+ this._logBuffer = undefined;
1975
+ this._metricsBuffer = undefined;
1976
+ }
1977
+ }
1978
+
1979
+ class MetricsStore {
1980
+ constructor() {
1981
+ this._upCounters = [];
1982
+ this._valueRecorders = [];
1983
+ this._bucketHistograms = [];
1984
+ }
1985
+ add(senderMetrics) {
1986
+ var _a, _b, _c;
1987
+ if ((_a = senderMetrics.upCounters) === null || _a === void 0 ? void 0 : _a.length) {
1988
+ this._upCounters.push(...senderMetrics.upCounters.map((it) => new UpCounterImpl(it.name, it.ownerName, it.ownerAppName, metricsUtility.getMetricsTags(it.tags), it.createdTimestamp, it.lastUpdatedTimestamp, it.value)));
1989
+ }
1990
+ if ((_b = senderMetrics.valueRecorders) === null || _b === void 0 ? void 0 : _b.length) {
1991
+ this._valueRecorders.push(...senderMetrics.valueRecorders.map((it) => new ValueRecorderImpl(it.name, it.ownerName, it.ownerAppName, metricsUtility.getMetricsTags(it.tags), it.createdTimestamp, it.lastUpdatedTimestamp, it.values)));
1992
+ }
1993
+ if ((_c = senderMetrics.bucketHistograms) === null || _c === void 0 ? void 0 : _c.length) {
1994
+ this._bucketHistograms.push(...senderMetrics.bucketHistograms.map((it) => new BucketHistogramImpl(it.name, it.ownerName, it.ownerAppName, metricsUtility.getMetricsTags(it.tags), it.buckets, it.createdTimestamp, it.lastUpdatedTimestamp, it.values)));
1995
+ }
1996
+ }
1997
+ getUpCounters() {
1998
+ this._upCounters = this._upCounters.filter((i) => i.getLastUpdatedOn() !== undefined);
1999
+ return this._upCounters;
2000
+ }
2001
+ getValueRecorders() {
2002
+ this._valueRecorders = this._valueRecorders.filter((i) => i.getLastUpdatedOn() !== undefined);
2003
+ return this._valueRecorders;
2004
+ }
2005
+ getBucketHistograms() {
2006
+ this._bucketHistograms = this._bucketHistograms.filter((i) => i.getLastUpdatedOn() !== undefined);
2007
+ return this._bucketHistograms;
2008
+ }
2009
+ }
2010
+
2011
+ const DEFAULT_POLL_INTERVAL = 1000;
2012
+ class SenderCollector {
2013
+ constructor(_connector, _pollInterval) {
2014
+ this._connector = _connector;
2015
+ this._pollInterval = DEFAULT_POLL_INTERVAL;
2016
+ utility.requireArgument(_connector, '_connector', 'object');
2017
+ if (utility.requireArgumentIfDefined(_pollInterval, '_pollInterval', 'number') &&
2018
+ _pollInterval > 0) {
2019
+ this._pollInterval = _pollInterval;
2020
+ }
2021
+ }
2022
+ collect(schema, data, logMeta) {
2023
+ const msg = {
2024
+ schema,
2025
+ data,
2026
+ logMeta
2027
+ };
2028
+ this._connector.sendLog(msg);
2029
+ }
2030
+ receiveMetricsExtractors(extractors) {
2031
+ this._metricsExtractors = extractors;
2032
+ this._collectAndSendMetrics();
2033
+ setInterval(this._collectAndSendMetrics.bind(this), this._pollInterval);
2034
+ }
2035
+ _collectAndSendMetrics() {
2036
+ const metrics = {
2037
+ upCounters: metricsUtility.getUpCounters(this._metricsExtractors.getAllUpCounters()),
2038
+ valueRecorders: metricsUtility.getValueRecorders(this._metricsExtractors.getAllValueRecorders()),
2039
+ bucketHistograms: metricsUtility.getBucketHistograms(this._metricsExtractors.getAllBucketHistograms())
2040
+ };
2041
+ if (metrics.upCounters.length ||
2042
+ metrics.valueRecorders.length ||
2043
+ metrics.bucketHistograms.length) {
2044
+ this._connector.sendMetrics(metrics);
2045
+ }
2046
+ }
2047
+ }
2048
+
1851
2049
  const maxInstrumentationLength = 80;
1852
2050
  const truncatedText = '_CUT';
1853
2051
  const maxInstrumentationLengthBeforeTruncated = maxInstrumentationLength - truncatedText.length;
2052
+ function noOpFunc() { }
1854
2053
  class NextgenImpl {
1855
2054
  get pagePayloadProvider() {
1856
2055
  return this._pagePayloadProvider;
@@ -1875,6 +2074,9 @@ class NextgenImpl {
1875
2074
  this._isBufferingEnabled = false;
1876
2075
  this._buffer = [];
1877
2076
  this._logCollectionListeners = new Set();
2077
+ this._opMode = 'default';
2078
+ this._isSender = false;
2079
+ this._isReceiver = false;
1878
2080
  }
1879
2081
  registerApp(name, options) {
1880
2082
  var _a;
@@ -1886,10 +2088,30 @@ class NextgenImpl {
1886
2088
  if (instr) {
1887
2089
  throw new Error(`The instrumentation name ${name} is already taken`);
1888
2090
  }
2091
+ this._initOpMode(options === null || options === void 0 ? void 0 : options.operationMode);
2092
+ this._isSender = this._opMode === 'sender';
2093
+ this._isReceiver = this._opMode === 'receiver';
1889
2094
  this._clientSessionId = ((_a = options === null || options === void 0 ? void 0 : options.clientSessionId) === null || _a === void 0 ? void 0 : _a.toString()) || utility.generateUniqueId();
1890
2095
  this._appInstr = new AppInstrumentationImpl(this, name, options === null || options === void 0 ? void 0 : options.allowMultipleRootActivities);
1891
2096
  this._instruments.set(name, this._appInstr);
1892
- this._isBufferingEnabled = options === null || options === void 0 ? void 0 : options.enableBuffering;
2097
+ if (this._isSender) {
2098
+ const senderCollector = new SenderCollector(new SenderConnector(window, options === null || options === void 0 ? void 0 : options.allowedReceiverOrigins), options === null || options === void 0 ? void 0 : options.senderMetricsPollingInterval);
2099
+ this.registerLogCollector(senderCollector);
2100
+ this.registerMetricsCollector(senderCollector);
2101
+ }
2102
+ else if (this._isReceiver) {
2103
+ this._metricsStore = new MetricsStore();
2104
+ this._receiverConnector = new ReceiverConnector((msg) => {
2105
+ msg.logMeta.receiverClientSessionId = this._clientSessionId;
2106
+ msg.logMeta.receiverRootId = this._appInstr.getSingleRootActivityId();
2107
+ this._multiplex(msg.schema, msg.data, msg.logMeta);
2108
+ }, (msg) => {
2109
+ this._metricsStore.add(msg);
2110
+ }, () => {
2111
+ this._appInstr.incrementCounter('o11y-error-receiver', 1, true);
2112
+ });
2113
+ }
2114
+ this._isBufferingEnabled = !this._isSender && (options === null || options === void 0 ? void 0 : options.enableBuffering);
1893
2115
  const tracing = new Tracing(this.getInstrumentation('Network'), this._idleDetector);
1894
2116
  return {
1895
2117
  log: this._appInstr.log.bind(this._appInstr),
@@ -1904,19 +2126,28 @@ class NextgenImpl {
1904
2126
  activity: this._appInstr.activity.bind(this._appInstr),
1905
2127
  activityAsync: this._appInstr.activityAsync.bind(this._appInstr),
1906
2128
  startRootActivity: this._appInstr.startRootActivity.bind(this._appInstr),
1907
- registerLogCollector: this.registerLogCollector.bind(this),
1908
- registerMetricsCollector: this.registerMetricsCollector.bind(this),
2129
+ registerLogCollector: this._isSender ? noOpFunc : this.registerLogCollector.bind(this),
2130
+ registerMetricsCollector: this._isSender
2131
+ ? noOpFunc
2132
+ : this.registerMetricsCollector.bind(this),
1909
2133
  activateClickTracker: this.activateClickTracker.bind(this),
1910
2134
  deactivateClickTracker: this.deactivateClickTracker.bind(this),
1911
2135
  disableBuffering: this.disableBuffering.bind(this),
1912
2136
  promptLogCollection: this.promptLogCollection.bind(this),
1913
- getClientSessionId: this.getClientSessionId.bind(this)
2137
+ getClientSessionId: this.getClientSessionId.bind(this),
2138
+ getOperationMode: this.getOperationMode.bind(this),
2139
+ startReceiving: this._isReceiver
2140
+ ? this._receiverConnector.openComms.bind(this._receiverConnector)
2141
+ : noOpFunc,
2142
+ stopReceiving: this._isReceiver
2143
+ ? this._receiverConnector.closeComms.bind(this._receiverConnector)
2144
+ : noOpFunc
1914
2145
  };
1915
2146
  }
1916
2147
  getInstrumentation(name) {
1917
2148
  utility.requireArgument(name, 'name', 'string');
1918
2149
  if (name.length > maxInstrumentationLength) {
1919
- name = name.substr(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;
2150
+ name = name.substring(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;
1920
2151
  }
1921
2152
  let instr = this._instruments.get(name);
1922
2153
  if (!instr) {
@@ -1939,21 +2170,29 @@ class NextgenImpl {
1939
2170
  let schemaSequence = this._seqBySchema.get(schemaId) || 0;
1940
2171
  schemaSequence += 1;
1941
2172
  this._seqBySchema.set(schemaId, schemaSequence);
2173
+ if (!this._isSender) {
2174
+ data = utility.clone(data);
2175
+ }
1942
2176
  const logMeta = {
1943
2177
  timestamp,
1944
2178
  rootId,
1945
2179
  sequence: this._sequence,
1946
2180
  schemaSequence,
1947
2181
  loggerName,
1948
- pagePayload: pagePayload ? utility.clone(pagePayload) : undefined,
1949
- appPayload: appPayload ? utility.clone(appPayload) : undefined,
2182
+ pagePayload: pagePayload || undefined,
2183
+ appPayload: appPayload || undefined,
1950
2184
  loggerAppName: this.appName,
1951
2185
  connectionType: utility.getConnectionType(),
1952
- clientSessionId: this._clientSessionId
2186
+ clientSessionId: this._clientSessionId,
2187
+ age: utility.getAge(timestamp)
1953
2188
  };
1954
2189
  if (this._isBufferingEnabled) {
1955
- this._buffer.push({ schema, data: utility.clone(data), logMeta });
2190
+ this._buffer.push({ schema, data, logMeta });
1956
2191
  }
2192
+ this._multiplex(schema, data, logMeta);
2193
+ return this._sequence;
2194
+ }
2195
+ _multiplex(schema, data, logMeta) {
1957
2196
  const eligibleCollectors = Array.from(this._logCollectors).filter((collector) => {
1958
2197
  var _a;
1959
2198
  return !this._forceDisabledLogCollectors.has(collector) &&
@@ -1961,10 +2200,9 @@ class NextgenImpl {
1961
2200
  });
1962
2201
  if (eligibleCollectors.length > 0) {
1963
2202
  for (const collector of eligibleCollectors) {
1964
- const dataClone = utility.clone(data);
1965
2203
  let failures = this._logCollectorFailures.get(collector) || 0;
1966
2204
  try {
1967
- collector.collect(schema, dataClone, logMeta);
2205
+ collector.collect(schema, data, logMeta);
1968
2206
  if (failures > 0) {
1969
2207
  this._logCollectorFailures.set(collector, failures - 1);
1970
2208
  }
@@ -1983,7 +2221,6 @@ class NextgenImpl {
1983
2221
  }
1984
2222
  }
1985
2223
  }
1986
- return this._sequence;
1987
2224
  }
1988
2225
  getBuffer() {
1989
2226
  return this._buffer;
@@ -2024,8 +2261,7 @@ class NextgenImpl {
2024
2261
  this._logCollectors.add(collector);
2025
2262
  this._logCollectorFailures.set(collector, 0);
2026
2263
  if ((!collector.getIsCollectDisabled || !collector.getIsCollectDisabled()) &&
2027
- options &&
2028
- options.retroactive) {
2264
+ (options === null || options === void 0 ? void 0 : options.retroactive)) {
2029
2265
  for (const log of this._buffer) {
2030
2266
  collector.collect(log.schema, log.data, log.logMeta);
2031
2267
  }
@@ -2044,16 +2280,19 @@ class NextgenImpl {
2044
2280
  });
2045
2281
  }
2046
2282
  _getAllUpCounters() {
2283
+ var _a;
2047
2284
  const arrOfArrs = Array.from(this._instruments.values()).map((instr) => instr.getUpCounters());
2048
- return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);
2285
+ return arrOfArrs.reduce((pv, cv) => pv.concat(cv), ((_a = this._metricsStore) === null || _a === void 0 ? void 0 : _a.getUpCounters()) || []);
2049
2286
  }
2050
2287
  _getAllValueRecorders() {
2288
+ var _a;
2051
2289
  const arrOfArrs = Array.from(this._instruments.values()).map((instr) => instr.getValueRecorders());
2052
- return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);
2290
+ return arrOfArrs.reduce((pv, cv) => pv.concat(cv), ((_a = this._metricsStore) === null || _a === void 0 ? void 0 : _a.getValueRecorders()) || []);
2053
2291
  }
2054
2292
  _getAllBucketHistograms() {
2293
+ var _a;
2055
2294
  const arrOfArrs = Array.from(this._instruments.values()).map((instr) => instr.getBucketHistograms());
2056
- return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);
2295
+ return arrOfArrs.reduce((pv, cv) => pv.concat(cv), ((_a = this._metricsStore) === null || _a === void 0 ? void 0 : _a.getBucketHistograms()) || []);
2057
2296
  }
2058
2297
  registerForLogPrompt(listener) {
2059
2298
  this._logCollectionListeners.add(listener);
@@ -2073,6 +2312,23 @@ class NextgenImpl {
2073
2312
  getClientSessionId() {
2074
2313
  return this._clientSessionId;
2075
2314
  }
2315
+ _initOpMode(opMode) {
2316
+ if (typeof opMode === 'function') {
2317
+ opMode = opMode();
2318
+ }
2319
+ if (opMode === undefined || typeof window !== 'object') {
2320
+ opMode = 'default';
2321
+ }
2322
+ if (['default', 'receiver', 'sender'].indexOf(opMode) >= 0) {
2323
+ this._opMode = opMode;
2324
+ }
2325
+ else {
2326
+ throw new Error(`Invalid operation mode: ${opMode}`);
2327
+ }
2328
+ }
2329
+ getOperationMode() {
2330
+ return this._opMode;
2331
+ }
2076
2332
  }
2077
2333
  NextgenImpl._collectorFailureLimit = 5;
2078
2334
 
@@ -2142,7 +2398,7 @@ class ConsoleCollector {
2142
2398
  }
2143
2399
  }
2144
2400
 
2145
- const version = '246.2.0';
2401
+ const version = '246.4.0';
2146
2402
 
2147
2403
  const idleDetector = new IdleDetectorImpl({
2148
2404
  logThreshold: 300,