@atlaskit/react-ufo 2.4.7 → 2.5.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 (64) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/common/constants.js +1 -1
  3. package/dist/cjs/config/index.js +18 -40
  4. package/dist/cjs/create-payload/common/utils/index.js +1 -85
  5. package/dist/cjs/create-payload/index.js +77 -37
  6. package/dist/cjs/interaction-metrics/common/constants.js +1 -7
  7. package/dist/cjs/interaction-metrics/index.js +205 -140
  8. package/dist/cjs/interaction-metrics-init/index.js +9 -27
  9. package/dist/cjs/load-hold/UFOLoadHold.js +4 -3
  10. package/dist/cjs/segment/segment.js +9 -7
  11. package/dist/cjs/trace-pageload/index.js +1 -2
  12. package/dist/cjs/vc/vc-observer/index.js +48 -33
  13. package/dist/es2019/common/constants.js +1 -1
  14. package/dist/es2019/config/index.js +0 -22
  15. package/dist/es2019/create-payload/common/utils/index.js +1 -86
  16. package/dist/es2019/create-payload/index.js +74 -28
  17. package/dist/es2019/interaction-metrics/common/constants.js +0 -6
  18. package/dist/es2019/interaction-metrics/index.js +130 -93
  19. package/dist/es2019/interaction-metrics-init/index.js +8 -21
  20. package/dist/es2019/load-hold/UFOLoadHold.js +4 -3
  21. package/dist/es2019/segment/segment.js +12 -6
  22. package/dist/es2019/trace-pageload/index.js +1 -1
  23. package/dist/es2019/vc/vc-observer/index.js +17 -5
  24. package/dist/esm/common/constants.js +1 -1
  25. package/dist/esm/config/index.js +18 -39
  26. package/dist/esm/create-payload/common/utils/index.js +1 -80
  27. package/dist/esm/create-payload/index.js +75 -33
  28. package/dist/esm/interaction-metrics/common/constants.js +0 -6
  29. package/dist/esm/interaction-metrics/index.js +157 -88
  30. package/dist/esm/interaction-metrics-init/index.js +10 -24
  31. package/dist/esm/load-hold/UFOLoadHold.js +4 -3
  32. package/dist/esm/segment/segment.js +9 -7
  33. package/dist/esm/trace-pageload/index.js +1 -1
  34. package/dist/esm/vc/vc-observer/index.js +48 -33
  35. package/dist/types/common/common/types.d.ts +4 -6
  36. package/dist/types/config/index.d.ts +0 -6
  37. package/dist/types/create-payload/common/utils/index.d.ts +0 -12
  38. package/dist/types/create-payload/index.d.ts +5660 -13
  39. package/dist/types/interaction-metrics/common/constants.d.ts +1 -31
  40. package/dist/types/interaction-metrics/index.d.ts +15 -4
  41. package/dist/types/load-hold/UFOLoadHold.d.ts +2 -1
  42. package/dist/types/trace-pageload/index.d.ts +0 -1
  43. package/dist/types/vc/vc-observer/index.d.ts +1 -1
  44. package/dist/types-ts4.5/common/common/types.d.ts +4 -6
  45. package/dist/types-ts4.5/config/index.d.ts +0 -6
  46. package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +0 -12
  47. package/dist/types-ts4.5/create-payload/index.d.ts +5660 -13
  48. package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +1 -31
  49. package/dist/types-ts4.5/interaction-metrics/index.d.ts +15 -4
  50. package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +2 -1
  51. package/dist/types-ts4.5/trace-pageload/index.d.ts +0 -1
  52. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +1 -1
  53. package/package.json +6 -4
  54. package/create-experimental-interaction-metrics-payload/package.json +0 -15
  55. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +0 -89
  56. package/dist/cjs/interaction-metrics/common/index.js +0 -151
  57. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +0 -67
  58. package/dist/es2019/interaction-metrics/common/index.js +0 -103
  59. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +0 -81
  60. package/dist/esm/interaction-metrics/common/index.js +0 -132
  61. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +0 -31
  62. package/dist/types/interaction-metrics/common/index.d.ts +0 -16
  63. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +0 -31
  64. package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +0 -16
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -32,7 +31,6 @@ exports.addRequestInfo = addRequestInfo;
32
31
  exports.addSegment = addSegment;
33
32
  exports.addSpan = addSpan;
34
33
  exports.addSpanToAll = addSpanToAll;
35
- exports.experimentalInteractionLog = void 0;
36
34
  exports.extractModuleName = extractModuleName;
