@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
@@ -27,7 +27,6 @@ export interface UFOInteractionContextType extends InteractionContextType {
27
27
  startTime?: number;
28
28
  stopTime: number;
29
29
  }): void;
30
- holdExperimental?(name: string): void | (() => void);
31
30
  }
32
31
  declare const _default: Context<UFOInteractionContextType | null>;
33
32
  export default _default;
@@ -1,32 +1,3 @@
1
- import type { InteractionMetrics, SegmentInfo } from '../../common';
2
- import type { FeatureFlagValue } from '../../feature-flags-accessed';
3
- export declare const interactions: Map<string, InteractionMetrics>;
4
- export declare const CLEANUP_TIMEOUT: number;
5
- export declare const CLEANUP_TIMEOUT_AFTER_APDEX: number;
6
- export type SegmentObserver = {
7
- onAdd: (segment: SegmentInfo) => void;
8
- onRemove: (segment: SegmentInfo) => void;
9
- };
10
- export declare const interactionQueue: {
11
- id: string;
12
- data: InteractionMetrics;
13
- }[];
14
- export declare const segmentCache: Map<string, SegmentInfo>;
15
- export declare const segmentObservers: SegmentObserver[];
16
- export declare const moduleLoadingRequests: Record<string, {
17
- start: number;
18
- timeoutId: ReturnType<typeof setTimeout> | number | undefined;
19
- }>;
20
- declare global {
21
- interface Window {
22
- __REACT_UFO_ENABLE_PERF_TRACING?: boolean;
23
- __UFO_COMPACT_PAYLOAD__?: boolean;
24
- __CRITERION__?: {
25
- addFeatureFlagAccessed?: (flagName: string, flagValue: FeatureFlagValue) => void;
26
- addUFOHold?: (id: string, name: string, labelStack: string, startTime: number) => void;
27
- removeUFOHold?: (id: string) => void;
28
- getFeatureFlagOverride?: (flagName: string) => boolean | undefined;
29
- getExperimentValueOverride?: <T>(experimentName: string, parameterName: string) => T;
30
- };
31
- }
32
- }
1
+ import type { InteractionMetrics } from '../../common';
2
+ declare const interactions: Map<string, InteractionMetrics>;
3
+ export default interactions;
@@ -1,7 +1,10 @@
1
1
  import type { AbortReasonType, ApdexType, BM3Event, CustomData, CustomTiming, InteractionError, InteractionMetrics, InteractionType, LifecycleMarkType, LoadProfilerEventInfo, Mark, MarkType, PostInteractionLogOutput, ReactProfilerTiming, RequestInfo, Span, SpanType } from '../common';
2
2
  import { type TraceIdContext } from '../experience-trace-id-context';
3
+ import { type FeatureFlagValue } from '../feature-flags-accessed';
3
4
  import type { LabelStack } from '../interaction-context';
5
+ import PostInteractionLog from './post-interaction-log';
4
6
  export type { InteractionMetrics, LifecycleMarkType, Span, Mark, MarkType, InteractionType, AbortReasonType, ReactProfilerTiming, RequestInfo, ApdexType, CustomData, CustomTiming, InteractionError, };
7
+ export declare const postInteractionLog: PostInteractionLog;
5
8
  export declare function getActiveInteraction(): InteractionMetrics | undefined;
6
9
  export declare function remove(interactionId: string): void;
7
10
  export declare function updatePageLoadInteractionName(ufoName: string, routeName?: string | null | undefined): void;
