@amplitude/analytics-browser 2.21.0 → 2.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/cjs/browser-client.d.ts +2 -1
- package/lib/cjs/browser-client.d.ts.map +1 -1
- package/lib/cjs/browser-client.js +73 -53
- package/lib/cjs/browser-client.js.map +1 -1
- package/lib/cjs/config/joined-config.d.ts +9 -15
- package/lib/cjs/config/joined-config.d.ts.map +1 -1
- package/lib/cjs/config/joined-config.js +71 -123
- package/lib/cjs/config/joined-config.js.map +1 -1
- package/lib/cjs/config.d.ts +1 -1
- package/lib/cjs/config.d.ts.map +1 -1
- package/lib/cjs/config.js +4 -2
- package/lib/cjs/config.js.map +1 -1
- package/lib/cjs/storage/local-storage.d.ts +1 -2
- package/lib/cjs/storage/local-storage.d.ts.map +1 -1
- package/lib/cjs/storage/local-storage.js +1 -2
- package/lib/cjs/storage/local-storage.js.map +1 -1
- package/lib/cjs/storage/session-storage.d.ts +1 -1
- package/lib/cjs/storage/session-storage.d.ts.map +1 -1
- package/lib/cjs/storage/session-storage.js +1 -2
- package/lib/cjs/storage/session-storage.js.map +1 -1
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/browser-client.d.ts +2 -1
- package/lib/esm/browser-client.d.ts.map +1 -1
- package/lib/esm/browser-client.js +75 -55
- package/lib/esm/browser-client.js.map +1 -1
- package/lib/esm/config/joined-config.d.ts +9 -15
- package/lib/esm/config/joined-config.d.ts.map +1 -1
- package/lib/esm/config/joined-config.js +70 -122
- package/lib/esm/config/joined-config.js.map +1 -1
- package/lib/esm/config.d.ts +1 -1
- package/lib/esm/config.d.ts.map +1 -1
- package/lib/esm/config.js +4 -2
- package/lib/esm/config.js.map +1 -1
- package/lib/esm/storage/local-storage.d.ts +1 -2
- package/lib/esm/storage/local-storage.d.ts.map +1 -1
- package/lib/esm/storage/local-storage.js +1 -2
- package/lib/esm/storage/local-storage.js.map +1 -1
- package/lib/esm/storage/session-storage.d.ts +1 -1
- package/lib/esm/storage/session-storage.d.ts.map +1 -1
- package/lib/esm/storage/session-storage.js +1 -2
- package/lib/esm/storage/session-storage.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/amplitude-bookmarklet-snippet-min.js +1 -1
- package/lib/scripts/amplitude-bookmarklet.html +1 -1
- package/lib/scripts/amplitude-gtm-min.js +1 -1
- package/lib/scripts/amplitude-gtm-min.js.gz +0 -0
- package/lib/scripts/amplitude-gtm-min.js.map +1 -1
- package/lib/scripts/amplitude-gtm-snippet-min.js +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.js.map +1 -1
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/amplitude-snippet-instructions.html +1 -1
- package/lib/scripts/amplitude-snippet-min.js +1 -1
- package/lib/scripts/browser-client.d.ts +2 -1
- package/lib/scripts/browser-client.d.ts.map +1 -1
- package/lib/scripts/config/joined-config.d.ts +9 -15
- package/lib/scripts/config/joined-config.d.ts.map +1 -1
- package/lib/scripts/config.d.ts +1 -1
- package/lib/scripts/config.d.ts.map +1 -1
- package/lib/scripts/storage/local-storage.d.ts +1 -2
- package/lib/scripts/storage/local-storage.d.ts.map +1 -1
- package/lib/scripts/storage/session-storage.d.ts +1 -1
- package/lib/scripts/storage/session-storage.d.ts.map +1 -1
- package/lib/scripts/version.d.ts +1 -1
- package/package.json +7 -7
- package/lib/cjs/storage/browser-storage.d.ts +0 -12
- package/lib/cjs/storage/browser-storage.d.ts.map +0 -1
- package/lib/cjs/storage/browser-storage.js +0 -122
- package/lib/cjs/storage/browser-storage.js.map +0 -1
- package/lib/esm/storage/browser-storage.d.ts +0 -12
- package/lib/esm/storage/browser-storage.d.ts.map +0 -1
- package/lib/esm/storage/browser-storage.js +0 -119
- package/lib/esm/storage/browser-storage.js.map +0 -1
- package/lib/scripts/storage/browser-storage.d.ts +0 -12
- package/lib/scripts/storage/browser-storage.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __assign, __awaiter, __extends, __generator } from "tslib";
|
|
2
|
-
import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID, getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId, isNewSession, IdentityEventSender, getQueryParams, OfflineDisabled, SpecialEventType, } from '@amplitude/analytics-core';
|
|
2
|
+
import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID, getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId, isNewSession, IdentityEventSender, getQueryParams, OfflineDisabled, SpecialEventType, RemoteConfigClient, } from '@amplitude/analytics-core';
|
|
3
3
|
import { getAttributionTrackingConfig, getPageViewTrackingConfig, getElementInteractionsConfig, getNetworkTrackingConfig, isAttributionTrackingEnabled, isSessionTrackingEnabled, isFileDownloadTrackingEnabled, isFormInteractionTrackingEnabled, isElementInteractionsEnabled, isPageViewTrackingEnabled, isNetworkTrackingEnabled, isWebVitalsEnabled, isFrustrationInteractionsEnabled, getFrustrationInteractionsConfig, } from './default-tracking';
|
|
4
4
|
import { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';
|
|
5
5
|
import { Context } from './plugins/context';
|
|
@@ -10,7 +10,7 @@ import { fileDownloadTracking } from './plugins/file-download-tracking';
|
|
|
10
10
|
import { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';
|
|
11
11
|
import { detNotify } from './det-notification';
|
|
12
12
|
import { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';
|
|
13
|
-
import {
|
|
13
|
+
import { updateBrowserConfigWithRemoteConfig } from './config/joined-config';
|
|
14
14
|
import { autocapturePlugin, frustrationPlugin } from '@amplitude/plugin-autocapture-browser';
|
|
15
15
|
import { plugin as networkCapturePlugin } from '@amplitude/plugin-network-capture-browser';
|
|
16
16
|
import { webVitalsPlugin } from '@amplitude/plugin-web-vitals-browser';
|
|
@@ -47,7 +47,7 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
|
|
|
47
47
|
AmplitudeBrowser.prototype._init = function (options) {
|
|
48
48
|
var _a, _b, _c;
|
|
49
49
|
return __awaiter(this, void 0, void 0, function () {
|
|
50
|
-
var browserOptions,
|
|
50
|
+
var browserOptions, attributionTrackingOptions, queryParams, ampTimestamp, isWithinTimeLimit, querySessionId, connector;
|
|
51
51
|
var _this = this;
|
|
52
52
|
return __generator(this, function (_d) {
|
|
53
53
|
switch (_d.label) {
|
|
@@ -60,107 +60,127 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
|
|
|
60
60
|
return [4 /*yield*/, useBrowserConfig(options.apiKey, options, this)];
|
|
61
61
|
case 1:
|
|
62
62
|
browserOptions = _d.sent();
|
|
63
|
-
if (!browserOptions.fetchRemoteConfig) return [3 /*break*/,
|
|
64
|
-
|
|
63
|
+
if (!browserOptions.fetchRemoteConfig) return [3 /*break*/, 3];
|
|
64
|
+
this.remoteConfigClient = new RemoteConfigClient(browserOptions.apiKey, browserOptions.loggerProvider, browserOptions.serverZone);
|
|
65
|
+
// Wait for initial remote config before proceeding.
|
|
66
|
+
// Delivery mode is all, meaning it calls the callback with whoever (cache or remote) returns first.
|
|
67
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
68
|
+
var _a;
|
|
69
|
+
// Disable coverage for this line because remote config client will always be defined in this case.
|
|
70
|
+
// istanbul ignore next
|
|
71
|
+
(_a = _this.remoteConfigClient) === null || _a === void 0 ? void 0 : _a.subscribe('configs.analyticsSDK.browserSDK', 'all', function (remoteConfig, source, lastFetch) {
|
|
72
|
+
browserOptions.loggerProvider.debug('Remote configuration received:', JSON.stringify({
|
|
73
|
+
remoteConfig: remoteConfig,
|
|
74
|
+
source: source,
|
|
75
|
+
lastFetch: lastFetch,
|
|
76
|
+
}, null, 2));
|
|
77
|
+
if (remoteConfig) {
|
|
78
|
+
updateBrowserConfigWithRemoteConfig(remoteConfig, browserOptions);
|
|
79
|
+
}
|
|
80
|
+
// Resolve the promise on first callback (initial config)
|
|
81
|
+
resolve();
|
|
82
|
+
});
|
|
83
|
+
})];
|
|
65
84
|
case 2:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
case 4:
|
|
72
|
-
case 5:
|
|
85
|
+
// Wait for initial remote config before proceeding.
|
|
86
|
+
// Delivery mode is all, meaning it calls the callback with whoever (cache or remote) returns first.
|
|
87
|
+
_d.sent();
|
|
88
|
+
_d.label = 3;
|
|
89
|
+
case 3: return [4 /*yield*/, _super.prototype._init.call(this, browserOptions)];
|
|
90
|
+
case 4:
|
|
73
91
|
_d.sent();
|
|
74
92
|
this.logBrowserOptions(browserOptions);
|
|
75
|
-
if (!isAttributionTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/,
|
|
93
|
+
if (!isAttributionTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 6];
|
|
76
94
|
attributionTrackingOptions = getAttributionTrackingConfig(this.config);
|
|
77
95
|
this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);
|
|
78
96
|
// Fetch the current campaign, check if need to track web attribution later
|
|
79
97
|
return [4 /*yield*/, this.webAttribution.init()];
|
|
80
|
-
case
|
|
98
|
+
case 5:
|
|
81
99
|
// Fetch the current campaign, check if need to track web attribution later
|
|
82
100
|
_d.sent();
|
|
83
|
-
_d.label =
|
|
84
|
-
case
|
|
101
|
+
_d.label = 6;
|
|
102
|
+
case 6:
|
|
85
103
|
queryParams = getQueryParams();
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
104
|
+
ampTimestamp = queryParams.ampTimestamp ? Number(queryParams.ampTimestamp) : undefined;
|
|
105
|
+
isWithinTimeLimit = ampTimestamp ? Date.now() < ampTimestamp : true;
|
|
106
|
+
querySessionId = isWithinTimeLimit && !Number.isNaN(Number(queryParams.ampSessionId))
|
|
107
|
+
? Number(queryParams.ampSessionId)
|
|
108
|
+
: undefined;
|
|
89
109
|
this.setSessionId((_c = (_b = (_a = options.sessionId) !== null && _a !== void 0 ? _a : querySessionId) !== null && _b !== void 0 ? _b : this.config.sessionId) !== null && _c !== void 0 ? _c : Date.now());
|
|
90
110
|
connector = getAnalyticsConnector(options.instanceName);
|
|
91
111
|
connector.identityStore.setIdentity({
|
|
92
112
|
userId: this.config.userId,
|
|
93
113
|
deviceId: this.config.deviceId,
|
|
94
114
|
});
|
|
95
|
-
if (!(this.config.offline !== OfflineDisabled)) return [3 /*break*/,
|
|
115
|
+
if (!(this.config.offline !== OfflineDisabled)) return [3 /*break*/, 8];
|
|
96
116
|
return [4 /*yield*/, this.add(networkConnectivityCheckerPlugin()).promise];
|
|
97
|
-
case
|
|
117
|
+
case 7:
|
|
98
118
|
_d.sent();
|
|
99
|
-
_d.label =
|
|
100
|
-
case
|
|
101
|
-
case
|
|
119
|
+
_d.label = 8;
|
|
120
|
+
case 8: return [4 /*yield*/, this.add(new Destination()).promise];
|
|
121
|
+
case 9:
|
|
102
122
|
_d.sent();
|
|
103
123
|
return [4 /*yield*/, this.add(new Context()).promise];
|
|
104
|
-
case
|
|
124
|
+
case 10:
|
|
105
125
|
_d.sent();
|
|
106
126
|
return [4 /*yield*/, this.add(new IdentityEventSender()).promise];
|
|
107
|
-
case
|
|
127
|
+
case 11:
|
|
108
128
|
_d.sent();
|
|
109
129
|
// Notify if DET is enabled
|
|
110
130
|
detNotify(this.config);
|
|
111
|
-
if (!isFileDownloadTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/,
|
|
131
|
+
if (!isFileDownloadTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 13];
|
|
112
132
|
this.config.loggerProvider.debug('Adding file download tracking plugin');
|
|
113
133
|
return [4 /*yield*/, this.add(fileDownloadTracking()).promise];
|
|
114
|
-
case
|
|
134
|
+
case 12:
|
|
115
135
|
_d.sent();
|
|
116
|
-
_d.label =
|
|
117
|
-
case
|
|
118
|
-
if (!isFormInteractionTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/,
|
|
136
|
+
_d.label = 13;
|
|
137
|
+
case 13:
|
|
138
|
+
if (!isFormInteractionTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 15];
|
|
119
139
|
this.config.loggerProvider.debug('Adding form interaction plugin');
|
|
120
140
|
return [4 /*yield*/, this.add(formInteractionTracking()).promise];
|
|
121
|
-
case
|
|
141
|
+
case 14:
|
|
122
142
|
_d.sent();
|
|
123
|
-
_d.label =
|
|
124
|
-
case
|
|
125
|
-
if (!isPageViewTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/,
|
|
143
|
+
_d.label = 15;
|
|
144
|
+
case 15:
|
|
145
|
+
if (!isPageViewTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 17];
|
|
126
146
|
this.config.loggerProvider.debug('Adding page view tracking plugin');
|
|
127
147
|
return [4 /*yield*/, this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise];
|
|
128
|
-
case
|
|
148
|
+
case 16:
|
|
129
149
|
_d.sent();
|
|
130
|
-
_d.label =
|
|
131
|
-
case
|
|
132
|
-
if (!isElementInteractionsEnabled(this.config.autocapture)) return [3 /*break*/,
|
|
150
|
+
_d.label = 17;
|
|
151
|
+
case 17:
|
|
152
|
+
if (!isElementInteractionsEnabled(this.config.autocapture)) return [3 /*break*/, 19];
|
|
133
153
|
this.config.loggerProvider.debug('Adding user interactions plugin (autocapture plugin)');
|
|
134
154
|
return [4 /*yield*/, this.add(autocapturePlugin(getElementInteractionsConfig(this.config))).promise];
|
|
135
|
-
case
|
|
155
|
+
case 18:
|
|
136
156
|
_d.sent();
|
|
137
|
-
_d.label =
|
|
138
|
-
case
|
|
139
|
-
if (!isFrustrationInteractionsEnabled(this.config.autocapture)) return [3 /*break*/,
|
|
157
|
+
_d.label = 19;
|
|
158
|
+
case 19:
|
|
159
|
+
if (!isFrustrationInteractionsEnabled(this.config.autocapture)) return [3 /*break*/, 21];
|
|
140
160
|
this.config.loggerProvider.debug('Adding frustration interactions plugin');
|
|
141
161
|
return [4 /*yield*/, this.add(frustrationPlugin(getFrustrationInteractionsConfig(this.config))).promise];
|
|
142
|
-
case
|
|
162
|
+
case 20:
|
|
143
163
|
_d.sent();
|
|
144
|
-
_d.label =
|
|
145
|
-
case
|
|
146
|
-
if (!isNetworkTrackingEnabled(this.config.autocapture)) return [3 /*break*/,
|
|
164
|
+
_d.label = 21;
|
|
165
|
+
case 21:
|
|
166
|
+
if (!isNetworkTrackingEnabled(this.config.autocapture)) return [3 /*break*/, 23];
|
|
147
167
|
this.config.loggerProvider.debug('Adding network tracking plugin');
|
|
148
168
|
return [4 /*yield*/, this.add(networkCapturePlugin(getNetworkTrackingConfig(this.config))).promise];
|
|
149
|
-
case
|
|
169
|
+
case 22:
|
|
150
170
|
_d.sent();
|
|
151
|
-
_d.label =
|
|
152
|
-
case
|
|
153
|
-
if (!isWebVitalsEnabled(this.config.autocapture)) return [3 /*break*/,
|
|
171
|
+
_d.label = 23;
|
|
172
|
+
case 23:
|
|
173
|
+
if (!isWebVitalsEnabled(this.config.autocapture)) return [3 /*break*/, 25];
|
|
154
174
|
this.config.loggerProvider.debug('Adding web vitals plugin');
|
|
155
175
|
return [4 /*yield*/, this.add(webVitalsPlugin()).promise];
|
|
156
|
-
case
|
|
176
|
+
case 24:
|
|
157
177
|
_d.sent();
|
|
158
|
-
_d.label =
|
|
159
|
-
case
|
|
178
|
+
_d.label = 25;
|
|
179
|
+
case 25:
|
|
160
180
|
this.initializing = false;
|
|
161
181
|
// Step 6: Run queued dispatch functions
|
|
162
182
|
return [4 /*yield*/, this.runQueuedFunctions('dispatchQ')];
|
|
163
|
-
case
|
|
183
|
+
case 26:
|
|
164
184
|
// Step 6: Run queued dispatch functions
|
|
165
185
|
_d.sent();
|
|
166
186
|
// Step 7: Add the event receiver after running remaining queued functions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AmplitudeCore,\n Destination,\n Identify,\n returnWrapper,\n Revenue,\n UUID,\n getAnalyticsConnector,\n setConnectorDeviceId,\n setConnectorUserId,\n isNewSession,\n IdentityEventSender,\n getQueryParams,\n Event,\n EventOptions,\n IIdentify,\n IRevenue,\n TransportType,\n OfflineDisabled,\n Result,\n BrowserOptions,\n BrowserConfig,\n BrowserClient,\n SpecialEventType,\n AnalyticsClient,\n} from '@amplitude/analytics-core';\nimport {\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n getElementInteractionsConfig,\n getNetworkTrackingConfig,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isElementInteractionsEnabled,\n isPageViewTrackingEnabled,\n isNetworkTrackingEnabled,\n isWebVitalsEnabled,\n isFrustrationInteractionsEnabled,\n getFrustrationInteractionsConfig,\n} from './default-tracking';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\nimport { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';\nimport { createBrowserJoinedConfigGenerator } from './config/joined-config';\nimport { autocapturePlugin, frustrationPlugin } from '@amplitude/plugin-autocapture-browser';\nimport { plugin as networkCapturePlugin } from '@amplitude/plugin-network-capture-browser';\nimport { webVitalsPlugin } from '@amplitude/plugin-web-vitals-browser';\nimport { WebAttribution } from './attribution/web-attribution';\n\n/**\n * Exported for `@amplitude/unified` or integration with blade plugins.\n * If you only use `@amplitude/analytics-browser`, use `amplitude.init()` or `amplitude.createInstance()` instead.\n */\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient, AnalyticsClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionDeviceId: string | undefined;\n previousSessionUserId: string | undefined;\n webAttribution: WebAttribution | undefined;\n userProperties: { [key: string]: any } | undefined;\n\n init(apiKey = '', userIdOrOptions?: string | BrowserOptions, maybeOptions?: BrowserOptions) {\n let userId: string | undefined;\n let options: BrowserOptions | undefined;\n\n if (arguments.length > 2) {\n userId = userIdOrOptions as string | undefined;\n options = maybeOptions;\n } else {\n if (typeof userIdOrOptions === 'string') {\n userId = userIdOrOptions;\n options = undefined;\n } else {\n userId = userIdOrOptions?.userId;\n options = userIdOrOptions;\n }\n }\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 1: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n let browserOptions = await useBrowserConfig(options.apiKey, options, this);\n // Step 2: Create browser config\n if (browserOptions.fetchRemoteConfig) {\n const joinedConfigGenerator = await createBrowserJoinedConfigGenerator(browserOptions);\n browserOptions = await joinedConfigGenerator.generateJoinedConfig();\n }\n await super._init(browserOptions);\n this.logBrowserOptions(browserOptions);\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);\n // Fetch the current campaign, check if need to track web attribution later\n await this.webAttribution.init();\n }\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: sessionId from url if it's Number\n // Priority 3: last known sessionId from user identity storage\n // Default: `Date.now()`\n // Session ID is handled differently than device ID and user ID due to session events\n const queryParams = getQueryParams();\n const querySessionId = Number.isNaN(Number(queryParams.ampSessionId))\n ? undefined\n : Number(queryParams.ampSessionId);\n this.setSessionId(options.sessionId ?? querySessionId ?? this.config.sessionId ?? Date.now());\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector(options.instanceName);\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n if (this.config.offline !== OfflineDisabled) {\n await this.add(networkConnectivityCheckerPlugin()).promise;\n }\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n // Notify if DET is enabled\n detNotify(this.config);\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding file download tracking plugin');\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding form interaction plugin');\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add page view plugin\n if (isPageViewTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding page view tracking plugin');\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\n }\n\n if (isElementInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding user interactions plugin (autocapture plugin)');\n await this.add(autocapturePlugin(getElementInteractionsConfig(this.config))).promise;\n }\n\n if (isFrustrationInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding frustration interactions plugin');\n await this.add(frustrationPlugin(getFrustrationInteractionsConfig(this.config))).promise;\n }\n\n if (isNetworkTrackingEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding network tracking plugin');\n await this.add(networkCapturePlugin(getNetworkTrackingConfig(this.config))).promise;\n }\n\n if (isWebVitalsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding web vitals plugin');\n await this.add(webVitalsPlugin()).promise;\n }\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n\n // Step 7: Add the event receiver after running remaining queued functions.\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.loggerProvider.debug('function setUserId: ', userId);\n if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ userId: userId });\n setConnectorUserId(userId, this.config.instanceName);\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.loggerProvider.debug('function setDeviceId: ', deviceId);\n if (deviceId !== this.config.deviceId) {\n this.config.deviceId = deviceId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ deviceId: deviceId });\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getIdentity() {\n return {\n deviceId: this.config?.deviceId,\n userId: this.config?.userId,\n userProperties: this.userProperties,\n };\n }\n\n getOptOut(): boolean | undefined {\n return this.config?.optOut;\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n const promises: Promise<Result>[] = [];\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return returnWrapper(Promise.resolve());\n }\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return returnWrapper(Promise.resolve());\n }\n\n this.config.loggerProvider.debug('function setSessionId: ', sessionId);\n\n const previousSessionId = this.getSessionId();\n if (previousSessionId !== sessionId) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onSessionIdChanged(sessionId);\n }\n\n const lastEventTime = this.config.lastEventTime;\n let lastEventId = this.config.lastEventId ?? -1;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n this.config.pageCounter = 0;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\n promises.push(\n this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n device_id: this.previousSessionDeviceId,\n event_id: ++lastEventId,\n session_id: previousSessionId,\n time: lastEventTime + 1,\n user_id: this.previousSessionUserId,\n }).promise,\n );\n }\n this.config.lastEventTime = this.config.sessionId;\n }\n\n // Fire web attribution event when enable webAttribution tracking\n // 1. has new campaign (call setSessionId from init function)\n // 2. or shouldTrackNewCampaign (call setSessionId from async process(event) when there has new campaign and resetSessionOnNewCampaign = true )\n const isCampaignEventTracked = this.trackCampaignEventIfNeeded(++lastEventId, promises);\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n promises.push(\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: isCampaignEventTracked ? ++lastEventId : lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n }).promise,\n );\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n return returnWrapper(Promise.all(promises));\n }\n\n extendSession() {\n if (!this.config) {\n this.q.push(this.extendSession.bind(this));\n return;\n }\n this.config.lastEventTime = Date.now();\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n\n private trackCampaignEventIfNeeded(lastEventId?: number, promises?: Promise<Result>[]) {\n if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) {\n return false;\n }\n\n const campaignEvent = this.webAttribution.generateCampaignEvent(lastEventId);\n if (promises) {\n promises.push(this.track(campaignEvent).promise);\n } else {\n this.track(campaignEvent);\n }\n this.config.loggerProvider.log('Tracking attribution.');\n return true;\n }\n\n async process(event: Event) {\n const currentTime = Date.now();\n const isEventInNewSession = isNewSession(this.config.sessionTimeout, this.config.lastEventTime);\n const shouldSetSessionIdOnNewCampaign =\n this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign();\n\n if (\n event.event_type !== DEFAULT_SESSION_START_EVENT &&\n event.event_type !== DEFAULT_SESSION_END_EVENT &&\n (!event.session_id || event.session_id === this.getSessionId())\n ) {\n if (isEventInNewSession || shouldSetSessionIdOnNewCampaign) {\n this.setSessionId(currentTime);\n if (shouldSetSessionIdOnNewCampaign) {\n this.config.loggerProvider.log('Created a new session for new campaign.');\n }\n } else if (!isEventInNewSession) {\n // Web attribution should be tracked during the middle of a session\n // if there has been a chance in the campaign information.\n this.trackCampaignEventIfNeeded();\n }\n }\n\n // Set user properties\n if (event.event_type === SpecialEventType.IDENTIFY && event.user_properties) {\n this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n }\n\n return super.process(event);\n }\n\n private logBrowserOptions(browserConfig: BrowserOptions & { apiKey: string }) {\n try {\n const browserConfigCopy = {\n ...browserConfig,\n apiKey: browserConfig.apiKey.substring(0, 10) + '********',\n };\n this.config.loggerProvider.debug('Initialized Amplitude with BrowserConfig:', JSON.stringify(browserConfigCopy));\n } catch (e) {\n /* istanbul ignore next */\n this.config.loggerProvider.error('Error logging browser config', e);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AmplitudeCore,\n Destination,\n Identify,\n returnWrapper,\n Revenue,\n UUID,\n getAnalyticsConnector,\n setConnectorDeviceId,\n setConnectorUserId,\n isNewSession,\n IdentityEventSender,\n getQueryParams,\n Event,\n EventOptions,\n IIdentify,\n IRevenue,\n TransportType,\n OfflineDisabled,\n Result,\n BrowserOptions,\n BrowserConfig,\n BrowserClient,\n SpecialEventType,\n AnalyticsClient,\n IRemoteConfigClient,\n RemoteConfigClient,\n RemoteConfig,\n Source,\n} from '@amplitude/analytics-core';\nimport {\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n getElementInteractionsConfig,\n getNetworkTrackingConfig,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isElementInteractionsEnabled,\n isPageViewTrackingEnabled,\n isNetworkTrackingEnabled,\n isWebVitalsEnabled,\n isFrustrationInteractionsEnabled,\n getFrustrationInteractionsConfig,\n} from './default-tracking';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\nimport { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';\nimport { updateBrowserConfigWithRemoteConfig } from './config/joined-config';\nimport { autocapturePlugin, frustrationPlugin } from '@amplitude/plugin-autocapture-browser';\nimport { plugin as networkCapturePlugin } from '@amplitude/plugin-network-capture-browser';\nimport { webVitalsPlugin } from '@amplitude/plugin-web-vitals-browser';\nimport { WebAttribution } from './attribution/web-attribution';\n\n/**\n * Exported for `@amplitude/unified` or integration with blade plugins.\n * If you only use `@amplitude/analytics-browser`, use `amplitude.init()` or `amplitude.createInstance()` instead.\n */\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient, AnalyticsClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionDeviceId: string | undefined;\n previousSessionUserId: string | undefined;\n webAttribution: WebAttribution | undefined;\n userProperties: { [key: string]: any } | undefined;\n remoteConfigClient: IRemoteConfigClient | undefined;\n\n init(apiKey = '', userIdOrOptions?: string | BrowserOptions, maybeOptions?: BrowserOptions) {\n let userId: string | undefined;\n let options: BrowserOptions | undefined;\n\n if (arguments.length > 2) {\n userId = userIdOrOptions as string | undefined;\n options = maybeOptions;\n } else {\n if (typeof userIdOrOptions === 'string') {\n userId = userIdOrOptions;\n options = undefined;\n } else {\n userId = userIdOrOptions?.userId;\n options = userIdOrOptions;\n }\n }\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 1: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 2: Create browser config\n // Get default browser config based on browser options\n const browserOptions = await useBrowserConfig(options.apiKey, options, this);\n\n // Create remote config client and subscribe to analytics configs\n if (browserOptions.fetchRemoteConfig) {\n this.remoteConfigClient = new RemoteConfigClient(\n browserOptions.apiKey,\n browserOptions.loggerProvider,\n browserOptions.serverZone,\n );\n\n // Wait for initial remote config before proceeding.\n // Delivery mode is all, meaning it calls the callback with whoever (cache or remote) returns first.\n await new Promise<void>((resolve) => {\n // Disable coverage for this line because remote config client will always be defined in this case.\n // istanbul ignore next\n this.remoteConfigClient?.subscribe(\n 'configs.analyticsSDK.browserSDK',\n 'all',\n (remoteConfig: RemoteConfig | null, source: Source, lastFetch: Date) => {\n browserOptions.loggerProvider.debug(\n 'Remote configuration received:',\n JSON.stringify(\n {\n remoteConfig,\n source,\n lastFetch,\n },\n null,\n 2,\n ),\n );\n if (remoteConfig) {\n updateBrowserConfigWithRemoteConfig(remoteConfig, browserOptions);\n }\n // Resolve the promise on first callback (initial config)\n resolve();\n },\n );\n });\n }\n\n await super._init(browserOptions);\n this.logBrowserOptions(browserOptions);\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);\n // Fetch the current campaign, check if need to track web attribution later\n await this.webAttribution.init();\n }\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: sessionId from url if it's Number and ampTimestamp is valid\n // Priority 3: last known sessionId from user identity storage\n // Default: `Date.now()`\n // Session ID is handled differently than device ID and user ID due to session events\n const queryParams = getQueryParams();\n\n // Check if ampTimestamp is present and valid\n const ampTimestamp = queryParams.ampTimestamp ? Number(queryParams.ampTimestamp) : undefined;\n const isWithinTimeLimit = ampTimestamp ? Date.now() < ampTimestamp : true;\n\n const querySessionId =\n isWithinTimeLimit && !Number.isNaN(Number(queryParams.ampSessionId))\n ? Number(queryParams.ampSessionId)\n : undefined;\n this.setSessionId(options.sessionId ?? querySessionId ?? this.config.sessionId ?? Date.now());\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector(options.instanceName);\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n if (this.config.offline !== OfflineDisabled) {\n await this.add(networkConnectivityCheckerPlugin()).promise;\n }\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n // Notify if DET is enabled\n detNotify(this.config);\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding file download tracking plugin');\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding form interaction plugin');\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add page view plugin\n if (isPageViewTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding page view tracking plugin');\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\n }\n\n if (isElementInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding user interactions plugin (autocapture plugin)');\n await this.add(autocapturePlugin(getElementInteractionsConfig(this.config))).promise;\n }\n\n if (isFrustrationInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding frustration interactions plugin');\n await this.add(frustrationPlugin(getFrustrationInteractionsConfig(this.config))).promise;\n }\n\n if (isNetworkTrackingEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding network tracking plugin');\n await this.add(networkCapturePlugin(getNetworkTrackingConfig(this.config))).promise;\n }\n\n if (isWebVitalsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding web vitals plugin');\n await this.add(webVitalsPlugin()).promise;\n }\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n\n // Step 7: Add the event receiver after running remaining queued functions.\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.loggerProvider.debug('function setUserId: ', userId);\n if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ userId: userId });\n setConnectorUserId(userId, this.config.instanceName);\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.loggerProvider.debug('function setDeviceId: ', deviceId);\n if (deviceId !== this.config.deviceId) {\n this.config.deviceId = deviceId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ deviceId: deviceId });\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getIdentity() {\n return {\n deviceId: this.config?.deviceId,\n userId: this.config?.userId,\n userProperties: this.userProperties,\n };\n }\n\n getOptOut(): boolean | undefined {\n return this.config?.optOut;\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n const promises: Promise<Result>[] = [];\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return returnWrapper(Promise.resolve());\n }\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return returnWrapper(Promise.resolve());\n }\n\n this.config.loggerProvider.debug('function setSessionId: ', sessionId);\n\n const previousSessionId = this.getSessionId();\n if (previousSessionId !== sessionId) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onSessionIdChanged(sessionId);\n }\n\n const lastEventTime = this.config.lastEventTime;\n let lastEventId = this.config.lastEventId ?? -1;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n this.config.pageCounter = 0;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\n promises.push(\n this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n device_id: this.previousSessionDeviceId,\n event_id: ++lastEventId,\n session_id: previousSessionId,\n time: lastEventTime + 1,\n user_id: this.previousSessionUserId,\n }).promise,\n );\n }\n this.config.lastEventTime = this.config.sessionId;\n }\n\n // Fire web attribution event when enable webAttribution tracking\n // 1. has new campaign (call setSessionId from init function)\n // 2. or shouldTrackNewCampaign (call setSessionId from async process(event) when there has new campaign and resetSessionOnNewCampaign = true )\n const isCampaignEventTracked = this.trackCampaignEventIfNeeded(++lastEventId, promises);\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n promises.push(\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: isCampaignEventTracked ? ++lastEventId : lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n }).promise,\n );\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n return returnWrapper(Promise.all(promises));\n }\n\n extendSession() {\n if (!this.config) {\n this.q.push(this.extendSession.bind(this));\n return;\n }\n this.config.lastEventTime = Date.now();\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n\n private trackCampaignEventIfNeeded(lastEventId?: number, promises?: Promise<Result>[]) {\n if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) {\n return false;\n }\n\n const campaignEvent = this.webAttribution.generateCampaignEvent(lastEventId);\n if (promises) {\n promises.push(this.track(campaignEvent).promise);\n } else {\n this.track(campaignEvent);\n }\n this.config.loggerProvider.log('Tracking attribution.');\n return true;\n }\n\n async process(event: Event) {\n const currentTime = Date.now();\n const isEventInNewSession = isNewSession(this.config.sessionTimeout, this.config.lastEventTime);\n const shouldSetSessionIdOnNewCampaign =\n this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign();\n\n if (\n event.event_type !== DEFAULT_SESSION_START_EVENT &&\n event.event_type !== DEFAULT_SESSION_END_EVENT &&\n (!event.session_id || event.session_id === this.getSessionId())\n ) {\n if (isEventInNewSession || shouldSetSessionIdOnNewCampaign) {\n this.setSessionId(currentTime);\n if (shouldSetSessionIdOnNewCampaign) {\n this.config.loggerProvider.log('Created a new session for new campaign.');\n }\n } else if (!isEventInNewSession) {\n // Web attribution should be tracked during the middle of a session\n // if there has been a chance in the campaign information.\n this.trackCampaignEventIfNeeded();\n }\n }\n\n // Set user properties\n if (event.event_type === SpecialEventType.IDENTIFY && event.user_properties) {\n this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n }\n\n return super.process(event);\n }\n\n private logBrowserOptions(browserConfig: BrowserOptions & { apiKey: string }) {\n try {\n const browserConfigCopy = {\n ...browserConfig,\n apiKey: browserConfig.apiKey.substring(0, 10) + '********',\n };\n this.config.loggerProvider.debug('Initialized Amplitude with BrowserConfig:', JSON.stringify(browserConfigCopy));\n } catch (e) {\n /* istanbul ignore next */\n this.config.loggerProvider.error('Error logging browser config', e);\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BrowserConfig as IBrowserConfig, AutocaptureOptions, type ElementInteractionsOptions } from '@amplitude/analytics-core';
|
|
1
|
+
import { AutocaptureOptions, type ElementInteractionsOptions, BrowserConfig, RemoteConfig } from '@amplitude/analytics-core';
|
|
3
2
|
export interface AutocaptureOptionsRemoteConfig extends AutocaptureOptions {
|
|
4
3
|
elementInteractions?: boolean | ElementInteractionsOptionsRemoteConfig;
|
|
5
4
|
}
|
|
@@ -9,17 +8,12 @@ export interface ElementInteractionsOptionsRemoteConfig extends ElementInteracti
|
|
|
9
8
|
*/
|
|
10
9
|
pageUrlAllowlistRegex?: string[];
|
|
11
10
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
constructor(localConfig: IBrowserConfig);
|
|
21
|
-
initialize(): Promise<void>;
|
|
22
|
-
generateJoinedConfig(): Promise<IBrowserConfig>;
|
|
23
|
-
}
|
|
24
|
-
export declare const createBrowserJoinedConfigGenerator: (localConfig: IBrowserConfig) => Promise<BrowserJoinedConfigGenerator>;
|
|
11
|
+
/**
|
|
12
|
+
* Updates the browser config in place by applying remote configuration settings.
|
|
13
|
+
* Primarily merges autocapture settings from the remote config into the browser config.
|
|
14
|
+
*
|
|
15
|
+
* @param remoteConfig - The remote configuration to apply, or null if none available
|
|
16
|
+
* @param browserConfig - The browser config object to update (modified in place)
|
|
17
|
+
*/
|
|
18
|
+
export declare function updateBrowserConfigWithRemoteConfig(remoteConfig: RemoteConfig | null, browserConfig: BrowserConfig): void;
|
|
25
19
|
//# 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,EACL,kBAAkB,EAClB,KAAK,0BAA0B,EAC/B,aAAa,EACb,YAAY,EACb,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,8BAA+B,SAAQ,kBAAkB;IACxE,mBAAmB,CAAC,EAAE,OAAO,GAAG,sCAAsC,CAAC;CACxE;AACD,MAAM,WAAW,sCAAuC,SAAQ,0BAA0B;IACxF;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAOD;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,aAAa,EAAE,aAAa,GAC3B,IAAI,CAwFN"}
|
|
@@ -1,131 +1,79 @@
|
|
|
1
|
-
import { __assign,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { __assign, __values } from "tslib";
|
|
2
|
+
/**
|
|
3
|
+
* Updates the browser config in place by applying remote configuration settings.
|
|
4
|
+
* Primarily merges autocapture settings from the remote config into the browser config.
|
|
5
|
+
*
|
|
6
|
+
* @param remoteConfig - The remote configuration to apply, or null if none available
|
|
7
|
+
* @param browserConfig - The browser config object to update (modified in place)
|
|
8
|
+
*/
|
|
9
|
+
export function updateBrowserConfigWithRemoteConfig(remoteConfig, browserConfig) {
|
|
10
|
+
var e_1, _a;
|
|
11
|
+
var _b, _c;
|
|
12
|
+
if (!remoteConfig) {
|
|
13
|
+
return;
|
|
8
14
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
try {
|
|
16
|
+
browserConfig.loggerProvider.debug('Update browser config with remote configuration:', JSON.stringify(remoteConfig));
|
|
17
|
+
// type cast error will be thrown if remoteConfig is not a valid RemoteConfigBrowserSDK
|
|
18
|
+
// and it will be caught by the try-catch block
|
|
19
|
+
var typedRemoteConfig = remoteConfig;
|
|
20
|
+
// merge remoteConfig.autocapture and browserConfig.autocapture
|
|
21
|
+
// if a field is in remoteConfig.autocapture, use that value
|
|
22
|
+
// if a field is not in remoteConfig.autocapture, use the value from browserConfig.autocapture
|
|
23
|
+
if (typedRemoteConfig && 'autocapture' in typedRemoteConfig) {
|
|
24
|
+
if (typeof typedRemoteConfig.autocapture === 'boolean') {
|
|
25
|
+
browserConfig.autocapture = typedRemoteConfig.autocapture;
|
|
26
|
+
}
|
|
27
|
+
if (typeof typedRemoteConfig.autocapture === 'object' && typedRemoteConfig.autocapture !== null) {
|
|
28
|
+
var transformedAutocaptureRemoteConfig = __assign({}, typedRemoteConfig.autocapture);
|
|
29
|
+
if (browserConfig.autocapture === undefined) {
|
|
30
|
+
browserConfig.autocapture = typedRemoteConfig.autocapture;
|
|
23
31
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (!_g) return [3 /*break*/, 2];
|
|
39
|
-
return [4 /*yield*/, this.remoteConfigFetch.getRemoteConfig('analyticsSDK', 'browserSDK', this.config.sessionId)];
|
|
40
|
-
case 1:
|
|
41
|
-
_g = (_l.sent());
|
|
42
|
-
_l.label = 2;
|
|
43
|
-
case 2:
|
|
44
|
-
remoteConfig = _g;
|
|
45
|
-
this.config.loggerProvider.debug('Remote configuration:', JSON.stringify(remoteConfig, null, 2));
|
|
46
|
-
// merge remoteConfig.autocapture and this.config.autocapture
|
|
47
|
-
// if a field is in remoteConfig.autocapture, use that value
|
|
48
|
-
// if a field is not in remoteConfig.autocapture, use the value from this.config.autocapture
|
|
49
|
-
if (remoteConfig && 'autocapture' in remoteConfig) {
|
|
50
|
-
if (typeof remoteConfig.autocapture === 'boolean') {
|
|
51
|
-
this.config.autocapture = remoteConfig.autocapture;
|
|
32
|
+
// Handle Element Interactions config initialization
|
|
33
|
+
if (typeof typedRemoteConfig.autocapture.elementInteractions === 'object' &&
|
|
34
|
+
typedRemoteConfig.autocapture.elementInteractions !== null &&
|
|
35
|
+
((_b = typedRemoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
36
|
+
transformedAutocaptureRemoteConfig.elementInteractions = __assign({}, typedRemoteConfig.autocapture.elementInteractions);
|
|
37
|
+
var transformedRcElementInteractions = transformedAutocaptureRemoteConfig.elementInteractions;
|
|
38
|
+
var exactAllowList = (_c = transformedRcElementInteractions.pageUrlAllowlist) !== null && _c !== void 0 ? _c : [];
|
|
39
|
+
// Convert string patterns to RegExp objects, warn on invalid patterns and skip them
|
|
40
|
+
var regexList = [];
|
|
41
|
+
try {
|
|
42
|
+
for (var _d = __values(typedRemoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
43
|
+
var pattern = _e.value;
|
|
44
|
+
try {
|
|
45
|
+
regexList.push(new RegExp(pattern));
|
|
52
46
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (this.config.autocapture === undefined) {
|
|
56
|
-
this.config.autocapture = remoteConfig.autocapture;
|
|
57
|
-
}
|
|
58
|
-
// Handle Element Interactions config initialization
|
|
59
|
-
if (typeof remoteConfig.autocapture.elementInteractions === 'object' &&
|
|
60
|
-
((_a = remoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
61
|
-
transformedAutocaptureRemoteConfig.elementInteractions = __assign({}, remoteConfig.autocapture.elementInteractions);
|
|
62
|
-
transformedRcElementInteractions = transformedAutocaptureRemoteConfig.elementInteractions;
|
|
63
|
-
exactAllowList = (_b = transformedRcElementInteractions.pageUrlAllowlist) !== null && _b !== void 0 ? _b : [];
|
|
64
|
-
regexList = [];
|
|
65
|
-
try {
|
|
66
|
-
for (_h = __values(remoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex), _j = _h.next(); !_j.done; _j = _h.next()) {
|
|
67
|
-
pattern = _j.value;
|
|
68
|
-
try {
|
|
69
|
-
regexList.push(new RegExp(pattern));
|
|
70
|
-
}
|
|
71
|
-
catch (regexError) {
|
|
72
|
-
this.config.loggerProvider.warn("Invalid regex pattern: ".concat(pattern), regexError);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
77
|
-
finally {
|
|
78
|
-
try {
|
|
79
|
-
if (_j && !_j.done && (_k = _h.return)) _k.call(_h);
|
|
80
|
-
}
|
|
81
|
-
finally { if (e_2) throw e_2.error; }
|
|
82
|
-
}
|
|
83
|
-
combinedPageUrlAllowlist = exactAllowList.concat(regexList);
|
|
84
|
-
transformedRcElementInteractions.pageUrlAllowlist = combinedPageUrlAllowlist;
|
|
85
|
-
delete transformedRcElementInteractions.pageUrlAllowlistRegex;
|
|
86
|
-
}
|
|
87
|
-
if (typeof this.config.autocapture === 'boolean') {
|
|
88
|
-
this.config.autocapture = __assign({ attribution: this.config.autocapture, fileDownloads: this.config.autocapture, formInteractions: this.config.autocapture, pageViews: this.config.autocapture, sessions: this.config.autocapture, elementInteractions: this.config.autocapture, webVitals: this.config.autocapture, frustrationInteractions: this.config.autocapture }, transformedAutocaptureRemoteConfig);
|
|
89
|
-
}
|
|
90
|
-
if (typeof this.config.autocapture === 'object') {
|
|
91
|
-
this.config.autocapture = __assign(__assign({}, this.config.autocapture), transformedAutocaptureRemoteConfig);
|
|
92
|
-
}
|
|
47
|
+
catch (regexError) {
|
|
48
|
+
browserConfig.loggerProvider.warn("Invalid regex pattern: ".concat(pattern), regexError);
|
|
93
49
|
}
|
|
94
|
-
// Override default tracking options if autocapture is updated by remote config
|
|
95
|
-
this.config.defaultTracking = this.config.autocapture;
|
|
96
50
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
51
|
+
}
|
|
52
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
53
|
+
finally {
|
|
54
|
+
try {
|
|
55
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
101
56
|
}
|
|
102
|
-
if (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
57
|
+
finally { if (e_1) throw e_1.error; }
|
|
58
|
+
}
|
|
59
|
+
var combinedPageUrlAllowlist = exactAllowList.concat(regexList);
|
|
60
|
+
transformedRcElementInteractions.pageUrlAllowlist = combinedPageUrlAllowlist;
|
|
61
|
+
delete transformedRcElementInteractions.pageUrlAllowlistRegex;
|
|
62
|
+
}
|
|
63
|
+
if (typeof browserConfig.autocapture === 'boolean') {
|
|
64
|
+
browserConfig.autocapture = __assign({ attribution: browserConfig.autocapture, fileDownloads: browserConfig.autocapture, formInteractions: browserConfig.autocapture, pageViews: browserConfig.autocapture, sessions: browserConfig.autocapture, elementInteractions: browserConfig.autocapture, webVitals: browserConfig.autocapture, frustrationInteractions: browserConfig.autocapture }, transformedAutocaptureRemoteConfig);
|
|
65
|
+
}
|
|
66
|
+
if (typeof browserConfig.autocapture === 'object') {
|
|
67
|
+
browserConfig.autocapture = __assign(__assign({}, browserConfig.autocapture), transformedAutocaptureRemoteConfig);
|
|
111
68
|
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return BrowserJoinedConfigGenerator;
|
|
116
|
-
}());
|
|
117
|
-
export { BrowserJoinedConfigGenerator };
|
|
118
|
-
export var createBrowserJoinedConfigGenerator = function (localConfig) { return __awaiter(void 0, void 0, void 0, function () {
|
|
119
|
-
var joinedConfigGenerator;
|
|
120
|
-
return __generator(this, function (_a) {
|
|
121
|
-
switch (_a.label) {
|
|
122
|
-
case 0:
|
|
123
|
-
joinedConfigGenerator = new BrowserJoinedConfigGenerator(localConfig);
|
|
124
|
-
return [4 /*yield*/, joinedConfigGenerator.initialize()];
|
|
125
|
-
case 1:
|
|
126
|
-
_a.sent();
|
|
127
|
-
return [2 /*return*/, joinedConfigGenerator];
|
|
69
|
+
}
|
|
70
|
+
// Override default tracking options if autocapture is updated by remote config
|
|
71
|
+
browserConfig.defaultTracking = browserConfig.autocapture;
|
|
128
72
|
}
|
|
129
|
-
|
|
130
|
-
}
|
|
73
|
+
browserConfig.loggerProvider.debug('Browser config after remote config update:', JSON.stringify(browserConfig));
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
browserConfig.loggerProvider.error('Failed to apply remote configuration because of error: ', e);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
131
79
|
//# sourceMappingURL=joined-config.js.map
|