37
35
  exports.getActiveInteraction = getActiveInteraction;
38
36
  exports.getCurrentInteractionType = getCurrentInteractionType;
@@ -40,33 +38,36 @@ exports.postInteractionLog = exports.interactionSpans = void 0;
40
38
  exports.remove = remove;
41
39
  exports.removeHoldByID = removeHoldByID;
42
40
  exports.removeSegment = removeSegment;
43
- exports.sinkPostInteractionLogHandler = exports.sinkInteractionHandler = exports.sinkExperimentalHandler = void 0;
41
+ exports.sinkPostInteractionLogHandler = exports.sinkInteractionHandler = void 0;
44
42
  exports.tryComplete = tryComplete;
45
43
  exports.updatePageLoadInteractionName = updatePageLoadInteractionName;
46
44
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
47
45
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
46
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
48
47
  var _uuid = require("uuid");
49
48
  var _coinflip = _interopRequireDefault(require("../coinflip"));
50
49
  var _config = require("../config");
51
- var _createExperimentalInteractionMetricsPayload = require("../create-experimental-interaction-metrics-payload");
52
- var _utils = require("../create-payload/common/utils");
53
50
  var _experienceTraceIdContext = require("../experience-trace-id-context");
54
51
  var _featureFlagsAccessed = require("../feature-flags-accessed");
55
52
  var _interactionIdContext = require("../interaction-id-context");
56
53
  var _vc = require("../vc");
57
- var _common = require("./common");
58
- var _constants = _interopRequireWildcard(require("./common/constants"));
54
+ var _constants = _interopRequireDefault(require("./common/constants"));
59
55
  var _postInteractionLog = _interopRequireDefault(require("./post-interaction-log"));
60
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
61
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
62
56
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
63
57
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
58
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
59
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
60
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
64
61
  var PreviousInteractionLog = {
65
62
  name: undefined,
66
63
  isAborted: undefined
67
64
  };
68
65
  var postInteractionLog = exports.postInteractionLog = new _postInteractionLog.default();
69
- var experimentalInteractionLog = exports.experimentalInteractionLog = new _createExperimentalInteractionMetricsPayload.ExperimentalInteractionMetrics();
66
+ var interactionQueue = [];
67
+ var segmentCache = new Map();
68
+ var CLEANUP_TIMEOUT = 60 * 1000;
69
+ var CLEANUP_TIMEOUT_AFTER_APDEX = 15 * 1000;
70
+ var segmentObservers = [];
70
71
  function getActiveInteraction() {
71
72
  var interactionId = (0, _interactionIdContext.getInteractionId)();
72
73
  if (!interactionId.current) {
@@ -74,6 +75,51 @@ function getActiveInteraction() {
74
75
  }
75
76
  return _constants.default.get(interactionId.current);
76
77
  }
78
+ function isPerformanceTracingEnabled() {
79
+ var _getConfig;
80
+ return ((_getConfig = (0, _config.getConfig)()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
81
+ }
82
+ function labelStackToString(labelStack, name) {
83
+ var _stack$map;
84
+ var stack = (0, _toConsumableArray2.default)(labelStack !== null && labelStack !== void 0 ? labelStack : []);
85
+ if (name) {
86
+ stack.push({
87
+ name: name
88
+ });
89
+ }
90
+ return (_stack$map = stack.map(function (l) {
91
+ return l.name;
92
+ })) === null || _stack$map === void 0 ? void 0 : _stack$map.join('/');
93
+ }
94
+ function labelStackToIdString(labelStack) {
95
+ var _labelStack$map;
96
+ return labelStack === null || labelStack === void 0 || (_labelStack$map = labelStack.map(function (l) {
97
+ return 'segmentId' in l ? "".concat(l.name, ":").concat(l.segmentId) : "".concat(l.name);
98
+ })) === null || _labelStack$map === void 0 ? void 0 : _labelStack$map.join('/');
99
+ }
100
+ function addSegmentObserver(observer) {
101
+ segmentObservers.push(observer);
102
+ var _iterator = _createForOfIteratorHelper(segmentCache.values()),
103
+ _step;
104
+ try {
105
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
106
+ var segmentInfo = _step.value;
107
+ observer.onAdd(segmentInfo);
108
+ }
109
+ } catch (err) {
110
+ _iterator.e(err);
111
+ } finally {
112
+ _iterator.f();
113
+ }
114
+ }
115
+ function removeSegmentObserver(observer) {
116
+ var index = segmentObservers.findIndex(function (obs) {
117
+ return obs === observer;
118
+ });
119
+ if (index !== -1) {
120
+ segmentObservers.splice(index, 1);
121
+ }
122
+ }
77
123
  function remove(interactionId) {
78
124
  _constants.default.delete(interactionId);
79
125
  }
@@ -112,7 +158,7 @@ function addCustomTiming(interactionId, labelStack, data) {
112
158
  labelStack: labelStack,
113
159
  data: data
114
160
  });
115
- if ((0, _common.isPerformanceTracingEnabled)()) {
161
+ if (isPerformanceTracingEnabled()) {
116
162
  for (var _i = 0, _Object$entries = Object.entries(data); _i < _Object$entries.length; _i++) {
117
163
  var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
118
164
  key = _Object$entries$_i[0],
@@ -121,7 +167,7 @@ function addCustomTiming(interactionId, labelStack, data) {
121
167
  endTime = timingData.endTime;
122
168
  try {
123
169
  // for Firefox 102 and older
124
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, key), " [custom_timing]"), {
170
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, key), " [custom_timing]"), {
125
171
  start: startTime,
126
172
  end: endTime
127
173
  });
@@ -143,8 +189,8 @@ function addMark(interactionId, type, name, labelStack) {
143
189
  time: time
144
190
  });
145
191
  }