@@ -15,7 +18,7 @@ export declare function addSpanToAll(type: SpanType, name: string, labelStack: L
15
18
  export declare function addPreload(moduleId: string, timestamp: number): void;
16
19
  export declare function addLoad(identifier: string, start: number, end: number): void;
17
20
  export declare function extractModuleName(input: string): string;
18
- export declare function addHold(interactionId: string, labelStack: LabelStack, name: string, experimental: boolean): () => void;
21
+ export declare function addHold(interactionId: string, labelStack: LabelStack, name: string): () => void;
19
22
  export declare function addHoldByID(interactionId: string, labelStack: LabelStack, name: string, id: string, ignoreOnSubmit?: boolean): () => void;
20
23
  export declare function removeHoldByID(interactionId: string, id: string): void;
21
24
  export declare function getCurrentInteractionType(interactionId: string): InteractionType | null;
@@ -49,5 +52,18 @@ export declare function addRequestInfo(interactionId: string, labelStack: LabelS
49
52
  export declare function addSegment(labelStack: LabelStack): void;
50
53
  export declare function removeSegment(labelStack: LabelStack): void;
51
54
  export declare function addRedirect(interactionId: string, fromUfoName: string, nextUfoName: string, nextRouteName: string, time: number): void;
55
+ declare global {
56
+ interface Window {
57
+ __REACT_UFO_ENABLE_PERF_TRACING?: boolean;
58
+ __UFO_COMPACT_PAYLOAD__?: boolean;
59
+ __CRITERION__?: {
60
+ addFeatureFlagAccessed?: (flagName: string, flagValue: FeatureFlagValue) => void;
61
+ addUFOHold?: (id: string, name: string, labelStack: string, startTime: number) => void;
62
+ removeUFOHold?: (id: string) => void;
63
+ getFeatureFlagOverride?: (flagName: string) => boolean | undefined;
64
+ getExperimentValueOverride?: <T>(experimentName: string, parameterName: string) => T;
65
+ };
66
+ }
67
+ }
52
68
  export declare const interactionSpans: Span[];
53
69
  export declare function addCustomSpans(name: string, start: number, end?: number, size?: number, labelStack?: LabelStack): void;
@@ -19,7 +19,8 @@ import { type ReactNode } from 'react';
19
19
  * return (
20
20
  * <>
21
21
  * <Skeleton />
22
- * <UFOLoadHold name="card" />
22
+ * <UFOLoadHold name="card">
23
+ * </UFOLoadHold>
23
24
  * )
24
25
  * }
25
26
  * ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-ufo",
3
- "version": "2.6.0",
3
+ "version": "2.8.0",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -32,7 +32,6 @@
32
32
  "./coinflip": "./src/coinflip/index.ts",
33
33
  "./common": "./src/common/index.ts",
34
34
  "./config": "./src/config/index.ts",
35
- "./create-experimental-interaction-metrics-payload": "./src/create-experimental-interaction-metrics-payload/index.ts",
36
35
  "./create-payload": "./src/create-payload/index.ts",
37
36
  "./create-post-interaction-log-payload": "./src/create-post-interaction-log-payload/index.ts",
38
37
  "./custom-data": "./src/custom-data/index.ts",
@@ -74,7 +73,7 @@
74
73
  ".": "./src/index.ts"
75
74
  },
