@amplitude/session-replay-browser 1.3.0 → 1.3.2
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/lib/cjs/config/joined-config.d.ts +7 -5
- package/lib/cjs/config/joined-config.d.ts.map +1 -1
- package/lib/cjs/config/joined-config.js +53 -20
- package/lib/cjs/config/joined-config.js.map +1 -1
- package/lib/cjs/config/types.d.ts +13 -8
- package/lib/cjs/config/types.d.ts.map +1 -1
- package/lib/cjs/config/types.js.map +1 -1
- package/lib/cjs/session-replay.d.ts.map +1 -1
- package/lib/cjs/session-replay.js +19 -15
- package/lib/cjs/session-replay.js.map +1 -1
- package/lib/esm/config/joined-config.d.ts +7 -5
- package/lib/esm/config/joined-config.d.ts.map +1 -1
- package/lib/esm/config/joined-config.js +50 -19
- package/lib/esm/config/joined-config.js.map +1 -1
- package/lib/esm/config/types.d.ts +13 -8
- package/lib/esm/config/types.d.ts.map +1 -1
- package/lib/esm/config/types.js.map +1 -1
- package/lib/esm/session-replay.d.ts.map +1 -1
- package/lib/esm/session-replay.js +20 -16
- package/lib/esm/session-replay.js.map +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/config/joined-config.d.ts +7 -5
- package/lib/scripts/config/joined-config.d.ts.map +1 -1
- package/lib/scripts/config/types.d.ts +13 -8
- package/lib/scripts/config/types.d.ts.map +1 -1
- package/lib/scripts/session-replay.d.ts.map +1 -1
- package/package.json +3 -2
- package/lib/cjs/config/remote-config.d.ts +0 -28
- package/lib/cjs/config/remote-config.d.ts.map +0 -1
- package/lib/cjs/config/remote-config.js +0 -145
- package/lib/cjs/config/remote-config.js.map +0 -1
- package/lib/esm/config/remote-config.d.ts +0 -28
- package/lib/esm/config/remote-config.d.ts.map +0 -1
- package/lib/esm/config/remote-config.js +0 -143
- package/lib/esm/config/remote-config.js.map +0 -1
- package/lib/scripts/config/remote-config.d.ts +0 -28
- package/lib/scripts/config/remote-config.d.ts.map +0 -1
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { RemoteConfigFetch } from '@amplitude/analytics-remote-config';
|
|
2
|
+
import { SessionReplayOptions } from '../typings/session-replay';
|
|
3
|
+
import { SessionReplayLocalConfig as ISessionReplayLocalConfig, SessionReplayJoinedConfig, SessionReplayRemoteConfig } from './types';
|
|
3
4
|
export declare class SessionReplayJoinedConfigGenerator {
|
|
4
5
|
localConfig: ISessionReplayLocalConfig;
|
|
5
|
-
remoteConfigFetch:
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
remoteConfigFetch: RemoteConfigFetch<SessionReplayRemoteConfig> | undefined;
|
|
7
|
+
constructor(apiKey: string, options: SessionReplayOptions);
|
|
8
|
+
initialize(): Promise<void>;
|
|
8
9
|
generateJoinedConfig(sessionId?: number): Promise<SessionReplayJoinedConfig>;
|
|
9
10
|
}
|
|
11
|
+
export declare const createSessionReplayJoinedConfigGenerator: (apiKey: string, options: SessionReplayOptions) => Promise<SessionReplayJoinedConfigGenerator>;
|
|
10
12
|
//# sourceMappingURL=joined-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"joined-config.d.ts","sourceRoot":"","sources":["../../../src/config/joined-config.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"joined-config.d.ts","sourceRoot":"","sources":["../../../src/config/joined-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EACL,wBAAwB,IAAI,yBAAyB,EACrD,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB,qBAAa,kCAAkC;IAC7C,WAAW,EAAE,yBAAyB,CAAC;IACvC,iBAAiB,EAAE,iBAAiB,CAAC,yBAAyB,CAAC,GAAG,SAAS,CAAC;gBAEhE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IAInD,UAAU;IAOV,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM;CAqC9C;AAED,eAAO,MAAM,wCAAwC,WAAkB,MAAM,WAAW,oBAAoB,gDAI3G,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Config, LogLevel, Logger } from '@amplitude/analytics-types';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
2
|
+
export type SessionReplayRemoteConfig = {
|
|
3
|
+
sr_sampling_config: {
|
|
4
|
+
sample_rate: number;
|
|
5
|
+
capture_enabled: boolean;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
9
8
|
export interface SessionReplayRemoteConfigAPIResponse {
|
|
10
9
|
configs: {
|
|
11
10
|
sessionReplay: SessionReplayRemoteConfig;
|
|
@@ -27,6 +26,12 @@ export interface SessionReplayJoinedConfig extends SessionReplayLocalConfig {
|
|
|
27
26
|
captureEnabled?: boolean;
|
|
28
27
|
}
|
|
29
28
|
export interface SessionReplayRemoteConfigFetch {
|
|
30
|
-
|
|
29
|
+
getServerUrl: () => void;
|
|
30
|
+
getSamplingConfig: (sessionId?: number) => Promise<SessionReplayRemoteConfig['sr_sampling_config'] | void>;
|
|
31
|
+
fetchRemoteConfig: (sessionId?: number) => Promise<SessionReplayRemoteConfig | void>;
|
|
32
|
+
getRemoteConfig: (sessionId?: number) => Promise<SessionReplayRemoteConfig | void>;
|
|
33
|
+
}
|
|
34
|
+
export interface SessionReplayJoinedConfigGenerator {
|
|
35
|
+
generateJoinedConfig: (sessionId?: number) => Promise<SessionReplayJoinedConfig>;
|
|
31
36
|
}
|
|
32
37
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,MAAM,yBAAyB,GAAG;IACtC,kBAAkB,EAAE;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,oCAAoC;IACnD,OAAO,EAAE;QACP,aAAa,EAAE,yBAAyB,CAAC;KAC1C,CAAC;CACH;AACD,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,wBAAyB,SAAQ,MAAM;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,yBAA0B,SAAQ,wBAAwB;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3G,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IACrF,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,kCAAkC;IACjD,oBAAoB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAClF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAQ,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kCAAkC,
|
|
1
|
+
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAQ,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kCAAkC,EAA4C,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAW3D,OAAO,EACL,sBAAsB,EACtB,0BAA0B,IAAI,mCAAmC,EACjE,4BAA4B,IAAI,qCAAqC,EACrE,kBAAkB,IAAI,mBAAmB,EACzC,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,aAAc,YAAW,sBAAsB;IAC1D,IAAI,SAAuC;IAC3C,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAC9C,qBAAqB,EAAE,kCAAkC,GAAG,SAAS,CAAC;IACtE,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,mCAAmC,GAAG,SAAS,CAAC;IAC/D,eAAe,EAAE,qCAAqC,GAAG,SAAS,CAAC;IACnE,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAQ;;IAM9D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;cAIlC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;IA8BnE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAI3C,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAqB5D,kCAAkC;IAUlC,0BAA0B;;;IAwB1B,YAAY,aAEV;IAEF,aAAa,aAEX;IAEF,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM;IAWvC,UAAU,CAAC,sBAAsB,UAAQ;IAsB/C,YAAY;IAUZ,eAAe,CAAC,WAAW,UAAQ;IAgCnC,iBAAiB,IAAI,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAIlD,YAAY;IAwCZ,mBAAmB,aAQjB;IAEF,WAAW;IAUX,YAAY;IAIN,KAAK,CAAC,QAAQ,UAAQ;IAM5B,QAAQ;CAST"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amplitude/session-replay-browser",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Amplitude Inc",
|
|
6
6
|
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@amplitude/analytics-client-common": ">=1 <3",
|
|
42
42
|
"@amplitude/analytics-core": ">=1 <3",
|
|
43
|
+
"@amplitude/analytics-remote-config": "^0.1.1",
|
|
43
44
|
"@amplitude/analytics-types": ">=1 <3",
|
|
44
45
|
"@amplitude/rrweb": "^2.0.0-alpha.12",
|
|
45
46
|
"idb-keyval": "^6.2.1",
|
|
@@ -57,5 +58,5 @@
|
|
|
57
58
|
"files": [
|
|
58
59
|
"lib"
|
|
59
60
|
],
|
|
60
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "c87286c1eaa0d82afd9110ea3a1eea75d9401ee3"
|
|
61
62
|
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { SessionReplaySessionIDBStore as AmplitudeSessionReplaySessionIDBStore } from '../typings/session-replay';
|
|
2
|
-
import { SessionReplayLocalConfig as ISessionReplayLocalConfig, SessionReplayRemoteConfig as ISessionReplayRemoteConfig, SessionReplayRemoteConfigFetch as ISessionReplayRemoteConfigFetch, SamplingConfig } from './types';
|
|
3
|
-
export declare const REMOTE_CONFIG_SERVER_URL = "https://sr-client-cfg.amplitude.com/config";
|
|
4
|
-
export declare const REMOTE_CONFIG_SERVER_URL_STAGING = "https://sr-client-cfg.stag2.amplitude.com/config";
|
|
5
|
-
export declare const REMOTE_CONFIG_SERVER_URL_EU = "https://sr-client-cfg.eu.amplitude.com/config";
|
|
6
|
-
export declare class SessionReplayRemoteConfigFetch implements ISessionReplayRemoteConfigFetch {
|
|
7
|
-
localConfig: ISessionReplayLocalConfig;
|
|
8
|
-
sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;
|
|
9
|
-
retryTimeout: number;
|
|
10
|
-
attempts: number;
|
|
11
|
-
lastFetchedSessionId: number | undefined;
|
|
12
|
-
sessionTargetingMatch: boolean;
|
|
13
|
-
constructor({ localConfig, sessionIDBStore, }: {
|
|
14
|
-
localConfig: ISessionReplayLocalConfig;
|
|
15
|
-
sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;
|
|
16
|
-
});
|
|
17
|
-
getRemoteConfig: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
18
|
-
getSamplingConfig: (sessionId?: number) => Promise<SamplingConfig | void>;
|
|
19
|
-
getServerUrl(): "https://sr-client-cfg.amplitude.com/config" | "https://sr-client-cfg.stag2.amplitude.com/config" | "https://sr-client-cfg.eu.amplitude.com/config";
|
|
20
|
-
fetchRemoteConfig: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
21
|
-
retryFetch: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
22
|
-
parseAndStoreConfig: (res: Response, sessionId?: number) => Promise<ISessionReplayRemoteConfig>;
|
|
23
|
-
completeRequest({ err, success }: {
|
|
24
|
-
err?: string;
|
|
25
|
-
success?: string;
|
|
26
|
-
}): void;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=remote-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-config.d.ts","sourceRoot":"","sources":["../../../src/config/remote-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,IAAI,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAClH,OAAO,EACL,wBAAwB,IAAI,yBAAyB,EACrD,yBAAyB,IAAI,0BAA0B,EACvD,8BAA8B,IAAI,+BAA+B,EACjE,cAAc,EAEf,MAAM,SAAS,CAAC;AAKjB,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AACrF,eAAO,MAAM,gCAAgC,qDAAqD,CAAC;AACnG,eAAO,MAAM,2BAA2B,kDAAkD,CAAC;AAE3F,qBAAa,8BAA+B,YAAW,+BAA+B;IACpF,WAAW,EAAE,yBAAyB,CAAC;IACvC,eAAe,EAAE,qCAAqC,CAAC;IACvD,YAAY,SAAQ;IACpB,QAAQ,SAAK;IACb,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,qBAAqB,UAAS;gBAElB,EACV,WAAW,EACX,eAAe,GAChB,EAAE;QACD,WAAW,EAAE,yBAAyB,CAAC;QACvC,eAAe,EAAE,qCAAqC,CAAC;KACxD;IAKD,eAAe,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAQtF;IAEF,iBAAiB,eAAsB,MAAM,KAAG,QAAQ,cAAc,GAAG,IAAI,CAAC,CAG5E;IAEF,YAAY;IAYZ,iBAAiB,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAsCxF;IAEF,UAAU,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAGjF;IAEF,mBAAmB,QAAe,QAAQ,cAAc,MAAM,KAAG,QAAQ,0BAA0B,CAAC,CAMlG;IAEF,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAOrE"}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
exports.SessionReplayRemoteConfigFetch = exports.REMOTE_CONFIG_SERVER_URL_EU = exports.REMOTE_CONFIG_SERVER_URL_STAGING = exports.REMOTE_CONFIG_SERVER_URL = void 0;
|
|
3
|
-
var tslib_1 = require("tslib");
|
|
4
|
-
var analytics_core_1 = require("@amplitude/analytics-core");
|
|
5
|
-
var analytics_types_1 = require("@amplitude/analytics-types");
|
|
6
|
-
var messages_1 = require("../messages");
|
|
7
|
-
var UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, session replay remote config fetch failed';
|
|
8
|
-
var SUCCESS_REMOTE_CONFIG = 'Session replay remote config successfully fetched';
|
|
9
|
-
var MAX_RETRIES_EXCEEDED_MESSAGE = 'Session replay remote config fetch rejected due to exceeded retry count';
|
|
10
|
-
exports.REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';
|
|
11
|
-
exports.REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';
|
|
12
|
-
exports.REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';
|
|
13
|
-
var SessionReplayRemoteConfigFetch = /** @class */ (function () {
|
|
14
|
-
function SessionReplayRemoteConfigFetch(_a) {
|
|
15
|
-
var localConfig = _a.localConfig, sessionIDBStore = _a.sessionIDBStore;
|
|
16
|
-
var _this = this;
|
|
17
|
-
this.retryTimeout = 1000;
|
|
18
|
-
this.attempts = 0;
|
|
19
|
-
this.sessionTargetingMatch = false;
|
|
20
|
-
this.getRemoteConfig = function (sessionId) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
21
|
-
var idbRemoteConfig;
|
|
22
|
-
return tslib_1.__generator(this, function (_a) {
|
|
23
|
-
switch (_a.label) {
|
|
24
|
-
case 0: return [4 /*yield*/, this.sessionIDBStore.getRemoteConfig()];
|
|
25
|
-
case 1:
|
|
26
|
-
idbRemoteConfig = _a.sent();
|
|
27
|
-
if (idbRemoteConfig && idbRemoteConfig.lastFetchedSessionId === sessionId) {
|
|
28
|
-
return [2 /*return*/, idbRemoteConfig.config];
|
|
29
|
-
}
|
|
30
|
-
// Finally fetch via API
|
|
31
|
-
return [2 /*return*/, this.fetchRemoteConfig(sessionId)];
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}); };
|
|
35
|
-
this.getSamplingConfig = function (sessionId) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
36
|
-
var remoteConfig;
|
|
37
|
-
return tslib_1.__generator(this, function (_a) {
|
|
38
|
-
switch (_a.label) {
|
|
39
|
-
case 0: return [4 /*yield*/, this.getRemoteConfig(sessionId)];
|
|
40
|
-
case 1:
|
|
41
|
-
remoteConfig = _a.sent();
|
|
42
|
-
return [2 /*return*/, remoteConfig === null || remoteConfig === void 0 ? void 0 : remoteConfig.sr_sampling_config];
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}); };
|
|
46
|
-
this.fetchRemoteConfig = function (sessionId) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
47
|
-
var urlParams, options, serverUrl, res, parsedStatus, e_1;
|
|
48
|
-
return tslib_1.__generator(this, function (_a) {
|
|
49
|
-
switch (_a.label) {
|
|
50
|
-
case 0:
|
|
51
|
-
if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {
|
|
52
|
-
return [2 /*return*/, this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE })];
|
|
53
|
-
}
|
|
54
|
-
else if (sessionId !== this.lastFetchedSessionId) {
|
|
55
|
-
this.lastFetchedSessionId = sessionId;
|
|
56
|
-
this.attempts = 0;
|
|
57
|
-
}
|
|
58
|
-
_a.label = 1;
|
|
59
|
-
case 1:
|
|
60
|
-
_a.trys.push([1, 3, , 4]);
|
|
61
|
-
urlParams = new URLSearchParams({
|
|
62
|
-
api_key: this.localConfig.apiKey,
|
|
63
|
-
config_keys: 'sessionReplay',
|
|
64
|
-
});
|
|
65
|
-
options = {
|
|
66
|
-
headers: {
|
|
67
|
-
'Content-Type': 'application/json',
|
|
68
|
-
Accept: '*/*',
|
|
69
|
-
},
|
|
70
|
-
method: 'GET',
|
|
71
|
-
};
|
|
72
|
-
serverUrl = "".concat(this.getServerUrl(), "?").concat(urlParams.toString());
|
|
73
|
-
this.attempts += 1;
|
|
74
|
-
return [4 /*yield*/, fetch(serverUrl, options)];
|
|
75
|
-
case 2:
|
|
76
|
-
res = _a.sent();
|
|
77
|
-
if (res === null) {
|
|
78
|
-
return [2 /*return*/, this.completeRequest({ err: messages_1.UNEXPECTED_ERROR_MESSAGE })];
|
|
79
|
-
}
|
|
80
|
-
parsedStatus = new analytics_core_1.BaseTransport().buildStatus(res.status);
|
|
81
|
-
switch (parsedStatus) {
|
|
82
|
-
case analytics_types_1.Status.Success:
|
|
83
|
-
return [2 /*return*/, this.parseAndStoreConfig(res, sessionId)];
|
|
84
|
-
case analytics_types_1.Status.Failed:
|
|
85
|
-
return [2 /*return*/, this.retryFetch(sessionId)];
|
|
86
|
-
default:
|
|
87
|
-
return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE })];
|
|
88
|
-
}
|
|
89
|
-
return [3 /*break*/, 4];
|
|
90
|
-
case 3:
|
|
91
|
-
e_1 = _a.sent();
|
|
92
|
-
return [2 /*return*/, this.completeRequest({ err: e_1 })];
|
|
93
|
-
case 4: return [2 /*return*/];
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}); };
|
|
97
|
-
this.retryFetch = function (sessionId) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
98
|
-
var _this = this;
|
|
99
|
-
return tslib_1.__generator(this, function (_a) {
|
|
100
|
-
switch (_a.label) {
|
|
101
|
-
case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.attempts * _this.retryTimeout); })];
|
|
102
|
-
case 1:
|
|
103
|
-
_a.sent();
|
|
104
|
-
return [2 /*return*/, this.fetchRemoteConfig(sessionId)];
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}); };
|
|
108
|
-
this.parseAndStoreConfig = function (res, sessionId) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
109
|
-
var remoteConfig;
|
|
110
|
-
return tslib_1.__generator(this, function (_a) {
|
|
111
|
-
switch (_a.label) {
|
|
112
|
-
case 0: return [4 /*yield*/, res.json()];
|
|
113
|
-
case 1:
|
|
114
|
-
remoteConfig = (_a.sent());
|
|
115
|
-
this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });
|
|
116
|
-
void this.sessionIDBStore.storeRemoteConfig(remoteConfig.configs.sessionReplay, sessionId);
|
|
117
|
-
return [2 /*return*/, remoteConfig.configs.sessionReplay];
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}); };
|
|
121
|
-
this.localConfig = localConfig;
|
|
122
|
-
this.sessionIDBStore = sessionIDBStore;
|
|
123
|
-
}
|
|
124
|
-
SessionReplayRemoteConfigFetch.prototype.getServerUrl = function () {
|
|
125
|
-
if (this.localConfig.serverZone === analytics_types_1.ServerZone.STAGING) {
|
|
126
|
-
return exports.REMOTE_CONFIG_SERVER_URL_STAGING;
|
|
127
|
-
}
|
|
128
|
-
if (this.localConfig.serverZone === analytics_types_1.ServerZone.EU) {
|
|
129
|
-
return exports.REMOTE_CONFIG_SERVER_URL_EU;
|
|
130
|
-
}
|
|
131
|
-
return exports.REMOTE_CONFIG_SERVER_URL;
|
|
132
|
-
};
|
|
133
|
-
SessionReplayRemoteConfigFetch.prototype.completeRequest = function (_a) {
|
|
134
|
-
var err = _a.err, success = _a.success;
|
|
135
|
-
if (err) {
|
|
136
|
-
throw new Error(err);
|
|
137
|
-
}
|
|
138
|
-
else if (success) {
|
|
139
|
-
this.localConfig.loggerProvider.log(success);
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
return SessionReplayRemoteConfigFetch;
|
|
143
|
-
}());
|
|
144
|
-
exports.SessionReplayRemoteConfigFetch = SessionReplayRemoteConfigFetch;
|
|
145
|
-
//# sourceMappingURL=remote-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-config.js","sourceRoot":"","sources":["../../../src/config/remote-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { ServerZone, Status } from '@amplitude/analytics-types';\nimport { UNEXPECTED_ERROR_MESSAGE } from '../messages';\nimport { SessionReplaySessionIDBStore as AmplitudeSessionReplaySessionIDBStore } from '../typings/session-replay';\nimport {\n SessionReplayLocalConfig as ISessionReplayLocalConfig,\n SessionReplayRemoteConfig as ISessionReplayRemoteConfig,\n SessionReplayRemoteConfigFetch as ISessionReplayRemoteConfigFetch,\n SamplingConfig,\n SessionReplayRemoteConfigAPIResponse,\n} from './types';\n\nconst UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, session replay remote config fetch failed';\nconst SUCCESS_REMOTE_CONFIG = 'Session replay remote config successfully fetched';\nconst MAX_RETRIES_EXCEEDED_MESSAGE = 'Session replay remote config fetch rejected due to exceeded retry count';\nexport const REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport const REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport const REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\n\nexport class SessionReplayRemoteConfigFetch implements ISessionReplayRemoteConfigFetch {\n localConfig: ISessionReplayLocalConfig;\n sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;\n retryTimeout = 1000;\n attempts = 0;\n lastFetchedSessionId: number | undefined;\n sessionTargetingMatch = false;\n\n constructor({\n localConfig,\n sessionIDBStore,\n }: {\n localConfig: ISessionReplayLocalConfig;\n sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;\n }) {\n this.localConfig = localConfig;\n this.sessionIDBStore = sessionIDBStore;\n }\n\n getRemoteConfig = async (sessionId?: number): Promise<ISessionReplayRemoteConfig | void> => {\n // Then check IndexedDB for session\n const idbRemoteConfig = await this.sessionIDBStore.getRemoteConfig();\n if (idbRemoteConfig && idbRemoteConfig.lastFetchedSessionId === sessionId) {\n return idbRemoteConfig.config;\n }\n // Finally fetch via API\n return this.fetchRemoteConfig(sessionId);\n };\n\n getSamplingConfig = async (sessionId?: number): Promise<SamplingConfig | void> => {\n const remoteConfig = await this.getRemoteConfig(sessionId);\n return remoteConfig?.sr_sampling_config;\n };\n\n getServerUrl() {\n if (this.localConfig.serverZone === ServerZone.STAGING) {\n return REMOTE_CONFIG_SERVER_URL_STAGING;\n }\n\n if (this.localConfig.serverZone === ServerZone.EU) {\n return REMOTE_CONFIG_SERVER_URL_EU;\n }\n\n return REMOTE_CONFIG_SERVER_URL;\n }\n\n fetchRemoteConfig = async (sessionId?: number): Promise<ISessionReplayRemoteConfig | void> => {\n if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n return this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE });\n } else if (sessionId !== this.lastFetchedSessionId) {\n this.lastFetchedSessionId = sessionId;\n this.attempts = 0;\n }\n\n try {\n const urlParams = new URLSearchParams({\n api_key: this.localConfig.apiKey,\n config_keys: 'sessionReplay',\n });\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n method: 'GET',\n };\n const serverUrl = `${this.getServerUrl()}?${urlParams.toString()}`;\n this.attempts += 1;\n const res = await fetch(serverUrl, options);\n if (res === null) {\n return this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE });\n }\n const parsedStatus = new BaseTransport().buildStatus(res.status);\n switch (parsedStatus) {\n case Status.Success:\n return this.parseAndStoreConfig(res, sessionId);\n case Status.Failed:\n return this.retryFetch(sessionId);\n default:\n return this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE });\n }\n } catch (e) {\n return this.completeRequest({ err: e as string });\n }\n };\n\n retryFetch = async (sessionId?: number): Promise<ISessionReplayRemoteConfig | void> => {\n await new Promise((resolve) => setTimeout(resolve, this.attempts * this.retryTimeout));\n return this.fetchRemoteConfig(sessionId);\n };\n\n parseAndStoreConfig = async (res: Response, sessionId?: number): Promise<ISessionReplayRemoteConfig> => {\n const remoteConfig: SessionReplayRemoteConfigAPIResponse =\n (await res.json()) as SessionReplayRemoteConfigAPIResponse;\n this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n void this.sessionIDBStore.storeRemoteConfig(remoteConfig.configs.sessionReplay, sessionId);\n return remoteConfig.configs.sessionReplay;\n };\n\n completeRequest({ err, success }: { err?: string; success?: string }) {\n if (err) {\n throw new Error(err);\n } else if (success) {\n this.localConfig.loggerProvider.log(success);\n }\n }\n}\n"]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { SessionReplaySessionIDBStore as AmplitudeSessionReplaySessionIDBStore } from '../typings/session-replay';
|
|
2
|
-
import { SessionReplayLocalConfig as ISessionReplayLocalConfig, SessionReplayRemoteConfig as ISessionReplayRemoteConfig, SessionReplayRemoteConfigFetch as ISessionReplayRemoteConfigFetch, SamplingConfig } from './types';
|
|
3
|
-
export declare const REMOTE_CONFIG_SERVER_URL = "https://sr-client-cfg.amplitude.com/config";
|
|
4
|
-
export declare const REMOTE_CONFIG_SERVER_URL_STAGING = "https://sr-client-cfg.stag2.amplitude.com/config";
|
|
5
|
-
export declare const REMOTE_CONFIG_SERVER_URL_EU = "https://sr-client-cfg.eu.amplitude.com/config";
|
|
6
|
-
export declare class SessionReplayRemoteConfigFetch implements ISessionReplayRemoteConfigFetch {
|
|
7
|
-
localConfig: ISessionReplayLocalConfig;
|
|
8
|
-
sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;
|
|
9
|
-
retryTimeout: number;
|
|
10
|
-
attempts: number;
|
|
11
|
-
lastFetchedSessionId: number | undefined;
|
|
12
|
-
sessionTargetingMatch: boolean;
|
|
13
|
-
constructor({ localConfig, sessionIDBStore, }: {
|
|
14
|
-
localConfig: ISessionReplayLocalConfig;
|
|
15
|
-
sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;
|
|
16
|
-
});
|
|
17
|
-
getRemoteConfig: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
18
|
-
getSamplingConfig: (sessionId?: number) => Promise<SamplingConfig | void>;
|
|
19
|
-
getServerUrl(): "https://sr-client-cfg.amplitude.com/config" | "https://sr-client-cfg.stag2.amplitude.com/config" | "https://sr-client-cfg.eu.amplitude.com/config";
|
|
20
|
-
fetchRemoteConfig: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
21
|
-
retryFetch: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
22
|
-
parseAndStoreConfig: (res: Response, sessionId?: number) => Promise<ISessionReplayRemoteConfig>;
|
|
23
|
-
completeRequest({ err, success }: {
|
|
24
|
-
err?: string;
|
|
25
|
-
success?: string;
|
|
26
|
-
}): void;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=remote-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-config.d.ts","sourceRoot":"","sources":["../../../src/config/remote-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,IAAI,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAClH,OAAO,EACL,wBAAwB,IAAI,yBAAyB,EACrD,yBAAyB,IAAI,0BAA0B,EACvD,8BAA8B,IAAI,+BAA+B,EACjE,cAAc,EAEf,MAAM,SAAS,CAAC;AAKjB,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AACrF,eAAO,MAAM,gCAAgC,qDAAqD,CAAC;AACnG,eAAO,MAAM,2BAA2B,kDAAkD,CAAC;AAE3F,qBAAa,8BAA+B,YAAW,+BAA+B;IACpF,WAAW,EAAE,yBAAyB,CAAC;IACvC,eAAe,EAAE,qCAAqC,CAAC;IACvD,YAAY,SAAQ;IACpB,QAAQ,SAAK;IACb,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,qBAAqB,UAAS;gBAElB,EACV,WAAW,EACX,eAAe,GAChB,EAAE;QACD,WAAW,EAAE,yBAAyB,CAAC;QACvC,eAAe,EAAE,qCAAqC,CAAC;KACxD;IAKD,eAAe,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAQtF;IAEF,iBAAiB,eAAsB,MAAM,KAAG,QAAQ,cAAc,GAAG,IAAI,CAAC,CAG5E;IAEF,YAAY;IAYZ,iBAAiB,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAsCxF;IAEF,UAAU,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAGjF;IAEF,mBAAmB,QAAe,QAAQ,cAAc,MAAM,KAAG,QAAQ,0BAA0B,CAAC,CAMlG;IAEF,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAOrE"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __generator } from "tslib";
|
|
2
|
-
import { BaseTransport } from '@amplitude/analytics-core';
|
|
3
|
-
import { ServerZone, Status } from '@amplitude/analytics-types';
|
|
4
|
-
import { UNEXPECTED_ERROR_MESSAGE } from '../messages';
|
|
5
|
-
var UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, session replay remote config fetch failed';
|
|
6
|
-
var SUCCESS_REMOTE_CONFIG = 'Session replay remote config successfully fetched';
|
|
7
|
-
var MAX_RETRIES_EXCEEDED_MESSAGE = 'Session replay remote config fetch rejected due to exceeded retry count';
|
|
8
|
-
export var REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';
|
|
9
|
-
export var REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';
|
|
10
|
-
export var REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';
|
|
11
|
-
var SessionReplayRemoteConfigFetch = /** @class */ (function () {
|
|
12
|
-
function SessionReplayRemoteConfigFetch(_a) {
|
|
13
|
-
var localConfig = _a.localConfig, sessionIDBStore = _a.sessionIDBStore;
|
|
14
|
-
var _this = this;
|
|
15
|
-
this.retryTimeout = 1000;
|
|
16
|
-
this.attempts = 0;
|
|
17
|
-
this.sessionTargetingMatch = false;
|
|
18
|
-
this.getRemoteConfig = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {
|
|
19
|
-
var idbRemoteConfig;
|
|
20
|
-
return __generator(this, function (_a) {
|
|
21
|
-
switch (_a.label) {
|
|
22
|
-
case 0: return [4 /*yield*/, this.sessionIDBStore.getRemoteConfig()];
|
|
23
|
-
case 1:
|
|
24
|
-
idbRemoteConfig = _a.sent();
|
|
25
|
-
if (idbRemoteConfig && idbRemoteConfig.lastFetchedSessionId === sessionId) {
|
|
26
|
-
return [2 /*return*/, idbRemoteConfig.config];
|
|
27
|
-
}
|
|
28
|
-
// Finally fetch via API
|
|
29
|
-
return [2 /*return*/, this.fetchRemoteConfig(sessionId)];
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}); };
|
|
33
|
-
this.getSamplingConfig = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {
|
|
34
|
-
var remoteConfig;
|
|
35
|
-
return __generator(this, function (_a) {
|
|
36
|
-
switch (_a.label) {
|
|
37
|
-
case 0: return [4 /*yield*/, this.getRemoteConfig(sessionId)];
|
|
38
|
-
case 1:
|
|
39
|
-
remoteConfig = _a.sent();
|
|
40
|
-
return [2 /*return*/, remoteConfig === null || remoteConfig === void 0 ? void 0 : remoteConfig.sr_sampling_config];
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}); };
|
|
44
|
-
this.fetchRemoteConfig = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {
|
|
45
|
-
var urlParams, options, serverUrl, res, parsedStatus, e_1;
|
|
46
|
-
return __generator(this, function (_a) {
|
|
47
|
-
switch (_a.label) {
|
|
48
|
-
case 0:
|
|
49
|
-
if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {
|
|
50
|
-
return [2 /*return*/, this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE })];
|
|
51
|
-
}
|
|
52
|
-
else if (sessionId !== this.lastFetchedSessionId) {
|
|
53
|
-
this.lastFetchedSessionId = sessionId;
|
|
54
|
-
this.attempts = 0;
|
|
55
|
-
}
|
|
56
|
-
_a.label = 1;
|
|
57
|
-
case 1:
|
|
58
|
-
_a.trys.push([1, 3, , 4]);
|
|
59
|
-
urlParams = new URLSearchParams({
|
|
60
|
-
api_key: this.localConfig.apiKey,
|
|
61
|
-
config_keys: 'sessionReplay',
|
|
62
|
-
});
|
|
63
|
-
options = {
|
|
64
|
-
headers: {
|
|
65
|
-
'Content-Type': 'application/json',
|
|
66
|
-
Accept: '*/*',
|
|
67
|
-
},
|
|
68
|
-
method: 'GET',
|
|
69
|
-
};
|
|
70
|
-
serverUrl = "".concat(this.getServerUrl(), "?").concat(urlParams.toString());
|
|
71
|
-
this.attempts += 1;
|
|
72
|
-
return [4 /*yield*/, fetch(serverUrl, options)];
|
|
73
|
-
case 2:
|
|
74
|
-
res = _a.sent();
|
|
75
|
-
if (res === null) {
|
|
76
|
-
return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE })];
|
|
77
|
-
}
|
|
78
|
-
parsedStatus = new BaseTransport().buildStatus(res.status);
|
|
79
|
-
switch (parsedStatus) {
|
|
80
|
-
case Status.Success:
|
|
81
|
-
return [2 /*return*/, this.parseAndStoreConfig(res, sessionId)];
|
|
82
|
-
case Status.Failed:
|
|
83
|
-
return [2 /*return*/, this.retryFetch(sessionId)];
|
|
84
|
-
default:
|
|
85
|
-
return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE })];
|
|
86
|
-
}
|
|
87
|
-
return [3 /*break*/, 4];
|
|
88
|
-
case 3:
|
|
89
|
-
e_1 = _a.sent();
|
|
90
|
-
return [2 /*return*/, this.completeRequest({ err: e_1 })];
|
|
91
|
-
case 4: return [2 /*return*/];
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}); };
|
|
95
|
-
this.retryFetch = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {
|
|
96
|
-
var _this = this;
|
|
97
|
-
return __generator(this, function (_a) {
|
|
98
|
-
switch (_a.label) {
|
|
99
|
-
case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.attempts * _this.retryTimeout); })];
|
|
100
|
-
case 1:
|
|
101
|
-
_a.sent();
|
|
102
|
-
return [2 /*return*/, this.fetchRemoteConfig(sessionId)];
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
}); };
|
|
106
|
-
this.parseAndStoreConfig = function (res, sessionId) { return __awaiter(_this, void 0, void 0, function () {
|
|
107
|
-
var remoteConfig;
|
|
108
|
-
return __generator(this, function (_a) {
|
|
109
|
-
switch (_a.label) {
|
|
110
|
-
case 0: return [4 /*yield*/, res.json()];
|
|
111
|
-
case 1:
|
|
112
|
-
remoteConfig = (_a.sent());
|
|
113
|
-
this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });
|
|
114
|
-
void this.sessionIDBStore.storeRemoteConfig(remoteConfig.configs.sessionReplay, sessionId);
|
|
115
|
-
return [2 /*return*/, remoteConfig.configs.sessionReplay];
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}); };
|
|
119
|
-
this.localConfig = localConfig;
|
|
120
|
-
this.sessionIDBStore = sessionIDBStore;
|
|
121
|
-
}
|
|
122
|
-
SessionReplayRemoteConfigFetch.prototype.getServerUrl = function () {
|
|
123
|
-
if (this.localConfig.serverZone === ServerZone.STAGING) {
|
|
124
|
-
return REMOTE_CONFIG_SERVER_URL_STAGING;
|
|
125
|
-
}
|
|
126
|
-
if (this.localConfig.serverZone === ServerZone.EU) {
|
|
127
|
-
return REMOTE_CONFIG_SERVER_URL_EU;
|
|
128
|
-
}
|
|
129
|
-
return REMOTE_CONFIG_SERVER_URL;
|
|
130
|
-
};
|
|
131
|
-
SessionReplayRemoteConfigFetch.prototype.completeRequest = function (_a) {
|
|
132
|
-
var err = _a.err, success = _a.success;
|
|
133
|
-
if (err) {
|
|
134
|
-
throw new Error(err);
|
|
135
|
-
}
|
|
136
|
-
else if (success) {
|
|
137
|
-
this.localConfig.loggerProvider.log(success);
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
return SessionReplayRemoteConfigFetch;
|
|
141
|
-
}());
|
|
142
|
-
export { SessionReplayRemoteConfigFetch };
|
|
143
|
-
//# sourceMappingURL=remote-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-config.js","sourceRoot":"","sources":["../../../src/config/remote-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { ServerZone, Status } from '@amplitude/analytics-types';\nimport { UNEXPECTED_ERROR_MESSAGE } from '../messages';\nimport { SessionReplaySessionIDBStore as AmplitudeSessionReplaySessionIDBStore } from '../typings/session-replay';\nimport {\n SessionReplayLocalConfig as ISessionReplayLocalConfig,\n SessionReplayRemoteConfig as ISessionReplayRemoteConfig,\n SessionReplayRemoteConfigFetch as ISessionReplayRemoteConfigFetch,\n SamplingConfig,\n SessionReplayRemoteConfigAPIResponse,\n} from './types';\n\nconst UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, session replay remote config fetch failed';\nconst SUCCESS_REMOTE_CONFIG = 'Session replay remote config successfully fetched';\nconst MAX_RETRIES_EXCEEDED_MESSAGE = 'Session replay remote config fetch rejected due to exceeded retry count';\nexport const REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport const REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport const REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\n\nexport class SessionReplayRemoteConfigFetch implements ISessionReplayRemoteConfigFetch {\n localConfig: ISessionReplayLocalConfig;\n sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;\n retryTimeout = 1000;\n attempts = 0;\n lastFetchedSessionId: number | undefined;\n sessionTargetingMatch = false;\n\n constructor({\n localConfig,\n sessionIDBStore,\n }: {\n localConfig: ISessionReplayLocalConfig;\n sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;\n }) {\n this.localConfig = localConfig;\n this.sessionIDBStore = sessionIDBStore;\n }\n\n getRemoteConfig = async (sessionId?: number): Promise<ISessionReplayRemoteConfig | void> => {\n // Then check IndexedDB for session\n const idbRemoteConfig = await this.sessionIDBStore.getRemoteConfig();\n if (idbRemoteConfig && idbRemoteConfig.lastFetchedSessionId === sessionId) {\n return idbRemoteConfig.config;\n }\n // Finally fetch via API\n return this.fetchRemoteConfig(sessionId);\n };\n\n getSamplingConfig = async (sessionId?: number): Promise<SamplingConfig | void> => {\n const remoteConfig = await this.getRemoteConfig(sessionId);\n return remoteConfig?.sr_sampling_config;\n };\n\n getServerUrl() {\n if (this.localConfig.serverZone === ServerZone.STAGING) {\n return REMOTE_CONFIG_SERVER_URL_STAGING;\n }\n\n if (this.localConfig.serverZone === ServerZone.EU) {\n return REMOTE_CONFIG_SERVER_URL_EU;\n }\n\n return REMOTE_CONFIG_SERVER_URL;\n }\n\n fetchRemoteConfig = async (sessionId?: number): Promise<ISessionReplayRemoteConfig | void> => {\n if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n return this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE });\n } else if (sessionId !== this.lastFetchedSessionId) {\n this.lastFetchedSessionId = sessionId;\n this.attempts = 0;\n }\n\n try {\n const urlParams = new URLSearchParams({\n api_key: this.localConfig.apiKey,\n config_keys: 'sessionReplay',\n });\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n method: 'GET',\n };\n const serverUrl = `${this.getServerUrl()}?${urlParams.toString()}`;\n this.attempts += 1;\n const res = await fetch(serverUrl, options);\n if (res === null) {\n return this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE });\n }\n const parsedStatus = new BaseTransport().buildStatus(res.status);\n switch (parsedStatus) {\n case Status.Success:\n return this.parseAndStoreConfig(res, sessionId);\n case Status.Failed:\n return this.retryFetch(sessionId);\n default:\n return this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE });\n }\n } catch (e) {\n return this.completeRequest({ err: e as string });\n }\n };\n\n retryFetch = async (sessionId?: number): Promise<ISessionReplayRemoteConfig | void> => {\n await new Promise((resolve) => setTimeout(resolve, this.attempts * this.retryTimeout));\n return this.fetchRemoteConfig(sessionId);\n };\n\n parseAndStoreConfig = async (res: Response, sessionId?: number): Promise<ISessionReplayRemoteConfig> => {\n const remoteConfig: SessionReplayRemoteConfigAPIResponse =\n (await res.json()) as SessionReplayRemoteConfigAPIResponse;\n this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n void this.sessionIDBStore.storeRemoteConfig(remoteConfig.configs.sessionReplay, sessionId);\n return remoteConfig.configs.sessionReplay;\n };\n\n completeRequest({ err, success }: { err?: string; success?: string }) {\n if (err) {\n throw new Error(err);\n } else if (success) {\n this.localConfig.loggerProvider.log(success);\n }\n }\n}\n"]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { SessionReplaySessionIDBStore as AmplitudeSessionReplaySessionIDBStore } from '../typings/session-replay';
|
|
2
|
-
import { SessionReplayLocalConfig as ISessionReplayLocalConfig, SessionReplayRemoteConfig as ISessionReplayRemoteConfig, SessionReplayRemoteConfigFetch as ISessionReplayRemoteConfigFetch, SamplingConfig } from './types';
|
|
3
|
-
export declare const REMOTE_CONFIG_SERVER_URL = "https://sr-client-cfg.amplitude.com/config";
|
|
4
|
-
export declare const REMOTE_CONFIG_SERVER_URL_STAGING = "https://sr-client-cfg.stag2.amplitude.com/config";
|
|
5
|
-
export declare const REMOTE_CONFIG_SERVER_URL_EU = "https://sr-client-cfg.eu.amplitude.com/config";
|
|
6
|
-
export declare class SessionReplayRemoteConfigFetch implements ISessionReplayRemoteConfigFetch {
|
|
7
|
-
localConfig: ISessionReplayLocalConfig;
|
|
8
|
-
sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;
|
|
9
|
-
retryTimeout: number;
|
|
10
|
-
attempts: number;
|
|
11
|
-
lastFetchedSessionId: number | undefined;
|
|
12
|
-
sessionTargetingMatch: boolean;
|
|
13
|
-
constructor({ localConfig, sessionIDBStore, }: {
|
|
14
|
-
localConfig: ISessionReplayLocalConfig;
|
|
15
|
-
sessionIDBStore: AmplitudeSessionReplaySessionIDBStore;
|
|
16
|
-
});
|
|
17
|
-
getRemoteConfig: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
18
|
-
getSamplingConfig: (sessionId?: number) => Promise<SamplingConfig | void>;
|
|
19
|
-
getServerUrl(): "https://sr-client-cfg.amplitude.com/config" | "https://sr-client-cfg.stag2.amplitude.com/config" | "https://sr-client-cfg.eu.amplitude.com/config";
|
|
20
|
-
fetchRemoteConfig: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
21
|
-
retryFetch: (sessionId?: number) => Promise<ISessionReplayRemoteConfig | void>;
|
|
22
|
-
parseAndStoreConfig: (res: Response, sessionId?: number) => Promise<ISessionReplayRemoteConfig>;
|
|
23
|
-
completeRequest({ err, success }: {
|
|
24
|
-
err?: string;
|
|
25
|
-
success?: string;
|
|
26
|
-
}): void;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=remote-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-config.d.ts","sourceRoot":"","sources":["../../../src/config/remote-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,IAAI,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAClH,OAAO,EACL,wBAAwB,IAAI,yBAAyB,EACrD,yBAAyB,IAAI,0BAA0B,EACvD,8BAA8B,IAAI,+BAA+B,EACjE,cAAc,EAEf,MAAM,SAAS,CAAC;AAKjB,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AACrF,eAAO,MAAM,gCAAgC,qDAAqD,CAAC;AACnG,eAAO,MAAM,2BAA2B,kDAAkD,CAAC;AAE3F,qBAAa,8BAA+B,YAAW,+BAA+B;IACpF,WAAW,EAAE,yBAAyB,CAAC;IACvC,eAAe,EAAE,qCAAqC,CAAC;IACvD,YAAY,SAAQ;IACpB,QAAQ,SAAK;IACb,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,qBAAqB,UAAS;gBAElB,EACV,WAAW,EACX,eAAe,GAChB,EAAE;QACD,WAAW,EAAE,yBAAyB,CAAC;QACvC,eAAe,EAAE,qCAAqC,CAAC;KACxD;IAKD,eAAe,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAQtF;IAEF,iBAAiB,eAAsB,MAAM,KAAG,QAAQ,cAAc,GAAG,IAAI,CAAC,CAG5E;IAEF,YAAY;IAYZ,iBAAiB,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAsCxF;IAEF,UAAU,eAAsB,MAAM,KAAG,QAAQ,0BAA0B,GAAG,IAAI,CAAC,CAGjF;IAEF,mBAAmB,QAAe,QAAQ,cAAc,MAAM,KAAG,QAAQ,0BAA0B,CAAC,CAMlG;IAEF,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAOrE"}
|