146
- if ((0, _common.isPerformanceTracingEnabled)()) {
147
- performance.mark("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [").concat(type, "]"), {
192
+ if (isPerformanceTracingEnabled()) {
193
+ performance.mark("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
148
194
  startTime: time
149
195
  });
150
196
  }
@@ -159,8 +205,8 @@ function addMarkToAll(type, name, labelStack) {
159
205
  time: time
160
206
  });
161
207
  });
162
- if ((0, _common.isPerformanceTracingEnabled)()) {
163
- performance.mark("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [").concat(type, "]"), {
208
+ if (isPerformanceTracingEnabled()) {
209
+ performance.mark("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
164
210
  startTime: time
165
211
  });
166
212
  }
@@ -178,10 +224,10 @@ function addSpan(interactionId, type, name, labelStack, start) {
178
224
  end: end,
179
225
  size: size
180
226
  });
181
- if ((0, _common.isPerformanceTracingEnabled)()) {
227
+ if (isPerformanceTracingEnabled()) {
182
228
  try {
183
229
  // for Firefox 102 and older
184
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [").concat(type, "]"), {
230
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
185
231
  start: start,
186
232
  end: end
187
233
  });
@@ -204,10 +250,10 @@ function addSpanToAll(type, name, labelStack, start) {
204
250
  size: size
205
251
  });
206
252
  });
