@grafana/faro-web-sdk 1.2.2 → 1.2.4
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/index.d.ts +1 -1
- package/dist/bundle/types/instrumentations/console/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/errors/instrumentation.d.ts +1 -1
- package/dist/bundle/types/instrumentations/session/index.d.ts +1 -1
- package/dist/bundle/types/instrumentations/session/instrumentation.d.ts +2 -2
- package/dist/bundle/types/instrumentations/session/sessionManager/PersistentSessionsManager.d.ts +12 -0
- package/dist/bundle/types/instrumentations/session/sessionManager/VolatileSessionManager.d.ts +12 -0
- package/dist/bundle/types/instrumentations/session/sessionManager/index.d.ts +3 -0
- package/dist/bundle/types/instrumentations/session/sessionManager/sessionManagerUtils.d.ts +16 -0
- package/dist/bundle/types/instrumentations/session/sessionManager/types.d.ts +7 -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 +1 -0
- package/dist/bundle/types/metas/sdk/index.d.ts +1 -0
- package/dist/bundle/types/metas/sdk/meta.d.ts +2 -0
- 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/webStorage.d.ts +30 -4
- package/dist/cjs/config/makeCoreConfig.js +22 -7
- package/dist/cjs/config/makeCoreConfig.js.map +1 -1
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instrumentations/session/index.js +1 -1
- package/dist/cjs/instrumentations/session/index.js.map +1 -1
- package/dist/cjs/instrumentations/session/instrumentation.js +20 -9
- package/dist/cjs/instrumentations/session/instrumentation.js.map +1 -1
- package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js +66 -0
- package/dist/cjs/instrumentations/session/sessionManager/PersistentSessionsManager.js.map +1 -0
- package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js +55 -0
- package/dist/cjs/instrumentations/session/sessionManager/VolatileSessionManager.js.map +1 -0
- package/dist/cjs/instrumentations/session/sessionManager/index.js +8 -0
- package/dist/cjs/instrumentations/session/sessionManager/index.js.map +1 -0
- package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js +77 -0
- package/dist/cjs/instrumentations/session/sessionManager/sessionManagerUtils.js.map +1 -0
- package/dist/cjs/instrumentations/session/sessionManager/types.js +3 -0
- package/dist/cjs/instrumentations/session/sessionManager/types.js.map +1 -0
- package/dist/cjs/metas/index.js +3 -1
- package/dist/cjs/metas/index.js.map +1 -1
- package/dist/cjs/metas/k6/meta.js +3 -1
- package/dist/cjs/metas/k6/meta.js.map +1 -1
- package/dist/cjs/metas/sdk/index.js +6 -0
- package/dist/cjs/metas/sdk/index.js.map +1 -0
- package/dist/cjs/metas/sdk/meta.js +16 -0
- package/dist/cjs/metas/sdk/meta.js.map +1 -0
- package/dist/cjs/transports/fetch/transport.js +1 -1
- package/dist/cjs/transports/fetch/transport.js.map +1 -1
- package/dist/cjs/utils/webStorage.js +47 -11
- package/dist/cjs/utils/webStorage.js.map +1 -1
- package/dist/esm/config/makeCoreConfig.js +23 -8
- 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/session/index.js +1 -1
- package/dist/esm/instrumentations/session/index.js.map +1 -1
- package/dist/esm/instrumentations/session/instrumentation.js +20 -8
- package/dist/esm/instrumentations/session/instrumentation.js.map +1 -1
- package/dist/esm/instrumentations/session/sessionManager/PersistentSessionsManager.js +59 -0
- package/dist/esm/instrumentations/session/sessionManager/PersistentSessionsManager.js.map +1 -0
- package/dist/esm/instrumentations/session/sessionManager/VolatileSessionManager.js +48 -0
- package/dist/esm/instrumentations/session/sessionManager/VolatileSessionManager.js.map +1 -0
- package/dist/esm/instrumentations/session/sessionManager/index.js +3 -0
- package/dist/esm/instrumentations/session/sessionManager/index.js.map +1 -0
- package/dist/esm/instrumentations/session/sessionManager/sessionManagerUtils.js +58 -0
- package/dist/esm/instrumentations/session/sessionManager/sessionManagerUtils.js.map +1 -0
- package/dist/esm/instrumentations/session/sessionManager/types.js +2 -0
- package/dist/esm/instrumentations/session/sessionManager/types.js.map +1 -0
- package/dist/esm/metas/index.js +1 -0
- package/dist/esm/metas/index.js.map +1 -1
- package/dist/esm/metas/k6/meta.js +3 -1
- package/dist/esm/metas/k6/meta.js.map +1 -1
- package/dist/esm/metas/sdk/index.js +2 -0
- package/dist/esm/metas/sdk/index.js.map +1 -0
- package/dist/esm/metas/sdk/meta.js +9 -0
- package/dist/esm/metas/sdk/meta.js.map +1 -0
- package/dist/esm/transports/fetch/transport.js +1 -1
- package/dist/esm/transports/fetch/transport.js.map +1 -1
- package/dist/esm/utils/webStorage.js +46 -10
- package/dist/esm/utils/webStorage.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/instrumentations/console/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
- package/dist/types/instrumentations/session/index.d.ts +1 -1
- package/dist/types/instrumentations/session/instrumentation.d.ts +2 -2
- package/dist/types/instrumentations/session/sessionManager/PersistentSessionsManager.d.ts +12 -0
- package/dist/types/instrumentations/session/sessionManager/VolatileSessionManager.d.ts +12 -0
- package/dist/types/instrumentations/session/sessionManager/index.d.ts +3 -0
- package/dist/types/instrumentations/session/sessionManager/sessionManagerUtils.d.ts +16 -0
- package/dist/types/instrumentations/session/sessionManager/types.d.ts +7 -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 +1 -0
- package/dist/types/metas/sdk/index.d.ts +1 -0
- package/dist/types/metas/sdk/meta.d.ts +2 -0
- package/dist/types/transports/console/transport.d.ts +1 -1
- package/dist/types/transports/fetch/transport.d.ts +1 -1
- package/dist/types/utils/webStorage.d.ts +30 -4
- package/package.json +3 -3
- package/dist/bundle/types/instrumentations/session/sessionHandler.d.ts +0 -22
- package/dist/cjs/instrumentations/session/sessionHandler.js +0 -170
- package/dist/cjs/instrumentations/session/sessionHandler.js.map +0 -1
- package/dist/esm/instrumentations/session/sessionHandler.js +0 -148
- package/dist/esm/instrumentations/session/sessionHandler.js.map +0 -1
- package/dist/types/instrumentations/session/sessionHandler.d.ts +0 -22
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
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 = exports.isFunction = void 0;
|
|
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.pageMeta = exports.defaultViewMeta = exports.defaultMetas = exports.createSession = exports.browserMeta = 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.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 = exports.isFunction = exports.isEventDefined = 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; } });
|
|
@@ -25,6 +25,7 @@ Object.defineProperty(exports, "createSession", { enumerable: true, get: functio
|
|
|
25
25
|
Object.defineProperty(exports, "defaultMetas", { enumerable: true, get: function () { return metas_1.defaultMetas; } });
|
|
26
26
|
Object.defineProperty(exports, "defaultViewMeta", { enumerable: true, get: function () { return metas_1.defaultViewMeta; } });
|
|
27
27
|
Object.defineProperty(exports, "pageMeta", { enumerable: true, get: function () { return metas_1.pageMeta; } });
|
|
28
|
+
Object.defineProperty(exports, "sdkMeta", { enumerable: true, get: function () { return metas_1.sdkMeta; } });
|
|
28
29
|
var transports_1 = require("./transports");
|
|
29
30
|
Object.defineProperty(exports, "ConsoleTransport", { enumerable: true, get: function () { return transports_1.ConsoleTransport; } });
|
|
30
31
|
Object.defineProperty(exports, "FetchTransport", { enumerable: true, get: function () { return transports_1.FetchTransport; } });
|
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,uDAU4B;AAT1B,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;AAIxB,
|
|
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,uDAU4B;AAT1B,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;AAIxB,iCAAuG;AAA9F,oGAAA,WAAW,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,gGAAA,OAAO,OAAA;AAErF,2CAAgE;AAAvD,8GAAA,gBAAgB,OAAA;AAAE,4GAAA,cAAc,OAAA;AAQzC,gDAwD4B;AAvD1B,iGAAA,IAAI,OAAA;AACJ,yGAAA,YAAY,OAAA;AACZ,0GAAA,aAAa,OAAA;AACb,gHAAA,mBAAmB,OAAA;AACnB,0GAAA,aAAa,OAAA;AACb,wGAAA,WAAW,OAAA;AACX,iHAAA,oBAAoB,OAAA;AACpB,gHAAA,mBAAmB,OAAA;AACnB,sGAAA,SAAS,OAAA;AACT,iHAAA,oBAAoB,OAAA;AACpB,mHAAA,sBAAsB,OAAA;AACtB,uHAAA,0BAA0B,OAAA;AAC1B,4GAAA,eAAe,OAAA;AACf,uGAAA,UAAU,OAAA;AACV,gHAAA,mBAAmB,OAAA;AACnB,4HAAA,+BAA+B,OAAA;AAC/B,6GAAA,gBAAgB,OAAA;AAChB,yGAAA,YAAY,OAAA;AACZ,oHAAA,uBAAuB,OAAA;AACvB,oGAAA,OAAO,OAAA;AACP,sGAAA,SAAS,OAAA;AACT,uGAAA,UAAU,OAAA;AACV,2GAAA,cAAc,OAAA;AACd,sGAAA,SAAS,OAAA;AACT,6GAAA,gBAAgB,OAAA;AAChB,oGAAA,OAAO,OAAA;AACP,2GAAA,cAAc,OAAA;AACd,yGAAA,YAAY,OAAA;AACZ,oGAAA,OAAO,OAAA;AACP,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AACZ,kGAAA,KAAK,OAAA;AACL,yHAAA,4BAA4B,OAAA;AAC5B,kGAAA,KAAK,OAAA;AACL,yGAAA,YAAY,OAAA;AACZ,mGAAA,MAAM,OAAA;AACN,qGAAA,QAAQ,OAAA;AACR,qGAAA,QAAQ,OAAA;AACR,wGAAA,WAAW,OAAA;AACX,qGAAA,QAAQ,OAAA;AACR,qGAAA,QAAQ,OAAA;AACR,qGAAA,QAAQ,OAAA;AACR,6GAAA,gBAAgB,OAAA;AAChB,uGAAA,UAAU,OAAA;AACV,uGAAA,UAAU,OAAA;AACV,qGAAA,QAAQ,OAAA;AACR,wGAAA,WAAW,OAAA;AACX,gHAAA,mBAAmB,OAAA;AACnB,qGAAA,QAAQ,OAAA;AACR,iGAAA,IAAI,OAAA;AACJ,0HAAA,6BAA6B,OAAA;AAC7B,8GAAA,iBAAiB,OAAA;AACjB,uHAAA,0BAA0B,OAAA;AAC1B,oGAAA,OAAO,OAAA","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} from './instrumentations';\nexport type { ConsoleInstrumentationOptions, ErrorEvent, ExtendedPromiseRejectionEvent } from './instrumentations';\n\nexport { browserMeta, createSession, defaultMetas, defaultViewMeta, pageMeta, 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} 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"]}
|
|
@@ -17,5 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.SessionInstrumentation = void 0;
|
|
18
18
|
var instrumentation_1 = require("./instrumentation");
|
|
19
19
|
Object.defineProperty(exports, "SessionInstrumentation", { enumerable: true, get: function () { return instrumentation_1.SessionInstrumentation; } });
|
|
20
|
-
__exportStar(require("./
|
|
20
|
+
__exportStar(require("./sessionManager"), exports);
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/instrumentations/session/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA;AAE/B,mDAAiC","sourcesContent":["export { SessionInstrumentation } from './instrumentation';\n\nexport * from './
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/instrumentations/session/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA;AAE/B,mDAAiC","sourcesContent":["export { SessionInstrumentation } from './instrumentation';\n\nexport * from './sessionManager';\n"]}
|
|
@@ -26,7 +26,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
27
|
exports.SessionInstrumentation = void 0;
|
|
28
28
|
var faro_core_1 = require("@grafana/faro-core");
|
|
29
|
-
var
|
|
29
|
+
var webStorage_1 = require("../../utils/webStorage");
|
|
30
|
+
var PersistentSessionsManager_1 = require("./sessionManager/PersistentSessionsManager");
|
|
31
|
+
var VolatileSessionManager_1 = require("./sessionManager/VolatileSessionManager");
|
|
30
32
|
var SessionInstrumentation = /** @class */ (function (_super) {
|
|
31
33
|
__extends(SessionInstrumentation, _super);
|
|
32
34
|
function SessionInstrumentation() {
|
|
@@ -45,20 +47,29 @@ var SessionInstrumentation = /** @class */ (function (_super) {
|
|
|
45
47
|
this.api.pushEvent(faro_core_1.Conventions.EventNames.SESSION_START, {}, undefined, { skipDedupe: true });
|
|
46
48
|
}
|
|
47
49
|
};
|
|
50
|
+
SessionInstrumentation.prototype.getSessionManagerInstanceByConfiguredStrategy = function (initialSessionId) {
|
|
51
|
+
var _a;
|
|
52
|
+
if (((_a = this.config.experimentalSessions) === null || _a === void 0 ? void 0 : _a.persistent) && webStorage_1.isLocalStorageAvailable) {
|
|
53
|
+
return new PersistentSessionsManager_1.PersistentSessionsManager(initialSessionId);
|
|
54
|
+
}
|
|
55
|
+
if (webStorage_1.isSessionStorageAvailable) {
|
|
56
|
+
return new VolatileSessionManager_1.VolatileSessionsManager(initialSessionId);
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
};
|
|
48
60
|
SessionInstrumentation.prototype.initialize = function () {
|
|
49
|
-
var _this = this;
|
|
50
61
|
var _a, _b, _c;
|
|
51
62
|
this.logDebug('init session instrumentation');
|
|
52
63
|
this.sendSessionStartEvent(this.metas.value);
|
|
53
64
|
this.metas.addListener(this.sendSessionStartEvent.bind(this));
|
|
54
65
|
if ((_a = this.config.experimentalSessions) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
var sessionManager_1 = this.getSessionManagerInstanceByConfiguredStrategy((_b = this.metas.value.session) === null || _b === void 0 ? void 0 : _b.id);
|
|
67
|
+
if (sessionManager_1 != null) {
|
|
68
|
+
(_c = this.transports) === null || _c === void 0 ? void 0 : _c.addBeforeSendHooks.apply(_c, __spreadArray(__spreadArray([], this.transports.getBeforeSendHooks(), false), [function (item) {
|
|
69
|
+
sessionManager_1 === null || sessionManager_1 === void 0 ? void 0 : sessionManager_1.updateSession();
|
|
70
|
+
return item;
|
|
71
|
+
}], false));
|
|
72
|
+
}
|
|
62
73
|
}
|
|
63
74
|
};
|
|
64
75
|
return SessionInstrumentation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/instrumentations/session/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkG;AAElG,
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/instrumentations/session/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkG;AAElG,qDAA4F;AAE5F,wFAAuF;AACvF,kFAAkF;AAElF;IAA4C,0CAAmB;IAA/D;QAAA,qEAmDC;QAlDU,UAAI,GAAG,+CAA+C,CAAC;QACvD,aAAO,GAAG,mBAAO,CAAC;;IAiD7B,CAAC;IA3CS,sDAAqB,GAA7B,UAA8B,IAAU;;QACtC,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,MAAK,MAAA,IAAI,CAAC,eAAe,0CAAE,EAAE,CAAA,EAAE;YACtD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YAE/B,8EAA8E;YAC9E,gBAAgB;YAChB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAW,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/F;IACH,CAAC;IAEO,8EAA6C,GAArD,UACE,gBAAyB;;QAEzB,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,0CAAE,UAAU,KAAI,oCAAuB,EAAE;YAC3E,OAAO,IAAI,qDAAyB,CAAC,gBAAgB,CAAC,CAAC;SACxD;QAED,IAAI,sCAAyB,EAAE;YAC7B,OAAO,IAAI,gDAAuB,CAAC,gBAAgB,CAAC,CAAC;SACtD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAAU,GAAV;;QACE,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;QAE9C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9D,IAAI,MAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,0CAAE,OAAO,EAAE;YAC7C,IAAM,gBAAc,GAAG,IAAI,CAAC,6CAA6C,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,0CAAE,EAAE,CAAC,CAAC;YAExG,IAAI,gBAAc,IAAI,IAAI,EAAE;gBAC1B,MAAA,IAAI,CAAC,UAAU,0CAAE,kBAAkB,2CAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,WAAE,UAAC,IAAS;wBACrF,gBAAc,aAAd,gBAAc,uBAAd,gBAAc,CAAE,aAAa,EAAE,CAAC;wBAChC,OAAO,IAAI,CAAC;oBACd,CAAC,UAAC,CAAC;aACJ;SACF;IACH,CAAC;IACH,6BAAC;AAAD,CAAC,AAnDD,CAA4C,+BAAmB,GAmD9D;AAnDY,wDAAsB","sourcesContent":["import { BaseInstrumentation, Conventions, Meta, MetaSession, VERSION } from '@grafana/faro-core';\n\nimport { isLocalStorageAvailable, isSessionStorageAvailable } from '../../utils/webStorage';\n\nimport { PersistentSessionsManager } from './sessionManager/PersistentSessionsManager';\nimport { VolatileSessionsManager } from './sessionManager/VolatileSessionManager';\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 this.notifiedSession = session;\n\n // no need to add attributes and session id, they are included as part of meta\n // automatically\n this.api.pushEvent(Conventions.EventNames.SESSION_START, {}, undefined, { skipDedupe: true });\n }\n }\n\n private getSessionManagerInstanceByConfiguredStrategy(\n initialSessionId?: string\n ): PersistentSessionsManager | VolatileSessionsManager | null {\n if (this.config.experimentalSessions?.persistent && isLocalStorageAvailable) {\n return new PersistentSessionsManager(initialSessionId);\n }\n\n if (isSessionStorageAvailable) {\n return new VolatileSessionsManager(initialSessionId);\n }\n\n return null;\n }\n\n initialize() {\n this.logDebug('init session instrumentation');\n\n this.sendSessionStartEvent(this.metas.value);\n this.metas.addListener(this.sendSessionStartEvent.bind(this));\n\n if (this.config.experimentalSessions?.enabled) {\n const sessionManager = this.getSessionManagerInstanceByConfiguredStrategy(this.metas.value.session?.id);\n\n if (sessionManager != null) {\n this.transports?.addBeforeSendHooks(...this.transports.getBeforeSendHooks(), (item: any) => {\n sessionManager?.updateSession();\n return item;\n });\n }\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PersistentSessionsManager = void 0;
|
|
4
|
+
var faro_core_1 = require("@grafana/faro-core");
|
|
5
|
+
var utils_1 = require("../../../utils");
|
|
6
|
+
var webStorage_1 = require("../../../utils/webStorage");
|
|
7
|
+
var sessionManagerUtils_1 = require("./sessionManagerUtils");
|
|
8
|
+
var PersistentSessionsManager = /** @class */ (function () {
|
|
9
|
+
function PersistentSessionsManager(initialSessionId) {
|
|
10
|
+
var _this = this;
|
|
11
|
+
this.initialSessionId = initialSessionId;
|
|
12
|
+
this.updateSession = (0, utils_1.throttle)(function () { return _this.updateUserSession(); }, sessionManagerUtils_1.STORAGE_UPDATE_DELAY);
|
|
13
|
+
this.updateUserSession = (0, sessionManagerUtils_1.getUserSessionUpdater)({
|
|
14
|
+
fetchUserSession: PersistentSessionsManager.fetchUserSession,
|
|
15
|
+
storeUserSession: PersistentSessionsManager.storeUserSession,
|
|
16
|
+
});
|
|
17
|
+
this.init();
|
|
18
|
+
}
|
|
19
|
+
PersistentSessionsManager.removeUserSession = function () {
|
|
20
|
+
(0, webStorage_1.removeItem)(sessionManagerUtils_1.STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);
|
|
21
|
+
};
|
|
22
|
+
PersistentSessionsManager.storeUserSession = function (session) {
|
|
23
|
+
(0, webStorage_1.setItem)(sessionManagerUtils_1.STORAGE_KEY, JSON.stringify(session), PersistentSessionsManager.storageTypeLocal);
|
|
24
|
+
};
|
|
25
|
+
PersistentSessionsManager.fetchUserSession = function () {
|
|
26
|
+
var storedSession = (0, webStorage_1.getItem)(sessionManagerUtils_1.STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);
|
|
27
|
+
if (storedSession) {
|
|
28
|
+
return JSON.parse(storedSession);
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
};
|
|
32
|
+
PersistentSessionsManager.prototype.init = function () {
|
|
33
|
+
var _this = this;
|
|
34
|
+
PersistentSessionsManager.storeUserSession((0, sessionManagerUtils_1.createUserSessionObject)(this.initialSessionId));
|
|
35
|
+
document.addEventListener('visibilitychange', function () {
|
|
36
|
+
if (document.visibilityState === 'visible') {
|
|
37
|
+
_this.updateSession();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
window.addEventListener('storage', function (event) {
|
|
41
|
+
var _a, _b, _c;
|
|
42
|
+
if (event.key !== sessionManagerUtils_1.STORAGE_KEY) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
var newSession = JSON.parse((_a = event.newValue) !== null && _a !== void 0 ? _a : '');
|
|
46
|
+
var previousSession = JSON.parse((_b = event.oldValue) !== null && _b !== void 0 ? _b : '');
|
|
47
|
+
if (newSession.sessionId !== previousSession.sessionId) {
|
|
48
|
+
(_c = faro_core_1.faro.api) === null || _c === void 0 ? void 0 : _c.setSession(newSession.sessionMeta);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// Users can call the setSession() method, so we need to sync this with the local storage session
|
|
52
|
+
faro_core_1.faro.metas.addListener(function syncSessionIfChangedExternally(meta) {
|
|
53
|
+
var session = meta.session;
|
|
54
|
+
var sessionFromLocalStorage = PersistentSessionsManager.fetchUserSession();
|
|
55
|
+
if (session && session.id !== (sessionFromLocalStorage === null || sessionFromLocalStorage === void 0 ? void 0 : sessionFromLocalStorage.sessionId)) {
|
|
56
|
+
var userSession = (0, sessionManagerUtils_1.addSessionMetadataToNextSession)((0, sessionManagerUtils_1.createUserSessionObject)(session.id), sessionFromLocalStorage);
|
|
57
|
+
PersistentSessionsManager.storeUserSession(userSession);
|
|
58
|
+
faro_core_1.faro.api.setSession(userSession.sessionMeta);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
PersistentSessionsManager.storageTypeLocal = webStorage_1.webStorageType.local;
|
|
63
|
+
return PersistentSessionsManager;
|
|
64
|
+
}());
|
|
65
|
+
exports.PersistentSessionsManager = PersistentSessionsManager;
|
|
66
|
+
//# sourceMappingURL=PersistentSessionsManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistentSessionsManager.js","sourceRoot":"","sources":["../../../../../src/instrumentations/session/sessionManager/PersistentSessionsManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { faro } from '@grafana/faro-core';\nimport type { Meta } from '@grafana/faro-core';\n\nimport { throttle } from '../../../utils';\nimport { getItem, removeItem, setItem, webStorageType } from '../../../utils/webStorage';\n\nimport {\n addSessionMetadataToNextSession,\n createUserSessionObject,\n getUserSessionUpdater,\n STORAGE_KEY,\n STORAGE_UPDATE_DELAY,\n} 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(private initialSessionId?: string) {\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, JSON.stringify(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 PersistentSessionsManager.storeUserSession(createUserSessionObject(this.initialSessionId));\n\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n this.updateSession();\n }\n });\n\n window.addEventListener('storage', (event: StorageEvent) => {\n if (event.key !== STORAGE_KEY) {\n return;\n }\n\n const newSession: FaroUserSession = JSON.parse(event.newValue ?? '');\n const previousSession: FaroUserSession = JSON.parse(event.oldValue ?? '');\n\n if (newSession.sessionId !== previousSession.sessionId) {\n faro.api?.setSession(newSession.sessionMeta);\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(function syncSessionIfChangedExternally(meta: Meta) {\n const session = meta.session;\n const sessionFromLocalStorage = PersistentSessionsManager.fetchUserSession();\n\n if (session && session.id !== sessionFromLocalStorage?.sessionId) {\n const userSession = addSessionMetadataToNextSession(\n createUserSessionObject(session.id),\n sessionFromLocalStorage\n );\n\n PersistentSessionsManager.storeUserSession(userSession);\n faro.api.setSession(userSession.sessionMeta);\n }\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VolatileSessionsManager = void 0;
|
|
4
|
+
var faro_core_1 = require("@grafana/faro-core");
|
|
5
|
+
var utils_1 = require("../../../utils");
|
|
6
|
+
var webStorage_1 = require("../../../utils/webStorage");
|
|
7
|
+
var sessionManagerUtils_1 = require("./sessionManagerUtils");
|
|
8
|
+
var VolatileSessionsManager = /** @class */ (function () {
|
|
9
|
+
function VolatileSessionsManager(initialSessionId) {
|
|
10
|
+
var _this = this;
|
|
11
|
+
this.initialSessionId = initialSessionId;
|
|
12
|
+
this.updateSession = (0, utils_1.throttle)(function () { return _this.updateUserSession(); }, sessionManagerUtils_1.STORAGE_UPDATE_DELAY);
|
|
13
|
+
this.updateUserSession = (0, sessionManagerUtils_1.getUserSessionUpdater)({
|
|
14
|
+
fetchUserSession: VolatileSessionsManager.fetchUserSession,
|
|
15
|
+
storeUserSession: VolatileSessionsManager.storeUserSession,
|
|
16
|
+
});
|
|
17
|
+
this.init();
|
|
18
|
+
}
|
|
19
|
+
VolatileSessionsManager.removeUserSession = function () {
|
|
20
|
+
(0, webStorage_1.removeItem)(sessionManagerUtils_1.STORAGE_KEY, VolatileSessionsManager.storageTypeSession);
|
|
21
|
+
};
|
|
22
|
+
VolatileSessionsManager.storeUserSession = function (session) {
|
|
23
|
+
(0, webStorage_1.setItem)(sessionManagerUtils_1.STORAGE_KEY, JSON.stringify(session), VolatileSessionsManager.storageTypeSession);
|
|
24
|
+
};
|
|
25
|
+
VolatileSessionsManager.fetchUserSession = function () {
|
|
26
|
+
var storedSession = (0, webStorage_1.getItem)(sessionManagerUtils_1.STORAGE_KEY, VolatileSessionsManager.storageTypeSession);
|
|
27
|
+
if (storedSession) {
|
|
28
|
+
return JSON.parse(storedSession);
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
};
|
|
32
|
+
VolatileSessionsManager.prototype.init = function () {
|
|
33
|
+
var _this = this;
|
|
34
|
+
VolatileSessionsManager.storeUserSession((0, sessionManagerUtils_1.createUserSessionObject)(this.initialSessionId));
|
|
35
|
+
document.addEventListener('visibilitychange', function () {
|
|
36
|
+
if (document.visibilityState === 'visible') {
|
|
37
|
+
_this.updateSession();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
// Users can call the setSession() method, so we need to sync this with the local storage session
|
|
41
|
+
faro_core_1.faro.metas.addListener(function syncSessionIfChangedExternally(meta) {
|
|
42
|
+
var session = meta.session;
|
|
43
|
+
var sessionFromSessionStorage = VolatileSessionsManager.fetchUserSession();
|
|
44
|
+
if (session && session.id !== (sessionFromSessionStorage === null || sessionFromSessionStorage === void 0 ? void 0 : sessionFromSessionStorage.sessionId)) {
|
|
45
|
+
var userSession = (0, sessionManagerUtils_1.addSessionMetadataToNextSession)((0, sessionManagerUtils_1.createUserSessionObject)(session.id), sessionFromSessionStorage);
|
|
46
|
+
VolatileSessionsManager.storeUserSession(userSession);
|
|
47
|
+
faro_core_1.faro.api.setSession(userSession.sessionMeta);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
VolatileSessionsManager.storageTypeSession = webStorage_1.webStorageType.session;
|
|
52
|
+
return VolatileSessionsManager;
|
|
53
|
+
}());
|
|
54
|
+
exports.VolatileSessionsManager = VolatileSessionsManager;
|
|
55
|
+
//# sourceMappingURL=VolatileSessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VolatileSessionManager.js","sourceRoot":"","sources":["../../../../../src/instrumentations/session/sessionManager/VolatileSessionManager.ts"],"names":[],"mappings":";;;AAAA,gDAA0C;AAG1C,wCAA0C;AAC1C,wDAAyF;AAEzF,6DAM+B;AAG/B;IAIE,iCAAoB,gBAAyB;QAA7C,iBAOC;QAPmB,qBAAgB,GAAhB,gBAAgB,CAAS;QA2B7C,kBAAa,GAAG,IAAA,gBAAQ,EAAC,cAAM,OAAA,KAAI,CAAC,iBAAiB,EAAE,EAAxB,CAAwB,EAAE,0CAAoB,CAAC,CAAC;QA1B7E,IAAI,CAAC,iBAAiB,GAAG,IAAA,2CAAqB,EAAC;YAC7C,gBAAgB,EAAE,uBAAuB,CAAC,gBAAgB;YAC1D,gBAAgB,EAAE,uBAAuB,CAAC,gBAAgB;SAC3D,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEM,yCAAiB,GAAxB;QACE,IAAA,uBAAU,EAAC,iCAAW,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAEM,wCAAgB,GAAvB,UAAwB,OAAwB;QAC9C,IAAA,oBAAO,EAAC,iCAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;IAC5F,CAAC;IAEM,wCAAgB,GAAvB;QACE,IAAM,aAAa,GAAG,IAAA,oBAAO,EAAC,iCAAW,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;QAEvF,IAAI,aAAa,EAAE;YACjB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAoB,CAAC;SACrD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAIO,sCAAI,GAAZ;QAAA,iBAwBC;QAvBC,uBAAuB,CAAC,gBAAgB,CAAC,IAAA,6CAAuB,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEzF,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,CAAC,SAAS,8BAA8B,CAAC,IAAU;YACvE,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAM,yBAAyB,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;YAE7E,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,MAAK,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,SAAS,CAAA,EAAE;gBAClE,IAAM,WAAW,GAAG,IAAA,qDAA+B,EACjD,IAAA,6CAAuB,EAAC,OAAO,CAAC,EAAE,CAAC,EACnC,yBAAyB,CAC1B,CAAC;gBAEF,uBAAuB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBACtD,gBAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAxDc,0CAAkB,GAAG,2BAAc,CAAC,OAAO,CAAC;IAyD7D,8BAAC;CAAA,AA1DD,IA0DC;AA1DY,0DAAuB","sourcesContent":["import { faro } from '@grafana/faro-core';\nimport type { Meta } from '@grafana/faro-core';\n\nimport { throttle } from '../../../utils';\nimport { getItem, removeItem, setItem, webStorageType } from '../../../utils/webStorage';\n\nimport {\n addSessionMetadataToNextSession,\n createUserSessionObject,\n getUserSessionUpdater,\n STORAGE_KEY,\n STORAGE_UPDATE_DELAY,\n} from './sessionManagerUtils';\nimport type { FaroUserSession } from './types';\n\nexport class VolatileSessionsManager {\n private static storageTypeSession = webStorageType.session;\n private updateUserSession: ReturnType<typeof getUserSessionUpdater>;\n\n constructor(private initialSessionId?: string) {\n this.updateUserSession = getUserSessionUpdater({\n fetchUserSession: VolatileSessionsManager.fetchUserSession,\n storeUserSession: VolatileSessionsManager.storeUserSession,\n });\n\n this.init();\n }\n\n static removeUserSession() {\n removeItem(STORAGE_KEY, VolatileSessionsManager.storageTypeSession);\n }\n\n static storeUserSession(session: FaroUserSession): void {\n setItem(STORAGE_KEY, JSON.stringify(session), VolatileSessionsManager.storageTypeSession);\n }\n\n static fetchUserSession(): FaroUserSession | null {\n const storedSession = getItem(STORAGE_KEY, VolatileSessionsManager.storageTypeSession);\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 VolatileSessionsManager.storeUserSession(createUserSessionObject(this.initialSessionId));\n\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(function syncSessionIfChangedExternally(meta: Meta) {\n const session = meta.session;\n const sessionFromSessionStorage = VolatileSessionsManager.fetchUserSession();\n\n if (session && session.id !== sessionFromSessionStorage?.sessionId) {\n const userSession = addSessionMetadataToNextSession(\n createUserSessionObject(session.id),\n sessionFromSessionStorage\n );\n\n VolatileSessionsManager.storeUserSession(userSession);\n faro.api.setSession(userSession.sessionMeta);\n }\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VolatileSessionsManager = exports.PersistentSessionsManager = void 0;
|
|
4
|
+
var PersistentSessionsManager_1 = require("./PersistentSessionsManager");
|
|
5
|
+
Object.defineProperty(exports, "PersistentSessionsManager", { enumerable: true, get: function () { return PersistentSessionsManager_1.PersistentSessionsManager; } });
|
|
6
|
+
var VolatileSessionManager_1 = require("./VolatileSessionManager");
|
|
7
|
+
Object.defineProperty(exports, "VolatileSessionsManager", { enumerable: true, get: function () { return VolatileSessionManager_1.VolatileSessionsManager; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/instrumentations/session/sessionManager/index.ts"],"names":[],"mappings":";;;AAAA,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,mEAAmE;AAA1D,iIAAA,uBAAuB,OAAA","sourcesContent":["export { PersistentSessionsManager } from './PersistentSessionsManager';\nexport { VolatileSessionsManager } from './VolatileSessionManager';\nexport type { FaroUserSession } from './types';\n"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.addSessionMetadataToNextSession = exports.getUserSessionUpdater = exports.isUserSessionValid = exports.createUserSessionObject = exports.MAX_SESSION_PERSISTENCE_TIME = exports.MAX_SESSION_PERSISTENCE_TIME_BUFFER = exports.STORAGE_UPDATE_DELAY = exports.SESSION_INACTIVITY_TIME = exports.SESSION_EXPIRATION_TIME = exports.STORAGE_KEY = void 0;
|
|
15
|
+
var faro_core_1 = require("@grafana/faro-core");
|
|
16
|
+
// TODO: add tests
|
|
17
|
+
exports.STORAGE_KEY = '__FARO_SESSION__';
|
|
18
|
+
exports.SESSION_EXPIRATION_TIME = 4 * 60 * 60 * 1000; // hrs
|
|
19
|
+
exports.SESSION_INACTIVITY_TIME = 15 * 60 * 1000; // minutes
|
|
20
|
+
exports.STORAGE_UPDATE_DELAY = 1 * 1000; // seconds
|
|
21
|
+
exports.MAX_SESSION_PERSISTENCE_TIME_BUFFER = 5 * 60 * 1000;
|
|
22
|
+
exports.MAX_SESSION_PERSISTENCE_TIME = exports.SESSION_EXPIRATION_TIME + exports.MAX_SESSION_PERSISTENCE_TIME_BUFFER;
|
|
23
|
+
function createUserSessionObject(sessionId) {
|
|
24
|
+
var now = (0, faro_core_1.dateNow)();
|
|
25
|
+
return {
|
|
26
|
+
sessionId: sessionId !== null && sessionId !== void 0 ? sessionId : (0, faro_core_1.genShortID)(),
|
|
27
|
+
lastActivity: now,
|
|
28
|
+
started: now,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
exports.createUserSessionObject = createUserSessionObject;
|
|
32
|
+
function isUserSessionValid(session) {
|
|
33
|
+
if (session == null) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
var now = (0, faro_core_1.dateNow)();
|
|
37
|
+
var lifetimeValid = now - session.started < exports.SESSION_EXPIRATION_TIME;
|
|
38
|
+
if (!lifetimeValid) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
var inactivityPeriodValid = now - session.lastActivity < exports.SESSION_INACTIVITY_TIME;
|
|
42
|
+
return inactivityPeriodValid;
|
|
43
|
+
}
|
|
44
|
+
exports.isUserSessionValid = isUserSessionValid;
|
|
45
|
+
function getUserSessionUpdater(_a) {
|
|
46
|
+
var fetchUserSession = _a.fetchUserSession, storeUserSession = _a.storeUserSession;
|
|
47
|
+
return function updateSession() {
|
|
48
|
+
var _a, _b, _c, _d;
|
|
49
|
+
if (!fetchUserSession || !storeUserSession) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
var sessionFromStorage = fetchUserSession();
|
|
53
|
+
if (isUserSessionValid(sessionFromStorage)) {
|
|
54
|
+
storeUserSession(__assign(__assign({}, sessionFromStorage), { lastActivity: (0, faro_core_1.dateNow)() }));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
var newSession = addSessionMetadataToNextSession(createUserSessionObject(), sessionFromStorage);
|
|
58
|
+
storeUserSession(newSession);
|
|
59
|
+
(_a = faro_core_1.faro.api) === null || _a === void 0 ? void 0 : _a.setSession(newSession.sessionMeta);
|
|
60
|
+
(_c = (_b = faro_core_1.faro.config.experimentalSessions) === null || _b === void 0 ? void 0 : _b.onSessionChange) === null || _c === void 0 ? void 0 : _c.call(_b, (_d = sessionFromStorage === null || sessionFromStorage === void 0 ? void 0 : sessionFromStorage.sessionMeta) !== null && _d !== void 0 ? _d : null, newSession.sessionMeta);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
exports.getUserSessionUpdater = getUserSessionUpdater;
|
|
65
|
+
function addSessionMetadataToNextSession(newSession, previousSession) {
|
|
66
|
+
var _a;
|
|
67
|
+
var sessionWithMeta = __assign(__assign({}, newSession), { sessionMeta: {
|
|
68
|
+
id: newSession.sessionId,
|
|
69
|
+
} });
|
|
70
|
+
var metaAttributes = (_a = faro_core_1.faro.metas.value.session) === null || _a === void 0 ? void 0 : _a.attributes;
|
|
71
|
+
if (metaAttributes || previousSession != null) {
|
|
72
|
+
sessionWithMeta.sessionMeta.attributes = __assign(__assign({}, (metaAttributes !== null && metaAttributes !== void 0 ? metaAttributes : {})), (previousSession != null ? { previousSession: previousSession.sessionId } : {}));
|
|
73
|
+
}
|
|
74
|
+
return sessionWithMeta;
|
|
75
|
+
}
|
|
76
|
+
exports.addSessionMetadataToNextSession = addSessionMetadataToNextSession;
|
|
77
|
+
//# sourceMappingURL=sessionManagerUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionManagerUtils.js","sourceRoot":"","sources":["../../../../../src/instrumentations/session/sessionManager/sessionManagerUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { dateNow, faro, genShortID } from '@grafana/faro-core';\n\nimport type { FaroUserSession } from './types';\n\n// TODO: add tests\n\nexport const STORAGE_KEY = '__FARO_SESSION__';\nexport const SESSION_EXPIRATION_TIME = 4 * 60 * 60 * 1000; // hrs\nexport const SESSION_INACTIVITY_TIME = 15 * 60 * 1000; // minutes\nexport const STORAGE_UPDATE_DELAY = 1 * 1000; // seconds\n\nexport const MAX_SESSION_PERSISTENCE_TIME_BUFFER = 5 * 60 * 1000;\nexport const MAX_SESSION_PERSISTENCE_TIME = SESSION_EXPIRATION_TIME + MAX_SESSION_PERSISTENCE_TIME_BUFFER;\n\nexport function createUserSessionObject(sessionId?: string): FaroUserSession {\n const now = dateNow();\n\n return {\n sessionId: sessionId ?? genShortID(),\n lastActivity: now,\n started: now,\n };\n}\n\nexport function isUserSessionValid(session: FaroUserSession | null): boolean {\n if (session == null) {\n return false;\n }\n\n const now = dateNow();\n const lifetimeValid = now - session.started < SESSION_EXPIRATION_TIME;\n\n if (!lifetimeValid) {\n return false;\n }\n\n const inactivityPeriodValid = now - session.lastActivity < SESSION_INACTIVITY_TIME;\n return inactivityPeriodValid;\n}\n\ntype GetUserSessionUpdaterParams = {\n storeUserSession: (session: FaroUserSession) => void;\n fetchUserSession: () => FaroUserSession | null;\n};\n\nexport function getUserSessionUpdater({ fetchUserSession, storeUserSession }: GetUserSessionUpdaterParams): () => void {\n return function updateSession(): void {\n if (!fetchUserSession || !storeUserSession) {\n return;\n }\n\n const sessionFromStorage = fetchUserSession();\n\n if (isUserSessionValid(sessionFromStorage)) {\n storeUserSession({ ...sessionFromStorage!, lastActivity: dateNow() });\n } else {\n let newSession = addSessionMetadataToNextSession(createUserSessionObject(), sessionFromStorage);\n\n storeUserSession(newSession);\n\n faro.api?.setSession(newSession.sessionMeta);\n faro.config.experimentalSessions?.onSessionChange?.(\n sessionFromStorage?.sessionMeta ?? null,\n newSession.sessionMeta!\n );\n }\n };\n}\n\nexport function addSessionMetadataToNextSession(newSession: FaroUserSession, previousSession: FaroUserSession | null) {\n const sessionWithMeta: Required<FaroUserSession> = {\n ...newSession,\n sessionMeta: {\n id: newSession.sessionId,\n },\n };\n\n const metaAttributes = faro.metas.value.session?.attributes;\n if (metaAttributes || previousSession != null) {\n sessionWithMeta.sessionMeta.attributes = {\n ...(metaAttributes ?? {}),\n ...(previousSession != null ? { previousSession: previousSession.sessionId } : {}),\n };\n }\n\n return sessionWithMeta;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/instrumentations/session/sessionManager/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { MetaSession } from '@grafana/faro-core';\n\nexport interface FaroUserSession {\n sessionId: string;\n lastActivity: number;\n started: number;\n sessionMeta?: MetaSession;\n}\n"]}
|
package/dist/cjs/metas/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultViewMeta = exports.createSession = exports.pageMeta = exports.defaultMetas = exports.browserMeta = void 0;
|
|
3
|
+
exports.sdkMeta = exports.defaultViewMeta = exports.createSession = exports.pageMeta = exports.defaultMetas = exports.browserMeta = void 0;
|
|
4
4
|
var browser_1 = require("./browser");
|
|
5
5
|
Object.defineProperty(exports, "browserMeta", { enumerable: true, get: function () { return browser_1.browserMeta; } });
|
|
6
6
|
var const_1 = require("./const");
|
|
@@ -11,4 +11,6 @@ var session_1 = require("./session");
|
|
|
11
11
|
Object.defineProperty(exports, "createSession", { enumerable: true, get: function () { return session_1.createSession; } });
|
|
12
12
|
var view_1 = require("./view");
|
|
13
13
|
Object.defineProperty(exports, "defaultViewMeta", { enumerable: true, get: function () { return view_1.defaultViewMeta; } });
|
|
14
|
+
var sdk_1 = require("./sdk");
|
|
15
|
+
Object.defineProperty(exports, "sdkMeta", { enumerable: true, get: function () { return sdk_1.sdkMeta; } });
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metas/index.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAA/B,sGAAA,WAAW,OAAA;AAEpB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AAErB,+BAAkC;AAAzB,gGAAA,QAAQ,OAAA;AAEjB,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AAEtB,+BAAyC;AAAhC,uGAAA,eAAe,OAAA","sourcesContent":["export { browserMeta } from './browser';\n\nexport { defaultMetas } from './const';\n\nexport { pageMeta } from './page';\n\nexport { createSession } from './session';\n\nexport { defaultViewMeta } from './view';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metas/index.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAA/B,sGAAA,WAAW,OAAA;AAEpB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AAErB,+BAAkC;AAAzB,gGAAA,QAAQ,OAAA;AAEjB,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AAEtB,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AAExB,6BAAgC;AAAvB,8FAAA,OAAO,OAAA","sourcesContent":["export { browserMeta } from './browser';\n\nexport { defaultMetas } from './const';\n\nexport { pageMeta } from './page';\n\nexport { createSession } from './session';\n\nexport { defaultViewMeta } from './view';\n\nexport { sdkMeta } from './sdk';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../../src/metas/k6/meta.ts"],"names":[],"mappings":";;;AAEO,IAAM,MAAM,GAA+B;IAChD,OAAO;QACL,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../../src/metas/k6/meta.ts"],"names":[],"mappings":";;;AAEO,IAAM,MAAM,GAA+B;IAChD,OAAO;QACL,EAAE,EAAE;YACF,WAAW,EAAE,IAAI;SAClB;KACF,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,MAAM,UAMjB","sourcesContent":["import type { Meta, MetaItem } from '@grafana/faro-core';\n\nexport const k6Meta: MetaItem<Pick<Meta, 'k6'>> = () => {\n return {\n k6: {\n isK6Browser: true,\n },\n };\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sdkMeta = void 0;
|
|
4
|
+
var meta_1 = require("./meta");
|
|
5
|
+
Object.defineProperty(exports, "sdkMeta", { enumerable: true, get: function () { return meta_1.sdkMeta; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/metas/sdk/index.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AAAxB,+FAAA,OAAO,OAAA","sourcesContent":["export { sdkMeta } from './meta';\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sdkMeta = void 0;
|
|
4
|
+
var faro_core_1 = require("@grafana/faro-core");
|
|
5
|
+
var sdkMeta = function () { return ({
|
|
6
|
+
sdk: {
|
|
7
|
+
name: '@grafana/faro-core',
|
|
8
|
+
version: faro_core_1.VERSION,
|
|
9
|
+
integrations: faro_core_1.faro.config.instrumentations.map(function (_a) {
|
|
10
|
+
var name = _a.name, version = _a.version;
|
|
11
|
+
return ({ name: name, version: version });
|
|
12
|
+
}),
|
|
13
|
+
},
|
|
14
|
+
}); };
|
|
15
|
+
exports.sdkMeta = sdkMeta;
|
|
16
|
+
//# sourceMappingURL=meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../../src/metas/sdk/meta.ts"],"names":[],"mappings":";;;AAAA,gDAAmD;AAG5C,IAAM,OAAO,GAAgC,cAAM,OAAA,CAAC;IACzD,GAAG,EAAE;QACH,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,mBAAO;QAChB,YAAY,EAAE,gBAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAC,EAAiB;gBAAf,IAAI,UAAA,EAAE,OAAO,aAAA;YAAO,OAAA,CAAC,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,CAAC;QAAnB,CAAmB,CAAC;KAC3F;CACF,CAAC,EANwD,CAMxD,CAAC;AANU,QAAA,OAAO,WAMjB","sourcesContent":["import { faro, VERSION } from '@grafana/faro-core';\nimport type { Meta, MetaItem } from '@grafana/faro-core';\n\nexport const sdkMeta: MetaItem<Pick<Meta, 'sdk'>> = () => ({\n sdk: {\n name: '@grafana/faro-core',\n version: VERSION,\n integrations: faro.config.instrumentations.map(({ name, version }) => ({ name, version })),\n },\n});\n"]}
|
|
@@ -115,7 +115,7 @@ var FetchTransport = /** @class */ (function (_super) {
|
|
|
115
115
|
var _e = requestOptions !== null && requestOptions !== void 0 ? requestOptions : {}, headers = _e.headers, restOfRequestOptions = __rest(_e, ["headers"]);
|
|
116
116
|
return fetch(url, __assign({ method: 'POST', headers: __assign(__assign(__assign({ 'Content-Type': 'application/json' }, (headers !== null && headers !== void 0 ? headers : {})), (apiKey ? { 'x-api-key': apiKey } : {})), (((_a = _this.config.experimentalSessions) === null || _a === void 0 ? void 0 : _a.enabled) && ((_b = _this.metas.value.session) === null || _b === void 0 ? void 0 : _b.id)
|
|
117
117
|
? { 'x-faro-session-id': (_c = _this.metas.value.session) === null || _c === void 0 ? void 0 : _c.id }
|
|
118
|
-
: {})), body: body, keepalive:
|
|
118
|
+
: {})), body: body, keepalive: body.length <= 60000 }, (restOfRequestOptions !== null && restOfRequestOptions !== void 0 ? restOfRequestOptions : {})))
|
|
119
119
|
.then(function (response) {
|
|
120
120
|
if (response.status === 429) {
|
|
121
121
|
_this.disabledUntil = _this.getRetryAfterDate(response);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/transports/fetch/transport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwH;AAKxH,IAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,IAAM,mBAAmB,GAAG,CAAC,CAAC,CAAC,uCAAuC;AACtE,IAAM,6BAA6B,GAAG,IAAI,CAAC;AAE3C;IAAoC,kCAAa;IAU/C,wBAAoB,OAA8B;QAAlD,iBAUC;;gBATC,iBAAO;QADW,aAAO,GAAP,OAAO,CAAuB;QATzC,UAAI,GAAG,uCAAuC,CAAC;QAC/C,aAAO,GAAG,mBAAO,CAAC;QAMnB,mBAAa,GAAS,IAAI,IAAI,EAAE,CAAC;QAKvC,KAAI,CAAC,kBAAkB,GAAG,MAAA,OAAO,CAAC,yBAAyB,mCAAI,6BAA6B,CAAC;QAC7F,KAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,CAAC,cAAM,OAAA,IAAI,CAAC,GAAG,EAAE,EAAV,CAAU,CAAC,CAAC;QAEnD,KAAI,CAAC,aAAa,GAAG,IAAA,+BAAmB,EAAC;YACvC,IAAI,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,mBAAmB;YAC/C,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,mBAAmB;SACxD,CAAC,CAAC;;IACL,CAAC;IAEK,6BAAI,GAAV,UAAW,KAAsB;;;;;;;;wBAE7B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;4BAChD,IAAI,CAAC,OAAO,CAAC,0EAAmE,IAAI,CAAC,aAAa,CAAE,CAAC,CAAC;4BAEtG,sBAAO,OAAO,CAAC,OAAO,EAAE,EAAC;yBAC1B;wBAED,qBAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;;gCAC3B,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAgB,EAAC,KAAK,CAAC,CAAC,CAAC;gCAE/C,IAAA,KAAkC,KAAI,CAAC,OAAO,EAA5C,GAAG,SAAA,EAAE,cAAc,oBAAA,EAAE,MAAM,YAAiB,CAAC;gCAErD,IAAM,KAAuC,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,EAAE,EAAzD,OAAO,aAAA,EAAK,oBAAoB,cAAlC,WAAoC,CAAuB,CAAC;gCAElE,OAAO,KAAK,CAAC,GAAG,aACd,MAAM,EAAE,MAAM,EACd,OAAO,+BACL,cAAc,EAAE,kBAAkB,IAC/B,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,GACf,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACvC,CAAC,CAAA,MAAA,KAAI,CAAC,MAAM,CAAC,oBAAoB,0CAAE,OAAO,MAAI,MAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,0CAAE,EAAE,CAAA;wCAC3E,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,0CAAE,EAAE,EAAE;wCACvD,CAAC,CAAC,EAAE,CAAC,GAET,IAAI,MAAA,EACJ,SAAS,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/transports/fetch/transport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwH;AAKxH,IAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,IAAM,mBAAmB,GAAG,CAAC,CAAC,CAAC,uCAAuC;AACtE,IAAM,6BAA6B,GAAG,IAAI,CAAC;AAE3C;IAAoC,kCAAa;IAU/C,wBAAoB,OAA8B;QAAlD,iBAUC;;gBATC,iBAAO;QADW,aAAO,GAAP,OAAO,CAAuB;QATzC,UAAI,GAAG,uCAAuC,CAAC;QAC/C,aAAO,GAAG,mBAAO,CAAC;QAMnB,mBAAa,GAAS,IAAI,IAAI,EAAE,CAAC;QAKvC,KAAI,CAAC,kBAAkB,GAAG,MAAA,OAAO,CAAC,yBAAyB,mCAAI,6BAA6B,CAAC;QAC7F,KAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,CAAC,cAAM,OAAA,IAAI,CAAC,GAAG,EAAE,EAAV,CAAU,CAAC,CAAC;QAEnD,KAAI,CAAC,aAAa,GAAG,IAAA,+BAAmB,EAAC;YACvC,IAAI,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,mBAAmB;YAC/C,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,mBAAmB;SACxD,CAAC,CAAC;;IACL,CAAC;IAEK,6BAAI,GAAV,UAAW,KAAsB;;;;;;;;wBAE7B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;4BAChD,IAAI,CAAC,OAAO,CAAC,0EAAmE,IAAI,CAAC,aAAa,CAAE,CAAC,CAAC;4BAEtG,sBAAO,OAAO,CAAC,OAAO,EAAE,EAAC;yBAC1B;wBAED,qBAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;;gCAC3B,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAgB,EAAC,KAAK,CAAC,CAAC,CAAC;gCAE/C,IAAA,KAAkC,KAAI,CAAC,OAAO,EAA5C,GAAG,SAAA,EAAE,cAAc,oBAAA,EAAE,MAAM,YAAiB,CAAC;gCAErD,IAAM,KAAuC,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,EAAE,EAAzD,OAAO,aAAA,EAAK,oBAAoB,cAAlC,WAAoC,CAAuB,CAAC;gCAElE,OAAO,KAAK,CAAC,GAAG,aACd,MAAM,EAAE,MAAM,EACd,OAAO,+BACL,cAAc,EAAE,kBAAkB,IAC/B,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,GACf,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACvC,CAAC,CAAA,MAAA,KAAI,CAAC,MAAM,CAAC,oBAAoB,0CAAE,OAAO,MAAI,MAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,0CAAE,EAAE,CAAA;wCAC3E,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,0CAAE,EAAE,EAAE;wCACvD,CAAC,CAAC,EAAE,CAAC,GAET,IAAI,MAAA,EACJ,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,KAAM,IAC7B,CAAC,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,EAAE,CAAC,EAC/B;qCACC,IAAI,CAAC,UAAC,QAAQ;oCACb,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;wCAC3B,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;wCACtD,KAAI,CAAC,OAAO,CAAC,+CAAwC,KAAI,CAAC,aAAa,CAAE,CAAC,CAAC;qCAC5E;oCACD,gDAAgD;oCAChD,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,gBAAI,CAAC,CAAC;oCAE5B,OAAO,QAAQ,CAAC;gCAClB,CAAC,CAAC;qCACD,KAAK,CAAC,UAAC,GAAG;oCACT,KAAI,CAAC,QAAQ,CAAC,0CAA0C,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gCACnF,CAAC,CAAC,CAAC;4BACP,CAAC,CAAC,EAAA;;wBAlCF,SAkCE,CAAC;;;;wBAEH,IAAI,CAAC,QAAQ,CAAC,KAAG,CAAC,CAAC;;;;;;KAEtB;IAEQ,sCAAa,GAAtB;QACE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEQ,kCAAS,GAAlB;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,0CAAiB,GAAzB,UAA0B,QAAkB;QAC1C,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAE7D,IAAI,gBAAgB,EAAE;YACpB,IAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAEvC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACjB,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;aACrC;YAED,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAE1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAChB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;QAED,OAAO,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IACH,qBAAC;AAAD,CAAC,AAlGD,CAAoC,yBAAa,GAkGhD;AAlGY,wCAAc","sourcesContent":["import { BaseTransport, createPromiseBuffer, getTransportBody, noop, PromiseBuffer, VERSION } from '@grafana/faro-core';\nimport type { TransportItem } from '@grafana/faro-core';\n\nimport type { FetchTransportOptions } from './types';\n\nconst DEFAULT_BUFFER_SIZE = 30;\nconst DEFAULT_CONCURRENCY = 5; // chrome supports 10 total, firefox 17\nconst DEFAULT_RATE_LIMIT_BACKOFF_MS = 5000;\n\nexport class FetchTransport extends BaseTransport {\n readonly name = '@grafana/faro-web-sdk:transport-fetch';\n readonly version = VERSION;\n\n promiseBuffer: PromiseBuffer<Response | void>;\n\n private readonly rateLimitBackoffMs: number;\n private readonly getNow: () => number;\n private disabledUntil: Date = new Date();\n\n constructor(private options: FetchTransportOptions) {\n super();\n\n this.rateLimitBackoffMs = options.defaultRateLimitBackoffMs ?? DEFAULT_RATE_LIMIT_BACKOFF_MS;\n this.getNow = options.getNow ?? (() => Date.now());\n\n this.promiseBuffer = createPromiseBuffer({\n size: options.bufferSize ?? DEFAULT_BUFFER_SIZE,\n concurrency: options.concurrency ?? DEFAULT_CONCURRENCY,\n });\n }\n\n async send(items: TransportItem[]): Promise<void> {\n try {\n if (this.disabledUntil > new Date(this.getNow())) {\n this.logWarn(`Dropping transport item due to too many requests. Backoff until ${this.disabledUntil}`);\n\n return Promise.resolve();\n }\n\n await this.promiseBuffer.add(() => {\n const body = JSON.stringify(getTransportBody(items));\n\n const { url, requestOptions, apiKey } = this.options;\n\n const { headers, ...restOfRequestOptions } = requestOptions ?? {};\n\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(headers ?? {}),\n ...(apiKey ? { 'x-api-key': apiKey } : {}),\n ...(this.config.experimentalSessions?.enabled && this.metas.value.session?.id\n ? { 'x-faro-session-id': this.metas.value.session?.id }\n : {}),\n },\n body,\n keepalive: body.length <= 60_000,\n ...(restOfRequestOptions ?? {}),\n })\n .then((response) => {\n if (response.status === 429) {\n this.disabledUntil = this.getRetryAfterDate(response);\n this.logWarn(`Too many requests, backing off until ${this.disabledUntil}`);\n }\n // read the body so the connection can be closed\n response.text().catch(noop);\n\n return response;\n })\n .catch((err) => {\n this.logError('Failed sending payload to the receiver\\n', JSON.parse(body), err);\n });\n });\n } catch (err) {\n this.logError(err);\n }\n }\n\n override getIgnoreUrls(): Array<string | RegExp> {\n return [this.options.url];\n }\n\n override isBatched(): boolean {\n return true;\n }\n\n private getRetryAfterDate(response: Response): Date {\n const now = this.getNow();\n const retryAfterHeader = response.headers.get('Retry-After');\n\n if (retryAfterHeader) {\n const delay = Number(retryAfterHeader);\n\n if (!isNaN(delay)) {\n return new Date(delay * 1000 + now);\n }\n\n const date = Date.parse(retryAfterHeader);\n\n if (!isNaN(date)) {\n return new Date(date);\n }\n }\n\n return new Date(now + this.rateLimitBackoffMs);\n }\n}\n"]}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.removeItem = exports.setItem = exports.getItem = exports.
|
|
3
|
+
exports.isSessionStorageAvailable = exports.isLocalStorageAvailable = exports.removeItem = exports.setItem = exports.getItem = exports.isWebStorageAvailable = exports.webStorageType = void 0;
|
|
4
4
|
var faro_core_1 = require("@grafana/faro-core");
|
|
5
|
+
exports.webStorageType = {
|
|
6
|
+
session: 'sessionStorage',
|
|
7
|
+
local: 'localStorage',
|
|
8
|
+
};
|
|
9
|
+
// TODO: remove default storage type from all function
|
|
10
|
+
/**
|
|
11
|
+
* Check if selected web storage mechanism is available.
|
|
12
|
+
* @param type storage mechanism to test availability for.
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
5
15
|
function isWebStorageAvailable(type) {
|
|
6
16
|
var _a;
|
|
7
17
|
try {
|
|
@@ -19,18 +29,28 @@ function isWebStorageAvailable(type) {
|
|
|
19
29
|
}
|
|
20
30
|
}
|
|
21
31
|
exports.isWebStorageAvailable = isWebStorageAvailable;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Get item from SessionStorage or LocalStorage.
|
|
34
|
+
* @param key: the item key.
|
|
35
|
+
* @param webStorageMechanism: wether the item shall be received form local storage or session storage. Defaults to local storage.
|
|
36
|
+
*/
|
|
37
|
+
function getItem(key, webStorageMechanism) {
|
|
38
|
+
if (isWebStorageTypeAvailable(webStorageMechanism)) {
|
|
39
|
+
return window[webStorageMechanism].getItem(key);
|
|
26
40
|
}
|
|
27
41
|
return null;
|
|
28
42
|
}
|
|
29
43
|
exports.getItem = getItem;
|
|
30
|
-
|
|
31
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Store item in SessionStorage or LocalStorage.
|
|
46
|
+
* @param key: the item key.
|
|
47
|
+
* @param value: the item data.
|
|
48
|
+
* @param webStorageMechanism: wether the item shall be received form local storage or session storage. Defaults to local storage.
|
|
49
|
+
*/
|
|
50
|
+
function setItem(key, value, webStorageMechanism) {
|
|
51
|
+
if (isWebStorageTypeAvailable(webStorageMechanism)) {
|
|
32
52
|
try {
|
|
33
|
-
|
|
53
|
+
window[webStorageMechanism].setItem(key, value);
|
|
34
54
|
}
|
|
35
55
|
catch (error) {
|
|
36
56
|
// do nothing
|
|
@@ -38,10 +58,26 @@ function setItem(key, value) {
|
|
|
38
58
|
}
|
|
39
59
|
}
|
|
40
60
|
exports.setItem = setItem;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Remove item from SessionStorage or LocalStorage.
|
|
63
|
+
* @param key: the item key.
|
|
64
|
+
* @param webStorageMechanism: wether the item shall be received form local storage or session storage. Defaults to local storage.
|
|
65
|
+
*/
|
|
66
|
+
function removeItem(key, webStorageMechanism) {
|
|
67
|
+
if (isWebStorageTypeAvailable(webStorageMechanism)) {
|
|
68
|
+
window[webStorageMechanism].removeItem(key);
|
|
44
69
|
}
|
|
45
70
|
}
|
|
46
71
|
exports.removeItem = removeItem;
|
|
72
|
+
exports.isLocalStorageAvailable = isWebStorageAvailable(exports.webStorageType.local);
|
|
73
|
+
exports.isSessionStorageAvailable = isWebStorageAvailable(exports.webStorageType.session);
|
|
74
|
+
function isWebStorageTypeAvailable(webStorageMechanism) {
|
|
75
|
+
if (webStorageMechanism === exports.webStorageType.local) {
|
|
76
|
+
return exports.isLocalStorageAvailable;
|
|
77
|
+
}
|
|
78
|
+
if (webStorageMechanism === exports.webStorageType.session) {
|
|
79
|
+
return exports.isSessionStorageAvailable;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
47
83
|
//# sourceMappingURL=webStorage.js.map
|