@amplitude/analytics-browser 2.0.0-beta.6 → 2.0.0-beta.8

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 (62) hide show
  1. package/README.md +24 -139
  2. package/lib/cjs/browser-client.d.ts +2 -1
  3. package/lib/cjs/browser-client.d.ts.map +1 -1
  4. package/lib/cjs/browser-client.js +72 -53
  5. package/lib/cjs/browser-client.js.map +1 -1
  6. package/lib/cjs/config.d.ts +2 -1
  7. package/lib/cjs/config.d.ts.map +1 -1
  8. package/lib/cjs/config.js +8 -6
  9. package/lib/cjs/config.js.map +1 -1
  10. package/lib/cjs/cookie-migration/index.d.ts.map +1 -1
  11. package/lib/cjs/cookie-migration/index.js +3 -2
  12. package/lib/cjs/cookie-migration/index.js.map +1 -1
  13. package/lib/cjs/plugins/context.d.ts +0 -1
  14. package/lib/cjs/plugins/context.d.ts.map +1 -1
  15. package/lib/cjs/plugins/context.js +7 -6
  16. package/lib/cjs/plugins/context.js.map +1 -1
  17. package/lib/cjs/version.d.ts +1 -1
  18. package/lib/cjs/version.js +1 -1
  19. package/lib/cjs/version.js.map +1 -1
  20. package/lib/esm/browser-client.d.ts +2 -1
  21. package/lib/esm/browser-client.d.ts.map +1 -1
  22. package/lib/esm/browser-client.js +72 -53
  23. package/lib/esm/browser-client.js.map +1 -1
  24. package/lib/esm/config.d.ts +2 -1
  25. package/lib/esm/config.d.ts.map +1 -1
  26. package/lib/esm/config.js +8 -6
  27. package/lib/esm/config.js.map +1 -1
  28. package/lib/esm/cookie-migration/index.d.ts.map +1 -1
  29. package/lib/esm/cookie-migration/index.js +3 -2
  30. package/lib/esm/cookie-migration/index.js.map +1 -1
  31. package/lib/esm/plugins/context.d.ts +0 -1
  32. package/lib/esm/plugins/context.d.ts.map +1 -1
  33. package/lib/esm/plugins/context.js +7 -6
  34. package/lib/esm/plugins/context.js.map +1 -1
  35. package/lib/esm/version.d.ts +1 -1
  36. package/lib/esm/version.js +1 -1
  37. package/lib/esm/version.js.map +1 -1
  38. package/lib/scripts/amplitude-min.js +1 -1
  39. package/lib/scripts/amplitude-min.js.gz +0 -0
  40. package/lib/scripts/amplitude-min.umd.js +1 -1
  41. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  42. package/lib/scripts/amplitude-snippet-instructions.html +2 -2
  43. package/lib/scripts/amplitude-snippet-min.js +1 -1
  44. package/lib/scripts/browser-client.d.ts +2 -1
  45. package/lib/scripts/browser-client.d.ts.map +1 -1
  46. package/lib/scripts/config.d.ts +2 -1
  47. package/lib/scripts/config.d.ts.map +1 -1
  48. package/lib/scripts/cookie-migration/index.d.ts.map +1 -1
  49. package/lib/scripts/plugins/context.d.ts +0 -1
  50. package/lib/scripts/plugins/context.d.ts.map +1 -1
  51. package/lib/scripts/version.d.ts +1 -1
  52. package/package.json +7 -7
  53. package/lib/cjs/plugins/session-handler.d.ts +0 -3
  54. package/lib/cjs/plugins/session-handler.d.ts.map +0 -1
  55. package/lib/cjs/plugins/session-handler.js +0 -53
  56. package/lib/cjs/plugins/session-handler.js.map +0 -1
  57. package/lib/esm/plugins/session-handler.d.ts +0 -3
  58. package/lib/esm/plugins/session-handler.d.ts.map +0 -1
  59. package/lib/esm/plugins/session-handler.js +0 -49
  60. package/lib/esm/plugins/session-handler.js.map +0 -1
  61. package/lib/scripts/plugins/session-handler.d.ts +0 -3
  62. package/lib/scripts/plugins/session-handler.d.ts.map +0 -1