207
- if ((0, _common.isPerformanceTracingEnabled)()) {
253
+ if (isPerformanceTracingEnabled()) {
208
254
  try {
209
255
  // for Firefox 102 and older
210
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [").concat(type, "]"), {
256
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
211
257
  start: start,
212
258
  end: end
213
259
  });
@@ -222,6 +268,7 @@ function addPreload(moduleId, timestamp) {
222
268
  function addLoad(identifier, start, end) {
223
269
  addSpanToAll('bundle_load', identifier, null, start, end - start);
224
270
  }
271
+ var moduleLoadingRequests = {};
225
272
  function extractModuleName(input) {
226
273
  var result = input !== null && input !== void 0 ? input : '';
227
274
  result = result.replace(/^\.\/src\/packages\//, '');
@@ -229,34 +276,37 @@ function extractModuleName(input) {
229
276
  result = result.replace(/(\/src)?\/(index|main)\.(tsx|ts|js|jsx)$/, '');
230
277
  return result;
231
278
  }
232
- function addHold(interactionId, labelStack, name, experimental) {
279
+ function addHoldCriterion(id, labelStack, name, startTime) {
280
+ var _window$__CRITERION__;
281
+ if (!((_window$__CRITERION__ = window.__CRITERION__) !== null && _window$__CRITERION__ !== void 0 && _window$__CRITERION__.addUFOHold)) {
282
+ return;
283
+ }
284
+ window.__CRITERION__.addUFOHold(id, labelStackToString(labelStack), name, startTime);
285
+ }
286
+ function removeHoldCriterion(id) {
287
+ var _window$__CRITERION__2;
288
+ if (!((_window$__CRITERION__2 = window.__CRITERION__) !== null && _window$__CRITERION__2 !== void 0 && _window$__CRITERION__2.removeUFOHold)) {
289
+ return;
290
+ }
291
+ window.__CRITERION__.removeUFOHold(id);
292
+ }
293
+ function addHold(interactionId, labelStack, name) {
233
294
  var interaction = _constants.default.get(interactionId);
234
295
  var id = (0, _uuid.v4)();
235
296
  if (interaction != null) {
236
- var _getConfig;
237
- var holdActive = {
297
+ var start = performance.now();
298
+ interaction.holdActive.set(id, {
238
299
  labelStack: labelStack,
239
300
  name: name,
240
- start: 0
241
- };
242
- var start = performance.now();
243
- if ((_getConfig = (0, _config.getConfig)()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled && experimental) {
244
- interaction.holdExpActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
245
- start: start
246
- }));
247
- }
248
- if (!experimental) {
249
- interaction.holdActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
250
- start: start
251
- }));
252
- }
253
- (0, _common.addHoldCriterion)(id, labelStack, name, start);
301
+ start: start
302
+ });
303
+ addHoldCriterion(id, labelStack, name, start);
254
304
  return function () {
255
305
  var end = performance.now();
256
- if ((0, _common.isPerformanceTracingEnabled)()) {
306
+ if (isPerformanceTracingEnabled()) {
257
307
  try {
258
308
  // for Firefox 102 and older
259
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [hold]"), {
309
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [hold]"), {
260
310
  start: start,
261
311
  end: end
262
312
  });
@@ -264,23 +314,14 @@ function addHold(interactionId, labelStack, name, experimental) {
264
314
  // do nothing
265
315
  }
266
316
  }
267
- (0, _common.removeHoldCriterion)(id);
317
+ removeHoldCriterion(id);
268
318
  var currentInteraction = _constants.default.get(interactionId);
269
319
  var currentHold = interaction.holdActive.get(id);
270
- var expHold = interaction.holdExpActive.get(id);
271
- if (currentInteraction != null) {
272
- if (currentHold != null) {
273
- currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
274
- end: end
275
- }));
276
- interaction.holdActive.delete(id);
277
- }
278
- if (expHold != null) {
279
- currentInteraction.holdExpInfo.push(_objectSpread(_objectSpread({}, expHold), {}, {
280
- end: end
281
- }));
282
- interaction.holdExpActive.delete(id);
283
- }
320
+ if (currentInteraction != null && currentHold != null) {
321
+ currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
322
+ end: end
323
+ }));
324
+ interaction.holdActive.delete(id);
284
325
  }
285
326
  };
286
327
  }
@@ -296,7 +337,7 @@ function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit) {
296
337
  start: start,
297
338
  ignoreOnSubmit: ignoreOnSubmit
298
339
  });
299
- (0, _common.addHoldCriterion)(id, labelStack, name, start);
340
+ addHoldCriterion(id, labelStack, name, start);
300
341
  }
301
342
  return function () {};
302
343
  }
@@ -311,7 +352,7 @@ function removeHoldByID(interactionId, id) {
311
352
  end: end
312
353
  }));
313
354
  interaction.holdActive.delete(id);
314
- (0, _common.removeHoldCriterion)(id);
355
+ removeHoldCriterion(id);
315
356
  }
316
357
  }
317
358
  }
@@ -328,19 +369,19 @@ var ModuleLoadingProfiler = exports.ModuleLoadingProfiler = {
328
369
  },
329
370
  onLoadStart: function onLoadStart(info) {
330
371
  var timeoutId = setTimeout(function () {
331
- delete _constants.moduleLoadingRequests[info.identifier];
372
+ delete moduleLoadingRequests[info.identifier];
332
373
  }, 30000);
333
374
  var request = {
334
375
  start: performance.now(),
335
376
  timeoutId: timeoutId
336
377
  };
337
- _constants.moduleLoadingRequests[info.identifier] = request;
378
+ moduleLoadingRequests[info.identifier] = request;
338
379
  },
339
380
  onLoadComplete: function onLoadComplete(info) {
340
- var request = _constants.moduleLoadingRequests[info.identifier];
381
+ var request = moduleLoadingRequests[info.identifier];
341
382
  if (request) {
342
383
  clearTimeout(request.timeoutId);
343
- delete _constants.moduleLoadingRequests[info.identifier];
384
+ delete moduleLoadingRequests[info.identifier];
344
385
  addLoad(extractModuleName(info.identifier), request.start, performance.now());
345
386
  }
346
387
  },
@@ -383,10 +424,10 @@ function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
383
424
  }
