@atlaskit/react-ufo 2.6.0 → 2.8.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 (53) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/config/index.js +18 -40
  3. package/dist/cjs/create-payload/common/utils/index.js +2 -65
  4. package/dist/cjs/create-payload/index.js +78 -55
  5. package/dist/cjs/interaction-metrics/common/constants.js +3 -8
  6. package/dist/cjs/interaction-metrics/index.js +238 -166
  7. package/dist/cjs/interaction-metrics-init/index.js +9 -31
  8. package/dist/cjs/load-hold/UFOLoadHold.js +3 -5
  9. package/dist/cjs/segment/segment.js +8 -9
  10. package/dist/es2019/config/index.js +0 -22
  11. package/dist/es2019/create-payload/common/utils/index.js +1 -67
  12. package/dist/es2019/create-payload/index.js +77 -48
  13. package/dist/es2019/interaction-metrics/common/constants.js +2 -7
  14. package/dist/es2019/interaction-metrics/index.js +131 -91
  15. package/dist/es2019/interaction-metrics-init/index.js +8 -28
  16. package/dist/es2019/load-hold/UFOLoadHold.js +3 -5
  17. package/dist/es2019/segment/segment.js +11 -8
  18. package/dist/esm/config/index.js +18 -39
  19. package/dist/esm/create-payload/common/utils/index.js +1 -62
  20. package/dist/esm/create-payload/index.js +78 -53
  21. package/dist/esm/interaction-metrics/common/constants.js +2 -7
  22. package/dist/esm/interaction-metrics/index.js +158 -86
  23. package/dist/esm/interaction-metrics-init/index.js +8 -28
  24. package/dist/esm/load-hold/UFOLoadHold.js +3 -5
  25. package/dist/esm/segment/segment.js +8 -9
  26. package/dist/types/common/common/types.d.ts +4 -6
  27. package/dist/types/config/index.d.ts +1 -6
  28. package/dist/types/create-payload/common/utils/index.d.ts +0 -9
  29. package/dist/types/create-payload/index.d.ts +5660 -13
  30. package/dist/types/interaction-context/index.d.ts +0 -1
  31. package/dist/types/interaction-metrics/common/constants.d.ts +3 -32
  32. package/dist/types/interaction-metrics/index.d.ts +17 -1
  33. package/dist/types/load-hold/UFOLoadHold.d.ts +2 -1
  34. package/dist/types-ts4.5/common/common/types.d.ts +4 -6
  35. package/dist/types-ts4.5/config/index.d.ts +1 -6
  36. package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +0 -9
  37. package/dist/types-ts4.5/create-payload/index.d.ts +5660 -13
  38. package/dist/types-ts4.5/interaction-context/index.d.ts +0 -1
  39. package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +3 -32
  40. package/dist/types-ts4.5/interaction-metrics/index.d.ts +17 -1
  41. package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +2 -1
  42. package/package.json +2 -3
  43. package/create-experimental-interaction-metrics-payload/package.json +0 -15
  44. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +0 -100
  45. package/dist/cjs/interaction-metrics/common/index.js +0 -151
  46. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +0 -71
  47. package/dist/es2019/interaction-metrics/common/index.js +0 -103
  48. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +0 -90
  49. package/dist/esm/interaction-metrics/common/index.js +0 -132
  50. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +0 -16
  51. package/dist/types/interaction-metrics/common/index.d.ts +0 -16
  52. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +0 -16
  53. package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +0 -16
@@ -34,7 +34,7 @@ exports.addSpanToAll = addSpanToAll;
34
34
  exports.extractModuleName = extractModuleName;
35
35
  exports.getActiveInteraction = getActiveInteraction;
36
36
  exports.getCurrentInteractionType = getCurrentInteractionType;
37
- exports.interactionSpans = void 0;
37
+ exports.postInteractionLog = exports.interactionSpans = void 0;
38
38
  exports.remove = remove;
39
39
  exports.removeHoldByID = removeHoldByID;
40
40
  exports.removeSegment = removeSegment;
@@ -43,32 +43,85 @@ exports.tryComplete = tryComplete;
43
43
  exports.updatePageLoadInteractionName = updatePageLoadInteractionName;
44
44
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
45
45
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
46
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
46
47
  var _uuid = require("uuid");
47
48
  var _coinflip = _interopRequireDefault(require("../coinflip"));
48
49
  var _config = require("../config");