package/README.md CHANGED
@@ -19,166 +19,51 @@ Please visit our :100:[Developer Center](https://www.docs.developers.amplitude.c
19
19
 
20
20
  ## Installation
21
21
 
22
- To get started with using Amplitude Browser SDK, install the package to your project via NPM or script loader.
22
+ To get started with using Amplitude Browser SDK, install the package to your project via npm, yarn or script loader.
23
23
 
24
- ### Using Node package
24
+ ### Installing via package manager
25
25
 
26
- This package is published on NPM registry and is available to be installed using npm and yarn.
26
+ This SDK is available as a package on npm registry named `@amplitude/analytics-browser`. You can install the package using npm or yarn CLI.
27
27
 
28
+ #### Using npm CLI
28
29
  ```sh
29
- # npm
30
30
  npm install @amplitude/analytics-browser
31
+ ```
31
32
 
33
+ #### Using yarn CLI
34
+ ```sh
32
35
  # yarn
33
36
  yarn add @amplitude/analytics-browser
34
37
  ```
35
38
 
36
- ### Using script loader
39
+ Import the package into your project and initialize it with your API key.
37
40
 
38
- Alternatively, the package is also distributed through a CDN. Copy and paste the script below to your html file.
41
+ ```ts
42
+ import * as amplitude from '@amplitude/analytics-browser';
43
+
44
+ amplitude.init('<YOUR_API_KEY>');
45
+ ```
46
+
47
+ ### Installing via script loader
48
+
49
+ This SDK is also available through CDN. Copy the script loader below and paste before the `</head>` tag of every page you want to track and initialize it with your API key.
39
50
 
40
51
  <!-- README_SNIPPET_BLOCK -->
41
52
  ```html
42
53
  <script type="text/javascript">
43
- !function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:{}};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<g.length;t++)o(e,g[t],!1);for(var r=0;r<m.length;r++)o(e,m[r],!0)};r.invoked=!0;var a=t.createElement("script");a.type="text/javascript",a.integrity="sha384-dHdujh6KH6cmb74SFL5wL+PhPF9HC4I2vifxDGG+qS1JesQHeAHSTRRg1q1P6yZe",a.crossOrigin="anonymous",a.async=!0,a.src="https://cdn.amplitude.com/libs/analytics-browser-2.0.0-beta.6-min.js.gz",a.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var c=t.getElementsByTagName("script")[0];c.parentNode.insertBefore(a,c);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)n(u,l[p]);r.Identify=u;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],v=0;v<f.length;v++)n(d,f[v]);r.Revenue=d;var g=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset"],m=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(e){return r._iq[e]={_q:[]},i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();
54
+ !function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:{}};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<g.length;t++)o(e,g[t],!1);for(var r=0;r<m.length;r++)o(e,m[r],!0)};r.invoked=!0;var a=t.createElement("script");a.type="text/javascript",a.integrity="sha384-wLBDtkz4rxFXK/pT6KNJ5ini31YuE2dBYaPytOv0sfJMEGq4AJ1AJ5E7CGsqHegL",a.crossOrigin="anonymous",a.async=!0,a.src="https://cdn.amplitude.com/libs/analytics-browser-2.0.0-beta.8-min.js.gz",a.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var u=t.getElementsByTagName("script")[0];u.parentNode.insertBefore(a,u);for(var c=function(){return this._q=[],this},p=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],l=0;l<p.length;l++)n(c,p[l]);r.Identify=c;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],v=0;v<f.length;v++)n(d,f[v]);r.Revenue=d;var g=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset"],m=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(e){return r._iq[e]={_q:[]},i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();
44
55
 
45
- amplitude.init("YOUR_API_KEY_HERE");
56
+ amplitude.init("<YOUR_API_KEY>");
46
57
  </script>
47
58
  ```
48
59
  <!-- / OF README_SNIPPET_BLOCK -->
49
60
 
50
- ## Usage
51
-
52
- ### Initializing SDK
53
-
54
- Initialization is necessary before any instrumentation is done. The API key for your Amplitude project is required.
55
-
56
- ```typescript
57
- amplitude.init(API_KEY);
58
- ```
59
-
60
- ### Tracking an Event
61
-
62
- Events represent how users interact with your application. For example, "Button Clicked" may be an action you want to note.
63
-
64
- ```typescript
65
- import { track } from '@amplitude/analytics-browser';
66
-
67
- // Track a basic event
68
- track('Button Clicked');
69
-
70
- // Track events with additional properties
71
- const eventProperties = {
72
- selectedColors: ['red', 'blue'],
73
- };
74
- track('Button Clicked', eventProperties);
75
- ```
76
-
77
- ### User Properties
78
-
79
- User properties help you understand your users at the time they performed some action within your app such as their device details, their preferences, or language.
80
-
81
- ```typescript
82
- import { Identify, identify } from '@amplitude/analytics-browser';
83
-
84
- const event = new Identify();
85
-
86
- // sets the value of a user property
87
- event.set('key1', 'value1');
88
-
89
- // sets the value of a user property only once
90
- event.setOnce('key1', 'value1');
91
-
92
- // increments a user property by some numerical value.
93
- event.add('value1', 10);
94
-
95
- // pre inserts a value or values to a user property
96
- event.preInsert('ab-tests', 'new-user-test');
97
-
98
- // post inserts a value or values to a user property
99
- event.postInsert('ab-tests', 'new-user-test');
100
-
101
- // removes a value or values to a user property
102
- event.remove('ab-tests', 'new-user-test')
103
-
104
- // sends identify event
105
- identify(event);
106
- ```
107
-
108
- ### prepend/append
109
-
110
- * append will append a value or values to a user property array.
111
- * prepend will prepend a value or values to a user property.
112
-
113
- ### User Groups
114
-
115
- ```typescript
116
- import { setGroup } from '@amplitude/analytics-browser';
117
-
118
- // set group with single group name
119
- setGroup('orgId', '15');
120
-
121
- // set group with multiple group names
122
- setGroup('sport', ['soccer', 'tennis']);
123
- ```
124
-
125
- ### Group Identify
126
-
127
- This feature is only available to Growth and Enterprise customers who have purchased the [Accounts add-on](https://amplitude.zendesk.com/hc/en-us/articles/115001765532).
128
-
129
- Use the Group Identify API to set or update properties of particular groups. However, these updates will only affect events going forward.
61
+ ## Tracking events
130
62
 
131
- ```typescript
132
- import { Identify, groupIdentify } from '@amplitude/analytics-browser';
63
+ Once the SDK is initialize, you can start tracking events.
133
64
 
134
- const groupType = 'plan';
135
- const groupName = 'enterprise';
136
- const identity = new Identify()
137
- identity.set('key1', 'value1');
138
-
139
- groupIdentify(groupType, groupName, identity);
65
+ ```ts
66
+ amplitude.track('Page Viewed');
140
67
  ```
141
68
 
142
- ### Track Revenue
143
-
144
- Revenue instances will store each revenue transaction and allow you to define several special revenue properties (such as 'revenueType', 'productIdentifier', etc.) that are used in Amplitude's Event Segmentation and Revenue LTV charts. These Revenue instance objects are then passed into `revenue` to send as revenue events to Amplitude. This allows us to automatically display data relevant to revenue in the platform. You can use this to track both in-app and non-in-app purchases.
145
-
146
- ```typescript
147
- import { Revenue, revenue } from '@amplitude/analytics-browser';
148
-
149
- const event = new Revenue()
150
- .setProductId('com.company.productId')
151
- .setPrice(3.99)
152
- .setQuantity(3);
153
-
154
- revenue(event);
155
- ```
156
-
157
- ### Callback
158
-
159
- All asynchronous API are optionally awaitable through a specific Promise interface. This also serves as callback interface.
160
-
161
- ```typescript
162
- // Using async/await
163
- const results = await track('Button Clicked').promise;
164
- result.event; // {...} (The final event object sent to Amplitude)
165
- result.code; // 200 (The HTTP response status code of the request.
166
- result.message; // "Event tracked successfully" (The response message)
167
-
168
- // Using promises
169
- track('Button Clicked').promise.then((result) => {
170
- result.event; // {...} (The final event object sent to Amplitude)
171
- result.code; // 200 (The HTTP response status code of the request.
172
- result.message; // "Event tracked successfully" (The response message)
173
- });
174
- ```
175
-
176
- ### User Log out
177
-
178
- This updates user ID and device ID. After calling `reset()` the succeeding events now belong to a new user identity.
179
-
180
- ```typescript
181
- import { reset } from '@amplitude/analytics-browser';
182
-
183
- reset();
184
- ```
69
+ For in-depth documentation, please visit to our [Developer Center](https://www.docs.developers.amplitude.com/data/sdks/sdk-quickstart/#browser).
@@ -1,5 +1,5 @@
1
1
  import { AmplitudeCore } from '@amplitude/analytics-core';
2
- import { BrowserClient, BrowserConfig, BrowserOptions, EventOptions, Identify as IIdentify, Revenue as IRevenue, TransportType } from '@amplitude/analytics-types';
2
+ import { BrowserClient, BrowserConfig, BrowserOptions, Event, EventOptions, Identify as IIdentify, Revenue as IRevenue, TransportType } from '@amplitude/analytics-types';
3
3
  export declare class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {
4
4
  config: BrowserConfig;
5
5
  previousSessionDeviceId: string | undefined;
@@ -19,5 +19,6 @@ export declare class AmplitudeBrowser extends AmplitudeCore implements BrowserCl
19
19
  identify(identify: IIdentify, eventOptions?: EventOptions): import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
20
20
  groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions): import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
21
21
  revenue(revenue: IRevenue, eventOptions?: EventOptions): import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
22
+ process(event: Event): Promise<import("@amplitude/analytics-types").Result>;
22
23
  }
23
24
  //# sourceMappingURL=browser-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuD,MAAM,2BAA2B,CAAC;AAa/G,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,IAAI,SAAS,EACrB,OAAO,IAAI,QAAQ,EACnB,aAAa,EACd,MAAM,4BAA4B,CAAC;AAWpC,qBAAa,gBAAiB,SAAQ,aAAc,YAAW,aAAa;IAG1E,MAAM,EAAE,aAAa,CAAC;IACtB,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1C,IAAI,CAAC,MAAM,SAAK,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,YAAY,CAAC,EAAE,cAAc;cAkB1E,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAmElE,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAYpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAS5B,KAAK;IAKL,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;IA+B9B,YAAY,CAAC,SAAS,EAAE,aAAa;IAQrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAezD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAS/G,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,YAAY;CAQvD"}
1
+ {"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuD,MAAM,2BAA2B,CAAC;AAa/G,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,KAAK,EACL,YAAY,EACZ,QAAQ,IAAI,SAAS,EACrB,OAAO,IAAI,QAAQ,EACnB,aAAa,EACd,MAAM,4BAA4B,CAAC;AAUpC,qBAAa,gBAAiB,SAAQ,aAAc,YAAW,aAAa;IAG1E,MAAM,EAAE,aAAa,CAAC;IACtB,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1C,IAAI,CAAC,MAAM,SAAK,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,YAAY,CAAC,EAAE,cAAc;cAkB1E,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IA8DlE,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAWpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAS5B,KAAK;IAKL,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;IAyC9B,YAAY,CAAC,SAAS,EAAE,aAAa;IAQrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAezD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAS/G,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,YAAY;IAShD,OAAO,CAAC,KAAK,EAAE,KAAK;CAgB3B"}
@@ -8,7 +8,6 @@ var context_1 = require("./plugins/context");
8
8
  var config_1 = require("./config");
9
9
  var plugin_web_attribution_browser_1 = require("@amplitude/plugin-web-attribution-browser");
10
10
  var plugin_page_view_tracking_browser_1 = require("@amplitude/plugin-page-view-tracking-browser");
11
- var session_handler_1 = require("./plugins/session-handler");
12
11
  var form_interaction_tracking_1 = require("./plugins/form-interaction-tracking");
13
12
  var file_download_tracking_1 = require("./plugins/file-download-tracking");
14
13
  var constants_1 = require("./constants");
@@ -38,11 +37,12 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
38
37
  return (0, analytics_core_1.returnWrapper)(this._init(tslib_1.__assign(tslib_1.__assign({}, options), { userId: userId, apiKey: apiKey })));
39
38
  };
40
39
  AmplitudeBrowser.prototype._init = function (options) {
40
+ var _a, _b;
41
41
  return tslib_1.__awaiter(this, void 0, void 0, function () {
42
42
  var browserOptions, connector, attributionTrackingOptions, webAttribution;
43
43
  var _this = this;
44
- return tslib_1.__generator(this, function (_a) {
45
- switch (_a.label) {
44
+ return tslib_1.__generator(this, function (_c) {
45
+ switch (_c.label) {
46
46
  case 0:
47
47
  // Step 1: Block concurrent initialization
48
48
  if (this.initializing) {
@@ -51,19 +51,17 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
51
51
  this.initializing = true;
52
52
  return [4 /*yield*/, (0, config_1.useBrowserConfig)(options.apiKey, options, this)];
53
53
  case 1:
54
- browserOptions = _a.sent();
54
+ browserOptions = _c.sent();
55
55
  return [4 /*yield*/, _super.prototype._init.call(this, browserOptions)];
56
56
  case 2:
57
- _a.sent();
58
- // Step 3: Manage session
59
- if (!this.config.sessionId ||
60
- (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)) {
61
- // Either
62
- // 1) No previous session; or
63
- // 2) Previous session expired
64
- this.setSessionId(Date.now());
65
- }
66
- connector = (0, analytics_client_common_1.getAnalyticsConnector)();
57
+ _c.sent();
58
+ // Step 3: Set session ID
59
+ // Priority 1: `options.sessionId`
60
+ // Priority 2: last known sessionId from user identity storage
61
+ // Default: `Date.now()`
62
+ // Session ID is handled differently than device ID and user ID due to session events
63
+ this.setSessionId((_b = (_a = options.sessionId) !== null && _a !== void 0 ? _a : this.config.sessionId) !== null && _b !== void 0 ? _b : Date.now());
64
+ connector = (0, analytics_client_common_1.getAnalyticsConnector)(options.instanceName);
67
65
  connector.identityStore.setIdentity({
68
66
  userId: this.config.userId,
69
67
  deviceId: this.config.deviceId,
@@ -74,47 +72,44 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
74
72
  case 3:
75
73
  // Step 4: Install plugins
76
74
  // Do not track any events before this
77
- _a.sent();
75
+ _c.sent();
78
76
  return [4 /*yield*/, this.add(new context_1.Context()).promise];
79
77
  case 4:
80
- _a.sent();
81
- return [4 /*yield*/, this.add((0, session_handler_1.sessionHandlerPlugin)()).promise];
82
- case 5:
83
- _a.sent();
78
+ _c.sent();
84
79
  return [4 /*yield*/, this.add(new analytics_client_common_1.IdentityEventSender()).promise];
85
- case 6:
86
- _a.sent();
87
- if (!(0, analytics_client_common_1.isFileDownloadTrackingEnabled)(this.config.defaultTracking)) return [3 /*break*/, 8];
80
+ case 5:
81
+ _c.sent();
82
+ if (!(0, analytics_client_common_1.isFileDownloadTrackingEnabled)(this.config.defaultTracking)) return [3 /*break*/, 7];
88
83
  return [4 /*yield*/, this.add((0, file_download_tracking_1.fileDownloadTracking)()).promise];
84
+ case 6:
85
+ _c.sent();
86
+ _c.label = 7;
89
87
  case 7:
90
- _a.sent();
91
- _a.label = 8;
92
- case 8:
93
- if (!(0, analytics_client_common_1.isFormInteractionTrackingEnabled)(this.config.defaultTracking)) return [3 /*break*/, 10];
88
+ if (!(0, analytics_client_common_1.isFormInteractionTrackingEnabled)(this.config.defaultTracking)) return [3 /*break*/, 9];
94
89
  return [4 /*yield*/, this.add((0, form_interaction_tracking_1.formInteractionTracking)()).promise];
90
+ case 8:
91
+ _c.sent();
92
+ _c.label = 9;
95
93
  case 9:
96
- _a.sent();
97
- _a.label = 10;
98
- case 10:
99
- if (!(0, analytics_client_common_1.isAttributionTrackingEnabled)(this.config.defaultTracking)) return [3 /*break*/, 12];
94
+ if (!(0, analytics_client_common_1.isAttributionTrackingEnabled)(this.config.defaultTracking)) return [3 /*break*/, 11];
100
95
  attributionTrackingOptions = (0, analytics_client_common_1.getAttributionTrackingConfig)(this.config);
101
96
  webAttribution = (0, plugin_web_attribution_browser_1.webAttributionPlugin)(attributionTrackingOptions);
102
97
  return [4 /*yield*/, this.add(webAttribution).promise];
103
- case 11:
104
- _a.sent();
105
- _a.label = 12;
106
- case 12:
98
+ case 10:
99
+ _c.sent();
100
+ _c.label = 11;
101
+ case 11:
107
102
  // Add page view plugin
108
103
  return [4 /*yield*/, this.add((0, plugin_page_view_tracking_browser_1.pageViewTrackingPlugin)((0, analytics_client_common_1.getPageViewTrackingConfig)(this.config))).promise];
109
- case 13:
104
+ case 12:
110
105
  // Add page view plugin
111
- _a.sent();
106
+ _c.sent();
112
107
  this.initializing = false;
113
108
  // Step 6: Run queued dispatch functions
114
109
  return [4 /*yield*/, this.runQueuedFunctions('dispatchQ')];
115
- case 14:
110
+ case 13:
116
111
  // Step 6: Run queued dispatch functions
117
- _a.sent();
112
+ _c.sent();
118
113
  // Step 7: Add the event receiver after running remaining queued functions.
119
114
  connector.eventBridge.setEventReceiver(function (event) {
120
115
  void _this.track(event.eventType, event.eventProperties);
@@ -135,8 +130,7 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
135
130
  }
136
131
  if (userId !== this.config.userId || userId === undefined) {
137
132
  this.config.userId = userId;
138
- this.setSessionId(Date.now());
139
- (0, analytics_client_common_1.setConnectorUserId)(userId);
133
+ (0, analytics_client_common_1.setConnectorUserId)(userId, this.config.instanceName);
140
134
  }
141
135
  };
142
136
  AmplitudeBrowser.prototype.getDeviceId = function () {
@@ -149,7 +143,7 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
149
143
  return;
150
144
  }
151
145
  this.config.deviceId = deviceId;
152
- (0, analytics_client_common_1.setConnectorDeviceId)(deviceId);
146
+ (0, analytics_client_common_1.setConnectorDeviceId)(deviceId, this.config.instanceName);
153
147
  };
154
148
  AmplitudeBrowser.prototype.reset = function () {
155
149
  this.setDeviceId((0, analytics_core_1.UUID)());
@@ -160,31 +154,39 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
160
154
  return (_a = this.config) === null || _a === void 0 ? void 0 : _a.sessionId;
161
155
  };
162
156
  AmplitudeBrowser.prototype.setSessionId = function (sessionId) {
157
+ var _a;
163
158
  if (!this.config) {
164
159
  this.q.push(this.setSessionId.bind(this, sessionId));
165
160
  return;
166
161
  }
162
+ // Prevents starting a new session with the same session ID
163
+ if (sessionId === this.config.sessionId) {
164
+ return;
165
+ }
167
166
  var previousSessionId = this.getSessionId();
168
- var previousLastEventTime = this.config.lastEventTime;
167
+ var lastEventTime = this.config.lastEventTime;
168
+ var lastEventId = (_a = this.config.lastEventId) !== null && _a !== void 0 ? _a : -1;
169
169
  this.config.sessionId = sessionId;
170
170
  this.config.lastEventTime = undefined;
171
171
  if ((0, analytics_client_common_1.isSessionTrackingEnabled)(this.config.defaultTracking)) {
172
- if (previousSessionId && previousLastEventTime) {
173
- var eventOptions = {
172
+ if (previousSessionId && lastEventTime) {
173
+ this.track(constants_1.DEFAULT_SESSION_END_EVENT, undefined, {
174
+ device_id: this.previousSessionDeviceId,
175
+ event_id: ++lastEventId,
174
176
  session_id: previousSessionId,
175
- time: previousLastEventTime + 1,
176
- };
177
- eventOptions.device_id = this.previousSessionDeviceId;
178
- eventOptions.user_id = this.previousSessionUserId;
179
- this.track(constants_1.DEFAULT_SESSION_END_EVENT, undefined, eventOptions);
177
+ time: lastEventTime + 1,
178
+ user_id: this.previousSessionUserId,
179
+ });
180
180
  }
181
+ this.config.lastEventTime = this.config.sessionId;
181
182
  this.track(constants_1.DEFAULT_SESSION_START_EVENT, undefined, {
182
- session_id: sessionId,
183
- time: sessionId - 1,
183
+ event_id: ++lastEventId,
184
+ session_id: this.config.sessionId,
185
+ time: this.config.lastEventTime,
184
186
  });
185
- this.previousSessionDeviceId = this.config.deviceId;
186
- this.previousSessionUserId = this.config.userId;
187
187
  }
188
+ this.previousSessionDeviceId = this.config.deviceId;
189
+ this.previousSessionUserId = this.config.userId;
188
190
  };
189
191
  AmplitudeBrowser.prototype.setTransport = function (transport) {
190
192
  if (!this.config) {
@@ -223,6 +225,23 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
223
225
  }
224
226
  return _super.prototype.revenue.call(this, revenue, eventOptions);
225
227
  };
228
+ AmplitudeBrowser.prototype.process = function (event) {
229
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
230
+ var currentTime, lastEventTime, timeSinceLastEvent;
231
+ return tslib_1.__generator(this, function (_a) {
232
+ currentTime = Date.now();
233
+ lastEventTime = this.config.lastEventTime || Date.now();
234
+ timeSinceLastEvent = currentTime - lastEventTime;
235
+ if (event.event_type !== constants_1.DEFAULT_SESSION_START_EVENT &&
236
+ event.event_type !== constants_1.DEFAULT_SESSION_END_EVENT &&
237
+ (!event.session_id || event.session_id === this.getSessionId()) &&
238
+ timeSinceLastEvent > this.config.sessionTimeout) {
239
+ this.setSessionId(currentTime);
240
+ }
241
+ return [2 /*return*/, _super.prototype.process.call(this, event)];
242
+ });
243
+ });
244
+ };
226
245
  return AmplitudeBrowser;
227
246
  }(analytics_core_1.AmplitudeCore));
228
247
  exports.AmplitudeBrowser = AmplitudeBrowser;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';\nimport {\n getAnalyticsConnector,\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n IdentityEventSender,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n setConnectorDeviceId,\n setConnectorUserId,\n} from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n EventOptions,\n Identify as IIdentify,\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 { webAttributionPlugin } from '@amplitude/plugin-web-attribution-browser';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { sessionHandlerPlugin } from './plugins/session-handler';\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';\n\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\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\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 const browserOptions = await useBrowserConfig(options.apiKey, options, this);\n await super._init(browserOptions);\n\n // Step 3: Manage session\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n }\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();\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 await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(sessionHandlerPlugin()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n const webAttribution = webAttributionPlugin(attributionTrackingOptions);\n await this.add(webAttribution).promise;\n }\n\n // Add page view plugin\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\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 if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n this.setSessionId(Date.now());\n setConnectorUserId(userId);\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.deviceId = deviceId;\n setConnectorDeviceId(deviceId);\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n const previousSessionId = this.getSessionId();\n const previousLastEventTime = this.config.lastEventTime;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && previousLastEventTime) {\n const eventOptions: EventOptions = {\n session_id: previousSessionId,\n time: previousLastEventTime + 1,\n };\n eventOptions.device_id = this.previousSessionDeviceId;\n eventOptions.user_id = this.previousSessionUserId;\n this.track(DEFAULT_SESSION_END_EVENT, undefined, eventOptions);\n }\n\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n session_id: sessionId,\n time: sessionId - 1,\n });\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n }\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"]}
1
+ {"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';\nimport {\n getAnalyticsConnector,\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n IdentityEventSender,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n setConnectorDeviceId,\n setConnectorUserId,\n} from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n Event,\n EventOptions,\n Identify as IIdentify,\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 { webAttributionPlugin } from '@amplitude/plugin-web-attribution-browser';\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';\n\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\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\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 const browserOptions = await useBrowserConfig(options.apiKey, options, this);\n await super._init(browserOptions);\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: 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 this.setSessionId(options.sessionId ?? 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 await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n const webAttribution = webAttributionPlugin(attributionTrackingOptions);\n await this.add(webAttribution).promise;\n }\n\n // Add page view plugin\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\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 if (userId !== this.config.userId || userId === undefined) {\n this.config.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.deviceId = deviceId;\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return;\n }\n\n const previousSessionId = this.getSessionId();\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\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\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 });\n }\n\n this.config.lastEventTime = this.config.sessionId;\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: ++lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n });\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\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 async process(event: Event) {\n const currentTime = Date.now();\n const lastEventTime = this.config.lastEventTime || Date.now();\n const timeSinceLastEvent = currentTime - lastEventTime;\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 timeSinceLastEvent > this.config.sessionTimeout\n ) {\n this.setSessionId(currentTime);\n }\n\n return super.process(event);\n }\n}\n"]}
@@ -16,6 +16,7 @@ export declare class BrowserConfig extends Config implements IBrowserConfig {
16
16
  flushQueueSize: number;
17
17
  identityStorage: IdentityStorageType;
18
18
  ingestionMetadata?: IngestionMetadata | undefined;
19
+ instanceName?: string | undefined;
19
20
  loggerProvider: ILogger;
20
21
  logLevel: LogLevel;
21
22
  minIdLength?: number | undefined;
@@ -35,7 +36,7 @@ export declare class BrowserConfig extends Config implements IBrowserConfig {
35
36
  protected _optOut: boolean;
36
37
  protected _sessionId?: number;
37
38
  protected _userId?: string;
38
- constructor(apiKey: string, appVersion?: string | undefined, cookieStorage?: Storage<UserSession>, cookieOptions?: CookieOptions, defaultTracking?: boolean | DefaultTrackingOptions, deviceId?: string, flushIntervalMillis?: number, flushMaxRetries?: number, flushQueueSize?: number, identityStorage?: IdentityStorageType, ingestionMetadata?: IngestionMetadata | undefined, lastEventId?: number, lastEventTime?: number, loggerProvider?: ILogger, logLevel?: LogLevel, minIdLength?: number | undefined, optOut?: boolean, partnerId?: string | undefined, plan?: Plan | undefined, serverUrl?: string, serverZone?: ServerZoneType, sessionId?: number, sessionTimeout?: number, storageProvider?: Storage<Event[]>, trackingOptions?: Required<TrackingOptions>, transport?: 'fetch' | 'xhr' | 'beacon', useBatch?: boolean, userId?: string);
39
+ constructor(apiKey: string, appVersion?: string | undefined, cookieStorage?: Storage<UserSession>, cookieOptions?: CookieOptions, defaultTracking?: boolean | DefaultTrackingOptions, deviceId?: string, flushIntervalMillis?: number, flushMaxRetries?: number, flushQueueSize?: number, identityStorage?: IdentityStorageType, ingestionMetadata?: IngestionMetadata | undefined, instanceName?: string | undefined, lastEventId?: number, lastEventTime?: number, loggerProvider?: ILogger, logLevel?: LogLevel, minIdLength?: number | undefined, optOut?: boolean, partnerId?: string | undefined, plan?: Plan | undefined, serverUrl?: string, serverZone?: ServerZoneType, sessionId?: number, sessionTimeout?: number, storageProvider?: Storage<Event[]>, trackingOptions?: Required<TrackingOptions>, transport?: 'fetch' | 'xhr' | 'beacon', useBatch?: boolean, userId?: string);
39
40
  get cookieStorage(): Storage<UserSession>;
40
41
  set cookieStorage(cookieStorage: Storage<UserSession>);
41
42
  get deviceId(): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
package/lib/cjs/config.js CHANGED
@@ -10,9 +10,10 @@ var xhr_1 = require("./transports/xhr");
10
10
  var send_beacon_1 = require("./transports/send-beacon");
11
11
  var cookie_migration_1 = require("./cookie-migration");
12
12
  var constants_1 = require("./constants");
13
+ // Exported for testing purposes only. Do not expose to public interface.
13
14
  var BrowserConfig = /** @class */ (function (_super) {
14
15
  tslib_1.__extends(BrowserConfig, _super);
15
- function BrowserConfig(apiKey, appVersion, cookieStorage, cookieOptions, defaultTracking, deviceId, flushIntervalMillis, flushMaxRetries, flushQueueSize, identityStorage, ingestionMetadata, lastEventId, lastEventTime, loggerProvider, logLevel, minIdLength, optOut, partnerId, plan, serverUrl, serverZone, sessionId, sessionTimeout, storageProvider, trackingOptions, transport, useBatch, userId) {
16
+ function BrowserConfig(apiKey, appVersion, cookieStorage, cookieOptions, defaultTracking, deviceId, flushIntervalMillis, flushMaxRetries, flushQueueSize, identityStorage, ingestionMetadata, instanceName, lastEventId, lastEventTime, loggerProvider, logLevel, minIdLength, optOut, partnerId, plan, serverUrl, serverZone, sessionId, sessionTimeout, storageProvider, trackingOptions, transport, useBatch, userId) {
16
17
  if (cookieStorage === void 0) { cookieStorage = new analytics_core_1.MemoryStorage(); }
17
18
  if (cookieOptions === void 0) { cookieOptions = {
18
19
  domain: '',
@@ -50,6 +51,7 @@ var BrowserConfig = /** @class */ (function (_super) {
50
51
  _this.flushQueueSize = flushQueueSize;
51
52
  _this.identityStorage = identityStorage;
52
53
  _this.ingestionMetadata = ingestionMetadata;
54
+ _this.instanceName = instanceName;
53
55
  _this.loggerProvider = loggerProvider;
54
56
  _this.logLevel = logLevel;
55
57
  _this.minIdLength = minIdLength;
@@ -215,15 +217,15 @@ var useBrowserConfig = function (apiKey, options, amplitudeInstance) {
215
217
  previousCookies = _x.sent();
216
218
  queryParams = (0, analytics_client_common_1.getQueryParams)();
217
219
  deviceId = (_m = (_l = (_k = (_j = options.deviceId) !== null && _j !== void 0 ? _j : queryParams.deviceId) !== null && _k !== void 0 ? _k : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.deviceId) !== null && _l !== void 0 ? _l : legacyCookies.deviceId) !== null && _m !== void 0 ? _m : (0, analytics_core_1.UUID)();
218
- lastEventId = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventId;
219
- lastEventTime = (_o = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventTime) !== null && _o !== void 0 ? _o : legacyCookies.lastEventTime;
220
- optOut = (_q = (_p = options.optOut) !== null && _p !== void 0 ? _p : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.optOut) !== null && _q !== void 0 ? _q : legacyCookies.optOut;
221
- sessionId = (_s = (_r = options.sessionId) !== null && _r !== void 0 ? _r : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.sessionId) !== null && _s !== void 0 ? _s : legacyCookies.sessionId;
220
+ lastEventId = (_o = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventId) !== null && _o !== void 0 ? _o : legacyCookies.lastEventId;
221
+ lastEventTime = (_p = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventTime) !== null && _p !== void 0 ? _p : legacyCookies.lastEventTime;
222
+ optOut = (_r = (_q = options.optOut) !== null && _q !== void 0 ? _q : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.optOut) !== null && _r !== void 0 ? _r : legacyCookies.optOut;
223
+ sessionId = (_s = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.sessionId) !== null && _s !== void 0 ? _s : legacyCookies.sessionId;
222
224
  userId = (_u = (_t = options.userId) !== null && _t !== void 0 ? _t : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.userId) !== null && _u !== void 0 ? _u : legacyCookies.userId;
223
225
  amplitudeInstance.previousSessionDeviceId = (_v = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.deviceId) !== null && _v !== void 0 ? _v : legacyCookies.deviceId;
224
226
  amplitudeInstance.previousSessionUserId = (_w = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.userId) !== null && _w !== void 0 ? _w : legacyCookies.userId;
225
227
  trackingOptions = tslib_1.__assign(tslib_1.__assign({}, options.trackingOptions), { ipAddress: true, language: true, platform: true });
226
- return [2 /*return*/, new BrowserConfig(apiKey, options.appVersion, cookieStorage, cookieOptions, options.defaultTracking, deviceId, options.flushIntervalMillis, options.flushMaxRetries, options.flushQueueSize, identityStorage, options.ingestionMetadata, lastEventId, lastEventTime, options.loggerProvider, options.logLevel, options.minIdLength, optOut, options.partnerId, options.plan, options.serverUrl, options.serverZone, sessionId, options.sessionTimeout, options.storageProvider, trackingOptions, options.transport, options.useBatch, userId)];
228
+ return [2 /*return*/, new BrowserConfig(apiKey, options.appVersion, cookieStorage, cookieOptions, options.defaultTracking, deviceId, options.flushIntervalMillis, options.flushMaxRetries, options.flushQueueSize, identityStorage, options.ingestionMetadata, options.instanceName, lastEventId, lastEventTime, options.loggerProvider, options.logLevel, options.minIdLength, optOut, options.partnerId, options.plan, options.serverUrl, options.serverZone, sessionId, options.sessionTimeout, options.storageProvider, trackingOptions, options.transport, options.useBatch, userId)];
227
229
  }
228
230
  });
229
231
  });