@grafana/faro-core 2.0.2 → 2.2.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.
- package/dist/bundle/faro-core.iife.js +1 -1
- package/dist/bundle/types/api/userActions/initialize.d.ts +5 -2
- package/dist/bundle/types/api/userActions/userAction.d.ts +4 -1
- package/dist/bundle/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/bundle/types/version.d.ts +1 -1
- package/dist/cjs/api/initialize.js +16 -1
- package/dist/cjs/api/initialize.js.map +1 -1
- package/dist/cjs/api/userActions/initialize.js +2 -1
- package/dist/cjs/api/userActions/initialize.js.map +1 -1
- package/dist/cjs/api/userActions/userAction.js +3 -3
- package/dist/cjs/api/userActions/userAction.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/api/initialize.js +16 -1
- package/dist/esm/api/initialize.js.map +1 -1
- package/dist/esm/api/userActions/initialize.js +2 -2
- package/dist/esm/api/userActions/initialize.js.map +1 -1
- package/dist/esm/api/userActions/userAction.js +4 -4
- package/dist/esm/api/userActions/userAction.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/events/initialize.test.js +1 -0
- package/dist/spec/core/src/api/events/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/exceptions/initialize.test.js +1 -0
- package/dist/spec/core/src/api/exceptions/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/initialize.js +16 -1
- package/dist/spec/core/src/api/initialize.js.map +1 -1
- package/dist/spec/core/src/api/logs/initialize.test.js +1 -0
- package/dist/spec/core/src/api/logs/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/measurements/initialize.test.js +1 -0
- package/dist/spec/core/src/api/measurements/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/userActions/initialize.js +2 -1
- package/dist/spec/core/src/api/userActions/initialize.js.map +1 -1
- package/dist/spec/core/src/api/userActions/initialize.test.js +6 -11
- package/dist/spec/core/src/api/userActions/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/userActions/userAction.js +3 -3
- package/dist/spec/core/src/api/userActions/userAction.js.map +1 -1
- package/dist/spec/core/src/api/userActions/userAction.test.js +10 -15
- package/dist/spec/core/src/api/userActions/userAction.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/userActions/initialize.d.ts +5 -2
- package/dist/types/api/userActions/userAction.d.ts +4 -1
- package/dist/types/core/src/api/userActions/initialize.d.ts +5 -2
- package/dist/types/core/src/api/userActions/userAction.d.ts +4 -1
- package/dist/types/core/src/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/core/src/version.d.ts +1 -1
- package/dist/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userAction.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/userAction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"userAction.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/userAction.ts"],"names":[],"mappings":"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","sourcesContent":["import { type TransportItem, TransportItemType, type Transports } from '../../transports';\nimport { dateNow, genShortID, Observable, stringifyObjectValues } from '../../utils';\nimport type { EventsAPI } from '../events/types';\nimport { ItemBuffer } from '../ItemBuffer';\nimport { type MeasurementEvent } from '../measurements/types';\nimport { type APIEvent } from '../types';\n\nimport { userActionEventName, UserActionImportance, type UserActionImportanceType } from './const';\nimport { type UserActionInternalInterface, UserActionState, type UserActionTransportItemBuffer } from './types';\n\nexport default class UserAction\n extends Observable\n implements UserActionInternalInterface, UserActionTransportItemBuffer\n{\n name: string;\n id: string;\n attributes?: Record<string, string>;\n parentId: string;\n trigger: string;\n importance: UserActionImportanceType;\n startTime?: number;\n trackUserActionsExcludeItem?: (item: TransportItem<APIEvent>) => boolean;\n\n private _state: UserActionState;\n private _itemBuffer: ItemBuffer<TransportItem>;\n private _transports: Transports;\n private _pushEvent: EventsAPI['pushEvent'];\n\n constructor({\n name,\n parentId,\n trigger,\n transports,\n attributes,\n trackUserActionsExcludeItem,\n importance = UserActionImportance.Normal,\n pushEvent,\n }: {\n name: string;\n transports: Transports;\n parentId?: string;\n trigger: string;\n attributes?: Record<string, string>;\n trackUserActionsExcludeItem?: (item: TransportItem<APIEvent>) => boolean;\n importance?: UserActionImportanceType;\n pushEvent: EventsAPI['pushEvent'];\n }) {\n super();\n this.name = name;\n this.attributes = attributes;\n this.id = genShortID();\n this.trigger = trigger;\n this.parentId = parentId ?? this.id;\n this.trackUserActionsExcludeItem = trackUserActionsExcludeItem;\n this.importance = importance;\n this._pushEvent = pushEvent;\n\n this._itemBuffer = new ItemBuffer<TransportItem>();\n this._transports = transports;\n this._state = UserActionState.Started;\n this._start();\n }\n\n addItem(item: TransportItem): boolean {\n if (this._state === UserActionState.Started) {\n this._itemBuffer.addItem(item);\n return true;\n }\n return false;\n }\n\n private _start(): void {\n this._state = UserActionState.Started;\n if (this._state === UserActionState.Started) {\n this.startTime = dateNow();\n }\n }\n\n halt() {\n if (this._state !== UserActionState.Started) {\n return;\n }\n this._state = UserActionState.Halted;\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 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 this._pushEvent(\n userActionEventName,\n {\n userActionName: this.name,\n userActionStartTime: this.startTime!.toString(),\n userActionEndTime: endTime.toString(),\n userActionDuration: duration.toString(),\n userActionTrigger: this.trigger!,\n userActionImportance: this.importance,\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: ((item: TransportItem<APIEvent>) => boolean) | undefined\n) {\n return (\n trackUserActionsExcludeItem?.(item) ||\n (item.type === TransportItemType.MEASUREMENT && (item.payload as MeasurementEvent).type === 'web-vitals')\n );\n}\n"]}
|
|
@@ -10,17 +10,12 @@ var ItemBuffer_1 = require("../ItemBuffer");
|
|
|
10
10
|
var types_1 = require("./types");
|
|
11
11
|
var userAction_1 = __importDefault(require("./userAction"));
|
|
12
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
13
|
describe('UserAction', function () {
|
|
21
14
|
var transports;
|
|
15
|
+
var mockPushEvent;
|
|
22
16
|
beforeEach(function () {
|
|
23
17
|
transports = apiTestHelpers_1.mockTransports;
|
|
18
|
+
mockPushEvent = globals_1.jest.fn();
|
|
24
19
|
globals_1.jest.spyOn(ItemBuffer_1.ItemBuffer.prototype, 'flushBuffer').mockImplementation(function (cb) {
|
|
25
20
|
if (cb) {
|
|
26
21
|
var dummyItem = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
|
|
@@ -33,52 +28,52 @@ describe('UserAction', function () {
|
|
|
33
28
|
globals_1.jest.clearAllTimers();
|
|
34
29
|
});
|
|
35
30
|
it('initializes in Started state and sets startTime', function () {
|
|
36
|
-
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
31
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
37
32
|
expect(ua.getState()).toBe(types_1.UserActionState.Started);
|
|
38
33
|
expect(typeof ua.startTime).toBe('number');
|
|
39
34
|
expect(ua.startTime > 0).toBe(true);
|
|
40
35
|
});
|
|
41
36
|
it('cancel() flushes the buffer and goes to Cancelled', function () {
|
|
42
|
-
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
37
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
43
38
|
ua.cancel();
|
|
44
39
|
expect(ua.getState()).toBe(types_1.UserActionState.Cancelled);
|
|
45
40
|
expect(ItemBuffer_1.ItemBuffer.prototype.flushBuffer).toHaveBeenCalled();
|
|
46
41
|
expect(transports.execute).not.toHaveBeenCalled();
|
|
47
42
|
});
|
|
48
43
|
it('end() will not fire if action is cancelled', function () {
|
|
49
|
-
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
44
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
50
45
|
ua.cancel();
|
|
51
46
|
ua.end();
|
|
52
47
|
expect(ua.getState()).toBe(types_1.UserActionState.Cancelled);
|
|
53
48
|
});
|
|
54
49
|
it('end() will send items with action payload', function () {
|
|
55
|
-
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
50
|
+
var ua = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
56
51
|
ua.end();
|
|
57
52
|
expect(ua.getState()).toBe(types_1.UserActionState.Ended);
|
|
58
53
|
expect(transports.execute).not.toHaveBeenCalledWith('koko');
|
|
59
54
|
});
|
|
60
55
|
it('addItem returns true and buffers when state is Started', function () {
|
|
61
|
-
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
56
|
+
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
62
57
|
var item = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
|
|
63
58
|
var result = userAction.addItem(item);
|
|
64
59
|
expect(result).toBe(true);
|
|
65
60
|
});
|
|
66
61
|
it('addItem returns false when state is Halted', function () {
|
|
67
|
-
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
62
|
+
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
68
63
|
userAction.halt();
|
|
69
64
|
var item = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
|
|
70
65
|
var result = userAction.addItem(item);
|
|
71
66
|
expect(result).toBe(false);
|
|
72
67
|
});
|
|
73
68
|
it('addItem returns false when state is Cancelled', function () {
|
|
74
|
-
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
69
|
+
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
75
70
|
userAction.cancel();
|
|
76
71
|
var item = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
|
|
77
72
|
var result = userAction.addItem(item);
|
|
78
73
|
expect(result).toBe(false);
|
|
79
74
|
});
|
|
80
75
|
it('addItem returns false when state is Ended', function () {
|
|
81
|
-
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo' });
|
|
76
|
+
var userAction = new userAction_1.default({ name: 'foo', transports: transports, trigger: 'foo', pushEvent: mockPushEvent });
|
|
82
77
|
userAction.end();
|
|
83
78
|
var item = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
|
|
84
79
|
var result = userAction.addItem(item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userAction.test.js","sourceRoot":"","sources":["../../../../../../src/api/userActions/userAction.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAqC;AAErC,2BAA0E;AAC1E,oDAAmD;AACnD,4CAA2C;AAE3C,iCAA0C;AAC1C,4DAAsC;AAEtC,cAAI,CAAC,aAAa,EAAE,CAAC;
|
|
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();\n\ndescribe('UserAction', () => {\n let transports: Transports;\n let mockPushEvent: jest.Mock;\n\n beforeEach(() => {\n transports = mockTransports;\n mockPushEvent = jest.fn();\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', pushEvent: mockPushEvent });\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', pushEvent: mockPushEvent });\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('end() will not fire if action is cancelled', () => {\n const ua = new UserAction({ name: 'foo', transports, trigger: 'foo', pushEvent: mockPushEvent });\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', pushEvent: mockPushEvent });\n ua.end();\n expect(ua.getState()).toBe(UserActionState.Ended);\n expect(transports.execute).not.toHaveBeenCalledWith('koko');\n });\n\n it('addItem returns true and buffers when state is Started', () => {\n const userAction = new UserAction({ name: 'foo', transports, trigger: 'foo', pushEvent: mockPushEvent });\n const item: TransportItem = { type: TransportItemType.EVENT, payload: {}, meta: {} };\n const result = userAction.addItem(item);\n expect(result).toBe(true);\n });\n\n it('addItem returns false when state is Halted', () => {\n const userAction = new UserAction({ name: 'foo', transports, trigger: 'foo', pushEvent: mockPushEvent });\n userAction.halt();\n const item: TransportItem = { type: TransportItemType.EVENT, payload: {}, meta: {} };\n const result = userAction.addItem(item);\n expect(result).toBe(false);\n });\n\n it('addItem returns false when state is Cancelled', () => {\n const userAction = new UserAction({ name: 'foo', transports, trigger: 'foo', pushEvent: mockPushEvent });\n userAction.cancel();\n const item: TransportItem = { type: TransportItemType.EVENT, payload: {}, meta: {} };\n const result = userAction.addItem(item);\n expect(result).toBe(false);\n });\n\n it('addItem returns false when state is Ended', () => {\n const userAction = new UserAction({ name: 'foo', transports, trigger: 'foo', pushEvent: mockPushEvent });\n userAction.end();\n const item: TransportItem = { type: TransportItemType.EVENT, payload: {}, meta: {} };\n const result = userAction.addItem(item);\n expect(result).toBe(false);\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '2.0
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '2.2.0';\n"]}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { type InternalLogger, type TransportItem, type Transports } from '../..';
|
|
2
1
|
import type { Config } from '../../config';
|
|
2
|
+
import type { InternalLogger } from '../../internalLogger';
|
|
3
|
+
import type { TransportItem, Transports } from '../../transports';
|
|
3
4
|
import { Observable } from '../../utils/reactive';
|
|
5
|
+
import type { EventsAPI } from '../events/types';
|
|
4
6
|
import { type UserActionInterface, type UserActionsAPI } from './types';
|
|
5
7
|
export declare const userActionsMessageBus: Observable<import("./types").UserActionStart>;
|
|
6
|
-
export declare function initializeUserActionsAPI({ transports, internalLogger, config, }: {
|
|
8
|
+
export declare function initializeUserActionsAPI({ transports, internalLogger, config, pushEvent, }: {
|
|
7
9
|
transports: Transports;
|
|
8
10
|
config: Config;
|
|
9
11
|
internalLogger: InternalLogger;
|
|
12
|
+
pushEvent: EventsAPI['pushEvent'];
|
|
10
13
|
}): UserActionsAPI;
|
|
11
14
|
/**
|
|
12
15
|
* Adds an item to the buffer associated with the given UserAction.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type TransportItem, type Transports } from '../../transports';
|
|
2
2
|
import { Observable } from '../../utils';
|
|
3
|
+
import type { EventsAPI } from '../events/types';
|
|
3
4
|
import { type APIEvent } from '../types';
|
|
4
5
|
import { type UserActionImportanceType } from './const';
|
|
5
6
|
import { type UserActionInternalInterface, UserActionState, type UserActionTransportItemBuffer } from './types';
|
|
@@ -15,7 +16,8 @@ export default class UserAction extends Observable implements UserActionInternal
|
|
|
15
16
|
private _state;
|
|
16
17
|
private _itemBuffer;
|
|
17
18
|
private _transports;
|
|
18
|
-
|
|
19
|
+
private _pushEvent;
|
|
20
|
+
constructor({ name, parentId, trigger, transports, attributes, trackUserActionsExcludeItem, importance, pushEvent, }: {
|
|
19
21
|
name: string;
|
|
20
22
|
transports: Transports;
|
|
21
23
|
parentId?: string;
|
|
@@ -23,6 +25,7 @@ export default class UserAction extends Observable implements UserActionInternal
|
|
|
23
25
|
attributes?: Record<string, string>;
|
|
24
26
|
trackUserActionsExcludeItem?: (item: TransportItem<APIEvent>) => boolean;
|
|
25
27
|
importance?: UserActionImportanceType;
|
|
28
|
+
pushEvent: EventsAPI['pushEvent'];
|
|
26
29
|
});
|
|
27
30
|
addItem(item: TransportItem): boolean;
|
|
28
31
|
private _start;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { type InternalLogger, type TransportItem, type Transports } from '../..';
|
|
2
1
|
import type { Config } from '../../config';
|
|
2
|
+
import type { InternalLogger } from '../../internalLogger';
|
|
3
|
+
import type { TransportItem, Transports } from '../../transports';
|
|
3
4
|
import { Observable } from '../../utils/reactive';
|
|
5
|
+
import type { EventsAPI } from '../events/types';
|
|
4
6
|
import { type UserActionInterface, type UserActionsAPI } from './types';
|
|
5
7
|
export declare const userActionsMessageBus: Observable<import("./types").UserActionStart>;
|
|
6
|
-
export declare function initializeUserActionsAPI({ transports, internalLogger, config, }: {
|
|
8
|
+
export declare function initializeUserActionsAPI({ transports, internalLogger, config, pushEvent, }: {
|
|
7
9
|
transports: Transports;
|
|
8
10
|
config: Config;
|
|
9
11
|
internalLogger: InternalLogger;
|
|
12
|
+
pushEvent: EventsAPI['pushEvent'];
|
|
10
13
|
}): UserActionsAPI;
|
|
11
14
|
/**
|
|
12
15
|
* Adds an item to the buffer associated with the given UserAction.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type TransportItem, type Transports } from '../../transports';
|
|
2
2
|
import { Observable } from '../../utils';
|
|
3
|
+
import type { EventsAPI } from '../events/types';
|
|
3
4
|
import { type APIEvent } from '../types';
|
|
4
5
|
import { type UserActionImportanceType } from './const';
|
|
5
6
|
import { type UserActionInternalInterface, UserActionState, type UserActionTransportItemBuffer } from './types';
|
|
@@ -15,7 +16,8 @@ export default class UserAction extends Observable implements UserActionInternal
|
|
|
15
16
|
private _state;
|
|
16
17
|
private _itemBuffer;
|
|
17
18
|
private _transports;
|
|
18
|
-
|
|
19
|
+
private _pushEvent;
|
|
20
|
+
constructor({ name, parentId, trigger, transports, attributes, trackUserActionsExcludeItem, importance, pushEvent, }: {
|
|
19
21
|
name: string;
|
|
20
22
|
transports: Transports;
|
|
21
23
|
parentId?: string;
|
|
@@ -23,6 +25,7 @@ export default class UserAction extends Observable implements UserActionInternal
|
|
|
23
25
|
attributes?: Record<string, string>;
|
|
24
26
|
trackUserActionsExcludeItem?: (item: TransportItem<APIEvent>) => boolean;
|
|
25
27
|
importance?: UserActionImportanceType;
|
|
28
|
+
pushEvent: EventsAPI['pushEvent'];
|
|
26
29
|
});
|
|
27
30
|
addItem(item: TransportItem): boolean;
|
|
28
31
|
private _start;
|
|
@@ -4,7 +4,7 @@ import type { Transport, TransportItem } from '../transports';
|
|
|
4
4
|
export declare class MockTransport extends BaseTransport implements Transport {
|
|
5
5
|
private ignoreURLs;
|
|
6
6
|
readonly name = "@grafana/transport-mock";
|
|
7
|
-
readonly version = "2.0
|
|
7
|
+
readonly version = "2.2.0";
|
|
8
8
|
items: TransportItem[];
|
|
9
9
|
constructor(ignoreURLs?: Patterns);
|
|
10
10
|
send(items: TransportItem[]): void | Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "2.0
|
|
1
|
+
export declare const VERSION = "2.2.0";
|
|
@@ -4,7 +4,7 @@ import type { Transport, TransportItem } from '../transports';
|
|
|
4
4
|
export declare class MockTransport extends BaseTransport implements Transport {
|
|
5
5
|
private ignoreURLs;
|
|
6
6
|
readonly name = "@grafana/transport-mock";
|
|
7
|
-
readonly version = "2.0
|
|
7
|
+
readonly version = "2.2.0";
|
|
8
8
|
items: TransportItem[];
|
|
9
9
|
constructor(ignoreURLs?: Patterns);
|
|
10
10
|
send(items: TransportItem[]): void | Promise<void>;
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "2.0
|
|
1
|
+
export declare const VERSION = "2.2.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/faro-core",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Core package of Faro.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"observability",
|
|
@@ -53,13 +53,13 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@opentelemetry/api": "^1.9.0",
|
|
56
|
-
"@opentelemetry/otlp-transformer": "^0.
|
|
56
|
+
"@opentelemetry/otlp-transformer": "^0.210.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@types/node": "24.10.
|
|
59
|
+
"@types/node": "24.10.9"
|
|
60
60
|
},
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "5c1058da8e8009d2b5e1c71c8a81384f9a4886d9"
|
|
65
65
|
}
|