@grafana/faro-web-sdk 1.12.3 → 1.13.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-web-sdk.iife.js +1 -1
- package/dist/bundle/types/config/makeCoreConfig.d.ts +1 -1
- package/dist/bundle/types/index.d.ts +1 -1
- package/dist/bundle/types/instrumentations/console/instrumentation.d.ts +3 -1
- package/dist/bundle/types/instrumentations/errors/getErrorDetails.d.ts +8 -1
- package/dist/bundle/types/instrumentations/errors/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/performance/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/session/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/session/sessionManager/sessionManagerUtils.d.ts +6 -0
- package/dist/bundle/types/instrumentations/view/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
- package/dist/bundle/types/metas/index.d.ts +0 -2
- package/dist/bundle/types/metas/page/index.d.ts +1 -1
- package/dist/bundle/types/metas/page/meta.d.ts +7 -2
- package/dist/bundle/types/transports/console/transport.d.ts +1 -1
- package/dist/bundle/types/transports/fetch/transport.d.ts +1 -1
- package/dist/bundle/types/utils/index.d.ts +0 -1
- package/dist/cjs/config/makeCoreConfig.js +43 -36
- package/dist/cjs/config/makeCoreConfig.js.map +1 -1
- package/dist/cjs/index.js +2 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instrumentations/console/instrumentation.js +26 -3
- package/dist/cjs/instrumentations/console/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/errors/getErrorDetails.js +32 -1
- package/dist/cjs/instrumentations/errors/getErrorDetails.js.map +1 -1
- package/dist/cjs/instrumentations/errors/registerOnerror.js +1 -21
- package/dist/cjs/instrumentations/errors/registerOnerror.js.map +1 -1
- package/dist/cjs/instrumentations/session/instrumentation.js +6 -4
- package/dist/cjs/instrumentations/session/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js +5 -11
- package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js +5 -12
- package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js +49 -3
- package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js.map +1 -1
- package/dist/cjs/metas/index.js +1 -5
- package/dist/cjs/metas/index.js.map +1 -1
- package/dist/cjs/metas/page/index.js +2 -2
- package/dist/cjs/metas/page/index.js.map +1 -1
- package/dist/cjs/metas/page/meta.js +30 -7
- package/dist/cjs/metas/page/meta.js.map +1 -1
- package/dist/cjs/utils/index.js +1 -4
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/webStorage.js +0 -1
- package/dist/cjs/utils/webStorage.js.map +1 -1
- package/dist/esm/config/makeCoreConfig.js +43 -37
- package/dist/esm/config/makeCoreConfig.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instrumentations/console/instrumentation.js +27 -4
- package/dist/esm/instrumentations/console/instrumentation.js.map +1 -1
- package/dist/esm/instrumentations/errors/getErrorDetails.js +31 -3
- package/dist/esm/instrumentations/errors/getErrorDetails.js.map +1 -1
- package/dist/esm/instrumentations/errors/registerOnerror.js +2 -21
- package/dist/esm/instrumentations/errors/registerOnerror.js.map +1 -1
- package/dist/esm/instrumentations/session/instrumentation.js +6 -4
- package/dist/esm/instrumentations/session/instrumentation.js.map +1 -1
- package/dist/esm/instrumentations/session/sessionManager/PersistentSessionsManager.js +7 -13
- package/dist/esm/instrumentations/session/sessionManager/PersistentSessionsManager.js.map +1 -1
- package/dist/esm/instrumentations/session/sessionManager/VolatileSessionManager.js +6 -13
- package/dist/esm/instrumentations/session/sessionManager/VolatileSessionManager.js.map +1 -1
- package/dist/esm/instrumentations/session/sessionManager/sessionManagerUtils.js +45 -3
- package/dist/esm/instrumentations/session/sessionManager/sessionManagerUtils.js.map +1 -1
- package/dist/esm/metas/index.js +0 -2
- package/dist/esm/metas/index.js.map +1 -1
- package/dist/esm/metas/page/index.js +1 -1
- package/dist/esm/metas/page/index.js.map +1 -1
- package/dist/esm/metas/page/meta.js +16 -5
- package/dist/esm/metas/page/meta.js.map +1 -1
- package/dist/esm/utils/index.js +0 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/webStorage.js +0 -1
- package/dist/esm/utils/webStorage.js.map +1 -1
- package/dist/types/config/makeCoreConfig.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/instrumentations/console/instrumentation.d.ts +3 -1
- package/dist/types/instrumentations/errors/getErrorDetails.d.ts +8 -1
- package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/performance/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/session/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/session/sessionManager/sessionManagerUtils.d.ts +6 -0
- package/dist/types/instrumentations/view/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
- package/dist/types/metas/index.d.ts +0 -2
- package/dist/types/metas/page/index.d.ts +1 -1
- package/dist/types/metas/page/meta.d.ts +7 -2
- package/dist/types/transports/console/transport.d.ts +1 -1
- package/dist/types/transports/fetch/transport.d.ts +1 -1
- package/dist/types/utils/index.d.ts +0 -1
- package/package.json +6 -3
- package/dist/bundle/types/metas/const.d.ts +0 -2
- package/dist/bundle/types/utils/json.d.ts +0 -2
- package/dist/cjs/metas/const.js +0 -7
- package/dist/cjs/metas/const.js.map +0 -1
- package/dist/cjs/utils/json.js +0 -22
- package/dist/cjs/utils/json.js.map +0 -1
- package/dist/esm/metas/const.js +0 -4
- package/dist/esm/metas/const.js.map +0 -1
- package/dist/esm/utils/json.js +0 -16
- package/dist/esm/utils/json.js.map +0 -1
- package/dist/types/metas/const.d.ts +0 -2
- package/dist/types/utils/json.d.ts +0 -2
|
@@ -27,10 +27,11 @@ var instrumentations_1 = require("../instrumentations");
|
|
|
27
27
|
var session_1 = require("../instrumentations/session");
|
|
28
28
|
var metas_1 = require("../metas");
|
|
29
29
|
var k6_1 = require("../metas/k6");
|
|
30
|
+
var page_1 = require("../metas/page");
|
|
30
31
|
var transports_1 = require("../transports");
|
|
31
32
|
var getWebInstrumentations_1 = require("./getWebInstrumentations");
|
|
32
33
|
function makeCoreConfig(browserConfig) {
|
|
33
|
-
var _a
|
|
34
|
+
var _a;
|
|
34
35
|
var transports = [];
|
|
35
36
|
var internalLogger = (0, faro_core_1.createInternalLogger)(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);
|
|
36
37
|
if (browserConfig.transports) {
|
|
@@ -48,45 +49,51 @@ function makeCoreConfig(browserConfig) {
|
|
|
48
49
|
else {
|
|
49
50
|
internalLogger.error('either "url" or "transports" must be defined');
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
globalObjectKey: browserConfig.globalObjectKey || faro_core_1.defaultGlobalObjectKey,
|
|
67
|
-
instrumentations: (_b = browserConfig.instrumentations) !== null && _b !== void 0 ? _b : (0, getWebInstrumentations_1.getWebInstrumentations)(),
|
|
68
|
-
internalLoggerLevel: (_c = browserConfig.internalLoggerLevel) !== null && _c !== void 0 ? _c : faro_core_1.defaultInternalLoggerLevel,
|
|
69
|
-
isolate: (_d = browserConfig.isolate) !== null && _d !== void 0 ? _d : false,
|
|
70
|
-
logArgsSerializer: (_e = browserConfig.logArgsSerializer) !== null && _e !== void 0 ? _e : faro_core_1.defaultLogArgsSerializer,
|
|
71
|
-
metas: createMetas(),
|
|
52
|
+
var app = browserConfig.app, batching = browserConfig.batching, beforeSend = browserConfig.beforeSend, consoleInstrumentation = browserConfig.consoleInstrumentation, ignoreErrors = browserConfig.ignoreErrors, sessionTracking = browserConfig.sessionTracking, trackResources = browserConfig.trackResources, trackWebVitalsAttribution = browserConfig.trackWebVitalsAttribution, user = browserConfig.user, view = browserConfig.view,
|
|
53
|
+
// properties with default values
|
|
54
|
+
_b = browserConfig.dedupe,
|
|
55
|
+
// properties with default values
|
|
56
|
+
dedupe = _b === void 0 ? true : _b, _c = browserConfig.eventDomain, eventDomain = _c === void 0 ? consts_1.defaultEventDomain : _c, _d = browserConfig.globalObjectKey, globalObjectKey = _d === void 0 ? faro_core_1.defaultGlobalObjectKey : _d, _e = browserConfig.instrumentations, instrumentations = _e === void 0 ? (0, getWebInstrumentations_1.getWebInstrumentations)() : _e, _f = browserConfig.internalLoggerLevel, internalLoggerLevel = _f === void 0 ? faro_core_1.defaultInternalLoggerLevel : _f, _g = browserConfig.isolate, isolate = _g === void 0 ? false : _g, _h = browserConfig.logArgsSerializer, logArgsSerializer = _h === void 0 ? faro_core_1.defaultLogArgsSerializer : _h, _j = browserConfig.metas, metas = _j === void 0 ? createDefaultMetas(browserConfig) : _j, _k = browserConfig.paused, paused = _k === void 0 ? false : _k, _l = browserConfig.preventGlobalExposure, preventGlobalExposure = _l === void 0 ? false : _l, _m = browserConfig.unpatchedConsole, unpatchedConsole = _m === void 0 ? faro_core_1.defaultUnpatchedConsole : _m;
|
|
57
|
+
return {
|
|
58
|
+
app: app,
|
|
59
|
+
batching: __assign(__assign({}, faro_core_1.defaultBatchingConfig), batching),
|
|
60
|
+
dedupe: dedupe,
|
|
61
|
+
globalObjectKey: globalObjectKey,
|
|
62
|
+
instrumentations: instrumentations,
|
|
63
|
+
internalLoggerLevel: internalLoggerLevel,
|
|
64
|
+
isolate: isolate,
|
|
65
|
+
logArgsSerializer: logArgsSerializer,
|
|
66
|
+
metas: metas,
|
|
72
67
|
parseStacktrace: instrumentations_1.parseStacktrace,
|
|
73
|
-
paused:
|
|
74
|
-
preventGlobalExposure:
|
|
68
|
+
paused: paused,
|
|
69
|
+
preventGlobalExposure: preventGlobalExposure,
|
|
75
70
|
transports: transports,
|
|
76
|
-
unpatchedConsole:
|
|
77
|
-
beforeSend:
|
|
78
|
-
eventDomain:
|
|
79
|
-
ignoreErrors:
|
|
71
|
+
unpatchedConsole: unpatchedConsole,
|
|
72
|
+
beforeSend: beforeSend,
|
|
73
|
+
eventDomain: eventDomain,
|
|
74
|
+
ignoreErrors: ignoreErrors,
|
|
80
75
|
// ignore cloud collector urls by default. These are URLs ending with /collect or /collect/ followed by alphanumeric characters.
|
|
81
|
-
ignoreUrls: ((
|
|
82
|
-
sessionTracking: __assign(__assign({}, session_1.defaultSessionTrackingConfig),
|
|
83
|
-
user:
|
|
84
|
-
view:
|
|
85
|
-
trackResources:
|
|
86
|
-
trackWebVitalsAttribution:
|
|
87
|
-
consoleInstrumentation:
|
|
76
|
+
ignoreUrls: ((_a = browserConfig.ignoreUrls) !== null && _a !== void 0 ? _a : []).concat([/\/collect(?:\/[\w]*)?$/]),
|
|
77
|
+
sessionTracking: __assign(__assign({}, session_1.defaultSessionTrackingConfig), sessionTracking),
|
|
78
|
+
user: user,
|
|
79
|
+
view: view,
|
|
80
|
+
trackResources: trackResources,
|
|
81
|
+
trackWebVitalsAttribution: trackWebVitalsAttribution,
|
|
82
|
+
consoleInstrumentation: consoleInstrumentation,
|
|
88
83
|
};
|
|
89
|
-
return config;
|
|
90
84
|
}
|
|
91
85
|
exports.makeCoreConfig = makeCoreConfig;
|
|
86
|
+
function createDefaultMetas(browserConfig) {
|
|
87
|
+
var _a, _b;
|
|
88
|
+
var _c = (_a = browserConfig === null || browserConfig === void 0 ? void 0 : browserConfig.pageTracking) !== null && _a !== void 0 ? _a : {}, page = _c.page, generatePageId = _c.generatePageId;
|
|
89
|
+
var initialMetas = __spreadArray([
|
|
90
|
+
metas_1.browserMeta,
|
|
91
|
+
(0, page_1.createPageMeta)({ generatePageId: generatePageId, initialPageMeta: page })
|
|
92
|
+
], ((_b = browserConfig.metas) !== null && _b !== void 0 ? _b : []), true);
|
|
93
|
+
var isK6BrowserSession = (0, faro_core_1.isObject)(window.k6);
|
|
94
|
+
if (isK6BrowserSession) {
|
|
95
|
+
return __spreadArray(__spreadArray([], initialMetas, true), [k6_1.k6Meta], false);
|
|
96
|
+
}
|
|
97
|
+
return initialMetas;
|
|
98
|
+
}
|
|
92
99
|
//# sourceMappingURL=makeCoreConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeCoreConfig.js","sourceRoot":"","sources":["../../../src/config/makeCoreConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAQ4B;AAG5B,oCAA+C;AAC/C,wDAAsD;AACtD,uDAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"makeCoreConfig.js","sourceRoot":"","sources":["../../../src/config/makeCoreConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAQ4B;AAG5B,oCAA+C;AAC/C,wDAAsD;AACtD,uDAA2E;AAC3E,kCAAuC;AACvC,kCAAqC;AACrC,sCAA+C;AAC/C,4CAA+C;AAE/C,mEAAkE;AAGlE,SAAgB,cAAc,CAAC,aAA4B;;IACzD,IAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,IAAM,cAAc,GAAG,IAAA,gCAAoB,EAAC,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAE/G,IAAI,aAAa,CAAC,UAAU,EAAE;QAC5B,IAAI,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;YAC7C,cAAc,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;SAC9F;QAED,UAAU,CAAC,IAAI,OAAf,UAAU,EAAS,aAAa,CAAC,UAAU,EAAE;KAC9C;SAAM,IAAI,aAAa,CAAC,GAAG,EAAE;QAC5B,UAAU,CAAC,IAAI,CACb,IAAI,2BAAc,CAAC;YACjB,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,MAAM,EAAE,aAAa,CAAC,MAAM;SAC7B,CAAC,CACH,CAAC;KACH;SAAM;QACL,cAAc,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACtE;IAGC,IAAA,GAAG,GAuBc,aAAa,IAvB3B,EACH,QAAQ,GAsBS,aAAa,SAtBtB,EACR,UAAU,GAqBO,aAAa,WArBpB,EACV,sBAAsB,GAoBL,aAAa,uBApBR,EACtB,YAAY,GAmBK,aAAa,aAnBlB,EACZ,eAAe,GAkBE,aAAa,gBAlBf,EACf,cAAc,GAiBG,aAAa,eAjBhB,EACd,yBAAyB,GAgBR,aAAa,0BAhBL,EACzB,IAAI,GAea,aAAa,KAf1B,EACJ,IAAI,GAca,aAAa,KAd1B;IAEJ,iCAAiC;IACjC,KAWiB,aAAa,OAXjB;IADb,iCAAiC;IACjC,MAAM,mBAAG,IAAI,KAAA,EACb,KAUiB,aAAa,YAVE,EAAhC,WAAW,mBAAG,2BAAkB,KAAA,EAChC,KASiB,aAAa,gBATU,EAAxC,eAAe,mBAAG,kCAAsB,KAAA,EACxC,KAQiB,aAAa,iBARa,EAA3C,gBAAgB,mBAAG,IAAA,+CAAsB,GAAE,KAAA,EAC3C,KAOiB,aAAa,oBAPkB,EAAhD,mBAAmB,mBAAG,sCAA0B,KAAA,EAChD,KAMiB,aAAa,QANf,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,KAKiB,aAAa,kBALc,EAA5C,iBAAiB,mBAAG,oCAAwB,KAAA,EAC5C,KAIiB,aAAa,MAJW,EAAzC,KAAK,mBAAG,kBAAkB,CAAC,aAAa,CAAC,KAAA,EACzC,KAGiB,aAAa,OAHhB,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAEiB,aAAa,sBAFD,EAA7B,qBAAqB,mBAAG,KAAK,KAAA,EAC7B,KACiB,aAAa,iBADY,EAA1C,gBAAgB,mBAAG,mCAAuB,KAAA,CACX;IAEjC,OAAO;QACL,GAAG,KAAA;QACH,QAAQ,wBACH,iCAAqB,GACrB,QAAQ,CACZ;QACD,MAAM,EAAE,MAAM;QACd,eAAe,iBAAA;QACf,gBAAgB,kBAAA;QAChB,mBAAmB,qBAAA;QACnB,OAAO,SAAA;QACP,iBAAiB,mBAAA;QACjB,KAAK,OAAA;QACL,eAAe,oCAAA;QACf,MAAM,QAAA;QACN,qBAAqB,uBAAA;QACrB,UAAU,YAAA;QACV,gBAAgB,kBAAA;QAChB,UAAU,YAAA;QACV,WAAW,aAAA;QACX,YAAY,cAAA;QACZ,gIAAgI;QAChI,UAAU,EAAE,CAAC,MAAA,aAAa,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;QAC/E,eAAe,wBACV,sCAA4B,GAC5B,eAAe,CACnB;QACD,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,cAAc,gBAAA;QACd,yBAAyB,2BAAA;QACzB,sBAAsB,wBAAA;KACvB,CAAC;AACJ,CAAC;AAjFD,wCAiFC;AAED,SAAS,kBAAkB,CAAC,aAA4B;;IAChD,IAAA,KAA2B,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,mCAAI,EAAE,EAA1D,IAAI,UAAA,EAAE,cAAc,oBAAsC,CAAC;IAEnE,IAAM,YAAY;QAChB,mBAAW;QACX,IAAA,qBAAc,EAAC,EAAE,cAAc,gBAAA,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;OACtD,CAAC,MAAA,aAAa,CAAC,KAAK,mCAAI,EAAE,CAAC,OAC/B,CAAC;IAEF,IAAM,kBAAkB,GAAG,IAAA,oBAAQ,EAAE,MAAc,CAAC,EAAE,CAAC,CAAC;IACxD,IAAI,kBAAkB,EAAE;QACtB,uCAAW,YAAY,UAAE,WAAM,UAAE;KAClC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import {\n createInternalLogger,\n defaultBatchingConfig,\n defaultGlobalObjectKey,\n defaultInternalLoggerLevel,\n defaultLogArgsSerializer,\n defaultUnpatchedConsole,\n isObject,\n} from '@grafana/faro-core';\nimport type { Config, MetaItem, Transport } from '@grafana/faro-core';\n\nimport { defaultEventDomain } from '../consts';\nimport { parseStacktrace } from '../instrumentations';\nimport { defaultSessionTrackingConfig } from '../instrumentations/session';\nimport { browserMeta } from '../metas';\nimport { k6Meta } from '../metas/k6';\nimport { createPageMeta } from '../metas/page';\nimport { FetchTransport } from '../transports';\n\nimport { getWebInstrumentations } from './getWebInstrumentations';\nimport type { BrowserConfig } from './types';\n\nexport function makeCoreConfig(browserConfig: BrowserConfig): Config {\n const transports: Transport[] = [];\n\n const internalLogger = createInternalLogger(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);\n\n if (browserConfig.transports) {\n if (browserConfig.url || browserConfig.apiKey) {\n internalLogger.error('if \"transports\" is defined, \"url\" and \"apiKey\" should not be defined');\n }\n\n transports.push(...browserConfig.transports);\n } else if (browserConfig.url) {\n transports.push(\n new FetchTransport({\n url: browserConfig.url,\n apiKey: browserConfig.apiKey,\n })\n );\n } else {\n internalLogger.error('either \"url\" or \"transports\" must be defined');\n }\n\n const {\n app,\n batching,\n beforeSend,\n consoleInstrumentation,\n ignoreErrors,\n sessionTracking,\n trackResources,\n trackWebVitalsAttribution,\n user,\n view,\n\n // properties with default values\n dedupe = true,\n eventDomain = defaultEventDomain,\n globalObjectKey = defaultGlobalObjectKey,\n instrumentations = getWebInstrumentations(),\n internalLoggerLevel = defaultInternalLoggerLevel,\n isolate = false,\n logArgsSerializer = defaultLogArgsSerializer,\n metas = createDefaultMetas(browserConfig),\n paused = false,\n preventGlobalExposure = false,\n unpatchedConsole = defaultUnpatchedConsole,\n }: BrowserConfig = browserConfig;\n\n return {\n app,\n batching: {\n ...defaultBatchingConfig,\n ...batching,\n },\n dedupe: dedupe,\n globalObjectKey,\n instrumentations,\n internalLoggerLevel,\n isolate,\n logArgsSerializer,\n metas,\n parseStacktrace,\n paused,\n preventGlobalExposure,\n transports,\n unpatchedConsole,\n beforeSend,\n eventDomain,\n ignoreErrors,\n // ignore cloud collector urls by default. These are URLs ending with /collect or /collect/ followed by alphanumeric characters.\n ignoreUrls: (browserConfig.ignoreUrls ?? []).concat([/\\/collect(?:\\/[\\w]*)?$/]),\n sessionTracking: {\n ...defaultSessionTrackingConfig,\n ...sessionTracking,\n },\n user,\n view,\n trackResources,\n trackWebVitalsAttribution,\n consoleInstrumentation,\n };\n}\n\nfunction createDefaultMetas(browserConfig: BrowserConfig): MetaItem[] {\n const { page, generatePageId } = browserConfig?.pageTracking ?? {};\n\n const initialMetas: MetaItem[] = [\n browserMeta,\n createPageMeta({ generatePageId, initialPageMeta: page }),\n ...(browserConfig.metas ?? []),\n ];\n\n const isK6BrowserSession = isObject((window as any).k6);\n if (isK6BrowserSession) {\n return [...initialMetas, k6Meta];\n }\n\n return initialMetas;\n}\n"]}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isEvent = exports.isErrorEvent = exports.isErrorDefined = exports.isError = exports.isElementDefined = exports.isElement = exports.isDomException = exports.isDomError = exports.isBoolean = exports.isArray = exports.internalGlobalObjectKey = exports.globalObject = exports.getTransportBody = exports.getInternalFaroFromGlobalObject = exports.getCurrentTimestamp = exports.genShortID = exports.defaultLogLevel = exports.defaultInternalLoggerLevel = exports.defaultGlobalObjectKey = exports.defaultExceptionType = exports.deepEqual = exports.createPromiseBuffer = exports.createInternalLogger = exports.Conventions = exports.BaseTransport = exports.BaseInstrumentation = exports.BaseExtension = exports.allLogLevels = exports.faro = exports.FetchTransport = exports.ConsoleTransport = exports.sdkMeta = exports.
|
|
4
|
-
exports.getIgnoreUrls = exports.STORAGE_KEY = exports.SESSION_INACTIVITY_TIME = exports.SESSION_EXPIRATION_TIME = exports.MAX_SESSION_PERSISTENCE_TIME_BUFFER = exports.MAX_SESSION_PERSISTENCE_TIME = exports.VolatileSessionsManager = exports.PersistentSessionsManager = exports.EVENT_VIEW_CHANGED = exports.EVENT_SESSION_START = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_EXTEND = exports.EVENT_ROUTE_CHANGE = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.VERSION = exports.transportItemTypeToBodyKey = exports.TransportItemType = exports.setInternalFaroOnGlobalObject = exports.noop = exports.LogLevel = exports.InternalLoggerLevel = exports.isUndefined = exports.isTypeof = exports.isToString = exports.isThenable = exports.isSyntheticEvent = exports.isSymbol = exports.isString = exports.isRegExp = exports.isPrimitive = exports.isObject = exports.isNumber = exports.isNull = exports.isMapDefined = exports.isMap = exports.isInternalFaroOnGlobalObject = exports.isInt = exports.isInstanceOf =
|
|
3
|
+
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.internalGlobalObjectKey = exports.globalObject = exports.getTransportBody = exports.getInternalFaroFromGlobalObject = exports.getCurrentTimestamp = exports.genShortID = exports.defaultLogLevel = exports.defaultInternalLoggerLevel = exports.defaultGlobalObjectKey = exports.defaultExceptionType = exports.deepEqual = exports.createPromiseBuffer = exports.createInternalLogger = exports.Conventions = exports.BaseTransport = exports.BaseInstrumentation = exports.BaseExtension = exports.allLogLevels = exports.faro = exports.FetchTransport = exports.ConsoleTransport = exports.sdkMeta = exports.createSession = exports.browserMeta = exports.PerformanceInstrumentation = exports.SessionInstrumentation = exports.WebVitalsInstrumentation = exports.ViewInstrumentation = exports.parseStacktrace = exports.getStackFramesFromError = exports.getDataFromSafariExtensions = exports.ErrorsInstrumentation = exports.ConsoleInstrumentation = exports.buildStackFrame = exports.initializeFaro = exports.defaultEventDomain = exports.makeCoreConfig = exports.getWebInstrumentations = void 0;
|
|
4
|
+
exports.getIgnoreUrls = exports.STORAGE_KEY = exports.SESSION_INACTIVITY_TIME = exports.SESSION_EXPIRATION_TIME = exports.MAX_SESSION_PERSISTENCE_TIME_BUFFER = exports.MAX_SESSION_PERSISTENCE_TIME = exports.VolatileSessionsManager = exports.PersistentSessionsManager = exports.EVENT_VIEW_CHANGED = exports.EVENT_SESSION_START = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_EXTEND = exports.EVENT_ROUTE_CHANGE = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.VERSION = exports.transportItemTypeToBodyKey = exports.TransportItemType = exports.setInternalFaroOnGlobalObject = exports.noop = exports.LogLevel = exports.InternalLoggerLevel = exports.isUndefined = exports.isTypeof = exports.isToString = exports.isThenable = exports.isSyntheticEvent = exports.isSymbol = exports.isString = exports.isRegExp = exports.isPrimitive = exports.isObject = exports.isNumber = exports.isNull = exports.isMapDefined = exports.isMap = exports.isInternalFaroOnGlobalObject = exports.isInt = exports.isInstanceOf = void 0;
|
|
5
5
|
var config_1 = require("./config");
|
|
6
6
|
Object.defineProperty(exports, "getWebInstrumentations", { enumerable: true, get: function () { return config_1.getWebInstrumentations; } });
|
|
7
7
|
Object.defineProperty(exports, "makeCoreConfig", { enumerable: true, get: function () { return config_1.makeCoreConfig; } });
|
|
@@ -23,8 +23,6 @@ Object.defineProperty(exports, "PerformanceInstrumentation", { enumerable: true,
|
|
|
23
23
|
var metas_1 = require("./metas");
|
|
24
24
|
Object.defineProperty(exports, "browserMeta", { enumerable: true, get: function () { return metas_1.browserMeta; } });
|
|
25
25
|
Object.defineProperty(exports, "createSession", { enumerable: true, get: function () { return metas_1.createSession; } });
|
|
26
|
-
Object.defineProperty(exports, "defaultMetas", { enumerable: true, get: function () { return metas_1.defaultMetas; } });
|
|
27
|
-
Object.defineProperty(exports, "pageMeta", { enumerable: true, get: function () { return metas_1.pageMeta; } });
|
|
28
26
|
Object.defineProperty(exports, "sdkMeta", { enumerable: true, get: function () { return metas_1.sdkMeta; } });
|
|
29
27
|
var transports_1 = require("./transports");
|
|
30
28
|
Object.defineProperty(exports, "ConsoleTransport", { enumerable: true, get: function () { return transports_1.ConsoleTransport; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAkE;AAAzD,gHAAA,sBAAsB,OAAA;AAAE,wGAAA,cAAc,OAAA;AAG/C,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAE3B,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,uDAW4B;AAV1B,mHAAA,eAAe,OAAA;AACf,0HAAA,sBAAsB,OAAA;AACtB,yHAAA,qBAAqB,OAAA;AACrB,+HAAA,2BAA2B,OAAA;AAC3B,2HAAA,uBAAuB,OAAA;AACvB,mHAAA,eAAe,OAAA;AACf,uHAAA,mBAAmB,OAAA;AACnB,4HAAA,wBAAwB,OAAA;AACxB,0HAAA,sBAAsB,OAAA;AACtB,8HAAA,0BAA0B,OAAA;AAI5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export { getWebInstrumentations, makeCoreConfig } from './config';\nexport type { BrowserConfig } from './config';\n\nexport { defaultEventDomain } from './consts';\n\nexport { initializeFaro } from './initialize';\n\nexport {\n buildStackFrame,\n ConsoleInstrumentation,\n ErrorsInstrumentation,\n getDataFromSafariExtensions,\n getStackFramesFromError,\n parseStacktrace,\n ViewInstrumentation,\n WebVitalsInstrumentation,\n SessionInstrumentation,\n PerformanceInstrumentation,\n} from './instrumentations';\nexport type { ConsoleInstrumentationOptions, ErrorEvent, ExtendedPromiseRejectionEvent } from './instrumentations';\n\nexport { browserMeta, createSession, sdkMeta } from './metas';\n\nexport { ConsoleTransport, FetchTransport } from './transports';\nexport type {\n ClockFn,\n ConsoleTransportOptions,\n FetchTransportOptions,\n FetchTransportRequestOptions,\n} from './transports';\n\nexport {\n faro,\n allLogLevels,\n BaseExtension,\n BaseInstrumentation,\n BaseTransport,\n Conventions,\n createInternalLogger,\n createPromiseBuffer,\n deepEqual,\n defaultExceptionType,\n defaultGlobalObjectKey,\n defaultInternalLoggerLevel,\n defaultLogLevel,\n genShortID,\n getCurrentTimestamp,\n getInternalFaroFromGlobalObject,\n getTransportBody,\n globalObject,\n internalGlobalObjectKey,\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 isInternalFaroOnGlobalObject,\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 InternalLoggerLevel,\n LogLevel,\n noop,\n setInternalFaroOnGlobalObject,\n TransportItemType,\n transportItemTypeToBodyKey,\n VERSION,\n EVENT_CLICK,\n EVENT_NAVIGATION,\n EVENT_ROUTE_CHANGE,\n EVENT_SESSION_EXTEND,\n EVENT_SESSION_RESUME,\n EVENT_SESSION_START,\n EVENT_VIEW_CHANGED,\n} from '@grafana/faro-core';\n\nexport type {\n Faro,\n API,\n APIEvent,\n BaseObject,\n BaseObjectKey,\n BaseObjectPrimitiveValue,\n BaseObjectValue,\n BeforeSendHook,\n BufferItem,\n Config,\n EventAttributes,\n EventEvent,\n EventsAPI,\n ExceptionEvent,\n ExceptionStackFrame,\n ExceptionsAPI,\n ExtendedError,\n Extension,\n GlobalObject,\n Instrumentation,\n Instrumentations,\n InternalLogger,\n LogContext,\n LogEvent,\n LogsAPI,\n MeasurementEvent,\n MeasurementsAPI,\n Meta,\n MetaAPI,\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 OTELApi,\n Patterns,\n PromiseBuffer,\n PromiseBufferOptions,\n PromiseProducer,\n PushErrorOptions,\n PushLogOptions,\n PushMeasurementOptions,\n Stacktrace,\n StacktraceParser,\n TraceContext,\n TraceEvent,\n TracesAPI,\n Transport,\n TransportBody,\n TransportItem,\n TransportItemPayload,\n Transports,\n UnpatchedConsole,\n} from '@grafana/faro-core';\n\nexport {\n PersistentSessionsManager,\n VolatileSessionsManager,\n MAX_SESSION_PERSISTENCE_TIME,\n MAX_SESSION_PERSISTENCE_TIME_BUFFER,\n SESSION_EXPIRATION_TIME,\n SESSION_INACTIVITY_TIME,\n STORAGE_KEY,\n} from './instrumentations/session';\n\nexport { getIgnoreUrls } from './utils/url';\n"]}
|
|
@@ -28,6 +28,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.ConsoleInstrumentation = void 0;
|
|
30
30
|
var faro_core_1 = require("@grafana/faro-core");
|
|
31
|
+
var getErrorDetails_1 = require("../errors/getErrorDetails");
|
|
31
32
|
var ConsoleInstrumentation = /** @class */ (function (_super) {
|
|
32
33
|
__extends(ConsoleInstrumentation, _super);
|
|
33
34
|
function ConsoleInstrumentation(options) {
|
|
@@ -36,26 +37,47 @@ var ConsoleInstrumentation = /** @class */ (function (_super) {
|
|
|
36
37
|
_this.options = options;
|
|
37
38
|
_this.name = '@grafana/faro-web-sdk:instrumentation-console';
|
|
38
39
|
_this.version = faro_core_1.VERSION;
|
|
40
|
+
_this.errorSerializer = faro_core_1.defaultLogArgsSerializer;
|
|
39
41
|
return _this;
|
|
40
42
|
}
|
|
41
43
|
ConsoleInstrumentation.prototype.initialize = function () {
|
|
42
44
|
var _this = this;
|
|
43
|
-
|
|
45
|
+
var _a, _b, _c, _d;
|
|
44
46
|
this.options = __assign(__assign({}, this.options), this.config.consoleInstrumentation);
|
|
47
|
+
var serializeErrors = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.serializeErrors) || !!((_b = this.options) === null || _b === void 0 ? void 0 : _b.errorSerializer);
|
|
48
|
+
this.errorSerializer = serializeErrors
|
|
49
|
+
? ((_d = (_c = this.options) === null || _c === void 0 ? void 0 : _c.errorSerializer) !== null && _d !== void 0 ? _d : faro_core_1.defaultErrorArgsSerializer)
|
|
50
|
+
: faro_core_1.defaultLogArgsSerializer;
|
|
45
51
|
faro_core_1.allLogLevels
|
|
46
52
|
.filter(function (level) { var _a, _b; return !((_b = (_a = _this.options) === null || _a === void 0 ? void 0 : _a.disabledLevels) !== null && _b !== void 0 ? _b : ConsoleInstrumentation.defaultDisabledLevels).includes(level); })
|
|
47
53
|
.forEach(function (level) {
|
|
48
54
|
/* eslint-disable-next-line no-console */
|
|
49
55
|
console[level] = function () {
|
|
50
56
|
var _a;
|
|
51
|
-
var _b;
|
|
57
|
+
var _b, _c;
|
|
52
58
|
var args = [];
|
|
53
59
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
54
60
|
args[_i] = arguments[_i];
|
|
55
61
|
}
|
|
56
62
|
try {
|
|
57
63
|
if (level === faro_core_1.LogLevel.ERROR && !((_b = _this.options) === null || _b === void 0 ? void 0 : _b.consoleErrorAsLog)) {
|
|
58
|
-
|
|
64
|
+
var _d = (0, getErrorDetails_1.getDetailsFromConsoleErrorArgs)(args, _this.errorSerializer), value = _d.value, type = _d.type, stackFrames = _d.stackFrames;
|
|
65
|
+
if (value && !type && !stackFrames) {
|
|
66
|
+
_this.api.pushError(new Error(ConsoleInstrumentation.consoleErrorPrefix + value));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
_this.api.pushError(new Error(ConsoleInstrumentation.consoleErrorPrefix + value), { type: type, stackFrames: stackFrames });
|
|
70
|
+
}
|
|
71
|
+
else if (level === faro_core_1.LogLevel.ERROR && ((_c = _this.options) === null || _c === void 0 ? void 0 : _c.consoleErrorAsLog)) {
|
|
72
|
+
var _e = (0, getErrorDetails_1.getDetailsFromConsoleErrorArgs)(args, _this.errorSerializer), value = _e.value, type = _e.type, stackFrames = _e.stackFrames;
|
|
73
|
+
_this.api.pushLog(value ? [ConsoleInstrumentation.consoleErrorPrefix + value] : args, {
|
|
74
|
+
level: level,
|
|
75
|
+
context: {
|
|
76
|
+
value: value !== null && value !== void 0 ? value : '',
|
|
77
|
+
type: type !== null && type !== void 0 ? type : '',
|
|
78
|
+
stackFrames: (stackFrames === null || stackFrames === void 0 ? void 0 : stackFrames.length) ? (0, faro_core_1.defaultErrorArgsSerializer)(stackFrames) : '',
|
|
79
|
+
},
|
|
80
|
+
});
|
|
59
81
|
}
|
|
60
82
|
else {
|
|
61
83
|
_this.api.pushLog(args, { level: level });
|
|
@@ -71,6 +93,7 @@ var ConsoleInstrumentation = /** @class */ (function (_super) {
|
|
|
71
93
|
});
|
|
72
94
|
};
|
|
73
95
|
ConsoleInstrumentation.defaultDisabledLevels = [faro_core_1.LogLevel.DEBUG, faro_core_1.LogLevel.TRACE, faro_core_1.LogLevel.LOG];
|
|
96
|
+
ConsoleInstrumentation.consoleErrorPrefix = 'console.error: ';
|
|
74
97
|
return ConsoleInstrumentation;
|
|
75
98
|
}(faro_core_1.BaseInstrumentation));
|
|
76
99
|
exports.ConsoleInstrumentation = ConsoleInstrumentation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/instrumentations/console/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/instrumentations/console/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n allLogLevels,\n BaseInstrumentation,\n defaultErrorArgsSerializer,\n defaultLogArgsSerializer,\n LogArgsSerializer,\n LogLevel,\n VERSION,\n} from '@grafana/faro-core';\n\nimport { getDetailsFromConsoleErrorArgs } from '../errors/getErrorDetails';\n\nimport type { ConsoleInstrumentationOptions } from './types';\n\nexport class ConsoleInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-console';\n readonly version = VERSION;\n\n static defaultDisabledLevels: LogLevel[] = [LogLevel.DEBUG, LogLevel.TRACE, LogLevel.LOG];\n static consoleErrorPrefix = 'console.error: ';\n private errorSerializer: LogArgsSerializer = defaultLogArgsSerializer;\n\n constructor(private options: ConsoleInstrumentationOptions = {}) {\n super();\n }\n\n initialize() {\n this.options = { ...this.options, ...this.config.consoleInstrumentation };\n\n const serializeErrors = this.options?.serializeErrors || !!this.options?.errorSerializer;\n this.errorSerializer = serializeErrors\n ? (this.options?.errorSerializer ?? defaultErrorArgsSerializer)\n : defaultLogArgsSerializer;\n\n allLogLevels\n .filter(\n (level) => !(this.options?.disabledLevels ?? ConsoleInstrumentation.defaultDisabledLevels).includes(level)\n )\n .forEach((level) => {\n /* eslint-disable-next-line no-console */\n console[level] = (...args) => {\n try {\n if (level === LogLevel.ERROR && !this.options?.consoleErrorAsLog) {\n const { value, type, stackFrames } = getDetailsFromConsoleErrorArgs(args, this.errorSerializer);\n\n if (value && !type && !stackFrames) {\n this.api.pushError(new Error(ConsoleInstrumentation.consoleErrorPrefix + value));\n return;\n }\n\n this.api.pushError(new Error(ConsoleInstrumentation.consoleErrorPrefix + value), { type, stackFrames });\n } else if (level === LogLevel.ERROR && this.options?.consoleErrorAsLog) {\n const { value, type, stackFrames } = getDetailsFromConsoleErrorArgs(args, this.errorSerializer);\n\n this.api.pushLog(value ? [ConsoleInstrumentation.consoleErrorPrefix + value] : args, {\n level,\n context: {\n value: value ?? '',\n type: type ?? '',\n stackFrames: stackFrames?.length ? defaultErrorArgsSerializer(stackFrames) : '',\n },\n });\n } else {\n this.api.pushLog(args, { level });\n }\n } catch (err) {\n this.logError(err);\n } finally {\n this.unpatchedConsole[level](...args);\n }\n };\n });\n }\n}\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getErrorDetails = void 0;
|
|
3
|
+
exports.getDetailsFromConsoleErrorArgs = exports.getDetailsFromErrorArgs = exports.getErrorDetails = void 0;
|
|
4
4
|
var faro_core_1 = require("@grafana/faro-core");
|
|
5
5
|
var const_1 = require("./const");
|
|
6
|
+
var getValueAndTypeFromMessage_1 = require("./getValueAndTypeFromMessage");
|
|
6
7
|
var stackFrames_1 = require("./stackFrames");
|
|
7
8
|
function getErrorDetails(evt) {
|
|
8
9
|
var value;
|
|
@@ -31,4 +32,34 @@ function getErrorDetails(evt) {
|
|
|
31
32
|
return [value, type, stackFrames];
|
|
32
33
|
}
|
|
33
34
|
exports.getErrorDetails = getErrorDetails;
|
|
35
|
+
function getDetailsFromErrorArgs(args) {
|
|
36
|
+
var _a, _b;
|
|
37
|
+
var evt = args[0], source = args[1], lineno = args[2], colno = args[3], error = args[4];
|
|
38
|
+
var value;
|
|
39
|
+
var type;
|
|
40
|
+
var stackFrames = [];
|
|
41
|
+
var eventIsString = (0, faro_core_1.isString)(evt);
|
|
42
|
+
var initialStackFrame = (0, stackFrames_1.buildStackFrame)(source, const_1.unknownSymbolString, lineno, colno);
|
|
43
|
+
if (error || !eventIsString) {
|
|
44
|
+
_a = getErrorDetails((error !== null && error !== void 0 ? error : evt)), value = _a[0], type = _a[1], stackFrames = _a[2];
|
|
45
|
+
if (stackFrames.length === 0) {
|
|
46
|
+
stackFrames = [initialStackFrame];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (eventIsString) {
|
|
50
|
+
_b = (0, getValueAndTypeFromMessage_1.getValueAndTypeFromMessage)(evt), value = _b[0], type = _b[1];
|
|
51
|
+
stackFrames = [initialStackFrame];
|
|
52
|
+
}
|
|
53
|
+
return { value: value, type: type, stackFrames: stackFrames };
|
|
54
|
+
}
|
|
55
|
+
exports.getDetailsFromErrorArgs = getDetailsFromErrorArgs;
|
|
56
|
+
function getDetailsFromConsoleErrorArgs(args, serializer) {
|
|
57
|
+
if ((0, faro_core_1.isError)(args[0])) {
|
|
58
|
+
return getDetailsFromErrorArgs(args);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return { value: serializer(args) };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.getDetailsFromConsoleErrorArgs = getDetailsFromConsoleErrorArgs;
|
|
34
65
|
//# sourceMappingURL=getErrorDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getErrorDetails.js","sourceRoot":"","sources":["../../../../src/instrumentations/errors/getErrorDetails.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"getErrorDetails.js","sourceRoot":"","sources":["../../../../src/instrumentations/errors/getErrorDetails.ts"],"names":[],"mappings":"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","sourcesContent":["import { isDomError, isDomException, isError, isErrorEvent, isEvent, isObject, isString } from '@grafana/faro-core';\nimport type { ExceptionStackFrame, LogArgsSerializer } from '@grafana/faro-core';\n\nimport { domErrorType, domExceptionType, objectEventValue, unknownSymbolString } from './const';\nimport { getValueAndTypeFromMessage } from './getValueAndTypeFromMessage';\nimport { buildStackFrame, getStackFramesFromError } from './stackFrames';\nimport type { ErrorEvent } from './types';\n\nexport function getErrorDetails(evt: ErrorEvent): [string | undefined, string | undefined, ExceptionStackFrame[]] {\n let value: string | undefined;\n let type: string | undefined;\n let stackFrames: ExceptionStackFrame[] = [];\n let isDomErrorRes: boolean | undefined;\n let isEventRes: boolean | undefined;\n\n if (isErrorEvent(evt) && evt.error) {\n value = evt.error.message;\n type = evt.error.name;\n stackFrames = getStackFramesFromError(evt.error);\n } else if ((isDomErrorRes = isDomError(evt)) || isDomException(evt)) {\n const { name, message } = evt;\n\n type = name ?? (isDomErrorRes ? domErrorType : domExceptionType);\n value = message ? `${type}: ${message}` : type;\n } else if (isError(evt)) {\n value = evt.message;\n stackFrames = getStackFramesFromError(evt);\n } else if (isObject(evt) || (isEventRes = isEvent(evt))) {\n type = isEventRes ? evt.constructor.name : undefined;\n value = `${objectEventValue} ${Object.keys(evt)}`;\n }\n\n return [value, type, stackFrames];\n}\n\nexport interface ErrorDetails {\n value?: string;\n type?: string;\n stackFrames?: ExceptionStackFrame[];\n}\n\nexport function getDetailsFromErrorArgs(args: [any?, ...any[]]): ErrorDetails {\n const [evt, source, lineno, colno, error] = args;\n\n let value: string | undefined;\n let type: string | undefined;\n let stackFrames: ExceptionStackFrame[] = [];\n const eventIsString = isString(evt);\n const initialStackFrame = buildStackFrame(source, unknownSymbolString, lineno, colno);\n\n if (error || !eventIsString) {\n [value, type, stackFrames] = getErrorDetails((error ?? evt) as Error | Event);\n\n if (stackFrames.length === 0) {\n stackFrames = [initialStackFrame];\n }\n } else if (eventIsString) {\n [value, type] = getValueAndTypeFromMessage(evt);\n stackFrames = [initialStackFrame];\n }\n\n return { value, type, stackFrames };\n}\n\nexport function getDetailsFromConsoleErrorArgs(args: [any?, ...any[]], serializer: LogArgsSerializer): ErrorDetails {\n if (isError(args[0])) {\n return getDetailsFromErrorArgs(args);\n } else {\n return { value: serializer(args) };\n }\n}\n"]}
|
|
@@ -1,36 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerOnerror = void 0;
|
|
4
|
-
var faro_core_1 = require("@grafana/faro-core");
|
|
5
|
-
var const_1 = require("./const");
|
|
6
4
|
var getErrorDetails_1 = require("./getErrorDetails");
|
|
7
|
-
var getValueAndTypeFromMessage_1 = require("./getValueAndTypeFromMessage");
|
|
8
|
-
var stackFrames_1 = require("./stackFrames");
|
|
9
5
|
function registerOnerror(api) {
|
|
10
6
|
var oldOnerror = window.onerror;
|
|
11
7
|
window.onerror = function () {
|
|
12
|
-
var _a, _b;
|
|
13
8
|
var args = [];
|
|
14
9
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
15
10
|
args[_i] = arguments[_i];
|
|
16
11
|
}
|
|
17
12
|
try {
|
|
18
|
-
var
|
|
19
|
-
var value = void 0;
|
|
20
|
-
var type = void 0;
|
|
21
|
-
var stackFrames = [];
|
|
22
|
-
var eventIsString = (0, faro_core_1.isString)(evt);
|
|
23
|
-
var initialStackFrame = (0, stackFrames_1.buildStackFrame)(source, const_1.unknownSymbolString, lineno, colno);
|
|
24
|
-
if (error || !eventIsString) {
|
|
25
|
-
_a = (0, getErrorDetails_1.getErrorDetails)((error !== null && error !== void 0 ? error : evt)), value = _a[0], type = _a[1], stackFrames = _a[2];
|
|
26
|
-
if (stackFrames.length === 0) {
|
|
27
|
-
stackFrames = [initialStackFrame];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
else if (eventIsString) {
|
|
31
|
-
_b = (0, getValueAndTypeFromMessage_1.getValueAndTypeFromMessage)(evt), value = _b[0], type = _b[1];
|
|
32
|
-
stackFrames = [initialStackFrame];
|
|
33
|
-
}
|
|
13
|
+
var _a = (0, getErrorDetails_1.getDetailsFromErrorArgs)(args), value = _a.value, type = _a.type, stackFrames = _a.stackFrames;
|
|
34
14
|
if (value) {
|
|
35
15
|
api.pushError(new Error(value), { type: type, stackFrames: stackFrames });
|
|
36
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerOnerror.js","sourceRoot":"","sources":["../../../../src/instrumentations/errors/registerOnerror.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"registerOnerror.js","sourceRoot":"","sources":["../../../../src/instrumentations/errors/registerOnerror.ts"],"names":[],"mappings":";;;AAEA,qDAA4D;AAE5D,SAAgB,eAAe,CAAC,GAAQ;IACtC,IAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;IAElC,MAAM,CAAC,OAAO,GAAG;QAAC,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACvB,IAAI;YACI,IAAA,KAA+B,IAAA,yCAAuB,EAAC,IAAI,CAAC,EAA1D,KAAK,WAAA,EAAE,IAAI,UAAA,EAAE,WAAW,iBAAkC,CAAC;YAEnE,IAAI,KAAK,EAAE;gBACT,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,MAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;aACxD;SACF;gBAAS;YACR,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACjC;IACH,CAAC,CAAC;AACJ,CAAC;AAdD,0CAcC","sourcesContent":["import type { API } from '@grafana/faro-core';\n\nimport { getDetailsFromErrorArgs } from './getErrorDetails';\n\nexport function registerOnerror(api: API): void {\n const oldOnerror = window.onerror;\n\n window.onerror = (...args) => {\n try {\n const { value, type, stackFrames } = getDetailsFromErrorArgs(args);\n\n if (value) {\n api.pushError(new Error(value), { type, stackFrames });\n }\n } finally {\n oldOnerror?.apply(window, args);\n }\n };\n}\n"]}
|
|
@@ -56,7 +56,7 @@ var SessionInstrumentation = /** @class */ (function (_super) {
|
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
SessionInstrumentation.prototype.createInitialSession = function (SessionManager, sessionsConfig) {
|
|
59
|
-
var _a, _b, _c, _d
|
|
59
|
+
var _a, _b, _c, _d;
|
|
60
60
|
var userSession = SessionManager.fetchUserSession();
|
|
61
61
|
if (sessionsConfig.persistent && sessionsConfig.maxSessionPersistenceTime && userSession) {
|
|
62
62
|
var now = (0, faro_core_1.dateNow)();
|
|
@@ -75,23 +75,25 @@ var SessionInstrumentation = /** @class */ (function (_super) {
|
|
|
75
75
|
isSampled: userSession.isSampled || false,
|
|
76
76
|
started: userSession === null || userSession === void 0 ? void 0 : userSession.started,
|
|
77
77
|
});
|
|
78
|
+
var userSessionMeta = userSession === null || userSession === void 0 ? void 0 : userSession.sessionMeta;
|
|
78
79
|
initialSession.sessionMeta = {
|
|
79
80
|
id: sessionId,
|
|
80
|
-
attributes: __assign(__assign(__assign({}, (_a = sessionsConfig.session) === null || _a === void 0 ? void 0 : _a.attributes),
|
|
81
|
+
attributes: __assign(__assign(__assign({}, (_a = sessionsConfig.session) === null || _a === void 0 ? void 0 : _a.attributes), userSessionMeta === null || userSessionMeta === void 0 ? void 0 : userSessionMeta.attributes), {
|
|
81
82
|
// For valid resumed sessions we do not want to recalculate the sampling decision on each init phase.
|
|
82
83
|
isSampled: initialSession.isSampled.toString() }),
|
|
84
|
+
overrides: userSessionMeta === null || userSessionMeta === void 0 ? void 0 : userSessionMeta.overrides,
|
|
83
85
|
};
|
|
84
86
|
lifecycleType = faro_core_1.EVENT_SESSION_RESUME;
|
|
85
87
|
}
|
|
86
88
|
else {
|
|
87
|
-
var sessionId = (
|
|
89
|
+
var sessionId = (_c = (_b = sessionsConfig.session) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : (0, metas_1.createSession)().id;
|
|
88
90
|
initialSession = (0, sessionManagerUtils_1.createUserSessionObject)({
|
|
89
91
|
sessionId: sessionId,
|
|
90
92
|
isSampled: (0, sessionManager_1.isSampled)(),
|
|
91
93
|
});
|
|
92
94
|
initialSession.sessionMeta = {
|
|
93
95
|
id: sessionId,
|
|
94
|
-
attributes: __assign({ isSampled: initialSession.isSampled.toString() }, (
|
|
96
|
+
attributes: __assign({ isSampled: initialSession.isSampled.toString() }, (_d = sessionsConfig.session) === null || _d === void 0 ? void 0 : _d.attributes),
|
|
95
97
|
};
|
|
96
98
|
lifecycleType = faro_core_1.EVENT_SESSION_START;
|
|
97
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/instrumentations/session/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAS4B;AAI5B,qCAA4C;AAE5C,mDAA8F;AAC9F,wFAAuF;AACvF,4EAAmG;AAKnG;IAA4C,0CAAmB;IAA/D;QAAA,
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/instrumentations/session/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BaseInstrumentation,\n dateNow,\n EVENT_SESSION_EXTEND,\n EVENT_SESSION_RESUME,\n EVENT_SESSION_START,\n Meta,\n MetaSession,\n VERSION,\n} from '@grafana/faro-core';\nimport type { Config } from '@grafana/faro-core';\n\nimport type { TransportItem } from '../..';\nimport { createSession } from '../../metas';\n\nimport { type FaroUserSession, getSessionManagerByConfig, isSampled } from './sessionManager';\nimport { PersistentSessionsManager } from './sessionManager/PersistentSessionsManager';\nimport { createUserSessionObject, isUserSessionValid } from './sessionManager/sessionManagerUtils';\nimport type { SessionManager } from './sessionManager/types';\n\ntype LifecycleType = typeof EVENT_SESSION_RESUME | typeof EVENT_SESSION_START;\n\nexport class SessionInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-session';\n readonly version = VERSION;\n\n // previously notified session, to ensure we don't send session start\n // event twice for the same session\n private notifiedSession: MetaSession | undefined;\n\n private sendSessionStartEvent(meta: Meta): void {\n const session = meta.session;\n\n if (session && session.id !== this.notifiedSession?.id) {\n if (this.notifiedSession && this.notifiedSession.id === session.attributes?.['previousSession']) {\n this.api.pushEvent(EVENT_SESSION_EXTEND, {}, undefined, { skipDedupe: true });\n this.notifiedSession = session;\n return;\n }\n\n this.notifiedSession = session;\n // no need to add attributes and session id, they are included as part of meta\n // automatically\n this.api.pushEvent(EVENT_SESSION_START, {}, undefined, { skipDedupe: true });\n }\n }\n\n private createInitialSession(\n SessionManager: SessionManager,\n sessionsConfig: Required<Config>['sessionTracking']\n ): {\n initialSession: FaroUserSession;\n lifecycleType: LifecycleType;\n } {\n let userSession: FaroUserSession | null = SessionManager.fetchUserSession();\n\n if (sessionsConfig.persistent && sessionsConfig.maxSessionPersistenceTime && userSession) {\n const now = dateNow();\n const shouldClearPersistentSession = userSession.lastActivity < now - sessionsConfig.maxSessionPersistenceTime;\n\n if (shouldClearPersistentSession) {\n PersistentSessionsManager.removeUserSession();\n userSession = null;\n }\n }\n\n let lifecycleType: LifecycleType;\n let initialSession: FaroUserSession;\n\n if (isUserSessionValid(userSession)) {\n const sessionId = userSession?.sessionId;\n\n initialSession = createUserSessionObject({\n sessionId,\n isSampled: userSession!.isSampled || false,\n started: userSession?.started,\n });\n\n const userSessionMeta = userSession?.sessionMeta;\n\n initialSession.sessionMeta = {\n id: sessionId,\n attributes: {\n ...sessionsConfig.session?.attributes,\n ...userSessionMeta?.attributes,\n // For valid resumed sessions we do not want to recalculate the sampling decision on each init phase.\n isSampled: initialSession.isSampled.toString(),\n },\n overrides: userSessionMeta?.overrides,\n };\n\n lifecycleType = EVENT_SESSION_RESUME;\n } else {\n const sessionId = sessionsConfig.session?.id ?? createSession().id;\n\n initialSession = createUserSessionObject({\n sessionId,\n isSampled: isSampled(),\n });\n\n initialSession.sessionMeta = {\n id: sessionId,\n attributes: {\n isSampled: initialSession.isSampled.toString(),\n ...sessionsConfig.session?.attributes,\n },\n };\n\n lifecycleType = EVENT_SESSION_START;\n }\n\n return { initialSession, lifecycleType };\n }\n\n private registerBeforeSendHook(SessionManager: SessionManager) {\n const { updateSession } = new SessionManager();\n\n this.transports?.addBeforeSendHooks((item) => {\n updateSession();\n\n const attributes = item.meta.session?.attributes;\n\n if (attributes && attributes?.['isSampled'] === 'true') {\n let newItem: TransportItem = JSON.parse(JSON.stringify(item));\n\n const newAttributes = newItem.meta.session?.attributes;\n delete newAttributes?.['isSampled'];\n\n if (Object.keys(newAttributes ?? {}).length === 0) {\n delete newItem.meta.session?.attributes;\n }\n\n return newItem;\n }\n\n return null;\n });\n }\n\n initialize() {\n this.logDebug('init session instrumentation');\n\n const sessionTrackingConfig = this.config.sessionTracking;\n\n if (sessionTrackingConfig?.enabled) {\n const SessionManager = getSessionManagerByConfig(sessionTrackingConfig);\n\n this.registerBeforeSendHook(SessionManager);\n\n const { initialSession, lifecycleType } = this.createInitialSession(SessionManager, sessionTrackingConfig);\n\n SessionManager.storeUserSession(initialSession);\n\n const initialSessionMeta = initialSession.sessionMeta;\n\n this.notifiedSession = initialSessionMeta;\n this.api.setSession(initialSessionMeta);\n\n if (lifecycleType === EVENT_SESSION_START) {\n this.api.pushEvent(EVENT_SESSION_START, {}, undefined, { skipDedupe: true });\n }\n\n if (lifecycleType === EVENT_SESSION_RESUME) {\n this.api.pushEvent(EVENT_SESSION_RESUME, {}, undefined, { skipDedupe: true });\n }\n }\n\n this.metas.addListener(this.sendSessionStartEvent.bind(this));\n }\n}\n"]}
|
|
@@ -4,7 +4,6 @@ exports.PersistentSessionsManager = void 0;
|
|
|
4
4
|
var faro_core_1 = require("@grafana/faro-core");
|
|
5
5
|
var utils_1 = require("../../../utils");
|
|
6
6
|
var webStorage_1 = require("../../../utils/webStorage");
|
|
7
|
-
var sampling_1 = require("./sampling");
|
|
8
7
|
var sessionConstants_1 = require("./sessionConstants");
|
|
9
8
|
var sessionManagerUtils_1 = require("./sessionManagerUtils");
|
|
10
9
|
var PersistentSessionsManager = /** @class */ (function () {
|
|
@@ -21,7 +20,7 @@ var PersistentSessionsManager = /** @class */ (function () {
|
|
|
21
20
|
(0, webStorage_1.removeItem)(sessionConstants_1.STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);
|
|
22
21
|
};
|
|
23
22
|
PersistentSessionsManager.storeUserSession = function (session) {
|
|
24
|
-
(0, webStorage_1.setItem)(sessionConstants_1.STORAGE_KEY, (0,
|
|
23
|
+
(0, webStorage_1.setItem)(sessionConstants_1.STORAGE_KEY, (0, faro_core_1.stringifyExternalJson)(session), PersistentSessionsManager.storageTypeLocal);
|
|
25
24
|
};
|
|
26
25
|
PersistentSessionsManager.fetchUserSession = function () {
|
|
27
26
|
var storedSession = (0, webStorage_1.getItem)(sessionConstants_1.STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);
|
|
@@ -38,15 +37,10 @@ var PersistentSessionsManager = /** @class */ (function () {
|
|
|
38
37
|
}
|
|
39
38
|
});
|
|
40
39
|
// Users can call the setSession() method, so we need to sync this with the local storage session
|
|
41
|
-
faro_core_1.faro.metas.addListener(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var userSession = (0, sessionManagerUtils_1.addSessionMetadataToNextSession)((0, sessionManagerUtils_1.createUserSessionObject)({ sessionId: session.id, isSampled: (0, sampling_1.isSampled)() }), sessionFromLocalStorage);
|
|
46
|
-
PersistentSessionsManager.storeUserSession(userSession);
|
|
47
|
-
faro_core_1.faro.api.setSession(userSession.sessionMeta);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
40
|
+
faro_core_1.faro.metas.addListener((0, sessionManagerUtils_1.getSessionMetaUpdateHandler)({
|
|
41
|
+
fetchUserSession: PersistentSessionsManager.fetchUserSession,
|
|
42
|
+
storeUserSession: PersistentSessionsManager.storeUserSession,
|
|
43
|
+
}));
|
|
50
44
|
};
|
|
51
45
|
PersistentSessionsManager.storageTypeLocal = webStorage_1.webStorageType.local;
|
|
52
46
|
return PersistentSessionsManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistentSessionsManager.js","sourceRoot":"","sources":["../../../../../src/instrumentations/session/sessionManager/PersistentSessionsManager.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"PersistentSessionsManager.js","sourceRoot":"","sources":["../../../../../src/instrumentations/session/sessionManager/PersistentSessionsManager.ts"],"names":[],"mappings":";;;AAAA,gDAAiE;AAEjE,wCAA0C;AAC1C,wDAAyF;AAEzF,uDAAuE;AACvE,6DAA2F;AAG3F;IAIE;QAAA,iBAOC;QAoBD,kBAAa,GAAG,IAAA,gBAAQ,EAAC,cAAM,OAAA,KAAI,CAAC,iBAAiB,EAAE,EAAxB,CAAwB,EAAE,uCAAoB,CAAC,CAAC;QA1B7E,IAAI,CAAC,iBAAiB,GAAG,IAAA,2CAAqB,EAAC;YAC7C,gBAAgB,EAAE,yBAAyB,CAAC,gBAAgB;YAC5D,gBAAgB,EAAE,yBAAyB,CAAC,gBAAgB;SAC7D,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEM,2CAAiB,GAAxB;QACE,IAAA,uBAAU,EAAC,8BAAW,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IACtE,CAAC;IAEM,0CAAgB,GAAvB,UAAwB,OAAwB;QAC9C,IAAA,oBAAO,EAAC,8BAAW,EAAE,IAAA,iCAAqB,EAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IACnG,CAAC;IAEM,0CAAgB,GAAvB;QACE,IAAM,aAAa,GAAG,IAAA,oBAAO,EAAC,8BAAW,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;QAEvF,IAAI,aAAa,EAAE;YACjB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAoB,CAAC;SACrD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAIO,wCAAI,GAAZ;QAAA,iBAcC;QAbC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;YAC5C,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE;gBAC1C,KAAI,CAAC,aAAa,EAAE,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;QAEH,iGAAiG;QACjG,gBAAI,CAAC,KAAK,CAAC,WAAW,CACpB,IAAA,iDAA2B,EAAC;YAC1B,gBAAgB,EAAE,yBAAyB,CAAC,gBAAgB;YAC5D,gBAAgB,EAAE,yBAAyB,CAAC,gBAAgB;SAC7D,CAAC,CACH,CAAC;IACJ,CAAC;IA9Cc,0CAAgB,GAAG,2BAAc,CAAC,KAAK,CAAC;IA+CzD,gCAAC;CAAA,AAhDD,IAgDC;AAhDY,8DAAyB","sourcesContent":["import { faro, stringifyExternalJson } from '@grafana/faro-core';\n\nimport { throttle } from '../../../utils';\nimport { getItem, removeItem, setItem, webStorageType } from '../../../utils/webStorage';\n\nimport { STORAGE_KEY, STORAGE_UPDATE_DELAY } from './sessionConstants';\nimport { getSessionMetaUpdateHandler, getUserSessionUpdater } from './sessionManagerUtils';\nimport type { FaroUserSession } from './types';\n\nexport class PersistentSessionsManager {\n private static storageTypeLocal = webStorageType.local;\n private updateUserSession: ReturnType<typeof getUserSessionUpdater>;\n\n constructor() {\n this.updateUserSession = getUserSessionUpdater({\n fetchUserSession: PersistentSessionsManager.fetchUserSession,\n storeUserSession: PersistentSessionsManager.storeUserSession,\n });\n\n this.init();\n }\n\n static removeUserSession() {\n removeItem(STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);\n }\n\n static storeUserSession(session: FaroUserSession): void {\n setItem(STORAGE_KEY, stringifyExternalJson(session), PersistentSessionsManager.storageTypeLocal);\n }\n\n static fetchUserSession(): FaroUserSession | null {\n const storedSession = getItem(STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);\n\n if (storedSession) {\n return JSON.parse(storedSession) as FaroUserSession;\n }\n\n return null;\n }\n\n updateSession = throttle(() => this.updateUserSession(), STORAGE_UPDATE_DELAY);\n\n private init(): void {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n this.updateSession();\n }\n });\n\n // Users can call the setSession() method, so we need to sync this with the local storage session\n faro.metas.addListener(\n getSessionMetaUpdateHandler({\n fetchUserSession: PersistentSessionsManager.fetchUserSession,\n storeUserSession: PersistentSessionsManager.storeUserSession,\n })\n );\n }\n}\n"]}
|