384
425
  var addProfilerTimings = exports.addProfilerTimings = function addProfilerTimings(interactionId, labelStack, type, actualDuration, baseDuration, startTime, commitTime) {
385
426
  var _getConfig2;
386
- if ((0, _common.isPerformanceTracingEnabled)()) {
427
+ if (isPerformanceTracingEnabled()) {
387
428
  try {
388
429
  // for Firefox 102 and older
389
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack), " [react-profiler] ").concat(type), {
430
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack), " [react-profiler] ").concat(type), {
390
431
  start: startTime,
391
432
  duration: actualDuration
392
433
  });
@@ -408,10 +449,22 @@ var addProfilerTimings = exports.addProfilerTimings = function addProfilerTiming
408
449
  postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
409
450
  }
410
451
  };
411
- var handleInteraction = _common.pushToQueue;
452
+ var pushToQueue = function pushToQueue(id, data) {
453
+ interactionQueue.push({
454
+ id: id,
455
+ data: data
456
+ });
457
+ };
458
+ var handleInteraction = pushToQueue;
459
+ function callCleanUpCallbacks(interaction) {
460
+ interaction.cleanupCallbacks.reverse().forEach(function (cleanUpCallback) {
461
+ cleanUpCallback();
462
+ });
463
+ }
412
464
  var finishInteraction = function finishInteraction(id, data) {
413
465
  var _getConfig3;
414
466
  var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
467
+ // eslint-disable-next-line no-param-reassign
415
468
  data.end = endTime;
416
469
  try {
417
470
  // for Firefox 102 and older
@@ -423,20 +476,58 @@ var finishInteraction = function finishInteraction(id, data) {
423
476
  // do nothing
424
477
  }
425
478
  if (data.featureFlags) {
479
+ // eslint-disable-next-line no-param-reassign
426
480
  data.featureFlags.during = Object.fromEntries(_featureFlagsAccessed.currentFeatureFlagsAccessed);
427
481
  }
428
482
  (0, _experienceTraceIdContext.clearActiveTrace)();
429
- (0, _common.callCleanUpCallbacks)(data);
483
+ callCleanUpCallbacks(data);
430
484
  if ((_getConfig3 = (0, _config.getConfig)()) !== null && _getConfig3 !== void 0 && (_getConfig3 = _getConfig3.vc) !== null && _getConfig3 !== void 0 && _getConfig3.stopVCAtInteractionFinish) {
431
- data.vc = (0, _vc.getVCObserver)().getVCRawData();
485
+ data.vc = (0, _vc.getVCObserver)().getVCRawData(data.end);
432
486
  }
487
+ remove(id);
433
488
  PreviousInteractionLog.name = data.ufoName || 'unknown';
434
489
  PreviousInteractionLog.isAborted = data.abortReason != null;
435
490
  if (data.ufoName) {
436
491
  handleInteraction(id, data);
437
492
  }
438
- if ((0, _common.isPerformanceTracingEnabled)()) {
439
- (0, _common.reactProfilerTimingMap)(data);
493
+ if (isPerformanceTracingEnabled()) {
494
+ var profilerTimingMap = new Map();
495
+ data.reactProfilerTimings.forEach(function (profilerTiming) {
496
+ var labelStackId = labelStackToIdString(profilerTiming.labelStack);
497
+ if (labelStackId) {
498
+ var _profilerTimingMap$ge, _timing$start, _timing$end;
499
+ var timing = (_profilerTimingMap$ge = profilerTimingMap.get(labelStackId)) !== null && _profilerTimingMap$ge !== void 0 ? _profilerTimingMap$ge : {
500
+ labelStack: profilerTiming.labelStack
501
+ };
502
+ timing.start = profilerTiming.startTime < ((_timing$start = timing.start) !== null && _timing$start !== void 0 ? _timing$start : Number.MAX_SAFE_INTEGER) ? profilerTiming.startTime : timing.start;
503
+ timing.end = profilerTiming.commitTime > ((_timing$end = timing.end) !== null && _timing$end !== void 0 ? _timing$end : Number.MIN_SAFE_INTEGER) ? profilerTiming.commitTime : timing.end;
504
+ profilerTimingMap.set(labelStackId, timing);
505
+ }
506
+ });
507
+ try {
508
+ // for Firefox 102 and older
509
+ var _iterator2 = _createForOfIteratorHelper(profilerTimingMap.entries()),
510
+ _step2;
511
+ try {
512
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
513
+ var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
514
+ _step2$value$ = _step2$value[1],
515
+ labelStack = _step2$value$.labelStack,
516
+ start = _step2$value$.start,
517
+ end = _step2$value$.end;
518
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack), " [segment_ttai]"), {
519
+ start: start,
520
+ end: end
521
+ });
522
+ }
523
+ } catch (err) {
524
+ _iterator2.e(err);
525
+ } finally {
526
+ _iterator2.f();
527
+ }
528
+ } catch (e) {
529
+ // do nothing
530
+ }
440
531
  }