76
75
  "dependencies": {
77
- "@atlaskit/interaction-context": "^2.3.0",
76
+ "@atlaskit/interaction-context": "^2.4.0",
78
77
  "@atlaskit/platform-feature-flags": "^0.3.0",
79
78
  "@babel/runtime": "^7.0.0",
80
79
  "bind-event-listener": "^3.0.0",
@@ -1,15 +0,0 @@
1
- {
2
- "name": "@atlaskit/react-ufo/create-experimental-interaction-metrics-payload",
3
- "main": "../dist/cjs/create-experimental-interaction-metrics-payload/index.js",
4
- "module": "../dist/esm/create-experimental-interaction-metrics-payload/index.js",
5
- "module:es2019": "../dist/es2019/create-experimental-interaction-metrics-payload/index.js",
6
- "sideEffects": false,
7
- "types": "../dist/types/create-experimental-interaction-metrics-payload/index.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.4": {
10
- "*": [
11
- "../dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts"
12
- ]
13
- }
14
- }
15
- }
@@ -1,100 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getExperimentalVCMetrics = exports.experimentalVC = exports.ExperimentalVCMetrics = void 0;
8
- exports.installInteractionSink = installInteractionSink;
9
- exports.onExperimentalInteractionComplete = onExperimentalInteractionComplete;
10
- exports.sinkExperimentalHandler = sinkExperimentalHandler;
11
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
- var _utils = require("../create-payload/common/utils");
15
- var _vcObserver = require("../vc/vc-observer");
16
- 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; }
17
- 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; }
18
- 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; } } }; }
19
- 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; } }
20
- 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; }
21
- var interactionBuffer = [];
22
- var bufferInteractionData = function bufferInteractionData(interactionId, data) {
23
- interactionBuffer.push({
24
- interactionId: interactionId,
25
- data: data
26
- });
27
- };
28
- function clearInteractionBuffer() {
29
- interactionBuffer.length = 0;
30
- }
31
- function appendInteractionData(interactionId, data) {
32
- bufferInteractionData(interactionId, data);
33
- }
34
- function installInteractionSink(handler) {
35
- var _iterator = _createForOfIteratorHelper(interactionBuffer),
36
- _step;
37
- try {
38
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
39
- var _step$value = _step.value,
40
- _interactionId = _step$value.interactionId,
41
- data = _step$value.data;
42
- handler(_interactionId, data);
43
- }
44
- } catch (err) {
45
- _iterator.e(err);
46
- } finally {
47
- _iterator.f();
48
- }
49
- clearInteractionBuffer();
50
- bufferInteractionData = handler;
51
- }
52
- function sinkExperimentalHandler(sinkFn) {
53
- installInteractionSink(sinkFn);
54
- }
55
- function onExperimentalInteractionComplete(interactionId, data) {
56
- var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
57
- if (data.ufoName) {
58
- data.end = endTime;
59
- appendInteractionData(interactionId, data);
60
- clearInteractionBuffer();
61
- }
62
- }
63
- var ExperimentalVCMetrics = exports.ExperimentalVCMetrics = /*#__PURE__*/function () {
64
- function ExperimentalVCMetrics() {
65
- (0, _classCallCheck2.default)(this, ExperimentalVCMetrics);
66
- (0, _defineProperty2.default)(this, "vcObserver", null);
67
- }
68
- return (0, _createClass2.default)(ExperimentalVCMetrics, [{
69
- key: "initialize",
70
- value: function initialize(options) {
71
- if (this.vcObserver === null) {
72
- this.vcObserver = new _vcObserver.VCObserver(_objectSpread(_objectSpread({}, options), {}, {
73
- isPostInteraction: true
74
- }));
75
- }
76
- return this;
77
- }
78
- }, {
79
- key: "start",
80
- value: function start(_ref) {
81
- var _this$vcObserver;
82
- var startTime = _ref.startTime;
83
- (_this$vcObserver = this.vcObserver) === null || _this$vcObserver === void 0 || _this$vcObserver.start({
84
- startTime: startTime
85
- });
86
- }
87
- }]);
88
- }();
89
- var experimentalVC = exports.experimentalVC = new ExperimentalVCMetrics();
90
- var getExperimentalVCMetrics = exports.getExperimentalVCMetrics = function getExperimentalVCMetrics(interaction) {
91
- if (experimentalVC.vcObserver) {
92
- var _result$metricsVc;
93
- var result = (0, _utils.calculateVCMetrics)(interaction, 'ufo-experimental', experimentalVC.vcObserver.getVCResult);
94
- experimentalVC.vcObserver.stop();
95
- return _objectSpread(_objectSpread({}, result), {}, {
96
- 'metric:experimental:vc90': result === null || result === void 0 || (_result$metricsVc = result['metrics:vc']) === null || _result$metricsVc === void 0 ? void 0 : _result$metricsVc['90']
97
- });
98
- }
99
- return null;
100
- };
@@ -1,151 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.addHoldCriterion = addHoldCriterion;
8
- exports.addSegmentObserver = addSegmentObserver;
9
- exports.callCancelCallbacks = callCancelCallbacks;
10
- exports.callCleanUpCallbacks = callCleanUpCallbacks;
11
- exports.getSegmentCacheKey = getSegmentCacheKey;
12
- exports.isPerformanceTracingEnabled = isPerformanceTracingEnabled;
13
- exports.isSegmentLabel = isSegmentLabel;
14
- exports.labelStackToIdString = labelStackToIdString;
15
- exports.labelStackToString = labelStackToString;
16
- exports.pushToQueue = void 0;
17
- exports.reactProfilerTimingMap = reactProfilerTimingMap;
18
- exports.removeHoldCriterion = removeHoldCriterion;
19
- exports.removeSegmentObserver = removeSegmentObserver;
20
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
21
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
22
- var _config = require("../../config");
23
- var _constants = require("./constants");
24
- 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; } } }; }
25
- 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; } }
26
- 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; }
27
- function isPerformanceTracingEnabled() {
28
- var _getConfig;
29
- return ((_getConfig = (0, _config.getConfig)()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
30
- }
31
- function labelStackToString(labelStack, name) {
32
- var _stack$map;
33
- var stack = (0, _toConsumableArray2.default)(labelStack !== null && labelStack !== void 0 ? labelStack : []);
34
- if (name) {
35
- stack.push({
36
- name: name
37
- });
38
- }
39
- return (_stack$map = stack.map(function (l) {
40
- return l.name;
41
- })) === null || _stack$map === void 0 ? void 0 : _stack$map.join('/');
42
- }
43
- function labelStackToIdString(labelStack) {
44
- var _labelStack$map;
45
- return labelStack === null || labelStack === void 0 || (_labelStack$map = labelStack.map(function (l) {
46
- return 'segmentId' in l ? "".concat(l.name, ":").concat(l.segmentId) : "".concat(l.name);
47
- })) === null || _labelStack$map === void 0 ? void 0 : _labelStack$map.join('/');
48
- }
49
- function addSegmentObserver(observer) {
50
- _constants.segmentObservers.push(observer);
51
- var _iterator = _createForOfIteratorHelper(_constants.segmentCache.values()),
52
- _step;
53
- try {
54
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
55
- var segmentInfo = _step.value;
56
- observer.onAdd(segmentInfo);
57
- }
58
- } catch (err) {
59
- _iterator.e(err);
60
- } finally {
61
- _iterator.f();
62
- }
63
- }
64
- function removeSegmentObserver(observer) {
65
- var index = _constants.segmentObservers.findIndex(function (obs) {
66
- return obs === observer;
67
- });
68
- if (index !== -1) {
69
- _constants.segmentObservers.splice(index, 1);
70
- }
71
- }
72
- function addHoldCriterion(id, labelStack, name, startTime) {
73
- var _window$__CRITERION__;
74
- if (!((_window$__CRITERION__ = window.__CRITERION__) !== null && _window$__CRITERION__ !== void 0 && _window$__CRITERION__.addUFOHold)) {
75
- return;
76
- }
77
- window.__CRITERION__.addUFOHold(id, labelStackToString(labelStack), name, startTime);
78
- }
79
- function removeHoldCriterion(id) {
80
- var _window$__CRITERION__2;
81
- if (!((_window$__CRITERION__2 = window.__CRITERION__) !== null && _window$__CRITERION__2 !== void 0 && _window$__CRITERION__2.removeUFOHold)) {
82
- return;
83
- }
84
- window.__CRITERION__.removeUFOHold(id);
85
- }
86
- var pushToQueue = exports.pushToQueue = function pushToQueue(id, data) {
87
- _constants.interactionQueue.push({
88
- id: id,
89
- data: data
90
- });
91
- };
92
- function callCleanUpCallbacks(interaction) {
93
- interaction.cleanupCallbacks.reverse().forEach(function (cleanUpCallback) {
94
- cleanUpCallback();
95
- });
96
- }
97
- function reactProfilerTimingMap(data) {
98
- var profilerTimingMap = new Map();
99
- data.reactProfilerTimings.forEach(function (profilerTiming) {
100
- var labelStackId = labelStackToIdString(profilerTiming.labelStack);
101
- if (labelStackId) {
102
- var _profilerTimingMap$ge, _timing$start, _timing$end;
103
- var timing = (_profilerTimingMap$ge = profilerTimingMap.get(labelStackId)) !== null && _profilerTimingMap$ge !== void 0 ? _profilerTimingMap$ge : {
104
- labelStack: profilerTiming.labelStack
105
- };
106
- timing.start = profilerTiming.startTime < ((_timing$start = timing.start) !== null && _timing$start !== void 0 ? _timing$start : Number.MAX_SAFE_INTEGER) ? profilerTiming.startTime : timing.start;
107
- timing.end = profilerTiming.commitTime > ((_timing$end = timing.end) !== null && _timing$end !== void 0 ? _timing$end : Number.MIN_SAFE_INTEGER) ? profilerTiming.commitTime : timing.end;
108
- profilerTimingMap.set(labelStackId, timing);
109
- }
110
- });
111
- try {
112
- // for Firefox 102 and older
113
- var _iterator2 = _createForOfIteratorHelper(profilerTimingMap.entries()),
114
- _step2;
115
- try {
116
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
117
- var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
118
- _step2$value$ = _step2$value[1],
119
- labelStack = _step2$value$.labelStack,
120
- start = _step2$value$.start,
121
- end = _step2$value$.end;
122
- performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack), " [segment_ttai]"), {
123
- start: start,
124
- end: end
125
- });
126
- }
127
- } catch (err) {
128
- _iterator2.e(err);
129
- } finally {
130
- _iterator2.f();
131
- }
132
- } catch (e) {
133
- // do nothing
134
- }
135
- }
136
- function callCancelCallbacks(interaction) {
137
- interaction.cancelCallbacks.reverse().forEach(function (cancelCallback) {
138
- cancelCallback();
139
- });
140
- }
141
- function isSegmentLabel(obj) {
142
- return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';
143
- }
144
- function getSegmentCacheKey(labelStack) {
145
- return labelStack.map(function (l) {
146
- if (isSegmentLabel(l)) {
147
- return "".concat(l.name, "_").concat(l.segmentId);
148
- }
149
- return l.name;
150
- }).join('|');
151
- }
@@ -1,71 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import { calculateVCMetrics } from '../create-payload/common/utils';
3
- import { VCObserver } from '../vc/vc-observer';
4
- const interactionBuffer = [];
5
- let bufferInteractionData = (interactionId, data) => {
6
- interactionBuffer.push({
7
- interactionId,
8
- data
9
- });
10
- };
11
- function clearInteractionBuffer() {
12
- interactionBuffer.length = 0;
13
- }
14
- function appendInteractionData(interactionId, data) {
15
- bufferInteractionData(interactionId, data);
16
- }
17
- export function installInteractionSink(handler) {
18
- for (const {
19
- interactionId,
20
- data
21
- } of interactionBuffer) {
22
- handler(interactionId, data);
23
- }
24
- clearInteractionBuffer();
25
- bufferInteractionData = handler;
26
- }
27
- export function sinkExperimentalHandler(sinkFn) {
28
- installInteractionSink(sinkFn);
29
- }
30
- export function onExperimentalInteractionComplete(interactionId, data, endTime = performance.now()) {
31
- if (data.ufoName) {
32
- data.end = endTime;
33
- appendInteractionData(interactionId, data);
34
- clearInteractionBuffer();
35
- }
36
- }
37
- export class ExperimentalVCMetrics {
38
- constructor() {
39
- _defineProperty(this, "vcObserver", null);
40
- }
41
- initialize(options) {
42
- if (this.vcObserver === null) {
43
- this.vcObserver = new VCObserver({
44
- ...options,
45
- isPostInteraction: true
46
- });
47
- }
48
- return this;
49
- }
50
- start({
51
- startTime
52
- }) {
53
- var _this$vcObserver;
54
- (_this$vcObserver = this.vcObserver) === null || _this$vcObserver === void 0 ? void 0 : _this$vcObserver.start({
55
- startTime
56
- });
57
- }
58
- }
59
- export const experimentalVC = new ExperimentalVCMetrics();
60
- export const getExperimentalVCMetrics = interaction => {
61
- if (experimentalVC.vcObserver) {
62
- var _result$metricsVc;
63
- const result = calculateVCMetrics(interaction, 'ufo-experimental', experimentalVC.vcObserver.getVCResult);
64
- experimentalVC.vcObserver.stop();
65
- return {
66
- ...result,
67
- 'metric:experimental:vc90': result === null || result === void 0 ? void 0 : (_result$metricsVc = result['metrics:vc']) === null || _result$metricsVc === void 0 ? void 0 : _result$metricsVc['90']
68
- };
69
- }
70
- return null;
71
- };
@@ -1,103 +0,0 @@
1
- import { getConfig } from '../../config';
2
- import { interactionQueue, segmentCache, segmentObservers } from './constants';
3
- export function isPerformanceTracingEnabled() {
4
- var _getConfig;
5
- return ((_getConfig = getConfig()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
6
- }
7
- export function labelStackToString(labelStack, name) {
8
- var _stack$map;
9
- const stack = [...(labelStack !== null && labelStack !== void 0 ? labelStack : [])];
10
- if (name) {
11
- stack.push({
12
- name
13
- });
14
- }
15
- return (_stack$map = stack.map(l => l.name)) === null || _stack$map === void 0 ? void 0 : _stack$map.join('/');
16
- }
17
- export function labelStackToIdString(labelStack) {
18
- var _labelStack$map;
19
- return labelStack === null || labelStack === void 0 ? void 0 : (_labelStack$map = labelStack.map(l => 'segmentId' in l ? `${l.name}:${l.segmentId}` : `${l.name}`)) === null || _labelStack$map === void 0 ? void 0 : _labelStack$map.join('/');
20
- }
21
- export function addSegmentObserver(observer) {
22
- segmentObservers.push(observer);
23
- for (const segmentInfo of segmentCache.values()) {
24
- observer.onAdd(segmentInfo);
25
- }
26
- }
27
- export function removeSegmentObserver(observer) {
28
- const index = segmentObservers.findIndex(obs => obs === observer);
29
- if (index !== -1) {
30
- segmentObservers.splice(index, 1);
31
- }
32
- }
33
- export function addHoldCriterion(id, labelStack, name, startTime) {
34
- var _window$__CRITERION__;
35
- if (!((_window$__CRITERION__ = window.__CRITERION__) !== null && _window$__CRITERION__ !== void 0 && _window$__CRITERION__.addUFOHold)) {
36
- return;
37
- }
38
- window.__CRITERION__.addUFOHold(id, labelStackToString(labelStack), name, startTime);
39
- }
40
- export function removeHoldCriterion(id) {
41
- var _window$__CRITERION__2;
42
- if (!((_window$__CRITERION__2 = window.__CRITERION__) !== null && _window$__CRITERION__2 !== void 0 && _window$__CRITERION__2.removeUFOHold)) {
43
- return;
44
- }
45
- window.__CRITERION__.removeUFOHold(id);
46
- }
47
- export const pushToQueue = (id, data) => {
48
- interactionQueue.push({
49
- id,
50
- data
51
- });
52
- };
53
- export function callCleanUpCallbacks(interaction) {
54
- interaction.cleanupCallbacks.reverse().forEach(cleanUpCallback => {
55
- cleanUpCallback();
56
- });
57
- }
58
- export function reactProfilerTimingMap(data) {
59
- const profilerTimingMap = new Map();
60
- data.reactProfilerTimings.forEach(profilerTiming => {
61
- const labelStackId = labelStackToIdString(profilerTiming.labelStack);
62
- if (labelStackId) {
63
- var _profilerTimingMap$ge, _timing$start, _timing$end;
64
- const timing = (_profilerTimingMap$ge = profilerTimingMap.get(labelStackId)) !== null && _profilerTimingMap$ge !== void 0 ? _profilerTimingMap$ge : {
65
- labelStack: profilerTiming.labelStack
66
- };
67
- timing.start = profilerTiming.startTime < ((_timing$start = timing.start) !== null && _timing$start !== void 0 ? _timing$start : Number.MAX_SAFE_INTEGER) ? profilerTiming.startTime : timing.start;
68
- timing.end = profilerTiming.commitTime > ((_timing$end = timing.end) !== null && _timing$end !== void 0 ? _timing$end : Number.MIN_SAFE_INTEGER) ? profilerTiming.commitTime : timing.end;
69
- profilerTimingMap.set(labelStackId, timing);
70
- }
71
- });
72
- try {
73
- // for Firefox 102 and older
74
- for (const [, {
75
- labelStack,
76
- start,
77
- end
78
- }] of profilerTimingMap.entries()) {
79
- performance.measure(`🛸 ${labelStackToString(labelStack)} [segment_ttai]`, {
80
- start,
81
- end
82
- });
83
- }
84
- } catch (e) {
85
- // do nothing
86
- }
87
- }
88
- export function callCancelCallbacks(interaction) {
89
- interaction.cancelCallbacks.reverse().forEach(cancelCallback => {
90
- cancelCallback();
91
- });
92
- }
93
- export function isSegmentLabel(obj) {
94
- return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';
95
- }
96
- export function getSegmentCacheKey(labelStack) {
97
- return labelStack.map(l => {
98
- if (isSegmentLabel(l)) {
99
- return `${l.name}_${l.segmentId}`;
100
- }
101
- return l.name;
102
- }).join('|');
103
- }
@@ -1,90 +0,0 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- 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; }
5
- 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) { _defineProperty(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; }
6
- 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; } } }; }
7
- 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; } }
8
- 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; }
9
- import { calculateVCMetrics } from '../create-payload/common/utils';
10
- import { VCObserver } from '../vc/vc-observer';
11
- var interactionBuffer = [];
12
- var bufferInteractionData = function bufferInteractionData(interactionId, data) {
13
- interactionBuffer.push({
14
- interactionId: interactionId,
15
- data: data
16
- });
17
- };
18
- function clearInteractionBuffer() {
19
- interactionBuffer.length = 0;
20
- }
21
- function appendInteractionData(interactionId, data) {
22
- bufferInteractionData(interactionId, data);
23
- }
24
- export function installInteractionSink(handler) {
25
- var _iterator = _createForOfIteratorHelper(interactionBuffer),
26
- _step;
27
- try {
28
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
29
- var _step$value = _step.value,
30
- _interactionId = _step$value.interactionId,
31
- data = _step$value.data;
32
- handler(_interactionId, data);
33
- }
34
- } catch (err) {
35
- _iterator.e(err);
36
- } finally {
37
- _iterator.f();
38
- }
39
- clearInteractionBuffer();
40
- bufferInteractionData = handler;
41
- }
42
- export function sinkExperimentalHandler(sinkFn) {
43
- installInteractionSink(sinkFn);
44
- }
45
- export function onExperimentalInteractionComplete(interactionId, data) {
46
- var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
47
- if (data.ufoName) {
48
- data.end = endTime;
49
- appendInteractionData(interactionId, data);
50
- clearInteractionBuffer();
51
- }
52
- }
53
- export var ExperimentalVCMetrics = /*#__PURE__*/function () {
54
- function ExperimentalVCMetrics() {
55
- _classCallCheck(this, ExperimentalVCMetrics);
56
- _defineProperty(this, "vcObserver", null);
57
- }
58
- return _createClass(ExperimentalVCMetrics, [{
59
- key: "initialize",
60
- value: function initialize(options) {
61
- if (this.vcObserver === null) {
62
- this.vcObserver = new VCObserver(_objectSpread(_objectSpread({}, options), {}, {
63
- isPostInteraction: true
64
- }));
65
- }
66
- return this;
67
- }
68
- }, {
69
- key: "start",
70
- value: function start(_ref) {
71
- var _this$vcObserver;
72
- var startTime = _ref.startTime;
73
- (_this$vcObserver = this.vcObserver) === null || _this$vcObserver === void 0 || _this$vcObserver.start({
74
- startTime: startTime
75
- });
76
- }
77
- }]);
78
- }();
79
- export var experimentalVC = new ExperimentalVCMetrics();
80
- export var getExperimentalVCMetrics = function getExperimentalVCMetrics(interaction) {
81
- if (experimentalVC.vcObserver) {
82
- var _result$metricsVc;
83
- var result = calculateVCMetrics(interaction, 'ufo-experimental', experimentalVC.vcObserver.getVCResult);
84
- experimentalVC.vcObserver.stop();
85
- return _objectSpread(_objectSpread({}, result), {}, {
86
- 'metric:experimental:vc90': result === null || result === void 0 || (_result$metricsVc = result['metrics:vc']) === null || _result$metricsVc === void 0 ? void 0 : _result$metricsVc['90']
87
- });
88
- }
89
- return null;
90
- };