@grafana/faro-core 1.18.2 → 2.0.0-beta
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.
- package/README.md +0 -4
- package/dist/bundle/faro-core.iife.js +1 -1
- package/dist/bundle/types/api/apiTestHelpers.d.ts +2 -0
- package/dist/bundle/types/api/events/initialize.d.ts +4 -6
- package/dist/bundle/types/api/exceptions/initialize.d.ts +4 -6
- package/dist/bundle/types/api/index.d.ts +2 -3
- package/dist/bundle/types/api/initialize.d.ts +1 -3
- package/dist/bundle/types/api/logs/initialize.d.ts +4 -6
- package/dist/bundle/types/api/measurements/initialize.d.ts +4 -6
- package/dist/bundle/types/api/meta/initialize.d.ts +1 -5
- package/dist/bundle/types/api/types.d.ts +3 -44
- package/dist/bundle/types/api/userActions/const.d.ts +6 -0
- package/dist/bundle/types/api/userActions/index.d.ts +3 -0
- package/dist/bundle/types/api/userActions/initialize.d.ts +10 -0
- package/dist/bundle/types/api/userActions/types.d.ts +45 -0
- package/dist/bundle/types/api/userActions/userAction.d.ts +41 -0
- package/dist/bundle/types/index.d.ts +2 -2
- package/dist/bundle/types/semantic.d.ts +0 -14
- package/dist/bundle/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/bundle/types/version.d.ts +1 -1
- package/dist/cjs/api/apiTestHelpers.js +5 -1
- package/dist/cjs/api/apiTestHelpers.js.map +1 -1
- package/dist/cjs/api/events/initialize.js +4 -5
- package/dist/cjs/api/events/initialize.js.map +1 -1
- package/dist/cjs/api/exceptions/initialize.js +6 -7
- package/dist/cjs/api/exceptions/initialize.js.map +1 -1
- package/dist/cjs/api/index.js +5 -8
- package/dist/cjs/api/index.js.map +1 -1
- package/dist/cjs/api/initialize.js +8 -8
- package/dist/cjs/api/initialize.js.map +1 -1
- package/dist/cjs/api/logs/initialize.js +6 -7
- package/dist/cjs/api/logs/initialize.js.map +1 -1
- package/dist/cjs/api/measurements/initialize.js +4 -5
- package/dist/cjs/api/measurements/initialize.js.map +1 -1
- package/dist/cjs/api/meta/initialize.js.map +1 -1
- package/dist/cjs/api/types.js.map +1 -1
- package/dist/cjs/api/userActions/const.js +11 -0
- package/dist/cjs/api/userActions/const.js.map +1 -0
- package/dist/cjs/api/userActions/index.js +11 -0
- package/dist/cjs/api/userActions/index.js.map +1 -0
- package/dist/cjs/api/userActions/initialize.js +57 -0
- package/dist/cjs/api/userActions/initialize.js.map +1 -0
- package/dist/cjs/api/userActions/types.js +11 -0
- package/dist/cjs/api/userActions/types.js.map +1 -0
- package/dist/cjs/api/userActions/userAction.js +165 -0
- package/dist/cjs/api/userActions/userAction.js.map +1 -0
- package/dist/cjs/index.js +5 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instrumentations/initialize.js +1 -1
- package/dist/cjs/instrumentations/initialize.js.map +1 -1
- package/dist/cjs/semantic.js +1 -15
- package/dist/cjs/semantic.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/api/apiTestHelpers.js +4 -0
- package/dist/esm/api/apiTestHelpers.js.map +1 -1
- package/dist/esm/api/events/initialize.js +4 -5
- package/dist/esm/api/events/initialize.js.map +1 -1
- package/dist/esm/api/exceptions/initialize.js +4 -5
- package/dist/esm/api/exceptions/initialize.js.map +1 -1
- package/dist/esm/api/index.js +1 -2
- package/dist/esm/api/index.js.map +1 -1
- package/dist/esm/api/initialize.js +8 -7
- package/dist/esm/api/initialize.js.map +1 -1
- package/dist/esm/api/logs/initialize.js +4 -5
- package/dist/esm/api/logs/initialize.js.map +1 -1
- package/dist/esm/api/measurements/initialize.js +4 -5
- package/dist/esm/api/measurements/initialize.js.map +1 -1
- package/dist/esm/api/meta/initialize.js.map +1 -1
- package/dist/esm/api/types.js.map +1 -1
- package/dist/esm/api/userActions/const.js +8 -0
- package/dist/esm/api/userActions/const.js.map +1 -0
- package/dist/esm/api/userActions/index.js +4 -0
- package/dist/esm/api/userActions/index.js.map +1 -0
- package/dist/esm/api/userActions/initialize.js +50 -0
- package/dist/esm/api/userActions/initialize.js.map +1 -0
- package/dist/esm/api/userActions/types.js +10 -0
- package/dist/esm/api/userActions/types.js.map +1 -0
- package/dist/esm/api/userActions/userAction.js +132 -0
- package/dist/esm/api/userActions/userAction.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instrumentations/initialize.js +1 -1
- package/dist/esm/instrumentations/initialize.js.map +1 -1
- package/dist/esm/semantic.js +0 -14
- package/dist/esm/semantic.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/spec/core/src/api/apiTestHelpers.js +5 -1
- package/dist/spec/core/src/api/apiTestHelpers.js.map +1 -1
- package/dist/spec/core/src/api/events/initialize.js +4 -5
- package/dist/spec/core/src/api/events/initialize.js.map +1 -1
- package/dist/spec/core/src/api/events/initialize.test.js +11 -33
- package/dist/spec/core/src/api/events/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/exceptions/initialize.js +6 -7
- package/dist/spec/core/src/api/exceptions/initialize.js.map +1 -1
- package/dist/spec/core/src/api/exceptions/initialize.test.js +24 -52
- package/dist/spec/core/src/api/exceptions/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/index.js +5 -8
- package/dist/spec/core/src/api/index.js.map +1 -1
- package/dist/spec/core/src/api/initialize.js +8 -8
- package/dist/spec/core/src/api/initialize.js.map +1 -1
- package/dist/spec/core/src/api/initialize.test.js +0 -50
- package/dist/spec/core/src/api/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/logs/initialize.js +6 -7
- package/dist/spec/core/src/api/logs/initialize.js.map +1 -1
- package/dist/spec/core/src/api/logs/initialize.test.js +12 -73
- package/dist/spec/core/src/api/logs/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/measurements/initialize.js +4 -5
- package/dist/spec/core/src/api/measurements/initialize.js.map +1 -1
- package/dist/spec/core/src/api/measurements/initialize.test.js +10 -72
- package/dist/spec/core/src/api/measurements/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/meta/initialize.js.map +1 -1
- package/dist/spec/core/src/api/types.js.map +1 -1
- package/dist/spec/core/src/api/userActions/const.js +11 -0
- package/dist/spec/core/src/api/userActions/const.js.map +1 -0
- package/dist/spec/core/src/api/userActions/index.js +11 -0
- package/dist/spec/core/src/api/userActions/index.js.map +1 -0
- package/dist/spec/core/src/api/userActions/initialize.js +57 -0
- package/dist/spec/core/src/api/userActions/initialize.js.map +1 -0
- package/dist/spec/core/src/api/userActions/initialize.test.js +62 -0
- package/dist/spec/core/src/api/userActions/initialize.test.js.map +1 -0
- package/dist/spec/core/src/api/userActions/types.js +11 -0
- package/dist/spec/core/src/api/userActions/types.js.map +1 -0
- package/dist/spec/core/src/api/userActions/userAction.js +165 -0
- package/dist/spec/core/src/api/userActions/userAction.js.map +1 -0
- package/dist/spec/core/src/api/userActions/userAction.test.js +75 -0
- package/dist/spec/core/src/api/userActions/userAction.test.js.map +1 -0
- package/dist/spec/core/src/index.js +5 -7
- package/dist/spec/core/src/index.js.map +1 -1
- package/dist/spec/core/src/instrumentations/initialize.js +1 -1
- package/dist/spec/core/src/instrumentations/initialize.js.map +1 -1
- package/dist/spec/core/src/semantic.js +1 -15
- package/dist/spec/core/src/semantic.js.map +1 -1
- package/dist/spec/core/src/transports/batchExecutor.test.js +10 -10
- package/dist/spec/core/src/transports/batchExecutor.test.js.map +1 -1
- package/dist/spec/core/src/version.js +1 -1
- package/dist/spec/core/src/version.js.map +1 -1
- package/dist/types/api/apiTestHelpers.d.ts +2 -0
- package/dist/types/api/events/initialize.d.ts +4 -6
- package/dist/types/api/exceptions/initialize.d.ts +4 -6
- package/dist/types/api/index.d.ts +2 -3
- package/dist/types/api/initialize.d.ts +1 -3
- package/dist/types/api/logs/initialize.d.ts +4 -6
- package/dist/types/api/measurements/initialize.d.ts +4 -6
- package/dist/types/api/meta/initialize.d.ts +1 -5
- package/dist/types/api/types.d.ts +3 -44
- package/dist/types/api/userActions/const.d.ts +6 -0
- package/dist/types/api/userActions/index.d.ts +3 -0
- package/dist/types/api/userActions/initialize.d.ts +10 -0
- package/dist/types/api/userActions/types.d.ts +45 -0
- package/dist/types/api/userActions/userAction.d.ts +41 -0
- package/dist/types/core/src/api/apiTestHelpers.d.ts +2 -0
- package/dist/types/core/src/api/events/initialize.d.ts +4 -6
- package/dist/types/core/src/api/exceptions/initialize.d.ts +4 -6
- package/dist/types/core/src/api/index.d.ts +2 -3
- package/dist/types/core/src/api/initialize.d.ts +1 -3
- package/dist/types/core/src/api/logs/initialize.d.ts +4 -6
- package/dist/types/core/src/api/measurements/initialize.d.ts +4 -6
- package/dist/types/core/src/api/meta/initialize.d.ts +1 -5
- package/dist/types/core/src/api/types.d.ts +3 -44
- package/dist/types/core/src/api/userActions/const.d.ts +6 -0
- package/dist/types/core/src/api/userActions/index.d.ts +3 -0
- package/dist/types/core/src/api/userActions/initialize.d.ts +10 -0
- package/dist/types/core/src/api/userActions/types.d.ts +45 -0
- package/dist/types/core/src/api/userActions/userAction.d.ts +41 -0
- package/dist/types/core/src/api/userActions/userAction.test.d.ts +1 -0
- package/dist/types/core/src/index.d.ts +2 -2
- package/dist/types/core/src/semantic.d.ts +0 -14
- package/dist/types/core/src/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/core/src/version.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/semantic.d.ts +0 -14
- package/dist/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +9 -9
- package/dist/bundle/types/api/const.d.ts +0 -4
- package/dist/bundle/types/api/userActionLifecycleHandler.d.ts +0 -13
- package/dist/cjs/api/const.js +0 -8
- package/dist/cjs/api/const.js.map +0 -1
- package/dist/cjs/api/userActionLifecycleHandler.js +0 -58
- package/dist/cjs/api/userActionLifecycleHandler.js.map +0 -1
- package/dist/esm/api/const.js +0 -5
- package/dist/esm/api/const.js.map +0 -1
- package/dist/esm/api/userActionLifecycleHandler.js +0 -43
- package/dist/esm/api/userActionLifecycleHandler.js.map +0 -1
- package/dist/spec/core/src/api/const.js +0 -8
- package/dist/spec/core/src/api/const.js.map +0 -1
- package/dist/spec/core/src/api/userActionLifecycleHandler.js +0 -58
- package/dist/spec/core/src/api/userActionLifecycleHandler.js.map +0 -1
- package/dist/spec/core/src/api/userActionLifecycleHandler.test.js +0 -169
- package/dist/spec/core/src/api/userActionLifecycleHandler.test.js.map +0 -1
- package/dist/types/api/const.d.ts +0 -4
- package/dist/types/api/userActionLifecycleHandler.d.ts +0 -13
- package/dist/types/core/src/api/const.d.ts +0 -4
- package/dist/types/core/src/api/userActionLifecycleHandler.d.ts +0 -13
- /package/dist/types/core/src/api/{userActionLifecycleHandler.test.d.ts → userActions/initialize.test.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { EventEvent, EventsAPI } from './events';\nimport type { ExceptionEvent, ExceptionsAPI } from './exceptions';\nimport type { LogEvent, LogsAPI } from './logs';\nimport type { MeasurementEvent, MeasurementsAPI } from './measurements';\nimport type { MetaAPI } from './meta';\nimport type { TraceEvent, TracesAPI } from './traces';\nimport type { UserActionsAPI } from './userActions';\n\nexport type UserAction = {\n name: string;\n id?: string;\n parentId?: string;\n};\n\nexport type APIEvent = LogEvent | ExceptionEvent | MeasurementEvent | TraceEvent | EventEvent;\n\nexport type API = LogsAPI & ExceptionsAPI & MeasurementsAPI & TracesAPI & MetaAPI & EventsAPI & UserActionsAPI;\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserActionSeverity = exports.userActionStart = exports.userActionStartByApiCallEventName = void 0;
|
|
4
|
+
exports.userActionStartByApiCallEventName = 'faroApiCall';
|
|
5
|
+
exports.userActionStart = 'user_action_start';
|
|
6
|
+
var UserActionSeverity;
|
|
7
|
+
(function (UserActionSeverity) {
|
|
8
|
+
UserActionSeverity["Normal"] = "normal";
|
|
9
|
+
UserActionSeverity["Critical"] = "critical";
|
|
10
|
+
})(UserActionSeverity || (exports.UserActionSeverity = UserActionSeverity = {}));
|
|
11
|
+
//# sourceMappingURL=const.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,iCAAiC,GAAG,aAAa,CAAC;AAElD,QAAA,eAAe,GAAG,mBAAmB,CAAC;AAEnD,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;IACjB,2CAAqB,CAAA;AACvB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B","sourcesContent":["export const userActionStartByApiCallEventName = 'faroApiCall';\n\nexport const userActionStart = 'user_action_start';\n\nexport enum UserActionSeverity {\n Normal = 'normal',\n Critical = 'critical',\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.userActionsMessageBus = exports.initializeUserActionsAPI = exports.UserActionSeverity = exports.UserActionState = void 0;
|
|
4
|
+
var types_1 = require("./types");
|
|
5
|
+
Object.defineProperty(exports, "UserActionState", { enumerable: true, get: function () { return types_1.UserActionState; } });
|
|
6
|
+
var const_1 = require("./const");
|
|
7
|
+
Object.defineProperty(exports, "UserActionSeverity", { enumerable: true, get: function () { return const_1.UserActionSeverity; } });
|
|
8
|
+
var initialize_1 = require("./initialize");
|
|
9
|
+
Object.defineProperty(exports, "initializeUserActionsAPI", { enumerable: true, get: function () { return initialize_1.initializeUserActionsAPI; } });
|
|
10
|
+
Object.defineProperty(exports, "userActionsMessageBus", { enumerable: true, get: function () { return initialize_1.userActionsMessageBus; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/index.ts"],"names":[],"mappings":";;;AAAA,iCAAyF;AAA3D,wGAAA,eAAe,OAAA;AAC7C,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA;AAE3B,2CAA+E;AAAtE,sHAAA,wBAAwB,OAAA;AAAE,mHAAA,qBAAqB,OAAA","sourcesContent":["export { type UserActionsAPI, UserActionState, type UserActionInterface } from './types';\nexport { UserActionSeverity } from './const';\n\nexport { initializeUserActionsAPI, userActionsMessageBus } from './initialize';\n"]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.userActionsMessageBus = void 0;
|
|
7
|
+
exports.initializeUserActionsAPI = initializeUserActionsAPI;
|
|
8
|
+
var reactive_1 = require("../../utils/reactive");
|
|
9
|
+
var const_1 = require("./const");
|
|
10
|
+
var types_1 = require("./types");
|
|
11
|
+
var userAction_1 = __importDefault(require("./userAction"));
|
|
12
|
+
exports.userActionsMessageBus = new reactive_1.Observable();
|
|
13
|
+
function initializeUserActionsAPI(_a) {
|
|
14
|
+
var transports = _a.transports, internalLogger = _a.internalLogger, config = _a.config;
|
|
15
|
+
var trackUserActionsExcludeItem = config.trackUserActionsExcludeItem;
|
|
16
|
+
// Currently running user action. It can be in either started or halted
|
|
17
|
+
// state
|
|
18
|
+
var activeUserAction;
|
|
19
|
+
// If there is a an action already running, return undefined to indicate
|
|
20
|
+
// we were not able to create one.
|
|
21
|
+
var startUserAction = function (name, attributes, options) {
|
|
22
|
+
var currentRunningUserAction = getActiveUserAction();
|
|
23
|
+
if (currentRunningUserAction === undefined) {
|
|
24
|
+
var userAction = new userAction_1.default({
|
|
25
|
+
name: name,
|
|
26
|
+
transports: transports,
|
|
27
|
+
attributes: attributes,
|
|
28
|
+
trigger: (options === null || options === void 0 ? void 0 : options.triggerName) || const_1.userActionStartByApiCallEventName,
|
|
29
|
+
trackUserActionsExcludeItem: trackUserActionsExcludeItem,
|
|
30
|
+
});
|
|
31
|
+
userAction
|
|
32
|
+
.filter(function (v) { return [types_1.UserActionState.Ended, types_1.UserActionState.Cancelled].includes(v); })
|
|
33
|
+
.first()
|
|
34
|
+
.subscribe(function () {
|
|
35
|
+
activeUserAction = undefined;
|
|
36
|
+
});
|
|
37
|
+
exports.userActionsMessageBus.notify({
|
|
38
|
+
type: const_1.userActionStart,
|
|
39
|
+
userAction: userAction,
|
|
40
|
+
});
|
|
41
|
+
activeUserAction = userAction;
|
|
42
|
+
return activeUserAction;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
internalLogger.error('Attempted to create a new user action while one is already running. This is not possible.');
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var getActiveUserAction = function () {
|
|
50
|
+
return activeUserAction;
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
startUserAction: startUserAction,
|
|
54
|
+
getActiveUserAction: getActiveUserAction,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=initialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/initialize.ts"],"names":[],"mappings":";;;;;;AAgBA,4DA2DC;AAzED,iDAAkD;AAElD,iCAA6E;AAC7E,iCAMiB;AACjB,4DAAsC;AAEzB,QAAA,qBAAqB,GAAG,IAAI,qBAAU,EAAqB,CAAC;AAEzE,SAAgB,wBAAwB,CAAC,EAQxC;QAPC,UAAU,gBAAA,EACV,cAAc,oBAAA,EACd,MAAM,YAAA;IAMN,IAAM,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;IAEvE,uEAAuE;IACvE,QAAQ;IACR,IAAI,gBAAwC,CAAC;IAE7C,wEAAwE;IACxE,kCAAkC;IAClC,IAAM,eAAe,GAAsC,UACzD,IAAY,EACZ,UAAmC,EACnC,OAAgC;QAEhC,IAAM,wBAAwB,GAAG,mBAAmB,EAAE,CAAC;QAEvD,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAM,UAAU,GAAG,IAAI,oBAAU,CAAC;gBAChC,IAAI,MAAA;gBACJ,UAAU,YAAA;gBACV,UAAU,YAAA;gBACV,OAAO,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,yCAAiC;gBAClE,2BAA2B,6BAAA;aAC5B,CAAC,CAAC;YACH,UAAU;iBACP,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,uBAAe,CAAC,KAAK,EAAE,uBAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAA9D,CAA8D,CAAC;iBAC7E,KAAK,EAAE;iBACP,SAAS,CAAC;gBACT,gBAAgB,GAAG,SAAS,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEL,6BAAqB,CAAC,MAAM,CAAC;gBAC3B,IAAI,EAAE,uBAAe;gBACrB,UAAU,EAAE,UAAU;aACvB,CAAC,CAAC;YACH,gBAAgB,GAAG,UAAU,CAAC;YAC9B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC;YAClH,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,IAAM,mBAAmB,GAA0C;QACjE,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO;QACL,eAAe,iBAAA;QACf,mBAAmB,qBAAA;KACpB,CAAC;AACJ,CAAC","sourcesContent":["import { type InternalLogger, type Transports } from '../..';\nimport type { Config } from '../../config';\nimport { Observable } from '../../utils/reactive';\n\nimport { userActionStart, userActionStartByApiCallEventName } from './const';\nimport {\n type StartUserActionOptions,\n type UserActionInterface,\n type UserActionMessage,\n type UserActionsAPI,\n UserActionState,\n} from './types';\nimport UserAction from './userAction';\n\nexport const userActionsMessageBus = new Observable<UserActionMessage>();\n\nexport function initializeUserActionsAPI({\n transports,\n internalLogger,\n config,\n}: {\n transports: Transports;\n config: Config;\n internalLogger: InternalLogger;\n}): UserActionsAPI {\n const trackUserActionsExcludeItem = config.trackUserActionsExcludeItem;\n\n // Currently running user action. It can be in either started or halted\n // state\n let activeUserAction: UserAction | undefined;\n\n // If there is a an action already running, return undefined to indicate\n // we were not able to create one.\n const startUserAction: UserActionsAPI['startUserAction'] = (\n name: string,\n attributes?: Record<string, string>,\n options?: StartUserActionOptions\n ): UserActionInterface | undefined => {\n const currentRunningUserAction = getActiveUserAction();\n\n if (currentRunningUserAction === undefined) {\n const userAction = new UserAction({\n name,\n transports,\n attributes,\n trigger: options?.triggerName || userActionStartByApiCallEventName,\n trackUserActionsExcludeItem,\n });\n userAction\n .filter((v) => [UserActionState.Ended, UserActionState.Cancelled].includes(v))\n .first()\n .subscribe(() => {\n activeUserAction = undefined;\n });\n\n userActionsMessageBus.notify({\n type: userActionStart,\n userAction: userAction,\n });\n activeUserAction = userAction;\n return activeUserAction;\n } else {\n internalLogger.error('Attempted to create a new user action while one is already running. This is not possible.');\n return undefined;\n }\n };\n\n const getActiveUserAction: UserActionsAPI['getActiveUserAction'] = (): UserActionInterface | undefined => {\n return activeUserAction;\n };\n\n return {\n startUserAction,\n getActiveUserAction,\n };\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var testUtils_1 = require("../../testUtils");
|
|
7
|
+
var apiTestHelpers_1 = require("../apiTestHelpers");
|
|
8
|
+
var initialize_1 = require("./initialize");
|
|
9
|
+
var userAction_1 = __importDefault(require("./userAction"));
|
|
10
|
+
jest.mock('../../sdk/registerFaro', function () { return ({
|
|
11
|
+
faro: {
|
|
12
|
+
api: {
|
|
13
|
+
pushEvent: jest.fn(),
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
}); });
|
|
17
|
+
describe('initializeUserActionsAPI', function () {
|
|
18
|
+
var transports;
|
|
19
|
+
var config;
|
|
20
|
+
var internalLogger;
|
|
21
|
+
var api;
|
|
22
|
+
beforeEach(function () {
|
|
23
|
+
transports = apiTestHelpers_1.mockTransports;
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
25
|
+
config = (0, testUtils_1.mockConfig)({
|
|
26
|
+
trackUserActionsExcludeItem: jest.fn(),
|
|
27
|
+
});
|
|
28
|
+
internalLogger = testUtils_1.mockInternalLogger;
|
|
29
|
+
api = (0, initialize_1.initializeUserActionsAPI)({ transports: transports, config: config, internalLogger: internalLogger });
|
|
30
|
+
});
|
|
31
|
+
it('getActiveUserAction returns undefined before any action is created', function () {
|
|
32
|
+
expect(api.getActiveUserAction()).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
it('startUserAction returns a new UserAction when none exists', function () {
|
|
35
|
+
var action = api.startUserAction('first');
|
|
36
|
+
expect(action).toBeInstanceOf(userAction_1.default);
|
|
37
|
+
expect(api.getActiveUserAction()).toBe(action);
|
|
38
|
+
});
|
|
39
|
+
it('subsequent startUserAction calls will return undefined as long as there is an action running', function () {
|
|
40
|
+
api.startUserAction('A');
|
|
41
|
+
var a2 = api.startUserAction('B');
|
|
42
|
+
expect(a2).not.toBeDefined();
|
|
43
|
+
});
|
|
44
|
+
it('create an action while one is halted will result action not getting created', function () {
|
|
45
|
+
var a1 = api.startUserAction('A');
|
|
46
|
+
expect(a1).toBeDefined();
|
|
47
|
+
a1 === null || a1 === void 0 ? void 0 : a1.halt();
|
|
48
|
+
var a2 = api.startUserAction('B');
|
|
49
|
+
expect(a2).not.toBeDefined();
|
|
50
|
+
});
|
|
51
|
+
it('getActiveUserAction returns undefined if the action is ended', function () {
|
|
52
|
+
var action = api.startUserAction('first');
|
|
53
|
+
action === null || action === void 0 ? void 0 : action.end();
|
|
54
|
+
expect(api.getActiveUserAction()).toBeUndefined();
|
|
55
|
+
});
|
|
56
|
+
it('getActiveUserAction returns undefined if the action is cancelled', function () {
|
|
57
|
+
var action = api.startUserAction('first');
|
|
58
|
+
action === null || action === void 0 ? void 0 : action.cancel();
|
|
59
|
+
expect(api.getActiveUserAction()).toBeUndefined();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=initialize.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.test.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/initialize.test.ts"],"names":[],"mappings":";;;;;AAAA,6CAAiE;AACjE,oDAAmD;AAEnD,2CAAwD;AAExD,4DAAsC;AAEtC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,cAAM,OAAA,CAAC;IACzC,IAAI,EAAE;QACJ,GAAG,EAAE;YACH,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;SACrB;KACF;CACF,CAAC,EANwC,CAMxC,CAAC,CAAC;AAEJ,QAAQ,CAAC,0BAA0B,EAAE;IACnC,IAAI,UAAU,CAAC;IACf,IAAI,MAAM,CAAC;IACX,IAAI,cAAc,CAAC;IACnB,IAAI,GAAmB,CAAC;IAExB,UAAU,CAAC;QACT,UAAU,GAAG,+BAAc,CAAC;QAC5B,oEAAoE;QACpE,MAAM,GAAG,IAAA,sBAAU,EAAC;YAClB,2BAA2B,EAAE,IAAI,CAAC,EAAE,EAAE;SACvC,CAAC,CAAC;QACH,cAAc,GAAG,8BAAkB,CAAC;QACpC,GAAG,GAAG,IAAA,qCAAwB,EAAC,EAAE,UAAU,YAAA,EAAE,MAAM,QAAA,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE;QACvE,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE;QAC9D,IAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,oBAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8FAA8F,EAAE;QACjG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACzB,IAAM,EAAE,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE;QAChF,IAAM,EAAE,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACzB,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,IAAI,EAAE,CAAC;QACX,IAAM,EAAE,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE;QACjE,IAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE;QACrE,IAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { mockConfig, mockInternalLogger } from '../../testUtils';\nimport { mockTransports } from '../apiTestHelpers';\n\nimport { initializeUserActionsAPI } from './initialize';\nimport { UserActionsAPI } from './types';\nimport UserAction from './userAction';\n\njest.mock('../../sdk/registerFaro', () => ({\n faro: {\n api: {\n pushEvent: jest.fn(),\n },\n },\n}));\n\ndescribe('initializeUserActionsAPI', () => {\n let transports;\n let config;\n let internalLogger;\n let api: UserActionsAPI;\n\n beforeEach(() => {\n transports = mockTransports;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n config = mockConfig({\n trackUserActionsExcludeItem: jest.fn(),\n });\n internalLogger = mockInternalLogger;\n api = initializeUserActionsAPI({ transports, config, internalLogger });\n });\n\n it('getActiveUserAction returns undefined before any action is created', () => {\n expect(api.getActiveUserAction()).toBeUndefined();\n });\n\n it('startUserAction returns a new UserAction when none exists', () => {\n const action = api.startUserAction('first');\n expect(action).toBeInstanceOf(UserAction);\n expect(api.getActiveUserAction()).toBe(action);\n });\n\n it('subsequent startUserAction calls will return undefined as long as there is an action running', () => {\n api.startUserAction('A');\n const a2 = api.startUserAction('B');\n expect(a2).not.toBeDefined();\n });\n\n it('create an action while one is halted will result action not getting created', () => {\n const a1 = api.startUserAction('A');\n expect(a1).toBeDefined();\n a1?.halt();\n const a2 = api.startUserAction('B');\n expect(a2).not.toBeDefined();\n });\n\n it('getActiveUserAction returns undefined if the action is ended', () => {\n const action = api.startUserAction('first');\n action?.end();\n expect(api.getActiveUserAction()).toBeUndefined();\n });\n\n it('getActiveUserAction returns undefined if the action is cancelled', () => {\n const action = api.startUserAction('first');\n action?.cancel();\n expect(api.getActiveUserAction()).toBeUndefined();\n });\n});\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserActionState = void 0;
|
|
4
|
+
var UserActionState;
|
|
5
|
+
(function (UserActionState) {
|
|
6
|
+
UserActionState[UserActionState["Started"] = 0] = "Started";
|
|
7
|
+
UserActionState[UserActionState["Halted"] = 1] = "Halted";
|
|
8
|
+
UserActionState[UserActionState["Cancelled"] = 2] = "Cancelled";
|
|
9
|
+
UserActionState[UserActionState["Ended"] = 3] = "Ended";
|
|
10
|
+
})(UserActionState || (exports.UserActionState = UserActionState = {}));
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/types.ts"],"names":[],"mappings":";;;AAIA,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,2DAAO,CAAA;IACP,yDAAM,CAAA;IACN,+DAAS,CAAA;IACT,uDAAK,CAAA;AACP,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B","sourcesContent":["import { type TransportItem } from '../../transports';\n\nimport { UserActionSeverity, userActionStartByApiCallEventName } from './const';\n\nexport enum UserActionState {\n Started,\n Halted,\n Cancelled,\n Ended,\n}\n\nexport type HaltPredicate = () => boolean;\n\nexport interface UserActionInterface {\n name: string;\n parentId: string;\n\n addItem(item: TransportItem): void;\n extend(haltPredicate?: HaltPredicate): void;\n end(attributes?: Record<string, string>): void;\n halt(reason?: string): void;\n cancel(): void;\n getState(): UserActionState;\n}\n\nexport type ApiUserActionEvent = {\n name: string;\n attributes?: Record<string, string>;\n type: typeof userActionStartByApiCallEventName | string;\n};\n\nexport type EndUserActionProps = {\n userActionName: string;\n startTime: number;\n endTime: number;\n actionId: string;\n event: ApiUserActionEvent;\n attributes?: Record<string, string>;\n};\n\nexport type StartUserActionOptions = {\n triggerName?: string;\n severity?: UserActionSeverity;\n};\n\nexport interface UserActionsAPI {\n startUserAction: (\n name: string,\n attributes?: Record<string, string>,\n options?: StartUserActionOptions\n ) => UserActionInterface | undefined;\n getActiveUserAction: () => UserActionInterface | undefined;\n}\n\nexport type UserActionStart = {\n type: 'user_action_start';\n userAction: UserActionInterface;\n};\n\n// Union type\nexport type UserActionMessage = UserActionStart;\n"]}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
var registerFaro_1 = require("../../sdk/registerFaro");
|
|
30
|
+
var transports_1 = require("../../transports");
|
|
31
|
+
var utils_1 = require("../../utils");
|
|
32
|
+
var ItemBuffer_1 = require("../ItemBuffer");
|
|
33
|
+
var const_1 = require("./const");
|
|
34
|
+
var types_1 = require("./types");
|
|
35
|
+
var defaultFollowUpActionTimeRange = 100;
|
|
36
|
+
var defaultHaltTimeout = 10 * 1000;
|
|
37
|
+
var UserAction = /** @class */ (function (_super) {
|
|
38
|
+
__extends(UserAction, _super);
|
|
39
|
+
function UserAction(_a) {
|
|
40
|
+
var name = _a.name, parentId = _a.parentId, haltTimeout = _a.haltTimeout, trigger = _a.trigger, transports = _a.transports, attributes = _a.attributes, trackUserActionsExcludeItem = _a.trackUserActionsExcludeItem, _b = _a.severity, severity = _b === void 0 ? const_1.UserActionSeverity.Normal : _b;
|
|
41
|
+
var _this = _super.call(this) || this;
|
|
42
|
+
_this.name = name;
|
|
43
|
+
_this.attributes = attributes;
|
|
44
|
+
_this.id = (0, utils_1.genShortID)();
|
|
45
|
+
_this.trigger = trigger;
|
|
46
|
+
_this.cancelTimeout = defaultFollowUpActionTimeRange;
|
|
47
|
+
_this.haltTimeout = haltTimeout !== null && haltTimeout !== void 0 ? haltTimeout : defaultHaltTimeout;
|
|
48
|
+
_this.parentId = parentId !== null && parentId !== void 0 ? parentId : _this.id;
|
|
49
|
+
_this.trackUserActionsExcludeItem = trackUserActionsExcludeItem;
|
|
50
|
+
_this.severity = severity;
|
|
51
|
+
_this._itemBuffer = new ItemBuffer_1.ItemBuffer();
|
|
52
|
+
_this._transports = transports;
|
|
53
|
+
_this._haltTimeoutId = -1;
|
|
54
|
+
_this._state = types_1.UserActionState.Started;
|
|
55
|
+
_this._isValid = false;
|
|
56
|
+
_this._start();
|
|
57
|
+
return _this;
|
|
58
|
+
}
|
|
59
|
+
UserAction.prototype.addItem = function (item) {
|
|
60
|
+
this._itemBuffer.addItem(item);
|
|
61
|
+
};
|
|
62
|
+
UserAction.prototype.extend = function (haltPredicate) {
|
|
63
|
+
if (!this._isValid) {
|
|
64
|
+
this._isValid = true;
|
|
65
|
+
}
|
|
66
|
+
this._setFollowupActionTimeout(haltPredicate);
|
|
67
|
+
};
|
|
68
|
+
UserAction.prototype._setFollowupActionTimeout = function (haltPredicate) {
|
|
69
|
+
var _this = this;
|
|
70
|
+
this._timeoutId = startTimeout(this._timeoutId, function () {
|
|
71
|
+
if (_this._state === types_1.UserActionState.Started && (haltPredicate === null || haltPredicate === void 0 ? void 0 : haltPredicate())) {
|
|
72
|
+
_this.halt();
|
|
73
|
+
}
|
|
74
|
+
else if (_this._isValid) {
|
|
75
|
+
_this.end();
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
_this.cancel();
|
|
79
|
+
}
|
|
80
|
+
}, defaultFollowUpActionTimeRange);
|
|
81
|
+
};
|
|
82
|
+
UserAction.prototype._start = function () {
|
|
83
|
+
this._state = types_1.UserActionState.Started;
|
|
84
|
+
if (this._state === types_1.UserActionState.Started) {
|
|
85
|
+
this.startTime = (0, utils_1.dateNow)();
|
|
86
|
+
}
|
|
87
|
+
this._setFollowupActionTimeout();
|
|
88
|
+
};
|
|
89
|
+
UserAction.prototype.halt = function () {
|
|
90
|
+
var _this = this;
|
|
91
|
+
if (this._state !== types_1.UserActionState.Started) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this._state = types_1.UserActionState.Halted;
|
|
95
|
+
// If the halt timeout fires, we end the user action as
|
|
96
|
+
// it is still a valid one.
|
|
97
|
+
this._haltTimeoutId = setTimeout(function () {
|
|
98
|
+
_this.end();
|
|
99
|
+
}, this.haltTimeout);
|
|
100
|
+
this.notify(this._state);
|
|
101
|
+
};
|
|
102
|
+
UserAction.prototype.cancel = function () {
|
|
103
|
+
if (this._state === types_1.UserActionState.Started) {
|
|
104
|
+
// Empty the buffer
|
|
105
|
+
this._itemBuffer.flushBuffer();
|
|
106
|
+
}
|
|
107
|
+
this._state = types_1.UserActionState.Cancelled;
|
|
108
|
+
this.notify(this._state);
|
|
109
|
+
};
|
|
110
|
+
UserAction.prototype.end = function () {
|
|
111
|
+
var _this = this;
|
|
112
|
+
if (this._state === types_1.UserActionState.Cancelled) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Make sure we don't end the user action twice
|
|
116
|
+
clearTimeout(this._haltTimeoutId);
|
|
117
|
+
clearTimeout(this._timeoutId);
|
|
118
|
+
var endTime = (0, utils_1.dateNow)();
|
|
119
|
+
var duration = endTime - this.startTime;
|
|
120
|
+
this._state = types_1.UserActionState.Ended;
|
|
121
|
+
this._itemBuffer.flushBuffer(function (item) {
|
|
122
|
+
if (isExcludeFromUserAction(item, _this.trackUserActionsExcludeItem)) {
|
|
123
|
+
_this._transports.execute(item);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
var userActionItem = __assign(__assign({}, item), { payload: __assign(__assign({}, item.payload), { action: {
|
|
127
|
+
parentId: _this.id,
|
|
128
|
+
name: _this.name,
|
|
129
|
+
} }) });
|
|
130
|
+
_this._transports.execute(userActionItem);
|
|
131
|
+
});
|
|
132
|
+
this._state = types_1.UserActionState.Ended;
|
|
133
|
+
this.notify(this._state);
|
|
134
|
+
registerFaro_1.faro.api.pushEvent(this.name, __assign({ userActionStartTime: this.startTime.toString(), userActionEndTime: endTime.toString(), userActionDuration: duration.toString(), userActionTrigger: this.trigger, userActionSeverity: this.severity }, (0, utils_1.stringifyObjectValues)(this.attributes)), undefined, {
|
|
135
|
+
timestampOverwriteMs: this.startTime,
|
|
136
|
+
customPayloadTransformer: function (payload) {
|
|
137
|
+
payload.action = {
|
|
138
|
+
id: _this.id,
|
|
139
|
+
name: _this.name,
|
|
140
|
+
};
|
|
141
|
+
return payload;
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
UserAction.prototype.getState = function () {
|
|
146
|
+
return this._state;
|
|
147
|
+
};
|
|
148
|
+
return UserAction;
|
|
149
|
+
}(utils_1.Observable));
|
|
150
|
+
exports.default = UserAction;
|
|
151
|
+
function isExcludeFromUserAction(item, trackUserActionsExcludeItem) {
|
|
152
|
+
return ((trackUserActionsExcludeItem === null || trackUserActionsExcludeItem === void 0 ? void 0 : trackUserActionsExcludeItem(item)) ||
|
|
153
|
+
(item.type === transports_1.TransportItemType.MEASUREMENT && item.payload.type === 'web-vitals'));
|
|
154
|
+
}
|
|
155
|
+
function startTimeout(timeoutId, cb, delay) {
|
|
156
|
+
if (timeoutId) {
|
|
157
|
+
clearTimeout(timeoutId);
|
|
158
|
+
}
|
|
159
|
+
//@ts-expect-error for some reason vscode is using the node types
|
|
160
|
+
timeoutId = setTimeout(function () {
|
|
161
|
+
cb();
|
|
162
|
+
}, delay);
|
|
163
|
+
return timeoutId;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=userAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userAction.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/userAction.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Config } from '../../config';\nimport { faro } from '../../sdk/registerFaro';\nimport { type TransportItem, TransportItemType, type Transports } from '../../transports';\nimport { dateNow, genShortID, Observable, stringifyObjectValues } from '../../utils';\nimport { ItemBuffer } from '../ItemBuffer';\nimport { type MeasurementEvent } from '../measurements';\nimport { type APIEvent } from '../types';\n\nimport { UserActionSeverity } from './const';\nimport { type HaltPredicate, type UserActionInterface, UserActionState } from './types';\n\nconst defaultFollowUpActionTimeRange = 100;\nconst defaultHaltTimeout = 10 * 1000;\n\nexport default class UserAction extends Observable implements UserActionInterface {\n name: string;\n id: string;\n attributes?: Record<string, string>;\n parentId: string;\n trigger: string;\n severity: UserActionSeverity;\n startTime?: number;\n trackUserActionsExcludeItem?: (item: TransportItem<APIEvent>) => boolean;\n cancelTimeout: number;\n haltTimeout: number;\n\n private _state: UserActionState;\n private _timeoutId?: number;\n private _itemBuffer: ItemBuffer<TransportItem>;\n private _transports: Transports;\n private _haltTimeoutId: any;\n private _isValid: boolean;\n\n constructor({\n name,\n parentId,\n haltTimeout,\n trigger,\n transports,\n attributes,\n trackUserActionsExcludeItem,\n severity = UserActionSeverity.Normal,\n }: {\n name: string;\n transports: Transports;\n parentId?: string;\n trigger: string;\n attributes?: Record<string, string>;\n haltTimeout?: number;\n trackUserActionsExcludeItem?: (item: TransportItem<APIEvent>) => boolean;\n severity?: UserActionSeverity;\n }) {\n super();\n this.name = name;\n this.attributes = attributes;\n this.id = genShortID();\n this.trigger = trigger;\n this.cancelTimeout = defaultFollowUpActionTimeRange;\n this.haltTimeout = haltTimeout ?? defaultHaltTimeout;\n this.parentId = parentId ?? this.id;\n this.trackUserActionsExcludeItem = trackUserActionsExcludeItem;\n this.severity = severity;\n\n this._itemBuffer = new ItemBuffer<TransportItem>();\n this._transports = transports;\n this._haltTimeoutId = -1;\n this._state = UserActionState.Started;\n this._isValid = false;\n this._start();\n }\n\n addItem(item: TransportItem) {\n this._itemBuffer.addItem(item);\n }\n\n extend(haltPredicate?: HaltPredicate) {\n if (!this._isValid) {\n this._isValid = true;\n }\n this._setFollowupActionTimeout(haltPredicate);\n }\n\n private _setFollowupActionTimeout(haltPredicate?: HaltPredicate) {\n this._timeoutId = startTimeout(\n this._timeoutId,\n () => {\n if (this._state === UserActionState.Started && haltPredicate?.()) {\n this.halt();\n } else if (this._isValid) {\n this.end();\n } else {\n this.cancel();\n }\n },\n defaultFollowUpActionTimeRange\n );\n }\n\n private _start(): void {\n this._state = UserActionState.Started;\n if (this._state === UserActionState.Started) {\n this.startTime = dateNow();\n }\n this._setFollowupActionTimeout();\n }\n\n halt() {\n if (this._state !== UserActionState.Started) {\n return;\n }\n this._state = UserActionState.Halted;\n\n // If the halt timeout fires, we end the user action as\n // it is still a valid one.\n this._haltTimeoutId = setTimeout(() => {\n this.end();\n }, this.haltTimeout);\n this.notify(this._state);\n }\n\n cancel() {\n if (this._state === UserActionState.Started) {\n // Empty the buffer\n this._itemBuffer.flushBuffer();\n }\n\n this._state = UserActionState.Cancelled;\n this.notify(this._state);\n }\n\n end() {\n if (this._state === UserActionState.Cancelled) {\n return;\n }\n\n // Make sure we don't end the user action twice\n clearTimeout(this._haltTimeoutId);\n clearTimeout(this._timeoutId);\n\n const endTime = dateNow();\n const duration = endTime - this.startTime!;\n this._state = UserActionState.Ended;\n this._itemBuffer.flushBuffer((item) => {\n if (isExcludeFromUserAction(item, this.trackUserActionsExcludeItem)) {\n this._transports.execute(item);\n return;\n }\n\n const userActionItem = {\n ...item,\n payload: {\n ...item.payload,\n action: {\n parentId: this.id,\n name: this.name,\n },\n },\n } as TransportItem;\n\n this._transports.execute(userActionItem);\n });\n\n this._state = UserActionState.Ended;\n this.notify(this._state);\n\n faro.api.pushEvent(\n this.name,\n {\n userActionStartTime: this.startTime!.toString(),\n userActionEndTime: endTime.toString(),\n userActionDuration: duration.toString(),\n userActionTrigger: this.trigger!,\n userActionSeverity: this.severity,\n ...stringifyObjectValues(this.attributes),\n },\n undefined,\n {\n timestampOverwriteMs: this.startTime,\n customPayloadTransformer: (payload) => {\n payload.action = {\n id: this.id,\n name: this.name,\n };\n\n return payload;\n },\n }\n );\n }\n\n getState(): UserActionState {\n return this._state;\n }\n}\n\nfunction isExcludeFromUserAction(\n item: TransportItem<APIEvent>,\n trackUserActionsExcludeItem: Config['trackUserActionsExcludeItem']\n) {\n return (\n trackUserActionsExcludeItem?.(item) ||\n (item.type === TransportItemType.MEASUREMENT && (item.payload as MeasurementEvent).type === 'web-vitals')\n );\n}\n\nfunction startTimeout(timeoutId: number | undefined, cb: () => void, delay: number) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n //@ts-expect-error for some reason vscode is using the node types\n timeoutId = setTimeout(() => {\n cb();\n }, delay);\n\n return timeoutId;\n}\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var globals_1 = require("@jest/globals");
|
|
7
|
+
var __1 = require("../..");
|
|
8
|
+
var apiTestHelpers_1 = require("../apiTestHelpers");
|
|
9
|
+
var ItemBuffer_1 = require("../ItemBuffer");
|
|
10
|
+
var types_1 = require("./types");
|
|
11
|
+
var userAction_1 = __importDefault(require("./userAction"));
|
|
12
|
+
globals_1.jest.useFakeTimers();
|
|
13
|
+
globals_1.jest.mock('../../sdk/registerFaro', function () { return ({
|
|
14
|
+
faro: {
|
|
15
|
+
api: {
|
|
16
|
+
pushEvent: globals_1.jest.fn(),
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
}); });
|
|
20
|
+
describe('UserAction', function () {
|
|
21
|
+
var transports;
|
|
22
|
+
beforeEach(function () {
|
|
23
|
+
transports = apiTestHelpers_1.mockTransports;
|
|
24
|
+
globals_1.jest.spyOn(ItemBuffer_1.ItemBuffer.prototype, 'flushBuffer').mockImplementation(function (cb) {
|
|
25
|
+
if (cb) {
|
|
26
|
+
var dummyItem = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
|
|
27
|
+
cb(dummyItem);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
afterEach(function () {
|
|
32
|
+
globals_1.jest.clearAllMocks();
|
|
33
|
+
globals_1.jest.clearAllTimers();
|
|
34
|
+
});
|
|
35
|
+
it('initializes in Started state and sets startTime', function () {
|
|
36
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
37
|
+
expect(ua.getState()).toBe(types_1.UserActionState.Started);
|
|
38
|
+
expect(typeof ua.startTime).toBe('number');
|
|
39
|
+
expect(ua.startTime > 0).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
it('cancel() flushes the buffer and goes to Cancelled', function () {
|
|
42
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
43
|
+
ua.cancel();
|
|
44
|
+
expect(ua.getState()).toBe(types_1.UserActionState.Cancelled);
|
|
45
|
+
expect(ItemBuffer_1.ItemBuffer.prototype.flushBuffer).toHaveBeenCalled();
|
|
46
|
+
expect(transports.execute).not.toHaveBeenCalled();
|
|
47
|
+
});
|
|
48
|
+
it('halt() is no-op if user action is not started', function () {
|
|
49
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
50
|
+
ua.cancel();
|
|
51
|
+
ua.halt();
|
|
52
|
+
expect(ua.getState()).toBe(types_1.UserActionState.Cancelled);
|
|
53
|
+
});
|
|
54
|
+
it('halt() will end() after halt timeoute time', function () {
|
|
55
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
56
|
+
ua.extend(function () { return true; });
|
|
57
|
+
globals_1.jest.advanceTimersByTime(ua.cancelTimeout);
|
|
58
|
+
expect(ua.getState()).toBe(types_1.UserActionState.Halted);
|
|
59
|
+
globals_1.jest.advanceTimersByTime(ua.haltTimeout);
|
|
60
|
+
expect(ua.getState()).toBe(types_1.UserActionState.Ended);
|
|
61
|
+
});
|
|
62
|
+
it('end() will not fire if action is cancelled', function () {
|
|
63
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
64
|
+
ua.cancel();
|
|
65
|
+
ua.end();
|
|
66
|
+
expect(ua.getState()).toBe(types_1.UserActionState.Cancelled);
|
|
67
|
+
});
|
|
68
|
+
it('end() will send items with action payload', function () {
|
|
69
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
70
|
+
ua.end();
|
|
71
|
+
expect(ua.getState()).toBe(types_1.UserActionState.Ended);
|
|
72
|
+
expect(transports.execute).not.toHaveBeenCalledWith('koko');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=userAction.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userAction.test.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/userAction.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { jest } from '@jest/globals';\n\nimport { type TransportItem, TransportItemType, Transports } from '../..';\nimport { mockTransports } from '../apiTestHelpers';\nimport { ItemBuffer } from '../ItemBuffer';\n\nimport { UserActionState } from './types';\nimport UserAction from './userAction';\n\njest.useFakeTimers();\njest.mock('../../sdk/registerFaro', () => ({\n faro: {\n api: {\n pushEvent: jest.fn(),\n },\n },\n}));\n\ndescribe('UserAction', () => {\n let transports: Transports;\n\n beforeEach(() => {\n transports = mockTransports;\n\n jest.spyOn(ItemBuffer.prototype, 'flushBuffer').mockImplementation((cb?: (item: TransportItem) => void) => {\n if (cb) {\n const dummyItem = { type: TransportItemType.EVENT, payload: {}, meta: {} };\n cb(dummyItem);\n }\n });\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n jest.clearAllTimers();\n });\n\n it('initializes in Started state and sets startTime', () => {\n const ua = new UserAction({ name: 'foo', transports, trigger: 'foo' });\n expect(ua.getState()).toBe(UserActionState.Started);\n expect(typeof ua.startTime).toBe('number');\n expect(ua.startTime! > 0).toBe(true);\n });\n\n it('cancel() flushes the buffer and goes to Cancelled', () => {\n const ua = new UserAction({ name: 'foo', transports, trigger: 'foo' });\n ua.cancel();\n\n expect(ua.getState()).toBe(UserActionState.Cancelled);\n expect(ItemBuffer.prototype.flushBuffer).toHaveBeenCalled();\n expect(transports.execute).not.toHaveBeenCalled();\n });\n\n it('halt() is no-op if user action is not started', () => {\n const ua = new UserAction({ name: 'foo', transports, trigger: 'foo' });\n ua.cancel();\n ua.halt();\n\n expect(ua.getState()).toBe(UserActionState.Cancelled);\n });\n\n it('halt() will end() after halt timeoute time', () => {\n const ua = new UserAction({ name: 'foo', transports, trigger: 'foo' });\n ua.extend(() => true);\n jest.advanceTimersByTime(ua.cancelTimeout);\n expect(ua.getState()).toBe(UserActionState.Halted);\n jest.advanceTimersByTime(ua.haltTimeout);\n expect(ua.getState()).toBe(UserActionState.Ended);\n });\n\n it('end() will not fire if action is cancelled', () => {\n const ua = new UserAction({ name: 'foo', transports, trigger: 'foo' });\n ua.cancel();\n ua.end();\n expect(ua.getState()).toBe(UserActionState.Cancelled);\n });\n\n it('end() will send items with action payload', () => {\n const ua = new UserAction({ name: 'foo', transports, trigger: 'foo' });\n ua.end();\n expect(ua.getState()).toBe(UserActionState.Ended);\n expect(transports.execute).not.toHaveBeenCalledWith('koko');\n });\n});\n"]}
|
|
@@ -14,17 +14,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.isNull = exports.isMapDefined = exports.isMap = exports.isInt = exports.isInstanceOf = exports.isFunction = exports.isEventDefined = exports.isEvent = exports.isErrorEvent = exports.isErrorDefined = exports.isError = exports.isElementDefined = exports.isElement = exports.isDomException = exports.isDomError = exports.isBoolean = exports.isArray = exports.getCurrentTimestamp = exports.genShortID = exports.defaultLogLevel = exports.deepEqual = exports.createPromiseBuffer = exports.allLogLevels = exports.defaultUnpatchedConsole = exports.transportItemTypeToBodyKey = exports.TransportItemType = exports.getTransportBody = exports.BaseTransport = exports.setInternalFaroOnGlobalObject = exports.isInternalFaroOnGlobalObject = exports.internalGlobalObjectKey = exports.getInternalFaroFromGlobalObject = exports.faro = exports.InternalLoggerLevel = exports.defaultInternalLoggerLevel = exports.createInternalLogger = exports.BaseInstrumentation = exports.defaultGlobalObjectKey = exports.defaultBatchingConfig = exports.initializeFaro = exports.globalObject = exports.BaseExtension = exports.
|
|
18
|
-
exports.unknownString = exports.VERSION = exports.Observable = exports.stringifyObjectValues = exports.stringifyExternalJson = exports.getCircularDependencyReplacer = exports.isEmpty = exports.dateNow = exports.noop = exports.LogLevel = exports.isUndefined = exports.isTypeof = exports.isToString = exports.isThenable = exports.isSyntheticEvent = exports.isSymbol = exports.isString = exports.isRegExp = exports.isPrimitive =
|
|
17
|
+
exports.isObject = exports.isNumber = exports.isNull = exports.isMapDefined = exports.isMap = exports.isInt = exports.isInstanceOf = exports.isFunction = exports.isEventDefined = exports.isEvent = exports.isErrorEvent = exports.isErrorDefined = exports.isError = exports.isElementDefined = exports.isElement = exports.isDomException = exports.isDomError = exports.isBoolean = exports.isArray = exports.getCurrentTimestamp = exports.genShortID = exports.defaultLogLevel = exports.deepEqual = exports.createPromiseBuffer = exports.allLogLevels = exports.defaultUnpatchedConsole = exports.transportItemTypeToBodyKey = exports.TransportItemType = exports.getTransportBody = exports.BaseTransport = exports.setInternalFaroOnGlobalObject = exports.isInternalFaroOnGlobalObject = exports.internalGlobalObjectKey = exports.getInternalFaroFromGlobalObject = exports.faro = exports.InternalLoggerLevel = exports.defaultInternalLoggerLevel = exports.createInternalLogger = exports.BaseInstrumentation = exports.defaultGlobalObjectKey = exports.defaultBatchingConfig = exports.initializeFaro = exports.globalObject = exports.BaseExtension = exports.userActionsMessageBus = exports.UserActionState = exports.UserActionSeverity = exports.defaultErrorArgsSerializer = exports.defaultLogArgsSerializer = exports.defaultExceptionType = void 0;
|
|
18
|
+
exports.unknownString = exports.VERSION = exports.Observable = exports.stringifyObjectValues = exports.stringifyExternalJson = exports.getCircularDependencyReplacer = exports.isEmpty = exports.dateNow = exports.noop = exports.LogLevel = exports.isUndefined = exports.isTypeof = exports.isToString = exports.isThenable = exports.isSyntheticEvent = exports.isSymbol = exports.isString = exports.isRegExp = exports.isPrimitive = void 0;
|
|
19
19
|
var api_1 = require("./api");
|
|
20
20
|
Object.defineProperty(exports, "defaultExceptionType", { enumerable: true, get: function () { return api_1.defaultExceptionType; } });
|
|
21
21
|
Object.defineProperty(exports, "defaultLogArgsSerializer", { enumerable: true, get: function () { return api_1.defaultLogArgsSerializer; } });
|
|
22
22
|
Object.defineProperty(exports, "defaultErrorArgsSerializer", { enumerable: true, get: function () { return api_1.defaultErrorArgsSerializer; } });
|
|
23
|
-
Object.defineProperty(exports, "
|
|
24
|
-
Object.defineProperty(exports, "
|
|
25
|
-
Object.defineProperty(exports, "
|
|
26
|
-
Object.defineProperty(exports, "USER_ACTION_START", { enumerable: true, get: function () { return api_1.USER_ACTION_START; } });
|
|
27
|
-
Object.defineProperty(exports, "USER_ACTION_HALT", { enumerable: true, get: function () { return api_1.USER_ACTION_HALT; } });
|
|
23
|
+
Object.defineProperty(exports, "UserActionSeverity", { enumerable: true, get: function () { return api_1.UserActionSeverity; } });
|
|
24
|
+
Object.defineProperty(exports, "UserActionState", { enumerable: true, get: function () { return api_1.UserActionState; } });
|
|
25
|
+
Object.defineProperty(exports, "userActionsMessageBus", { enumerable: true, get: function () { return api_1.userActionsMessageBus; } });
|
|
28
26
|
var extensions_1 = require("./extensions");
|
|
29
27
|
Object.defineProperty(exports, "BaseExtension", { enumerable: true, get: function () { return extensions_1.BaseExtension; } });
|
|
30
28
|
var globalObject_1 = require("./globalObject");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,6BAOe;AANb,2GAAA,oBAAoB,OAAA;AACpB,+GAAA,wBAAwB,OAAA;AACxB,iHAAA,0BAA0B,OAAA;AAC1B,yGAAA,kBAAkB,OAAA;AAClB,sGAAA,eAAe,OAAA;AACf,4GAAA,qBAAqB,OAAA;AAkCvB,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AAGtB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAGrB,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,mCAAyE;AAAhE,+GAAA,qBAAqB,OAAA;AAAE,gHAAA,sBAAsB,OAAA;AAGtD,uDAAyD;AAAhD,uHAAA,mBAAmB,OAAA;AAG5B,mDAAyG;AAAhG,sHAAA,oBAAoB,OAAA;AAAE,4HAAA,0BAA0B,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAoB9E,6BAMe;AALb,2FAAA,IAAI,OAAA;AACJ,sHAAA,+BAA+B,OAAA;AAC/B,8GAAA,uBAAuB,OAAA;AACvB,mHAAA,4BAA4B,OAAA;AAC5B,oHAAA,6BAA6B,OAAA;AAI/B,6CAA2B;AAE3B,2CAA8G;AAArG,2GAAA,aAAa,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AAAE,wHAAA,0BAA0B,OAAA;AAWvF,uDAA6D;AAApD,2HAAA,uBAAuB,OAAA;AAGhC,iCA2CiB;AA1Cf,qGAAA,YAAY,OAAA;AACZ,4GAAA,mBAAmB,OAAA;AACnB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA;AACf,mGAAA,UAAU,OAAA;AACV,4GAAA,mBAAmB,OAAA;AACnB,gGAAA,OAAO,OAAA;AACP,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AACd,kGAAA,SAAS,OAAA;AACT,yGAAA,gBAAgB,OAAA;AAChB,gGAAA,OAAO,OAAA;AACP,uGAAA,cAAc,OAAA;AACd,qGAAA,YAAY,OAAA;AACZ,gGAAA,OAAO,OAAA;AACP,uGAAA,cAAc,OAAA;AACd,mGAAA,UAAU,OAAA;AACV,qGAAA,YAAY,OAAA;AACZ,8FAAA,KAAK,OAAA;AACL,8FAAA,KAAK,OAAA;AACL,qGAAA,YAAY,OAAA;AACZ,+FAAA,MAAM,OAAA;AACN,iGAAA,QAAQ,OAAA;AACR,iGAAA,QAAQ,OAAA;AACR,oGAAA,WAAW,OAAA;AACX,iGAAA,QAAQ,OAAA;AACR,iGAAA,QAAQ,OAAA;AACR,iGAAA,QAAQ,OAAA;AACR,yGAAA,gBAAgB,OAAA;AAChB,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,iGAAA,QAAQ,OAAA;AACR,oGAAA,WAAW,OAAA;AACX,iGAAA,QAAQ,OAAA;AACR,6FAAA,IAAI,OAAA;AACJ,gGAAA,OAAO,OAAA;AACP,gGAAA,OAAO,OAAA;AACP,sHAAA,6BAA6B,OAAA;AAC7B,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AACrB,mGAAA,UAAU,OAAA;AAcZ,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,mCAAyC;AAAhC,uGAAA,aAAa,OAAA","sourcesContent":["export {\n defaultExceptionType,\n defaultLogArgsSerializer,\n defaultErrorArgsSerializer,\n UserActionSeverity,\n UserActionState,\n userActionsMessageBus,\n} from './api';\nexport type {\n API,\n APIEvent,\n EventAttributes,\n EventEvent,\n EventsAPI,\n ExceptionEvent,\n ExceptionEventExtended,\n ExceptionStackFrame,\n ExceptionsAPI,\n ExtendedError,\n LogArgsSerializer,\n LogContext,\n LogEvent,\n LogsAPI,\n MeasurementEvent,\n MeasurementsAPI,\n MetaAPI,\n OTELApi,\n PushErrorOptions,\n PushEventOptions,\n PushLogOptions,\n PushMeasurementOptions,\n Stacktrace,\n StacktraceParser,\n TraceContext,\n TraceEvent,\n TracesAPI,\n UserAction,\n UserActionInterface,\n} from './api';\n\nexport { BaseExtension } from './extensions';\nexport type { Extension } from './extensions';\n\nexport { globalObject } from './globalObject';\nexport type { GlobalObject } from './globalObject';\n\nexport { initializeFaro } from './initialize';\n\nexport { defaultBatchingConfig, defaultGlobalObjectKey } from './config';\nexport type { Config, Patterns } from './config';\n\nexport { BaseInstrumentation } from './instrumentations';\nexport type { Instrumentation, Instrumentations } from './instrumentations';\n\nexport { createInternalLogger, defaultInternalLoggerLevel, InternalLoggerLevel } from './internalLogger';\nexport type { InternalLogger } from './internalLogger';\n\nexport type {\n Meta,\n MetaApp,\n MetaAttributes,\n MetaBrowser,\n MetaGetter,\n MetaItem,\n MetaPage,\n Metas,\n MetaSDK,\n MetaSDKIntegration,\n MetaSession,\n MetaUser,\n MetaView,\n MetaOverrides,\n} from './metas';\n\nexport {\n faro,\n getInternalFaroFromGlobalObject,\n internalGlobalObjectKey,\n isInternalFaroOnGlobalObject,\n setInternalFaroOnGlobalObject,\n} from './sdk';\nexport type { Faro } from './sdk';\n\nexport * from './semantic';\n\nexport { BaseTransport, getTransportBody, TransportItemType, transportItemTypeToBodyKey } from './transports';\nexport type {\n BeforeSendHook,\n SendFn,\n Transport,\n TransportBody,\n TransportItem,\n TransportItemPayload,\n Transports,\n} from './transports';\n\nexport { defaultUnpatchedConsole } from './unpatchedConsole';\nexport type { UnpatchedConsole } from './unpatchedConsole';\n\nexport {\n allLogLevels,\n createPromiseBuffer,\n deepEqual,\n defaultLogLevel,\n genShortID,\n getCurrentTimestamp,\n isArray,\n isBoolean,\n isDomError,\n isDomException,\n isElement,\n isElementDefined,\n isError,\n isErrorDefined,\n isErrorEvent,\n isEvent,\n isEventDefined,\n isFunction,\n isInstanceOf,\n isInt,\n isMap,\n isMapDefined,\n isNull,\n isNumber,\n isObject,\n isPrimitive,\n isRegExp,\n isString,\n isSymbol,\n isSyntheticEvent,\n isThenable,\n isToString,\n isTypeof,\n isUndefined,\n LogLevel,\n noop,\n dateNow,\n isEmpty,\n getCircularDependencyReplacer,\n stringifyExternalJson,\n stringifyObjectValues,\n Observable,\n} from './utils';\nexport type {\n BaseObject,\n BaseObjectKey,\n BaseObjectPrimitiveValue,\n BaseObjectValue,\n BufferItem,\n PromiseBuffer,\n PromiseBufferOptions,\n PromiseProducer,\n Subscription,\n} from './utils';\n\nexport { VERSION } from './version';\n\nexport { unknownString } from './consts';\n"]}
|
|
@@ -51,7 +51,7 @@ function initializeInstrumentations(unpatchedConsole, internalLogger, config, me
|
|
|
51
51
|
}
|
|
52
52
|
return null;
|
|
53
53
|
}, null);
|
|
54
|
-
if (
|
|
54
|
+
if (existingInstrumentationIndex === null) {
|
|
55
55
|
internalLogger.warn("Instrumentation \"".concat(instrumentationToRemove.name, "\" is not added"));
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../src/instrumentations/initialize.ts"],"names":[],"mappings":";;;;;;;;;;;AASA,gEA6EC;AA7ED,SAAgB,0BAA0B,CACxC,gBAAkC,EAClC,cAA8B,EAC9B,MAAc,EACd,KAAY,EACZ,UAAsB,EACtB,GAAQ;IAER,cAAc,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAEtD,IAAM,gBAAgB,GAAsB,EAAE,CAAC;IAE/C,IAAM,GAAG,GAA4B;QAAC,6BAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,wCAAsB;;QAC1D,cAAc,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEhD,mBAAmB,CAAC,OAAO,CAAC,UAAC,kBAAkB;YAC7C,cAAc,CAAC,KAAK,CAAC,mBAAW,kBAAkB,CAAC,IAAI,uBAAmB,CAAC,CAAC;YAE5E,IAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAClC,UAAC,uBAAuB,IAAK,OAAA,uBAAuB,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAxD,CAAwD,CACtF,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,cAAc,CAAC,IAAI,CAAC,0BAAmB,kBAAkB,CAAC,IAAI,sBAAmB,CAAC,CAAC;gBAEnF,OAAO;YACT,CAAC;YAED,kBAAkB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACvD,kBAAkB,CAAC,cAAc,GAAG,cAAc,CAAC;YACnD,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC;YACnC,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC;YACjC,kBAAkB,CAAC,UAAU,GAAG,UAAU,CAAC;YAC3C,kBAAkB,CAAC,GAAG,GAAG,GAAG,CAAC;YAE7B,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE1C,kBAAkB,CAAC,UAAU,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAM,MAAM,GAA+B;QAAC,kCAA2B;aAA3B,UAA2B,EAA3B,qBAA2B,EAA3B,IAA2B;YAA3B,6CAA2B;;QACrE,cAAc,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAElD,wBAAwB,CAAC,OAAO,CAAC,UAAC,uBAAuB;;YACvD,cAAc,CAAC,KAAK,CAAC,qBAAa,uBAAuB,CAAC,IAAI,uBAAmB,CAAC,CAAC;YAEnF,IAAM,4BAA4B,GAAG,gBAAgB,CAAC,MAAM,CAC1D,UAAC,GAAG,EAAE,uBAAuB,EAAE,sBAAsB;gBACnD,IAAI,GAAG,KAAK,IAAI,IAAI,uBAAuB,CAAC,IAAI,KAAK,uBAAuB,CAAC,IAAI,EAAE,CAAC;oBAClF,OAAO,sBAAsB,CAAC;gBAChC,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,EACD,IAAI,CACL,CAAC;YAEF,IAAI,
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../src/instrumentations/initialize.ts"],"names":[],"mappings":";;;;;;;;;;;AASA,gEA6EC;AA7ED,SAAgB,0BAA0B,CACxC,gBAAkC,EAClC,cAA8B,EAC9B,MAAc,EACd,KAAY,EACZ,UAAsB,EACtB,GAAQ;IAER,cAAc,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAEtD,IAAM,gBAAgB,GAAsB,EAAE,CAAC;IAE/C,IAAM,GAAG,GAA4B;QAAC,6BAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,wCAAsB;;QAC1D,cAAc,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEhD,mBAAmB,CAAC,OAAO,CAAC,UAAC,kBAAkB;YAC7C,cAAc,CAAC,KAAK,CAAC,mBAAW,kBAAkB,CAAC,IAAI,uBAAmB,CAAC,CAAC;YAE5E,IAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAClC,UAAC,uBAAuB,IAAK,OAAA,uBAAuB,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAxD,CAAwD,CACtF,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,cAAc,CAAC,IAAI,CAAC,0BAAmB,kBAAkB,CAAC,IAAI,sBAAmB,CAAC,CAAC;gBAEnF,OAAO;YACT,CAAC;YAED,kBAAkB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACvD,kBAAkB,CAAC,cAAc,GAAG,cAAc,CAAC;YACnD,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC;YACnC,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC;YACjC,kBAAkB,CAAC,UAAU,GAAG,UAAU,CAAC;YAC3C,kBAAkB,CAAC,GAAG,GAAG,GAAG,CAAC;YAE7B,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE1C,kBAAkB,CAAC,UAAU,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAM,MAAM,GAA+B;QAAC,kCAA2B;aAA3B,UAA2B,EAA3B,qBAA2B,EAA3B,IAA2B;YAA3B,6CAA2B;;QACrE,cAAc,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAElD,wBAAwB,CAAC,OAAO,CAAC,UAAC,uBAAuB;;YACvD,cAAc,CAAC,KAAK,CAAC,qBAAa,uBAAuB,CAAC,IAAI,uBAAmB,CAAC,CAAC;YAEnF,IAAM,4BAA4B,GAAG,gBAAgB,CAAC,MAAM,CAC1D,UAAC,GAAG,EAAE,uBAAuB,EAAE,sBAAsB;gBACnD,IAAI,GAAG,KAAK,IAAI,IAAI,uBAAuB,CAAC,IAAI,KAAK,uBAAuB,CAAC,IAAI,EAAE,CAAC;oBAClF,OAAO,sBAAsB,CAAC;gBAChC,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,EACD,IAAI,CACL,CAAC;YAEF,IAAI,4BAA4B,KAAK,IAAI,EAAE,CAAC;gBAC1C,cAAc,CAAC,IAAI,CAAC,4BAAoB,uBAAuB,CAAC,IAAI,oBAAgB,CAAC,CAAC;gBAEtF,OAAO;YACT,CAAC;YAED,MAAA,MAAA,gBAAgB,CAAC,4BAA4B,CAAE,EAAC,OAAO,kDAAI,CAAC;YAE5D,gBAAgB,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,KAAA;QACH,IAAI,gBAAgB;YAClB,yBAAW,gBAAgB,QAAE;QAC/B,CAAC;QACD,MAAM,QAAA;KACP,CAAC;AACJ,CAAC","sourcesContent":["import type { API } from '../api';\nimport type { Config } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { Transports } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\nimport type { Instrumentation, Instrumentations } from './types';\n\nexport function initializeInstrumentations(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n api: API\n): Instrumentations {\n internalLogger.debug('Initializing instrumentations');\n\n const instrumentations: Instrumentation[] = [];\n\n const add: Instrumentations['add'] = (...newInstrumentations) => {\n internalLogger.debug('Adding instrumentations');\n\n newInstrumentations.forEach((newInstrumentation) => {\n internalLogger.debug(`Adding \"${newInstrumentation.name}\" instrumentation`);\n\n const exists = instrumentations.some(\n (existingInstrumentation) => existingInstrumentation.name === newInstrumentation.name\n );\n\n if (exists) {\n internalLogger.warn(`Instrumentation ${newInstrumentation.name} is already added`);\n\n return;\n }\n\n newInstrumentation.unpatchedConsole = unpatchedConsole;\n newInstrumentation.internalLogger = internalLogger;\n newInstrumentation.config = config;\n newInstrumentation.metas = metas;\n newInstrumentation.transports = transports;\n newInstrumentation.api = api;\n\n instrumentations.push(newInstrumentation);\n\n newInstrumentation.initialize();\n });\n };\n\n const remove: Instrumentations['remove'] = (...instrumentationsToRemove) => {\n internalLogger.debug('Removing instrumentations');\n\n instrumentationsToRemove.forEach((instrumentationToRemove) => {\n internalLogger.debug(`Removing \"${instrumentationToRemove.name}\" instrumentation`);\n\n const existingInstrumentationIndex = instrumentations.reduce<number | null>(\n (acc, existingInstrumentation, existingTransportIndex) => {\n if (acc === null && existingInstrumentation.name === instrumentationToRemove.name) {\n return existingTransportIndex;\n }\n\n return null;\n },\n null\n );\n\n if (existingInstrumentationIndex === null) {\n internalLogger.warn(`Instrumentation \"${instrumentationToRemove.name}\" is not added`);\n\n return;\n }\n\n instrumentations[existingInstrumentationIndex]!.destroy?.();\n\n instrumentations.splice(existingInstrumentationIndex, 1);\n });\n };\n\n return {\n add,\n get instrumentations() {\n return [...instrumentations];\n },\n remove,\n };\n}\n"]}
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EVENT_ROUTE_CHANGE = exports.EVENT_OVERRIDES_SERVICE_NAME = exports.EVENT_SESSION_EXTEND = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_START = exports.EVENT_VIEW_CHANGED = exports.EVENT_NAVIGATION = exports.EVENT_CLICK =
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated The conventions object will be removed in a future version
|
|
6
|
-
*/
|
|
7
|
-
exports.Conventions = {
|
|
8
|
-
/**
|
|
9
|
-
* @deprecated The event names object will be removed in a future version
|
|
10
|
-
*/
|
|
11
|
-
EventNames: {
|
|
12
|
-
CLICK: 'click',
|
|
13
|
-
NAVIGATION: 'navigation',
|
|
14
|
-
SESSION_START: 'session_start',
|
|
15
|
-
VIEW_CHANGED: 'view_changed',
|
|
16
|
-
},
|
|
17
|
-
};
|
|
3
|
+
exports.EVENT_ROUTE_CHANGE = exports.EVENT_OVERRIDES_SERVICE_NAME = exports.EVENT_SESSION_EXTEND = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_START = exports.EVENT_VIEW_CHANGED = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = void 0;
|
|
18
4
|
exports.EVENT_CLICK = 'click';
|
|
19
5
|
exports.EVENT_NAVIGATION = 'navigation';
|
|
20
6
|
exports.EVENT_VIEW_CHANGED = 'view_changed';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/semantic.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/semantic.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,kBAAkB,GAAG,cAAc,CAAC;AACpC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,4BAA4B,GAAG,uBAAuB,CAAC;AACvD,QAAA,kBAAkB,GAAG,cAAc,CAAC","sourcesContent":["export const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\nexport const EVENT_OVERRIDES_SERVICE_NAME = 'service_name_override';\nexport const EVENT_ROUTE_CHANGE = 'route_change';\n"]}
|