49
- var _createExperimentalInteractionMetricsPayload = require("../create-experimental-interaction-metrics-payload");
50
- var _utils = require("../create-payload/common/utils");
51
50
  var _experienceTraceIdContext = require("../experience-trace-id-context");
52
51
  var _featureFlagsAccessed = require("../feature-flags-accessed");
53
52
  var _interactionIdContext = require("../interaction-id-context");
54
53
  var _vc = require("../vc");
55
- var _common = require("./common");
56
- var _constants = require("./common/constants");
54
+ var _constants = _interopRequireDefault(require("./common/constants"));
55
+ var _postInteractionLog = _interopRequireDefault(require("./post-interaction-log"));
57
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; }
58
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; }
59
61
  var PreviousInteractionLog = {
60
62
  name: undefined,
61
63
  isAborted: undefined
62
64
  };
65
+ var postInteractionLog = exports.postInteractionLog = new _postInteractionLog.default();
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 = [];
63
71
  function getActiveInteraction() {
64
72
  var interactionId = (0, _interactionIdContext.getInteractionId)();
65
73
  if (!interactionId.current) {
66
74
  return;
67
75
  }
68
- return _constants.interactions.get(interactionId.current);
76
+ return _constants.default.get(interactionId.current);
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
+ }
69
122
  }
70
123
  function remove(interactionId) {
71
- _constants.interactions.delete(interactionId);
124
+ _constants.default.delete(interactionId);
72
125
  }
