@amplitude/analytics-browser 0.2.4 → 0.4.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.
Files changed (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -22
  3. package/lib/cjs/attribution.d.ts +1 -1
  4. package/lib/cjs/attribution.d.ts.map +1 -1
  5. package/lib/cjs/attribution.js +5 -17
  6. package/lib/cjs/attribution.js.map +1 -1
  7. package/lib/cjs/browser-client.d.ts +96 -81
  8. package/lib/cjs/browser-client.d.ts.map +1 -1
  9. package/lib/cjs/browser-client.js +194 -196
  10. package/lib/cjs/browser-client.js.map +1 -1
  11. package/lib/cjs/config.d.ts +11 -7
  12. package/lib/cjs/config.d.ts.map +1 -1
  13. package/lib/cjs/config.js +33 -34
  14. package/lib/cjs/config.js.map +1 -1
  15. package/lib/cjs/cookie-migration/index.d.ts +5 -0
  16. package/lib/cjs/cookie-migration/index.d.ts.map +1 -0
  17. package/lib/cjs/cookie-migration/index.js +55 -0
  18. package/lib/cjs/cookie-migration/index.js.map +1 -0
  19. package/lib/cjs/plugins/context.js +1 -1
  20. package/lib/cjs/plugins/context.js.map +1 -1
  21. package/lib/cjs/session-manager.d.ts +3 -3
  22. package/lib/cjs/session-manager.d.ts.map +1 -1
  23. package/lib/cjs/session-manager.js +10 -16
  24. package/lib/cjs/session-manager.js.map +1 -1
  25. package/lib/cjs/storage/cookie.d.ts +2 -2
  26. package/lib/cjs/storage/cookie.d.ts.map +1 -1
  27. package/lib/cjs/storage/cookie.js +16 -11
  28. package/lib/cjs/storage/cookie.js.map +1 -1
  29. package/lib/cjs/storage/local-storage.d.ts +1 -0
  30. package/lib/cjs/storage/local-storage.d.ts.map +1 -1
  31. package/lib/cjs/storage/local-storage.js +4 -1
  32. package/lib/cjs/storage/local-storage.js.map +1 -1
  33. package/lib/cjs/storage/memory.d.ts +1 -0
  34. package/lib/cjs/storage/memory.d.ts.map +1 -1
  35. package/lib/cjs/storage/memory.js +4 -0
  36. package/lib/cjs/storage/memory.js.map +1 -1
  37. package/lib/cjs/storage/utm-cookie.js +1 -1
  38. package/lib/cjs/storage/utm-cookie.js.map +1 -1
  39. package/lib/cjs/transports/fetch.d.ts.map +1 -1
  40. package/lib/cjs/transports/fetch.js +0 -2
  41. package/lib/cjs/transports/fetch.js.map +1 -1
  42. package/lib/cjs/utils/snippet-helper.d.ts +1 -0
  43. package/lib/cjs/utils/snippet-helper.d.ts.map +1 -1
  44. package/lib/cjs/utils/snippet-helper.js +1 -0
  45. package/lib/cjs/utils/snippet-helper.js.map +1 -1
  46. package/lib/cjs/version.d.ts +1 -1
  47. package/lib/cjs/version.js +1 -1
  48. package/lib/cjs/version.js.map +1 -1
  49. package/lib/esm/attribution.d.ts +1 -1
  50. package/lib/esm/attribution.d.ts.map +1 -1
  51. package/lib/esm/attribution.js +4 -16
  52. package/lib/esm/attribution.js.map +1 -1
  53. package/lib/esm/browser-client.d.ts +96 -81
  54. package/lib/esm/browser-client.d.ts.map +1 -1
  55. package/lib/esm/browser-client.js +197 -182
  56. package/lib/esm/browser-client.js.map +1 -1
  57. package/lib/esm/config.d.ts +11 -7
  58. package/lib/esm/config.d.ts.map +1 -1
  59. package/lib/esm/config.js +28 -29
  60. package/lib/esm/config.js.map +1 -1
  61. package/lib/esm/cookie-migration/index.d.ts +5 -0
  62. package/lib/esm/cookie-migration/index.d.ts.map +1 -0
  63. package/lib/esm/cookie-migration/index.js +50 -0
  64. package/lib/esm/cookie-migration/index.js.map +1 -0
  65. package/lib/esm/plugins/context.js +2 -2
  66. package/lib/esm/plugins/context.js.map +1 -1
  67. package/lib/esm/session-manager.d.ts +3 -3
  68. package/lib/esm/session-manager.d.ts.map +1 -1
  69. package/lib/esm/session-manager.js +8 -14
  70. package/lib/esm/session-manager.js.map +1 -1
  71. package/lib/esm/storage/cookie.d.ts +2 -2
  72. package/lib/esm/storage/cookie.d.ts.map +1 -1
  73. package/lib/esm/storage/cookie.js +16 -11
  74. package/lib/esm/storage/cookie.js.map +1 -1
  75. package/lib/esm/storage/local-storage.d.ts +1 -0
  76. package/lib/esm/storage/local-storage.d.ts.map +1 -1
  77. package/lib/esm/storage/local-storage.js +4 -1
  78. package/lib/esm/storage/local-storage.js.map +1 -1
  79. package/lib/esm/storage/memory.d.ts +1 -0
  80. package/lib/esm/storage/memory.d.ts.map +1 -1
  81. package/lib/esm/storage/memory.js +4 -0
  82. package/lib/esm/storage/memory.js.map +1 -1
  83. package/lib/esm/storage/utm-cookie.js +1 -1
  84. package/lib/esm/storage/utm-cookie.js.map +1 -1
  85. package/lib/esm/transports/fetch.d.ts.map +1 -1
  86. package/lib/esm/transports/fetch.js +0 -2
  87. package/lib/esm/transports/fetch.js.map +1 -1
  88. package/lib/esm/utils/snippet-helper.d.ts +1 -0
  89. package/lib/esm/utils/snippet-helper.d.ts.map +1 -1
  90. package/lib/esm/utils/snippet-helper.js +1 -0
  91. package/lib/esm/utils/snippet-helper.js.map +1 -1
  92. package/lib/esm/version.d.ts +1 -1
  93. package/lib/esm/version.js +1 -1
  94. package/lib/esm/version.js.map +1 -1
  95. package/lib/scripts/amplitude-min.js +1 -1
  96. package/lib/scripts/amplitude-min.js.gz +0 -0
  97. package/lib/scripts/amplitude-min.umd.js +1 -1
  98. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  99. package/lib/scripts/amplitude-snippet-instructions.html +5 -0
  100. package/lib/scripts/amplitude-snippet-min.js +1 -0
  101. package/package.json +13 -9
@@ -1,6 +1,5 @@
1
- var _this = this;
2
1
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.revenue = exports.setGroup = exports.groupIdentify = exports.identify = exports.logEvent = exports.track = exports.setTransport = exports.setOptOut = exports.setSessionId = exports.getSessionId = exports.setDeviceId = exports.getDeviceId = exports.setUserId = exports.getUserId = exports.remove = exports.add = exports.init = void 0;
2
+ exports.setTransport = exports.setOptOut = exports.setSessionId = exports.getSessionId = exports.setDeviceId = exports.getDeviceId = exports.setUserId = exports.getUserId = exports.revenue = exports.setGroup = exports.groupIdentify = exports.identify = exports.logEvent = exports.track = exports.remove = exports.add = exports.init = exports.AmplitudeBrowser = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var analytics_core_1 = require("@amplitude/analytics-core");
6
5
  var snippet_helper_1 = require("./utils/snippet-helper");
@@ -8,177 +7,138 @@ var context_1 = require("./plugins/context");
8
7
  var config_1 = require("./config");
9
8
  var attribution_1 = require("./attribution");
10
9
  var session_manager_1 = require("./session-manager");
11
- /**
12
- * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.
13
- * This method must be called before any other operations.
14
- *
15
- * ```typescript
16
- * await init(API_KEY, USER_ID, options).promise;
17
- * ```
18
- */
19
- var init = function (apiKey, userId, options) {
20
- return {
21
- promise: (function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
22
- var browserOptions, config;
23
- return (0, tslib_1.__generator)(this, function (_a) {
24
- switch (_a.label) {
10
+ var cookie_migration_1 = require("./cookie-migration");
11
+ var AmplitudeBrowser = /** @class */ (function (_super) {
12
+ (0, tslib_1.__extends)(AmplitudeBrowser, _super);
13
+ function AmplitudeBrowser() {
14
+ return _super !== null && _super.apply(this, arguments) || this;
15
+ }
16
+ AmplitudeBrowser.prototype.init = function (apiKey, userId, options) {
17
+ var _a, _b, _c;
18
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
19
+ var oldCookies, browserOptions;
20
+ return (0, tslib_1.__generator)(this, function (_d) {
21
+ switch (_d.label) {
25
22
  case 0:
26
- browserOptions = (0, config_1.createConfig)(apiKey, userId, options);
27
- config = (0, analytics_core_1.init)(browserOptions);
28
- (0, session_manager_1.updateCookies)(config);
29
- return [4 /*yield*/, (0, analytics_core_1.add)(new context_1.Context())];
23
+ oldCookies = (0, cookie_migration_1.parseOldCookies)(apiKey, options);
24
+ browserOptions = (0, config_1.useBrowserConfig)(apiKey, userId || oldCookies.userId, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { deviceId: (_a = oldCookies.deviceId) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.deviceId, sessionId: (_b = oldCookies.sessionId) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.sessionId, optOut: (_c = options === null || options === void 0 ? void 0 : options.optOut) !== null && _c !== void 0 ? _c : oldCookies.optOut }));
25
+ return [4 /*yield*/, _super.prototype.init.call(this, undefined, undefined, browserOptions)];
30
26
  case 1:
31
- _a.sent();
32
- return [4 /*yield*/, (0, analytics_core_1.add)(new analytics_core_1.Destination())];
27
+ _d.sent();
28
+ // Step 3: Store user session in cookie storage
29
+ (0, session_manager_1.updateCookies)(this.config, oldCookies.lastEventTime);
30
+ // Step 4: Install plugins
31
+ return [4 /*yield*/, this.add(new context_1.Context())];
33
32
  case 2:
34
- _a.sent();
35
- (0, attribution_1.trackAttributions)(config);
33
+ // Step 4: Install plugins
34
+ _d.sent();
35
+ return [4 /*yield*/, this.add(new analytics_core_1.Destination())];
36
+ case 3:
37
+ _d.sent();
38
+ // Step 4: Track attributions
39
+ void this.trackAttributions();
36
40
  return [2 /*return*/];
37
41
  }
38
42
  });
39
- }); })(),
43
+ });
40
44
  };
41
- };
42
- exports.init = init;
43
- /**
44
- * Adds a new plugin.
45
- *
46
- * ```typescript
47
- * const plugin = {...};
48
- * amplitude.add(plugin);
49
- * ```
50
- */
51
- var add = function (plugin) {
52
- return {
53
- promise: (0, analytics_core_1.add)(plugin),
45
+ AmplitudeBrowser.prototype.getUserId = function () {
46
+ return this.config.userId;
54
47
  };
55
- };
56
- exports.add = add;
57
- /**
58
- * Removes a plugin.
59
- *
60
- * ```typescript
61
- * amplitude.remove('myPlugin');
62
- * ```
63
- */
64
- var remove = function (pluginName) {
65
- return {
66
- promise: (0, analytics_core_1.remove)(pluginName),
48
+ AmplitudeBrowser.prototype.setUserId = function (userId) {
49
+ this.config.userId = userId;
50
+ (0, session_manager_1.updateCookies)(this.config);
67
51
  };
68
- };
69
- exports.remove = remove;
70
- /**
71
- * Returns current user ID.
72
- *
73
- * ```typescript
74
- * const userId = getUserId();
75
- * ```
76
- */
77
- var getUserId = function () {
78
- return (0, config_1.getConfig)().userId;
79
- };
80
- exports.getUserId = getUserId;
81
- /**
82
- * Sets a new user ID.
83
- *
84
- * ```typescript
85
- * setUserId('userId');
86
- * ```
87
- */
88
- var setUserId = function (userId) {
89
- var config = (0, config_1.getConfig)();
90
- config.userId = userId;
91
- (0, session_manager_1.updateCookies)(config);
92
- };
93
- exports.setUserId = setUserId;
94
- /**
95
- * Returns current device ID.
96
- *
97
- * ```typescript
98
- * const deviceId = getDeviceId();
99
- * ```
100
- */
101
- var getDeviceId = function () {
102
- return (0, config_1.getConfig)().deviceId;
103
- };
104
- exports.getDeviceId = getDeviceId;
105
- /**
106
- * Sets a new device ID.
107
- * When setting a custom device ID, make sure the value is sufficiently unique.
108
- * A uuid is recommended.
109
- *
110
- * ```typescript
111
- * setDeviceId('deviceId');
112
- * ```
113
- */
114
- var setDeviceId = function (deviceId) {
115
- var config = (0, config_1.getConfig)();
116
- config.deviceId = deviceId;
117
- (0, session_manager_1.updateCookies)(config);
118
- };
119
- exports.setDeviceId = setDeviceId;
52
+ AmplitudeBrowser.prototype.getDeviceId = function () {
53
+ return this.config.deviceId;
54
+ };
55
+ AmplitudeBrowser.prototype.setDeviceId = function (deviceId) {
56
+ this.config.deviceId = deviceId;
57
+ (0, session_manager_1.updateCookies)(this.config);
58
+ };
59
+ AmplitudeBrowser.prototype.getSessionId = function () {
60
+ return this.config.sessionId;
61
+ };
62
+ AmplitudeBrowser.prototype.setSessionId = function (sessionId) {
63
+ this.config.sessionId = sessionId;
64
+ (0, session_manager_1.updateCookies)(this.config);
65
+ };
66
+ AmplitudeBrowser.prototype.setOptOut = function (optOut) {
67
+ _super.prototype.setOptOut.call(this, optOut);
68
+ (0, session_manager_1.updateCookies)(this.config);
69
+ };
70
+ AmplitudeBrowser.prototype.setTransport = function (transport) {
71
+ this.config.transportProvider = (0, config_1.createTransport)(transport);
72
+ };
73
+ AmplitudeBrowser.prototype.identify = function (identify, eventOptions) {
74
+ if ((0, snippet_helper_1.isInstanceProxy)(identify)) {
75
+ var queue = identify._q;
76
+ identify._q = [];
77
+ identify = (0, snippet_helper_1.convertProxyObjectToRealObject)(new analytics_core_1.Identify(), queue);
78
+ }
79
+ return _super.prototype.identify.call(this, identify, eventOptions);
80
+ };
81
+ AmplitudeBrowser.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {
82
+ if ((0, snippet_helper_1.isInstanceProxy)(identify)) {
83
+ var queue = identify._q;
84
+ identify._q = [];
85
+ identify = (0, snippet_helper_1.convertProxyObjectToRealObject)(new analytics_core_1.Identify(), queue);
86
+ }
87
+ return _super.prototype.groupIdentify.call(this, groupType, groupName, identify, eventOptions);
88
+ };
89
+ AmplitudeBrowser.prototype.revenue = function (revenue, eventOptions) {
90
+ if ((0, snippet_helper_1.isInstanceProxy)(revenue)) {
91
+ var queue = revenue._q;
92
+ revenue._q = [];
93
+ revenue = (0, snippet_helper_1.convertProxyObjectToRealObject)(new analytics_core_1.Revenue(), queue);
94
+ }
95
+ return _super.prototype.revenue.call(this, revenue, eventOptions);
96
+ };
97
+ AmplitudeBrowser.prototype.trackAttributions = function () {
98
+ var attributions = (0, attribution_1.getAttributions)(this.config);
99
+ if (Object.keys(attributions).length === 0) {
100
+ return;
101
+ }
102
+ var id = new analytics_core_1.Identify();
103
+ Object.entries(attributions).forEach(function (_a) {
104
+ var _b = (0, tslib_1.__read)(_a, 2), key = _b[0], value = _b[1];
105
+ if (value) {
106
+ id.setOnce("initial_".concat(key), value);
107
+ id.set(key, value);
108
+ }
109
+ });
110
+ return this.identify(id);
111
+ };
112
+ return AmplitudeBrowser;
113
+ }(analytics_core_1.AmplitudeCore));
114
+ exports.AmplitudeBrowser = AmplitudeBrowser;
115
+ var client = new AmplitudeBrowser();
120
116
  /**
121
- * Returns current session ID.
117
+ * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.
118
+ * This method must be called before any other operations.
122
119
  *
123
120
  * ```typescript
124
- * const sessionId = getSessionId();
121
+ * await init(API_KEY, USER_ID, options).promise;
125
122
  * ```
126
123
  */
127
- var getSessionId = function () {
128
- return (0, config_1.getConfig)().sessionId;
129
- };
130
- exports.getSessionId = getSessionId;
124
+ exports.init = (0, analytics_core_1.returnWrapper)(client.init.bind(client));
131
125
  /**
132
- * Sets a new session ID.
133
- * When settign a custom session ID, make sure the value is in milliseconds since epoch (Unix Timestamp).
126
+ * Adds a new plugin.
134
127
  *
135
128
  * ```typescript
136
- * setSessionId(Date.now());
137
- * ```
138
- */
139
- var setSessionId = function (sessionId) {
140
- var config = (0, config_1.getConfig)();
141
- config.sessionId = sessionId;
142
- (0, session_manager_1.updateCookies)(config);
143
- };
144
- exports.setSessionId = setSessionId;
145
- /**
146
- * Sets a new optOut config value. This toggles event tracking on/off.
147
- *
148
- *```typescript
149
- * // Stops tracking
150
- * setOptOut(true);
151
- *
152
- * // Starts/resumes tracking
153
- * setOptOut(false);
129
+ * const plugin = {...};
130
+ * amplitude.add(plugin);
154
131
  * ```
155
132
  */
156
- var setOptOut = function (optOut) {
157
- (0, analytics_core_1.setOptOut)(optOut);
158
- var config = (0, config_1.getConfig)();
159
- (0, session_manager_1.updateCookies)(config);
160
- };
161
- exports.setOptOut = setOptOut;
133
+ exports.add = (0, analytics_core_1.returnWrapper)(client.add.bind(client));
162
134
  /**
163
- * Sets the network transport type for events.
135
+ * Removes a plugin.
164
136
  *
165
137
  * ```typescript
166
- * // Use Fetch API
167
- * setTransport('fetch');
168
- *
169
- * // Use XMLHttpRequest API
170
- * setTransport('xhr');
171
- *
172
- * // Use navigator.sendBeacon API
173
- * setTransport('beacon');
138
+ * amplitude.remove('myPlugin');
174
139
  * ```
175
140
  */
176
- var setTransport = function (transport) {
177
- var config = (0, config_1.getConfig)();
178
- var transportProvider = (0, config_1.createTransport)(transport);
179
- config.transportProvider = transportProvider;
180
- };
181
- exports.setTransport = setTransport;
141
+ exports.remove = (0, analytics_core_1.returnWrapper)(client.remove.bind(client));
182
142
  /**
183
143
  * Tracks user-defined event, with specified type, optional event properties and optional overwrites.
184
144
  *
@@ -199,16 +159,11 @@ exports.setTransport = setTransport;
199
159
  * console.log(result.message); // "Event tracked successfully"
200
160
  * ```
201
161
  */
202
- var track = function (eventType, eventProperties, eventOptions) {
203
- return {
204
- promise: (0, analytics_core_1.track)(eventType, eventProperties, eventOptions),
205
- };
206
- };
207
- exports.track = track;
162
+ exports.track = (0, analytics_core_1.returnWrapper)(client.track.bind(client));
208
163
  /**
209
- * Alis for track()
164
+ * Alias for track()
210
165
  */
211
- exports.logEvent = exports.track;
166
+ exports.logEvent = (0, analytics_core_1.returnWrapper)(client.logEvent.bind(client));
212
167
  /**
213
168
  * Sends an identify event containing user property operations
214
169
  *
@@ -224,17 +179,7 @@ exports.logEvent = exports.track;
224
179
  * console.log(result.message); // "Event tracked successfully"
225
180
  * ```
226
181
  */
227
- var identify = function (identify, eventOptions) {
228
- if ((0, snippet_helper_1.isInstanceProxy)(identify)) {
229
- var queue = identify._q;
230
- identify._q = [];
231
- identify = (0, snippet_helper_1.convertProxyObjectToRealObject)(new analytics_core_1.Identify(), queue);
232
- }
233
- return {
234
- promise: (0, analytics_core_1.identify)(undefined, undefined, identify, eventOptions),
235
- };
236
- };
237
- exports.identify = identify;
182
+ exports.identify = (0, analytics_core_1.returnWrapper)(client.identify.bind(client));
238
183
  /**
239
184
  * Sends a group identify event containing group property operations.
240
185
  *
@@ -252,23 +197,8 @@ exports.identify = identify;
252
197
  * console.log(result.message); // "Event tracked successfully"
253
198
  * ```
254
199
  */
255
- var groupIdentify = function (groupType, groupName, identify, eventOptions) {
256
- if ((0, snippet_helper_1.isInstanceProxy)(identify)) {
257
- var queue = identify._q;
258
- identify._q = [];
259
- identify = (0, snippet_helper_1.convertProxyObjectToRealObject)(new analytics_core_1.Identify(), queue);
260
- }
261
- return {
262
- promise: (0, analytics_core_1.groupIdentify)(undefined, undefined, groupType, groupName, identify, eventOptions),
263
- };
264
- };
265
- exports.groupIdentify = groupIdentify;
266
- var setGroup = function (groupType, groupName) {
267
- return {
268
- promise: (0, analytics_core_1.setGroup)(groupType, groupName),
269
- };
270
- };
271
- exports.setGroup = setGroup;
200
+ exports.groupIdentify = (0, analytics_core_1.returnWrapper)(client.groupIdentify.bind(client));
201
+ exports.setGroup = (0, analytics_core_1.returnWrapper)(client.setGroup.bind(client));
272
202
  /**
273
203
  * Sends a revenue event containing revenue property operations.
274
204
  *
@@ -284,15 +214,83 @@ exports.setGroup = setGroup;
284
214
  * console.log(result.message); // "Event tracked successfully"
285
215
  * ```
286
216
  */
287
- var revenue = function (revenue, eventOptions) {
288
- if ((0, snippet_helper_1.isInstanceProxy)(revenue)) {
289
- var queue = revenue._q;
290
- revenue._q = [];
291
- revenue = (0, snippet_helper_1.convertProxyObjectToRealObject)(new analytics_core_1.Revenue(), queue);
292
- }
293
- return {
294
- promise: (0, analytics_core_1.revenue)(revenue, eventOptions),
295
- };
296
- };
297
- exports.revenue = revenue;
217
+ exports.revenue = (0, analytics_core_1.returnWrapper)(client.revenue.bind(client));
218
+ /**
219
+ * Returns current user ID.
220
+ *
221
+ * ```typescript
222
+ * const userId = getUserId();
223
+ * ```
224
+ */
225
+ exports.getUserId = client.getUserId.bind(client);
226
+ /**
227
+ * Sets a new user ID.
228
+ *
229
+ * ```typescript
230
+ * setUserId('userId');
231
+ * ```
232
+ */
233
+ exports.setUserId = client.setUserId.bind(client);
234
+ /**
235
+ * Returns current device ID.
236
+ *
237
+ * ```typescript
238
+ * const deviceId = getDeviceId();
239
+ * ```
240
+ */
241
+ exports.getDeviceId = client.getDeviceId.bind(client);
242
+ /**
243
+ * Sets a new device ID.
244
+ * When setting a custom device ID, make sure the value is sufficiently unique.
245
+ * A uuid is recommended.
246
+ *
247
+ * ```typescript
248
+ * setDeviceId('deviceId');
249
+ * ```
250
+ */
251
+ exports.setDeviceId = client.setDeviceId.bind(client);
252
+ /**
253
+ * Returns current session ID.
254
+ *
255
+ * ```typescript
256
+ * const sessionId = getSessionId();
257
+ * ```
258
+ */
259
+ exports.getSessionId = client.getSessionId.bind(client);
260
+ /**
261
+ * Sets a new session ID.
262
+ * When settign a custom session ID, make sure the value is in milliseconds since epoch (Unix Timestamp).
263
+ *
264
+ * ```typescript
265
+ * setSessionId(Date.now());
266
+ * ```
267
+ */
268
+ exports.setSessionId = client.setSessionId.bind(client);
269
+ /**
270
+ * Sets a new optOut config value. This toggles event tracking on/off.
271
+ *
272
+ *```typescript
273
+ * // Stops tracking
274
+ * setOptOut(true);
275
+ *
276
+ * // Starts/resumes tracking
277
+ * setOptOut(false);
278
+ * ```
279
+ */
280
+ exports.setOptOut = client.setOptOut.bind(client);
281
+ /**
282
+ * Sets the network transport type for events.
283
+ *
284
+ * ```typescript
285
+ * // Use Fetch API
286
+ * setTransport('fetch');
287
+ *
288
+ * // Use XMLHttpRequest API
289
+ * setTransport('xhr');
290
+ *
291
+ * // Use navigator.sendBeacon API
292
+ * setTransport('beacon');
293
+ * ```
294
+ */
295
+ exports.setTransport = client.setTransport.bind(client);
298
296
  //# sourceMappingURL=browser-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n add as _add,\n groupIdentify as _groupIdentify,\n Destination,\n identify as _identify,\n revenue as _revenue,\n init as _init,\n setOptOut as _setOptOut,\n Identify,\n Revenue,\n track as _track,\n setGroup as _setGroup,\n remove as _remove,\n} from '@amplitude/analytics-core';\nimport {\n AmplitudeReturn,\n BrowserConfig,\n BrowserOptions,\n EventOptions,\n Plugin,\n Result,\n TransportType,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { createConfig, createTransport, getConfig } from './config';\nimport { trackAttributions } from './attribution';\nimport { updateCookies } from './session-manager';\n\n/**\n * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.\n * This method must be called before any other operations.\n *\n * ```typescript\n * await init(API_KEY, USER_ID, options).promise;\n * ```\n */\nexport const init = (apiKey: string, userId?: string, options?: BrowserOptions): AmplitudeReturn<void> => {\n return {\n promise: (async () => {\n const browserOptions = createConfig(apiKey, userId, options);\n const config = _init(browserOptions) as BrowserConfig;\n updateCookies(config);\n\n await _add(new Context());\n await _add(new Destination());\n trackAttributions(config);\n })(),\n };\n};\n\n/**\n * Adds a new plugin.\n *\n * ```typescript\n * const plugin = {...};\n * amplitude.add(plugin);\n * ```\n */\nexport const add = (plugin: Plugin): AmplitudeReturn<void> => {\n return {\n promise: _add(plugin),\n };\n};\n\n/**\n * Removes a plugin.\n *\n * ```typescript\n * amplitude.remove('myPlugin');\n * ```\n */\nexport const remove = (pluginName: string): AmplitudeReturn<void> => {\n return {\n promise: _remove(pluginName),\n };\n};\n\n/**\n * Returns current user ID.\n *\n * ```typescript\n * const userId = getUserId();\n * ```\n */\nexport const getUserId = () => {\n return getConfig().userId;\n};\n\n/**\n * Sets a new user ID.\n *\n * ```typescript\n * setUserId('userId');\n * ```\n */\nexport const setUserId = (userId: string) => {\n const config = getConfig();\n config.userId = userId;\n updateCookies(config);\n};\n\n/**\n * Returns current device ID.\n *\n * ```typescript\n * const deviceId = getDeviceId();\n * ```\n */\nexport const getDeviceId = () => {\n return getConfig().deviceId;\n};\n\n/**\n * Sets a new device ID.\n * When setting a custom device ID, make sure the value is sufficiently unique.\n * A uuid is recommended.\n *\n * ```typescript\n * setDeviceId('deviceId');\n * ```\n */\nexport const setDeviceId = (deviceId: string) => {\n const config = getConfig();\n config.deviceId = deviceId;\n updateCookies(config);\n};\n\n/**\n * Returns current session ID.\n *\n * ```typescript\n * const sessionId = getSessionId();\n * ```\n */\nexport const getSessionId = () => {\n return getConfig().sessionId;\n};\n\n/**\n * Sets a new session ID.\n * When settign a custom session ID, make sure the value is in milliseconds since epoch (Unix Timestamp).\n *\n * ```typescript\n * setSessionId(Date.now());\n * ```\n */\nexport const setSessionId = (sessionId: number) => {\n const config = getConfig();\n config.sessionId = sessionId;\n updateCookies(config);\n};\n\n/**\n * Sets a new optOut config value. This toggles event tracking on/off.\n *\n *```typescript\n * // Stops tracking\n * setOptOut(true);\n *\n * // Starts/resumes tracking\n * setOptOut(false);\n * ```\n */\nexport const setOptOut = (optOut: boolean) => {\n _setOptOut(optOut);\n const config = getConfig();\n updateCookies(config);\n};\n\n/**\n * Sets the network transport type for events.\n *\n * ```typescript\n * // Use Fetch API\n * setTransport('fetch');\n *\n * // Use XMLHttpRequest API\n * setTransport('xhr');\n *\n * // Use navigator.sendBeacon API\n * setTransport('beacon');\n * ```\n */\nexport const setTransport = (transport: TransportType) => {\n const config = getConfig();\n const transportProvider = createTransport(transport);\n config.transportProvider = transportProvider;\n};\n\n/**\n * Tracks user-defined event, with specified type, optional event properties and optional overwrites.\n *\n * ```typescript\n * // event tracking with event type only\n * track('Page Load');\n *\n * // event tracking with event type and additional event properties\n * track('Page Load', { loadTime: 1000 });\n *\n * // event tracking with event type, additional event properties, and overwritten event options\n * track('Page Load', { loadTime: 1000 }, { sessionId: -1 });\n *\n * // alternatively, this tracking method is awaitable\n * const result = await track('Page Load').promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const track = (\n eventType: string,\n eventProperties?: Record<string, any>,\n eventOptions?: EventOptions,\n): AmplitudeReturn<Result> => {\n return {\n promise: _track(eventType, eventProperties, eventOptions),\n };\n};\n\n/**\n * Alis for track()\n */\nexport const logEvent = track;\n\n/**\n * Sends an identify event containing user property operations\n *\n * ```typescript\n * const id = new Identify();\n * id.set('colors', ['rose', 'gold']);\n * identify(id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await identify(id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const identify = (identify: Identify, eventOptions?: EventOptions): AmplitudeReturn<Result> => {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return {\n promise: _identify(undefined, undefined, identify, eventOptions),\n };\n};\n\n/**\n * Sends a group identify event containing group property operations.\n *\n * ```typescript\n * const id = new Identify();\n * id.set('skills', ['js', 'ts']);\n * const groupType = 'org';\n * const groupName = 'engineering';\n * groupIdentify(groupType, groupName, id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await groupIdentify(groupType, groupName, id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const groupIdentify = (\n groupType: string,\n groupName: string | string[],\n identify: Identify,\n eventOptions?: EventOptions,\n): AmplitudeReturn<Result> => {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return {\n promise: _groupIdentify(undefined, undefined, groupType, groupName, identify, eventOptions),\n };\n};\n\nexport const setGroup = (groupType: string, groupName: string | string[]): AmplitudeReturn<Result> => {\n return {\n promise: _setGroup(groupType, groupName),\n };\n};\n\n/**\n * Sends a revenue event containing revenue property operations.\n *\n * ```typescript\n * const rev = new Revenue();\n * rev.setRevenue(100);\n * revenue(rev);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await revenue(rev).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const revenue = (revenue: Revenue, eventOptions?: EventOptions): AmplitudeReturn<Result> => {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return {\n promise: _revenue(revenue, eventOptions),\n };\n};\n"]}
1
+ {"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":";;;AAAA,4DAAyG;AAUzG,yDAAyF;AACzF,6CAA4C;AAC5C,mCAA6D;AAC7D,6CAAgD;AAChD,qDAAkD;AAClD,uDAAqD;AAErD;IAAsC,iDAA4B;IAAlE;;IA2GA,CAAC;IA1GO,+BAAI,GAAV,UAAW,MAAc,EAAE,MAAe,EAAE,OAAwB;;;;;;;wBAE5D,UAAU,GAAG,IAAA,kCAAe,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBAG9C,cAAc,GAAG,IAAA,yBAAgB,EAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,kDACtE,OAAO,KACV,QAAQ,EAAE,MAAA,UAAU,CAAC,QAAQ,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAClD,SAAS,EAAE,MAAA,UAAU,CAAC,SAAS,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EACrD,MAAM,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,UAAU,CAAC,MAAM,IAC5C,CAAC;wBACH,qBAAM,iBAAM,IAAI,YAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,EAAA;;wBAAtD,SAAsD,CAAC;wBAEvD,+CAA+C;wBAC/C,IAAA,+BAAa,EAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;wBAErD,0BAA0B;wBAC1B,qBAAM,IAAI,CAAC,GAAG,CAAC,IAAI,iBAAO,EAAE,CAAC,EAAA;;wBAD7B,0BAA0B;wBAC1B,SAA6B,CAAC;wBAC9B,qBAAM,IAAI,CAAC,GAAG,CAAC,IAAI,4BAAW,EAAE,CAAC,EAAA;;wBAAjC,SAAiC,CAAC;wBAElC,6BAA6B;wBAC7B,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;;;;;KAC/B;IAED,oCAAS,GAAT;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,oCAAS,GAAT,UAAU,MAAc;QACtB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5B,IAAA,+BAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,sCAAW,GAAX;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,sCAAW,GAAX,UAAY,QAAgB;QAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAChC,IAAA,+BAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,uCAAY,GAAZ;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED,uCAAY,GAAZ,UAAa,SAAiB;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAClC,IAAA,+BAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,oCAAS,GAAT,UAAU,MAAe;QACvB,iBAAM,SAAS,YAAC,MAAM,CAAC,CAAC;QACxB,IAAA,+BAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,uCAAY,GAAZ,UAAa,SAAwB;QACnC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAA,wBAAe,EAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,mCAAQ,GAAR,UAAS,QAAmB,EAAE,YAA2B;QACvD,IAAI,IAAA,gCAAe,EAAC,QAAQ,CAAC,EAAE;YAC7B,IAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACjB,QAAQ,GAAG,IAAA,+CAA8B,EAAC,IAAI,yBAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;SAClE;QACD,OAAO,iBAAM,QAAQ,YAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,wCAAa,GAAb,UACE,SAAiB,EACjB,SAA4B,EAC5B,QAAmB,EACnB,YAA2B;QAE3B,IAAI,IAAA,gCAAe,EAAC,QAAQ,CAAC,EAAE;YAC7B,IAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACjB,QAAQ,GAAG,IAAA,+CAA8B,EAAC,IAAI,yBAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;SAClE;QACD,OAAO,iBAAM,aAAa,YAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC;IAED,kCAAO,GAAP,UAAQ,OAAiB,EAAE,YAA2B;QACpD,IAAI,IAAA,gCAAe,EAAC,OAAO,CAAC,EAAE;YAC5B,IAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;YAChB,OAAO,GAAG,IAAA,+CAA8B,EAAC,IAAI,wBAAO,EAAE,EAAE,KAAK,CAAC,CAAC;SAChE;QACD,OAAO,iBAAM,OAAO,YAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,4CAAiB,GAAjB;QACE,IAAM,YAAY,GAAG,IAAA,6BAAe,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,OAAO;SACR;QACD,IAAM,EAAE,GAAG,IAAI,yBAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAC,EAA8B;gBAA9B,KAAA,0BAA8B,EAA7B,GAAG,QAAA,EAAE,KAAK,QAAA;YAC/C,IAAI,KAAK,EAAE;gBACT,EAAE,CAAC,OAAO,CAAC,kBAAW,GAAG,CAAE,EAAE,KAAK,CAAC,CAAC;gBACpC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IACH,uBAAC;AAAD,CAAC,AA3GD,CAAsC,8BAAa,GA2GlD;AA3GY,4CAAgB;AA6G7B,IAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEtC;;;;;;;GAOG;AACU,QAAA,IAAI,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5D;;;;;;;GAOG;AACU,QAAA,GAAG,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,MAAM,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;GAmBG;AACU,QAAA,KAAK,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9D;;GAEG;AACU,QAAA,QAAQ,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACU,QAAA,QAAQ,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,aAAa,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,QAAA,QAAQ,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACU,QAAA,OAAO,GAAG,IAAA,8BAAa,EAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;;;;GAUG;AACU,QAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC","sourcesContent":["import { AmplitudeCore, Destination, Identify, Revenue, returnWrapper } from '@amplitude/analytics-core';\nimport {\n BrowserConfig,\n BrowserOptions,\n EventOptions,\n Identify as IIdentify,\n Result,\n Revenue as IRevenue,\n TransportType,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { getAttributions } from './attribution';\nimport { updateCookies } from './session-manager';\nimport { parseOldCookies } from './cookie-migration';\n\nexport class AmplitudeBrowser extends AmplitudeCore<BrowserConfig> {\n async init(apiKey: string, userId?: string, options?: BrowserOptions) {\n // Step 1: Read cookies stored by old SDK\n const oldCookies = parseOldCookies(apiKey, options);\n\n // Step 2: Create browser config\n const browserOptions = useBrowserConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n });\n await super.init(undefined, undefined, browserOptions);\n\n // Step 3: Store user session in cookie storage\n updateCookies(this.config, oldCookies.lastEventTime);\n\n // Step 4: Install plugins\n await this.add(new Context());\n await this.add(new Destination());\n\n // Step 4: Track attributions\n void this.trackAttributions();\n }\n\n getUserId() {\n return this.config.userId;\n }\n\n setUserId(userId: string) {\n this.config.userId = userId;\n updateCookies(this.config);\n }\n\n getDeviceId() {\n return this.config.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n this.config.deviceId = deviceId;\n updateCookies(this.config);\n }\n\n getSessionId() {\n return this.config.sessionId;\n }\n\n setSessionId(sessionId: number) {\n this.config.sessionId = sessionId;\n updateCookies(this.config);\n }\n\n setOptOut(optOut: boolean) {\n super.setOptOut(optOut);\n updateCookies(this.config);\n }\n\n setTransport(transport: TransportType) {\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions): Promise<Result> {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n ): Promise<Result> {\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 trackAttributions() {\n const attributions = getAttributions(this.config);\n if (Object.keys(attributions).length === 0) {\n return;\n }\n const id = new Identify();\n Object.entries(attributions).forEach(([key, value]: [string, string]) => {\n if (value) {\n id.setOnce(`initial_${key}`, value);\n id.set(key, value);\n }\n });\n return this.identify(id);\n }\n}\n\nconst client = new AmplitudeBrowser();\n\n/**\n * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.\n * This method must be called before any other operations.\n *\n * ```typescript\n * await init(API_KEY, USER_ID, options).promise;\n * ```\n */\nexport const init = returnWrapper(client.init.bind(client));\n\n/**\n * Adds a new plugin.\n *\n * ```typescript\n * const plugin = {...};\n * amplitude.add(plugin);\n * ```\n */\nexport const add = returnWrapper(client.add.bind(client));\n\n/**\n * Removes a plugin.\n *\n * ```typescript\n * amplitude.remove('myPlugin');\n * ```\n */\nexport const remove = returnWrapper(client.remove.bind(client));\n\n/**\n * Tracks user-defined event, with specified type, optional event properties and optional overwrites.\n *\n * ```typescript\n * // event tracking with event type only\n * track('Page Load');\n *\n * // event tracking with event type and additional event properties\n * track('Page Load', { loadTime: 1000 });\n *\n * // event tracking with event type, additional event properties, and overwritten event options\n * track('Page Load', { loadTime: 1000 }, { sessionId: -1 });\n *\n * // alternatively, this tracking method is awaitable\n * const result = await track('Page Load').promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const track = returnWrapper(client.track.bind(client));\n\n/**\n * Alias for track()\n */\nexport const logEvent = returnWrapper(client.logEvent.bind(client));\n\n/**\n * Sends an identify event containing user property operations\n *\n * ```typescript\n * const id = new Identify();\n * id.set('colors', ['rose', 'gold']);\n * identify(id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await identify(id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const identify = returnWrapper(client.identify.bind(client));\n\n/**\n * Sends a group identify event containing group property operations.\n *\n * ```typescript\n * const id = new Identify();\n * id.set('skills', ['js', 'ts']);\n * const groupType = 'org';\n * const groupName = 'engineering';\n * groupIdentify(groupType, groupName, id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await groupIdentify(groupType, groupName, id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const groupIdentify = returnWrapper(client.groupIdentify.bind(client));\nexport const setGroup = returnWrapper(client.setGroup.bind(client));\n\n/**\n * Sends a revenue event containing revenue property operations.\n *\n * ```typescript\n * const rev = new Revenue();\n * rev.setRevenue(100);\n * revenue(rev);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await revenue(rev).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const revenue = returnWrapper(client.revenue.bind(client));\n\n/**\n * Returns current user ID.\n *\n * ```typescript\n * const userId = getUserId();\n * ```\n */\nexport const getUserId = client.getUserId.bind(client);\n\n/**\n * Sets a new user ID.\n *\n * ```typescript\n * setUserId('userId');\n * ```\n */\nexport const setUserId = client.setUserId.bind(client);\n\n/**\n * Returns current device ID.\n *\n * ```typescript\n * const deviceId = getDeviceId();\n * ```\n */\nexport const getDeviceId = client.getDeviceId.bind(client);\n\n/**\n * Sets a new device ID.\n * When setting a custom device ID, make sure the value is sufficiently unique.\n * A uuid is recommended.\n *\n * ```typescript\n * setDeviceId('deviceId');\n * ```\n */\nexport const setDeviceId = client.setDeviceId.bind(client);\n\n/**\n * Returns current session ID.\n *\n * ```typescript\n * const sessionId = getSessionId();\n * ```\n */\nexport const getSessionId = client.getSessionId.bind(client);\n\n/**\n * Sets a new session ID.\n * When settign a custom session ID, make sure the value is in milliseconds since epoch (Unix Timestamp).\n *\n * ```typescript\n * setSessionId(Date.now());\n * ```\n */\nexport const setSessionId = client.setSessionId.bind(client);\n\n/**\n * Sets a new optOut config value. This toggles event tracking on/off.\n *\n *```typescript\n * // Stops tracking\n * setOptOut(true);\n *\n * // Starts/resumes tracking\n * setOptOut(false);\n * ```\n */\nexport const setOptOut = client.setOptOut.bind(client);\n\n/**\n * Sets the network transport type for events.\n *\n * ```typescript\n * // Use Fetch API\n * setTransport('fetch');\n *\n * // Use XMLHttpRequest API\n * setTransport('xhr');\n *\n * // Use navigator.sendBeacon API\n * setTransport('beacon');\n * ```\n */\nexport const setTransport = client.setTransport.bind(client);\n"]}
@@ -1,12 +1,14 @@
1
- import { BrowserOptions, BrowserConfig as IBrowserConfig, Storage, TrackingOptions, TransportType, UserSession } from '@amplitude/analytics-types';
1
+ import { Event, BrowserOptions, BrowserConfig as IBrowserConfig, Storage, TrackingOptions, TransportType, UserSession } from '@amplitude/analytics-types';
2
2
  import { Config } from '@amplitude/analytics-core';
3
3
  import { FetchTransport } from './transports/fetch';
4
+ import { MemoryStorage } from './storage/memory';
4
5
  import { XHRTransport } from './transports/xhr';
5
6
  import { SendBeaconTransport } from './transports/send-beacon';
6
- export declare const defaultConfig: {
7
+ export declare const getDefaultConfig: () => {
7
8
  cookieExpiration: number;
8
9
  cookieSameSite: string;
9
10
  cookieSecure: boolean;
11
+ cookieStorage: MemoryStorage<UserSession>;
10
12
  disableCookies: boolean;
11
13
  domain: string;
12
14
  includeGclid: boolean;
@@ -14,6 +16,7 @@ export declare const defaultConfig: {
14
16
  includeReferrer: boolean;
15
17
  includeUtm: boolean;
16
18
  sessionTimeout: number;
19
+ storageProvider: MemoryStorage<Event[]>;
17
20
  trackingOptions: {
18
21
  city: boolean;
19
22
  country: boolean;
@@ -38,19 +41,20 @@ export declare class BrowserConfig extends Config implements IBrowserConfig {
38
41
  cookieStorage: Storage<UserSession>;
39
42
  disableCookies: boolean;
40
43
  domain: string;
41
- includeUtm: boolean;
42
- includeReferrer: boolean;
43
44
  includeGclid: boolean;
44
45
  includeFbclid: boolean;
46
+ includeReferrer: boolean;
47
+ includeUtm: boolean;
45
48
  sessionTimeout: number;
46
49
  trackingOptions: TrackingOptions;
47
50
  constructor(apiKey: string, userId?: string, options?: BrowserOptions);
48
51
  }
49
- export declare const createConfig: (apiKey: string, userId?: string | undefined, overrides?: BrowserOptions | undefined) => IBrowserConfig;
52
+ export declare const useBrowserConfig: (apiKey: string, userId?: string | undefined, options?: BrowserOptions | undefined) => IBrowserConfig;
50
53
  export declare const createCookieStorage: (overrides?: BrowserOptions | undefined, baseConfig?: {
51
54
  cookieExpiration: number;
52
55
  cookieSameSite: string;
53
56
  cookieSecure: boolean;
57
+ cookieStorage: MemoryStorage<UserSession>;
54
58
  disableCookies: boolean;
55
59
  domain: string;
56
60
  includeGclid: boolean;
@@ -58,6 +62,7 @@ export declare const createCookieStorage: (overrides?: BrowserOptions | undefine
58
62
  includeReferrer: boolean;
59
63
  includeUtm: boolean;
60
64
  sessionTimeout: number;
65
+ storageProvider: MemoryStorage<Event[]>;
61
66
  trackingOptions: {
62
67
  city: boolean;
63
68
  country: boolean;
@@ -75,9 +80,8 @@ export declare const createCookieStorage: (overrides?: BrowserOptions | undefine
75
80
  };
76
81
  transportProvider: FetchTransport;
77
82
  }) => Storage<UserSession>;
78
- export declare const createEventsStorage: (overrides?: BrowserOptions | undefined) => Storage<import("@amplitude/analytics-types").Event[]>;
83
+ export declare const createEventsStorage: (overrides?: BrowserOptions | undefined) => Storage<Event[]>;
79
84
  export declare const createDeviceId: (idFromCookies?: string | undefined, idFromOptions?: string | undefined, idFromQueryParams?: string | undefined) => string;
80
85
  export declare const createSessionId: (idFromCookies: number | undefined, idFromOptions: number | undefined, lastEventTime: number | undefined, sessionTimeout: number) => number;
81
86
  export declare const createTransport: (transport?: TransportType | undefined) => FetchTransport | XHRTransport | SendBeaconTransport;
82
- export declare const getConfig: () => BrowserConfig;
83
87
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,IAAI,cAAc,EAC/B,OAAO,EACP,eAAe,EACf,aAAa,EACb,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAA2B,MAAM,2BAA2B,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BzB,CAAC;AAEF,qBAAa,aAAc,SAAQ,MAAO,YAAW,cAAc;IACjE,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;gBAErB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;CAkCtE;AAED,eAAO,MAAM,YAAY,WAAY,MAAM,0EAAgD,cAE1F,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAkB/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,mGAS/B,CAAC;AAEF,eAAO,MAAM,cAAc,4HAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,4HAA6E,MAAM,WAK9G,CAAC;AAEF,eAAO,MAAM,eAAe,gGAQ3B,CAAC;AAEF,eAAO,MAAM,SAAS,qBAErB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,aAAa,IAAI,cAAc,EAC/B,OAAO,EACP,eAAe,EACf,aAAa,EACb,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC;AAEH,qBAAa,aAAc,SAAQ,MAAO,YAAW,cAAc;IACjE,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;gBAErB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;CAwBtE;AAED,eAAO,MAAM,gBAAgB,WAAY,MAAM,wEAA8C,cAmB5F,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAkB/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,8DAS/B,CAAC;AAEF,eAAO,MAAM,cAAc,4HAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,4HAA6E,MAAM,WAK9G,CAAC;AAEF,eAAO,MAAM,eAAe,gGAQ3B,CAAC"}