441
532
  try {
442
533
  // dispatch a global window event to notify the measure is completed
@@ -448,100 +539,65 @@ var finishInteraction = function finishInteraction(id, data) {
448
539
  }
449
540
  };
450
541
  var sinkInteractionHandler = exports.sinkInteractionHandler = function sinkInteractionHandler(sinkFn) {
451
- if (handleInteraction === _common.pushToQueue) {
542
+ if (handleInteraction === pushToQueue) {
452
543
  handleInteraction = sinkFn;
453
- _constants.interactionQueue.forEach(function (interaction) {
544
+ interactionQueue.forEach(function (interaction) {
454
545
  sinkFn(interaction.id, interaction.data);
455
546
  });
456
- _constants.interactionQueue.length = 0;
547
+ interactionQueue.length = 0;
457
548
  }
458
549
  };
459
- var sinkExperimentalHandler = exports.sinkExperimentalHandler = function sinkExperimentalHandler(sinkFn) {
460
- experimentalInteractionLog.sinkHandler(sinkFn);
461
- };
462
550
  var sinkPostInteractionLogHandler = exports.sinkPostInteractionLogHandler = function sinkPostInteractionLogHandler(sinkFn) {
463
551
  postInteractionLog.sinkHandler(sinkFn);
464
552
  };
465
-
466
- // a flag to prevent mutliple submittions
467
- var activeSubmitted = false;
468
553
  function tryComplete(interactionId, endTime) {
469
554
  var interaction = _constants.default.get(interactionId);
470
555
  if (interaction != null) {
471
- var noMoreActiveHolds = interaction.holdActive.size === 0;
472
- var noMoreExpHolds = interaction.holdExpActive.size === 0;
473
- var postInteraction = function postInteraction() {
556
+ var noMoreHolds = interaction.holdActive.size === 0;
557
+ if (noMoreHolds) {
474
558
  var _getConfig4;
559
+ finishInteraction(interactionId, interaction, endTime);
475
560
  if ((_getConfig4 = (0, _config.getConfig)()) !== null && _getConfig4 !== void 0 && (_getConfig4 = _getConfig4.postInteractionLog) !== null && _getConfig4 !== void 0 && _getConfig4.enabled) {
476
- var _getExperimentalVCMet;
477
- var experimentalVC90 = (_getExperimentalVCMet = (0, _utils.getExperimentalVCMetrics)(interaction)) === null || _getExperimentalVCMet === void 0 ? void 0 : _getExperimentalVCMet['metric:experimental:vc90'];
478
- var experimentalTTAI = (0, _utils.getTTAI)(interaction);
479
- postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
480
- experimentalTTAI: experimentalTTAI,
481
- experimentalVC90: experimentalVC90
482
- }));
483
- }
484
- remove(interactionId);
485
- activeSubmitted = false;
486
- };
487
- if (noMoreActiveHolds) {
488
- if (!activeSubmitted) {
489
- finishInteraction(interactionId, interaction, endTime);
490
- activeSubmitted = true;
491
- }
492
- if (noMoreExpHolds) {
493
- var _getConfig5;
494
- if ((_getConfig5 = (0, _config.getConfig)()) !== null && _getConfig5 !== void 0 && (_getConfig5 = _getConfig5.experimentalInteractionMetrics) !== null && _getConfig5 !== void 0 && _getConfig5.enabled) {
495
- experimentalInteractionLog.onInteractionComplete(interactionId, interaction, endTime);
496
- }
497
- postInteraction();
561
+ postInteractionLog.onInteractionComplete(interaction);
498
562
  }
499
563
  }
500
564
  }
501
565
  }
566
+ function callCancelCallbacks(interaction) {
567
+ interaction.cancelCallbacks.reverse().forEach(function (cancelCallback) {
568
+ cancelCallback();
569
+ });
570
+ }
502
571
  function abort(interactionId, abortReason) {
503
572
  var interaction = _constants.default.get(interactionId);
504
573
  if (interaction != null) {
505
- var _getConfig6;
506
- (0, _common.callCancelCallbacks)(interaction);
574
+ callCancelCallbacks(interaction);
507
575
  interaction.abortReason = abortReason;
508
576
  finishInteraction(interactionId, interaction);
509
- if ((_getConfig6 = (0, _config.getConfig)()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.experimentalInteractionMetrics) !== null && _getConfig6 !== void 0 && _getConfig6.enabled) {
510
- experimentalInteractionLog.onInteractionComplete(interactionId, interaction);
511
- }
512
- remove(interactionId);
513
577
  }
514
578
  }
515
579
  function abortByNewInteraction(interactionId, interactionName) {
516
580
  var interaction = _constants.default.get(interactionId);
517
581
  if (interaction != null) {
518
- var _getConfig7;
519
- (0, _common.callCancelCallbacks)(interaction);
582
+ callCancelCallbacks(interaction);
520
583
  interaction.abortReason = 'new_interaction';
521
584
  interaction.abortedByInteractionName = interactionName;
522
585
  finishInteraction(interactionId, interaction);
523
- if ((_getConfig7 = (0, _config.getConfig)()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled) {
524
- experimentalInteractionLog.onInteractionComplete(interactionId, interaction);
525
- }
526
- remove(interactionId);
527
586
  }
528
587
  }
529
588
  function abortAll(abortReason, abortedByInteractionName) {
530
589
  _constants.default.forEach(function (interaction, interactionId) {
531
- var _getConfig8;
532
590
  var noMoreHolds = interaction.holdActive.size === 0;
533
591
  if (!noMoreHolds) {
534
- (0, _common.callCancelCallbacks)(interaction);
592
+ callCancelCallbacks(interaction);
593
+ // eslint-disable-next-line no-param-reassign
535
594
  interaction.abortReason = abortReason;
536
595
  if (abortedByInteractionName != null) {
596
+ // eslint-disable-next-line no-param-reassign
537
597
  interaction.abortedByInteractionName = abortedByInteractionName;
538
598
  }
539
599
  }
540
600
  finishInteraction(interactionId, interaction);
541
- if ((_getConfig8 = (0, _config.getConfig)()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
542
- experimentalInteractionLog.onInteractionComplete(interactionId, interaction);
543
- }
544
- remove(interactionId);
545
601
  });
546
602
  }
547
603
  function addOnCancelCallback(id, cancelCallback) {
@@ -549,16 +605,16 @@ function addOnCancelCallback(id, cancelCallback) {
549
605
  interaction === null || interaction === void 0 || interaction.cancelCallbacks.push(cancelCallback);
550
606
  }
551
607
  function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName) {
552
- var _getConfig9;
608
+ var _getConfig5;
553
609
  var trace = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
554
- if ((_getConfig9 = (0, _config.getConfig)()) !== null && _getConfig9 !== void 0 && (_getConfig9 = _getConfig9.postInteractionLog) !== null && _getConfig9 !== void 0 && _getConfig9.enabled) {
610
+ if ((_getConfig5 = (0, _config.getConfig)()) !== null && _getConfig5 !== void 0 && (_getConfig5 = _getConfig5.postInteractionLog) !== null && _getConfig5 !== void 0 && _getConfig5.enabled) {
555
611
  postInteractionLog.reset();
556
612
  }
557
613
  var previousTime = startTime;
558
- var timeoutTime = _constants.CLEANUP_TIMEOUT;
614
+ var timeoutTime = CLEANUP_TIMEOUT;
559
615
  var timerID = setTimeout(function () {
560
616
  abort(interactionId, 'timeout');
561
- }, _constants.CLEANUP_TIMEOUT);
617
+ }, CLEANUP_TIMEOUT);
562
618
  function changeTimeout(newTime) {
563
619
  // we compare if the time left is lower than the new time to no
564
620
  // extend the timeout beyond the initial waiting time
@@ -591,11 +647,9 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
591
647
  requestInfo: [],
592
648
  reactProfilerTimings: [],
593
649
  holdInfo: [],
594
- holdExpInfo: [],
595
650
  holdActive: new Map(),
596
- holdExpActive: new Map(),
597
651
  // measure when we execute this code
598
- // from this, we can measure the input delay -
652
+ // from this we can measure the input delay -
599
653
  // how long the browser took to hand execution back to JS)
600
654
  measureStart: performance.now(),
601
655
  rate: rate,
@@ -627,9 +681,9 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
627
681
  },
628
682
  onRemove: function onRemove() {}
629
683
  };
630
- (0, _common.addSegmentObserver)(segmentObserver);
684
+ addSegmentObserver(segmentObserver);
631
685
  metrics.cleanupCallbacks.push(function () {
632
- (0, _common.removeSegmentObserver)(segmentObserver);
686
+ removeSegmentObserver(segmentObserver);
633
687
  });
634
688
  metrics.cleanupCallbacks.push(function () {
635
689
  clearTimeout(metrics.timerID);
@@ -654,7 +708,7 @@ function addBrowserMetricEvent(event) {
654
708
  interaction.legacyMetrics = interaction.legacyMetrics || [];
655
709
  interaction.legacyMetrics.push(event);
656
710
  if ((interaction.type === 'page_load' || interaction.type === 'transition') && ((_event$config = event.config) === null || _event$config === void 0 ? void 0 : _event$config.type) === 'PAGE_LOAD') {
657
- interaction.changeTimeout(_constants.CLEANUP_TIMEOUT_AFTER_APDEX);
711
+ interaction.changeTimeout(CLEANUP_TIMEOUT_AFTER_APDEX);
658
712
  removeHoldByID(interaction.id, interaction.ufoName);
659
713
  }
660
714
  }
@@ -673,7 +727,7 @@ function addApdexToAll(apdex) {
673
727
  // do nothing
674
728
  }
675
729
  if (interaction.type === 'page_load' || interaction.type === 'transition') {
676
- interaction.changeTimeout(_constants.CLEANUP_TIMEOUT_AFTER_APDEX);
730
+ interaction.changeTimeout(CLEANUP_TIMEOUT_AFTER_APDEX);
677
731
  removeHoldByID(key, interaction.ufoName);
678
732
  }
679
733
  });
@@ -693,7 +747,7 @@ function addApdex(interactionId, apdexInfo) {
693
747
  // do nothing
694
748
  }
695
749
  if (interaction.type === 'page_load' || interaction.type === 'transition') {
696
- interaction.changeTimeout(_constants.CLEANUP_TIMEOUT_AFTER_APDEX);
750
+ interaction.changeTimeout(CLEANUP_TIMEOUT_AFTER_APDEX);
697
751
  removeHoldByID(interactionId, interaction.ufoName);
698
752
  }
699
753
  }
@@ -706,25 +760,36 @@ function addRequestInfo(interactionId, labelStack, requestInfo) {
706
760
  }, requestInfo));