73
126
  function updatePageLoadInteractionName(ufoName) {
74
127
  var routeName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ufoName;
@@ -80,7 +133,7 @@ function updatePageLoadInteractionName(ufoName) {
80
133
  interaction.routeName = routeName;
81
134
  }
82
135
  function addMetadata(interactionId, data) {
83
- var interaction = _constants.interactions.get(interactionId);
136
+ var interaction = _constants.default.get(interactionId);
84
137
  if (interaction != null) {
85
138
  Object.keys(data).forEach(function (key) {
86
139
  interaction.metaData[key] = data[key];
@@ -88,7 +141,7 @@ function addMetadata(interactionId, data) {
88
141
  }
89
142
  }
90
143
  function addCustomData(interactionId, labelStack, data) {
91
- var interaction = _constants.interactions.get(interactionId);
144
+ var interaction = _constants.default.get(interactionId);
92
145
  if (interaction != null) {
93
146
  Object.keys(data).forEach(function (i) {
94
147
  interaction.customData.push({
@@ -99,13 +152,13 @@ function addCustomData(interactionId, labelStack, data) {
99
152
  }
100
153
  }
101
154
  function addCustomTiming(interactionId, labelStack, data) {
102
- var interaction = _constants.interactions.get(interactionId);
155
+ var interaction = _constants.default.get(interactionId);
103
156
  if (interaction != null) {
104
157
  interaction.customTimings.push({
105
158
  labelStack: labelStack,
106
159
  data: data
107
160
  });
108
- if ((0, _common.isPerformanceTracingEnabled)()) {
161
+ if (isPerformanceTracingEnabled()) {
109
162
  for (var _i = 0, _Object$entries = Object.entries(data); _i < _Object$entries.length; _i++) {
110
163
  var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
111
164
  key = _Object$entries$_i[0],
@@ -114,7 +167,7 @@ function addCustomTiming(interactionId, labelStack, data) {
114
167
  endTime = timingData.endTime;
115
168
  try {
116
169
  // for Firefox 102 and older
117
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, key), " [custom_timing]"), {
170
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, key), " [custom_timing]"), {
118
171
  start: startTime,
119
172
  end: endTime
120
173
  });
@@ -127,7 +180,7 @@ function addCustomTiming(interactionId, labelStack, data) {
127
180
  }
128
181
  function addMark(interactionId, type, name, labelStack) {
129
182
  var time = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : performance.now();
130
- var interaction = _constants.interactions.get(interactionId);
183
+ var interaction = _constants.default.get(interactionId);
131
184
  if (interaction != null) {
132
185
  interaction.marks.push({
133
186
  type: type,
@@ -136,15 +189,15 @@ function addMark(interactionId, type, name, labelStack) {
136
189
  time: time
137
190
  });
138
191
  }
139
- if ((0, _common.isPerformanceTracingEnabled)()) {
140
- 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, "]"), {
141
194
  startTime: time
142
195
  });
143
196
  }
144
197
  }
145
198
  function addMarkToAll(type, name, labelStack) {
146
199
  var time = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : performance.now();
147
- _constants.interactions.forEach(function (interaction) {
200
+ _constants.default.forEach(function (interaction) {
148
201
  interaction.marks.push({
149
202
  type: type,
150
203
  name: name,
@@ -152,8 +205,8 @@ function addMarkToAll(type, name, labelStack) {
152
205
  time: time
153
206
  });
154
207
  });
155
- if ((0, _common.isPerformanceTracingEnabled)()) {
156
- 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, "]"), {
157
210
  startTime: time
158
211
  });
159
212
  }
@@ -161,7 +214,7 @@ function addMarkToAll(type, name, labelStack) {
161
214
  function addSpan(interactionId, type, name, labelStack, start) {
162
215
  var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : performance.now();
163
216
  var size = arguments.length > 6 ? arguments[6] : undefined;
164
- var interaction = _constants.interactions.get(interactionId);
217
+ var interaction = _constants.default.get(interactionId);
165
218
  if (interaction != null) {
166
219
  interaction.spans.push({
167
220
  type: type,
@@ -171,10 +224,10 @@ function addSpan(interactionId, type, name, labelStack, start) {
171
224
  end: end,
172
225
  size: size
173
226
  });
174
- if ((0, _common.isPerformanceTracingEnabled)()) {
227
+ if (isPerformanceTracingEnabled()) {
175
228
  try {
176
229
  // for Firefox 102 and older
177
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [").concat(type, "]"), {
230
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
178
231
  start: start,
179
232
  end: end
180
233
  });
@@ -187,7 +240,7 @@ function addSpan(interactionId, type, name, labelStack, start) {
187
240
  function addSpanToAll(type, name, labelStack, start) {
188
241
  var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : performance.now();
189
242
  var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
190
- _constants.interactions.forEach(function (interaction) {
243
+ _constants.default.forEach(function (interaction) {
191
244
  interaction.spans.push({
192
245
  type: type,
193
246
  name: name,
@@ -197,10 +250,10 @@ function addSpanToAll(type, name, labelStack, start) {
197
250
  size: size
198
251
  });
199
252
  });
200
- if ((0, _common.isPerformanceTracingEnabled)()) {
253
+ if (isPerformanceTracingEnabled()) {
201
254
  try {
202
255
  // for Firefox 102 and older
203
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [").concat(type, "]"), {
256
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
204
257
  start: start,
205
258
  end: end
206
259
  });
@@ -215,6 +268,7 @@ function addPreload(moduleId, timestamp) {
215
268
  function addLoad(identifier, start, end) {
216
269
  addSpanToAll('bundle_load', identifier, null, start, end - start);
217
270
  }
271
+ var moduleLoadingRequests = {};
218
272
  function extractModuleName(input) {
219
273
  var result = input !== null && input !== void 0 ? input : '';
220
274
  result = result.replace(/^\.\/src\/packages\//, '');
@@ -222,34 +276,37 @@ function extractModuleName(input) {
222
276
  result = result.replace(/(\/src)?\/(index|main)\.(tsx|ts|js|jsx)$/, '');
223
277
  return result;
224
278
  }
225
- function addHold(interactionId, labelStack, name, experimental) {
226
- var interaction = _constants.interactions.get(interactionId);
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) {
294
+ var interaction = _constants.default.get(interactionId);
227
295
  var id = (0, _uuid.v4)();
228
296
  if (interaction != null) {
229
- var _getConfig;
230
- var holdActive = {
297
+ var start = performance.now();
298
+ interaction.holdActive.set(id, {
231
299
  labelStack: labelStack,
232
300
  name: name,
233
- start: 0
234
- };
235
- var start = performance.now();
236
- if ((_getConfig = (0, _config.getConfig)()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled && experimental) {
237
- interaction.holdExpActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
238
- start: start
239
- }));
240
- }
241
- if (!experimental) {
242
- interaction.holdActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
243
- start: start
244
- }));
245
- }
246
- (0, _common.addHoldCriterion)(id, labelStack, name, start);
301
+ start: start
302
+ });
303
+ addHoldCriterion(id, labelStack, name, start);
247
304
  return function () {
248
305
  var end = performance.now();
249
- if ((0, _common.isPerformanceTracingEnabled)()) {
306
+ if (isPerformanceTracingEnabled()) {
250
307
  try {
251
308
  // for Firefox 102 and older
252
- performance.measure("\uD83D\uDEF8 ".concat((0, _common.labelStackToString)(labelStack, name), " [hold]"), {
309
+ performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [hold]"), {
253
310
  start: start,
254
311
  end: end
255
312
  });
@@ -257,30 +314,21 @@ function addHold(interactionId, labelStack, name, experimental) {
257
314
  // do nothing
258
315
  }
259
316
  }
260
- (0, _common.removeHoldCriterion)(id);
261
- var currentInteraction = _constants.interactions.get(interactionId);
317
+ removeHoldCriterion(id);
318
+ var currentInteraction = _constants.default.get(interactionId);
262
319
  var currentHold = interaction.holdActive.get(id);
263
- var expHold = interaction.holdExpActive.get(id);
264
- if (currentInteraction != null) {
265
- if (currentHold != null) {
266
- currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
267
- end: end
268
- }));
269
- interaction.holdActive.delete(id);
270
- }
271
- if (expHold != null) {
272
- currentInteraction.holdExpInfo.push(_objectSpread(_objectSpread({}, expHold), {}, {
273
- end: end
274
- }));
275
- interaction.holdExpActive.delete(id);
276
- }
320
+ if (currentInteraction != null && currentHold != null) {
321
+ currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
322
+ end: end
323
+ }));
324
+ interaction.holdActive.delete(id);
277
325
  }
278
326
  };
279
327
  }
280
328
  return function () {};
281
329
  }
282
330
  function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit) {
283
- var interaction = _constants.interactions.get(interactionId);
331
+ var interaction = _constants.default.get(interactionId);
284
332
  if (interaction != null) {
285
333
  var start = performance.now();
286
334
  interaction.holdActive.set(id, {
@@ -289,27 +337,27 @@ function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit) {
289
337
  start: start,
290
338
  ignoreOnSubmit: ignoreOnSubmit
291
339
  });
292
- (0, _common.addHoldCriterion)(id, labelStack, name, start);
340
+ addHoldCriterion(id, labelStack, name, start);
293
341
  }
294
342
  return function () {};
295
343
  }
296
344
  function removeHoldByID(interactionId, id) {
297
- var interaction = _constants.interactions.get(interactionId);
345
+ var interaction = _constants.default.get(interactionId);
298
346
  if (interaction != null) {
299
347
  var end = performance.now();
300
- var currentInteraction = _constants.interactions.get(interactionId);
348
+ var currentInteraction = _constants.default.get(interactionId);
301
349
  var currentHold = interaction.holdActive.get(id);
302
350
  if (currentInteraction != null && currentHold != null) {
303
351
  currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
304
352
  end: end
305
353
  }));
306
354
  interaction.holdActive.delete(id);
307
- (0, _common.removeHoldCriterion)(id);
355
+ removeHoldCriterion(id);
308
356
  }
309
357
  }
310
358
  }
311
359
  function getCurrentInteractionType(interactionId) {
312
- var interaction = _constants.interactions.get(interactionId);
360
+ var interaction = _constants.default.get(interactionId);
313
361
  if (interaction) {
314
362
  return interaction.type;
315
363
  }
@@ -321,19 +369,19 @@ var ModuleLoadingProfiler = exports.ModuleLoadingProfiler = {
321
369
  },
322
370
  onLoadStart: function onLoadStart(info) {
323
371
  var timeoutId = setTimeout(function () {
324
- delete _constants.moduleLoadingRequests[info.identifier];
372
+ delete moduleLoadingRequests[info.identifier];
325
373
  }, 30000);
326
374
  var request = {
327
375
  start: performance.now(),
328
376
  timeoutId: timeoutId
329
377
  };
330
- _constants.moduleLoadingRequests[info.identifier] = request;
378
+ moduleLoadingRequests[info.identifier] = request;
331
379
  },
332
380
  onLoadComplete: function onLoadComplete(info) {
333
- var request = _constants.moduleLoadingRequests[info.identifier];
381
+ var request = moduleLoadingRequests[info.identifier];
334
382
  if (request) {
335
383
  clearTimeout(request.timeoutId);
336
- delete _constants.moduleLoadingRequests[info.identifier];
384
+ delete moduleLoadingRequests[info.identifier];
337
385
  addLoad(extractModuleName(info.identifier), request.start, performance.now());
338
386
  }
339
387
  },
@@ -351,7 +399,7 @@ var ModuleLoadingProfiler = exports.ModuleLoadingProfiler = {
351
399
  }
352
400
  };
353
401
  function addError(interactionId, name, labelStack, errorType, errorMessage, errorStack, forcedError) {
354
- var interaction = _constants.interactions.get(interactionId);
402
+ var interaction = _constants.default.get(interactionId);
355
403
  if (interaction != null) {
356
404
  interaction.errors.push({
357
405
  name: name,
@@ -364,7 +412,7 @@ function addError(interactionId, name, labelStack, errorType, errorMessage, erro
364
412
  }
365
413
  }
366
414
  function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
367
- _constants.interactions.forEach(function (interaction) {
415
+ _constants.default.forEach(function (interaction) {
368
416
  interaction.errors.push({
369
417
  name: name,
370
418
  labelStack: labelStack,
@@ -376,10 +424,10 @@ function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
376
424
  }
377
425
  var addProfilerTimings = exports.addProfilerTimings = function addProfilerTimings(interactionId, labelStack, type, actualDuration, baseDuration, startTime, commitTime) {
378
426
  var _getConfig2;
379
- if ((0, _common.isPerformanceTracingEnabled)()) {
427
+ if (isPerformanceTracingEnabled()) {
380
428
  try {
381
429
  // for Firefox 102 and older
382
- 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), {
383
431
  start: startTime,
384
432
  duration: actualDuration
385
433
  });
@@ -387,7 +435,7 @@ var addProfilerTimings = exports.addProfilerTimings = function addProfilerTiming
387
435
  // do nothing
388
436
  }
389
437
  }
390
- var interaction = _constants.interactions.get(interactionId);
438
+ var interaction = _constants.default.get(interactionId);
391
439
  if (interaction != null) {
392
440
  interaction.reactProfilerTimings.push({
393
441
  labelStack: labelStack,
@@ -398,13 +446,25 @@ var addProfilerTimings = exports.addProfilerTimings = function addProfilerTiming
398
446
  commitTime: commitTime
399
447
  });
400
448
  } else if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.postInteractionLog) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
401
- _utils.postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
449
+ postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
402
450
  }
403
451
  };
404
- 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
+ }
405
464
  var finishInteraction = function finishInteraction(id, data) {
406
465
  var _getConfig3;
407
466
  var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
467
+ // eslint-disable-next-line no-param-reassign
408
468
  data.end = endTime;
409
469
  try {
410
470
  // for Firefox 102 and older
@@ -416,20 +476,58 @@ var finishInteraction = function finishInteraction(id, data) {
416
476
  // do nothing
417
477
  }
418
478
  if (data.featureFlags) {
479
+ // eslint-disable-next-line no-param-reassign
419
480
  data.featureFlags.during = Object.fromEntries(_featureFlagsAccessed.currentFeatureFlagsAccessed);
420
481
  }
421
482
  (0, _experienceTraceIdContext.clearActiveTrace)();
422
- (0, _common.callCleanUpCallbacks)(data);
483
+ callCleanUpCallbacks(data);
423
484
  if ((_getConfig3 = (0, _config.getConfig)()) !== null && _getConfig3 !== void 0 && (_getConfig3 = _getConfig3.vc) !== null && _getConfig3 !== void 0 && _getConfig3.stopVCAtInteractionFinish) {
424
485
  data.vc = (0, _vc.getVCObserver)().getVCRawData();
425
486
  }
487
+ remove(id);
426
488
  PreviousInteractionLog.name = data.ufoName || 'unknown';
427
489
  PreviousInteractionLog.isAborted = data.abortReason != null;
428
490
  if (data.ufoName) {
429
491
  handleInteraction(id, data);
430
492
  }
431
- if ((0, _common.isPerformanceTracingEnabled)()) {
432
- (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
+ }
433
531
  }
434
532
  try {
435
533
  // dispatch a global window event to notify the measure is completed
@@ -441,113 +539,82 @@ var finishInteraction = function finishInteraction(id, data) {
441
539
  }
442
540
  };
443
541
  var sinkInteractionHandler = exports.sinkInteractionHandler = function sinkInteractionHandler(sinkFn) {
444
- if (handleInteraction === _common.pushToQueue) {
542
+ if (handleInteraction === pushToQueue) {
445
543
  handleInteraction = sinkFn;
446
- _constants.interactionQueue.forEach(function (interaction) {
544
+ interactionQueue.forEach(function (interaction) {
447
545
  sinkFn(interaction.id, interaction.data);
448
546
  });
449
- _constants.interactionQueue.length = 0;
547
+ interactionQueue.length = 0;
450
548
  }
451
549
  };
452
550
  var sinkPostInteractionLogHandler = exports.sinkPostInteractionLogHandler = function sinkPostInteractionLogHandler(sinkFn) {
453
- _utils.postInteractionLog.sinkHandler(sinkFn);
551
+ postInteractionLog.sinkHandler(sinkFn);
454
552
  };
455
-
456
- // a flag to prevent multiple submitting
457
- var activeSubmitted = false;
458
553
  function tryComplete(interactionId, endTime) {
459
- var interaction = _constants.interactions.get(interactionId);
554
+ var interaction = _constants.default.get(interactionId);
460
555
  if (interaction != null) {
461
- var noMoreActiveHolds = interaction.holdActive.size === 0;
462
- var noMoreExpHolds = interaction.holdExpActive.size === 0;
463
- var postInteraction = function postInteraction() {
556
+ var noMoreHolds = interaction.holdActive.size === 0;
557
+ if (noMoreHolds) {
464
558
  var _getConfig4;
559
+ finishInteraction(interactionId, interaction, endTime);
465
560
  if ((_getConfig4 = (0, _config.getConfig)()) !== null && _getConfig4 !== void 0 && (_getConfig4 = _getConfig4.postInteractionLog) !== null && _getConfig4 !== void 0 && _getConfig4.enabled) {
466
- var _getExperimentalVCMet;
467
- var experimentalVC90 = (_getExperimentalVCMet = (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction)) === null || _getExperimentalVCMet === void 0 ? void 0 : _getExperimentalVCMet['metric:experimental:vc90'];
468
- var experimentalTTAI = (0, _utils.getTTAI)(interaction);
469
- _utils.postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
470
- experimentalTTAI: experimentalTTAI,
471
- experimentalVC90: experimentalVC90
472
- }));
473
- }
474
- remove(interactionId);
475
- };
476
- if (noMoreActiveHolds) {
477
- if (!activeSubmitted) {
478
- finishInteraction(interactionId, interaction, endTime);
479
- activeSubmitted = true;
480
- }
481
- if (noMoreExpHolds) {
482
- var _getConfig5;
483
- if ((_getConfig5 = (0, _config.getConfig)()) !== null && _getConfig5 !== void 0 && (_getConfig5 = _getConfig5.experimentalInteractionMetrics) !== null && _getConfig5 !== void 0 && _getConfig5.enabled) {
484
- (0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction, endTime);
485
- }
486
- postInteraction();
561
+ postInteractionLog.onInteractionComplete(interaction);
487
562
  }
488
563
  }
489
564
  }
490
565
  }
566
+ function callCancelCallbacks(interaction) {
567
+ interaction.cancelCallbacks.reverse().forEach(function (cancelCallback) {
568
+ cancelCallback();
569
+ });
570
+ }
491
571
  function abort(interactionId, abortReason) {
492
- var interaction = _constants.interactions.get(interactionId);
572
+ var interaction = _constants.default.get(interactionId);
493
573
  if (interaction != null) {
494
- var _getConfig6;
495
- (0, _common.callCancelCallbacks)(interaction);
574
+ callCancelCallbacks(interaction);
496
575
  interaction.abortReason = abortReason;
497
576
  finishInteraction(interactionId, interaction);
498
- if ((_getConfig6 = (0, _config.getConfig)()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.experimentalInteractionMetrics) !== null && _getConfig6 !== void 0 && _getConfig6.enabled) {
499
- (0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction);
500
- }
501
- remove(interactionId);
502
577
  }
503
578
  }
504
579
  function abortByNewInteraction(interactionId, interactionName) {
505
- var interaction = _constants.interactions.get(interactionId);
580
+ var interaction = _constants.default.get(interactionId);
506
581
  if (interaction != null) {
507
- var _getConfig7;
508
- (0, _common.callCancelCallbacks)(interaction);
582
+ callCancelCallbacks(interaction);
509
583
  interaction.abortReason = 'new_interaction';
510
584
  interaction.abortedByInteractionName = interactionName;
511
585
  finishInteraction(interactionId, interaction);
512
- if ((_getConfig7 = (0, _config.getConfig)()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled) {
513
- (0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction);
514
- }
515
- remove(interactionId);
516
586
  }
517
587
  }
518
588
  function abortAll(abortReason, abortedByInteractionName) {
519
- _constants.interactions.forEach(function (interaction, interactionId) {
520
- var _getConfig8;
589
+ _constants.default.forEach(function (interaction, interactionId) {
521
590
  var noMoreHolds = interaction.holdActive.size === 0;
522
591
  if (!noMoreHolds) {
523
- (0, _common.callCancelCallbacks)(interaction);
592
+ callCancelCallbacks(interaction);
593
+ // eslint-disable-next-line no-param-reassign
524
594
  interaction.abortReason = abortReason;
525
595
  if (abortedByInteractionName != null) {
596
+ // eslint-disable-next-line no-param-reassign
526
597
  interaction.abortedByInteractionName = abortedByInteractionName;
527
598
  }
528
599
  }
529
600
  finishInteraction(interactionId, interaction);
530
- if ((_getConfig8 = (0, _config.getConfig)()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
531
- (0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction);
532
- }
533
- remove(interactionId);
534
601
  });
535
602
  }
536
603
  function addOnCancelCallback(id, cancelCallback) {
537
- var interaction = _constants.interactions.get(id);
604
+ var interaction = _constants.default.get(id);
538
605
  interaction === null || interaction === void 0 || interaction.cancelCallbacks.push(cancelCallback);
539
606
  }
540
607
  function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName) {
541
- var _getConfig9;
608
+ var _getConfig5;
542
609
  var trace = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
543
- if ((_getConfig9 = (0, _config.getConfig)()) !== null && _getConfig9 !== void 0 && (_getConfig9 = _getConfig9.postInteractionLog) !== null && _getConfig9 !== void 0 && _getConfig9.enabled) {
544
- _utils.postInteractionLog.reset();
610
+ if ((_getConfig5 = (0, _config.getConfig)()) !== null && _getConfig5 !== void 0 && (_getConfig5 = _getConfig5.postInteractionLog) !== null && _getConfig5 !== void 0 && _getConfig5.enabled) {
611
+ postInteractionLog.reset();
545
612
  }
546
613
  var previousTime = startTime;
547
- var timeoutTime = _constants.CLEANUP_TIMEOUT;
614
+ var timeoutTime = CLEANUP_TIMEOUT;
548
615
  var timerID = setTimeout(function () {
549
616
  abort(interactionId, 'timeout');
550
- }, _constants.CLEANUP_TIMEOUT);
617
+ }, CLEANUP_TIMEOUT);
551
618
  function changeTimeout(newTime) {
552
619
  // we compare if the time left is lower than the new time to no
553
620
  // extend the timeout beyond the initial waiting time
@@ -580,11 +647,9 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
580
647
  requestInfo: [],
581
648
  reactProfilerTimings: [],
582
649
  holdInfo: [],
583
- holdExpInfo: [],
584
650
  holdActive: new Map(),
585
- holdExpActive: new Map(),
586
651
  // measure when we execute this code
587
- // from this, we can measure the input delay -
652
+ // from this we can measure the input delay -
588
653
  // how long the browser took to hand execution back to JS)
589
654
  measureStart: performance.now(),
590
655
  rate: rate,
@@ -609,16 +674,16 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
609
674
  if (addFeatureFlagsToInteraction) {
610
675
  _featureFlagsAccessed.currentFeatureFlagsAccessed.clear();
611
676
  }
612
- _constants.interactions.set(interactionId, metrics);
677
+ _constants.default.set(interactionId, metrics);
613
678
  var segmentObserver = {
614
679
  onAdd: function onAdd(segment) {
615
680
  metrics.knownSegments.push(segment);
616
681
  },
617
682
  onRemove: function onRemove() {}
618
683
  };
619
- (0, _common.addSegmentObserver)(segmentObserver);
684
+ addSegmentObserver(segmentObserver);
620
685
  metrics.cleanupCallbacks.push(function () {
621
- (0, _common.removeSegmentObserver)(segmentObserver);
686
+ removeSegmentObserver(segmentObserver);
622
687
  });
623
688
  metrics.cleanupCallbacks.push(function () {
624
689
  clearTimeout(metrics.timerID);
@@ -631,13 +696,9 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
631
696
  (0, _vc.getVCObserver)().start({
632
697
  startTime: startTime
633
698
  });
634
- _utils.postInteractionLog.startVCObserver({
635
- startTime: startTime
636
- });
637
- _createExperimentalInteractionMetricsPayload.experimentalVC.start({
699
+ postInteractionLog.startVCObserver({
638
700
  startTime: startTime
639
701
  });
640
- activeSubmitted = false;
641
702
  }
642
703
  }
643
704
  function addBrowserMetricEvent(event) {
@@ -647,13 +708,13 @@ function addBrowserMetricEvent(event) {
647
708
  interaction.legacyMetrics = interaction.legacyMetrics || [];
648
709
  interaction.legacyMetrics.push(event);
649
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') {
650
- interaction.changeTimeout(_constants.CLEANUP_TIMEOUT_AFTER_APDEX);
711
+ interaction.changeTimeout(CLEANUP_TIMEOUT_AFTER_APDEX);
651
712
  removeHoldByID(interaction.id, interaction.ufoName);
652
713
  }
653
714
  }
654
715
  }
655
716
  function addApdexToAll(apdex) {
656
- _constants.interactions.forEach(function (interaction, key) {
717
+ _constants.default.forEach(function (interaction, key) {
657
718
  interaction.apdex.push(apdex);
658
719
  try {
659
720
  var _apdex$startTime;
@@ -666,13 +727,13 @@ function addApdexToAll(apdex) {
666
727
  // do nothing
667
728
  }
668
729
  if (interaction.type === 'page_load' || interaction.type === 'transition') {
669
- interaction.changeTimeout(_constants.CLEANUP_TIMEOUT_AFTER_APDEX);
730
+ interaction.changeTimeout(CLEANUP_TIMEOUT_AFTER_APDEX);
670
731
  removeHoldByID(key, interaction.ufoName);
671
732
  }
672
733
  });
673
734
  }
674
735
  function addApdex(interactionId, apdexInfo) {
675
- var interaction = _constants.interactions.get(interactionId);
736
+ var interaction = _constants.default.get(interactionId);
676
737
  if (interaction != null) {
677
738
  interaction.apdex.push(apdexInfo);
678
739
  try {
@@ -686,44 +747,55 @@ function addApdex(interactionId, apdexInfo) {
686
747
  // do nothing
687
748
  }
688
749
  if (interaction.type === 'page_load' || interaction.type === 'transition') {
689
- interaction.changeTimeout(_constants.CLEANUP_TIMEOUT_AFTER_APDEX);
750
+ interaction.changeTimeout(CLEANUP_TIMEOUT_AFTER_APDEX);
690
751
  removeHoldByID(interactionId, interaction.ufoName);
691
752
  }
692
753
  }
693
754
  }
694
755
  function addRequestInfo(interactionId, labelStack, requestInfo) {
695
- var interaction = _constants.interactions.get(interactionId);
756
+ var interaction = _constants.default.get(interactionId);
696
757
  if (interaction != null) {
697
758
  interaction.requestInfo.push(_objectSpread({
698
759
  labelStack: labelStack
699
760
  }, requestInfo));
700
761
  }
701
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
+ }
702
774
  function addSegment(labelStack) {
703
- var key = (0, _common.getSegmentCacheKey)(labelStack);
704
- var existingSegment = _constants.segmentCache.get(key);
775
+ var key = getSegmentCacheKey(labelStack);
776
+ var existingSegment = segmentCache.get(key);
705
777
  if (!existingSegment) {
706
778
  var segmentInfo = {
707
779
  labelStack: labelStack
708
780
  };
709
- _constants.segmentCache.set(key, segmentInfo);
710
- _constants.segmentObservers.forEach(function (observer) {
781
+ segmentCache.set(key, segmentInfo);
782
+ segmentObservers.forEach(function (observer) {
711
783
  observer.onAdd(segmentInfo);
712
784
  });
713
785
  }
714
786
  }
715
787
  function removeSegment(labelStack) {
716
- var key = (0, _common.getSegmentCacheKey)(labelStack);
717
- var segmentInfo = _constants.segmentCache.get(key);
788
+ var key = getSegmentCacheKey(labelStack);
789
+ var segmentInfo = segmentCache.get(key);
718
790
  if (segmentInfo) {
719
- _constants.segmentCache.delete(JSON.stringify(labelStack));
720
- _constants.segmentObservers.forEach(function (observer) {
791
+ segmentCache.delete(JSON.stringify(labelStack));
792
+ segmentObservers.forEach(function (observer) {
721
793
  observer.onRemove(segmentInfo);
722
794
  });
723
795
  }
724
796
  }
725
797
  function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteName, time) {
726
- var interaction = _constants.interactions.get(interactionId);
798
+ var interaction = _constants.default.get(interactionId);
727
799
  if (interaction != null) {
728
800
  interaction.ufoName = nextUfoName;
729
801
  interaction.routeName = nextRouteName;
@@ -731,7 +803,7 @@ function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteName, tim
731
803
  fromInteractionName: fromUfoName,
732
804
  time: time
733
805
  });
734
- if ((0, _common.isPerformanceTracingEnabled)()) {
806
+ if (isPerformanceTracingEnabled()) {
735
807
  var prevRedirect = interaction.redirects.at(-2);
736
808
  try {
737
809
  var _prevRedirect$time;