707
761
  }
708
762
  }
763
+ function isSegmentLabel(obj) {
764
+ return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';
765
+ }
766
+ function getSegmentCacheKey(labelStack) {
767
+ return labelStack.map(function (l) {
768
+ if (isSegmentLabel(l)) {
769
+ return "".concat(l.name, "_").concat(l.segmentId);
770
+ }
771
+ return l.name;
772
+ }).join('|');
773
+ }
709
774
  function addSegment(labelStack) {
710
- var key = (0, _common.getSegmentCacheKey)(labelStack);
711
- var existingSegment = _constants.segmentCache.get(key);
775
+ var key = getSegmentCacheKey(labelStack);
776
+ var existingSegment = segmentCache.get(key);
712
777
  if (!existingSegment) {
713
778
  var segmentInfo = {
714
779
  labelStack: labelStack
715
780
  };
716
- _constants.segmentCache.set(key, segmentInfo);
717
- _constants.segmentObservers.forEach(function (observer) {
781
+ segmentCache.set(key, segmentInfo);
782
+ segmentObservers.forEach(function (observer) {
718
783
  observer.onAdd(segmentInfo);
719
784
  });
720
785
  }
721
786
  }
722
787
  function removeSegment(labelStack) {
723
- var key = (0, _common.getSegmentCacheKey)(labelStack);
724
- var segmentInfo = _constants.segmentCache.get(key);
788
+ var key = getSegmentCacheKey(labelStack);
789
+ var segmentInfo = segmentCache.get(key);
725
790
  if (segmentInfo) {
726
- _constants.segmentCache.delete(JSON.stringify(labelStack));
727
- _constants.segmentObservers.forEach(function (observer) {
791
+ segmentCache.delete(JSON.stringify(labelStack));
792
+ segmentObservers.forEach(function (observer) {
728
793
  observer.onRemove(segmentInfo);
729
794
  });
730
795
  }
@@ -738,7 +803,7 @@ function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteName, tim
738
803
  fromInteractionName: fromUfoName,
739
804
  time: time
740
805
  });
741
- if ((0, _common.isPerformanceTracingEnabled)()) {
806
+ if (isPerformanceTracingEnabled()) {
742
807
  var prevRedirect = interaction.redirects.at(-2);
743
808
  try {
744
809
  var _prevRedirect$time;