@amplitude/analytics-browser 0.5.0 → 0.6.1

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 (95) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/attribution/campaign-parser.d.ts +10 -0
  3. package/lib/cjs/attribution/campaign-parser.d.ts.map +1 -0
  4. package/lib/cjs/attribution/campaign-parser.js +56 -0
  5. package/lib/cjs/attribution/campaign-parser.js.map +1 -0
  6. package/lib/cjs/attribution/campaign-tracker.d.ts +72 -0
  7. package/lib/cjs/attribution/campaign-tracker.d.ts.map +1 -0
  8. package/lib/cjs/attribution/campaign-tracker.js +91 -0
  9. package/lib/cjs/attribution/campaign-tracker.js.map +1 -0
  10. package/lib/cjs/{constants.d.ts → attribution/constants.d.ts} +4 -0
  11. package/lib/cjs/attribution/constants.d.ts.map +1 -0
  12. package/lib/cjs/attribution/constants.js +28 -0
  13. package/lib/cjs/attribution/constants.js.map +1 -0
  14. package/lib/cjs/browser-client.d.ts +4 -4
  15. package/lib/cjs/browser-client.d.ts.map +1 -1
  16. package/lib/cjs/browser-client.js +39 -28
  17. package/lib/cjs/browser-client.js.map +1 -1
  18. package/lib/cjs/config.d.ts +13 -17
  19. package/lib/cjs/config.d.ts.map +1 -1
  20. package/lib/cjs/config.js +90 -45
  21. package/lib/cjs/config.js.map +1 -1
  22. package/lib/cjs/cookie-migration/index.js +2 -2
  23. package/lib/cjs/cookie-migration/index.js.map +1 -1
  24. package/lib/cjs/plugins/context.d.ts +1 -0
  25. package/lib/cjs/plugins/context.d.ts.map +1 -1
  26. package/lib/cjs/plugins/context.js +21 -13
  27. package/lib/cjs/plugins/context.js.map +1 -1
  28. package/lib/cjs/session-manager.d.ts +19 -5
  29. package/lib/cjs/session-manager.d.ts.map +1 -1
  30. package/lib/cjs/session-manager.js +51 -33
  31. package/lib/cjs/session-manager.js.map +1 -1
  32. package/lib/cjs/utils/cookie-name.d.ts +3 -0
  33. package/lib/cjs/utils/cookie-name.d.ts.map +1 -0
  34. package/lib/cjs/utils/cookie-name.js +14 -0
  35. package/lib/cjs/utils/cookie-name.js.map +1 -0
  36. package/lib/cjs/version.d.ts +1 -1
  37. package/lib/cjs/version.js +1 -1
  38. package/lib/cjs/version.js.map +1 -1
  39. package/lib/esm/attribution/campaign-parser.d.ts +10 -0
  40. package/lib/esm/attribution/campaign-parser.d.ts.map +1 -0
  41. package/lib/esm/attribution/campaign-parser.js +54 -0
  42. package/lib/esm/attribution/campaign-parser.js.map +1 -0
  43. package/lib/esm/attribution/campaign-tracker.d.ts +72 -0
  44. package/lib/esm/attribution/campaign-tracker.d.ts.map +1 -0
  45. package/lib/esm/attribution/campaign-tracker.js +89 -0
  46. package/lib/esm/attribution/campaign-tracker.js.map +1 -0
  47. package/lib/esm/{constants.d.ts → attribution/constants.d.ts} +4 -0
  48. package/lib/esm/attribution/constants.d.ts.map +1 -0
  49. package/lib/esm/{constants.js → attribution/constants.js} +13 -0
  50. package/lib/esm/attribution/constants.js.map +1 -0
  51. package/lib/esm/browser-client.d.ts +4 -4
  52. package/lib/esm/browser-client.d.ts.map +1 -1
  53. package/lib/esm/browser-client.js +41 -30
  54. package/lib/esm/browser-client.js.map +1 -1
  55. package/lib/esm/config.d.ts +13 -17
  56. package/lib/esm/config.d.ts.map +1 -1
  57. package/lib/esm/config.js +87 -42
  58. package/lib/esm/config.js.map +1 -1
  59. package/lib/esm/cookie-migration/index.js +1 -1
  60. package/lib/esm/cookie-migration/index.js.map +1 -1
  61. package/lib/esm/plugins/context.d.ts +1 -0
  62. package/lib/esm/plugins/context.d.ts.map +1 -1
  63. package/lib/esm/plugins/context.js +21 -13
  64. package/lib/esm/plugins/context.js.map +1 -1
  65. package/lib/esm/session-manager.d.ts +19 -5
  66. package/lib/esm/session-manager.d.ts.map +1 -1
  67. package/lib/esm/session-manager.js +50 -28
  68. package/lib/esm/session-manager.js.map +1 -1
  69. package/lib/esm/utils/cookie-name.d.ts +3 -0
  70. package/lib/esm/utils/cookie-name.d.ts.map +1 -0
  71. package/lib/esm/utils/cookie-name.js +10 -0
  72. package/lib/esm/utils/cookie-name.js.map +1 -0
  73. package/lib/esm/version.d.ts +1 -1
  74. package/lib/esm/version.js +1 -1
  75. package/lib/esm/version.js.map +1 -1
  76. package/lib/scripts/amplitude-min.js +1 -1
  77. package/lib/scripts/amplitude-min.js.gz +0 -0
  78. package/lib/scripts/amplitude-min.umd.js +1 -1
  79. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  80. package/lib/scripts/amplitude-snippet-instructions.html +1 -1
  81. package/lib/scripts/amplitude-snippet-min.js +1 -1
  82. package/package.json +4 -4
  83. package/lib/cjs/attribution.d.ts +0 -11
  84. package/lib/cjs/attribution.d.ts.map +0 -1
  85. package/lib/cjs/attribution.js +0 -64
  86. package/lib/cjs/attribution.js.map +0 -1
  87. package/lib/cjs/constants.d.ts.map +0 -1
  88. package/lib/cjs/constants.js +0 -15
  89. package/lib/cjs/constants.js.map +0 -1
  90. package/lib/esm/attribution.d.ts +0 -11
  91. package/lib/esm/attribution.d.ts.map +0 -1
  92. package/lib/esm/attribution.js +0 -57
  93. package/lib/esm/attribution.js.map +0 -1
  94. package/lib/esm/constants.d.ts.map +0 -1
  95. package/lib/esm/constants.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { Event, BrowserOptions, BrowserConfig as IBrowserConfig, Storage, TrackingOptions, TransportType, UserSession } from '@amplitude/analytics-types';
1
+ import { Event, BrowserOptions, BrowserConfig as IBrowserConfig, Storage, TrackingOptions, TransportType, UserSession, SessionManager as ISessionManager } from '@amplitude/analytics-types';
2
2
  import { Config, MemoryStorage } from '@amplitude/analytics-core';
3
3
  import { FetchTransport } from './transports/fetch';
4
4
  import { XHRTransport } from './transports/xhr';
@@ -10,10 +10,6 @@ export declare const getDefaultConfig: () => {
10
10
  cookieStorage: MemoryStorage<UserSession>;
11
11
  disableCookies: boolean;
12
12
  domain: string;
13
- includeGclid: boolean;
14
- includeFbclid: boolean;
15
- includeReferrer: boolean;
16
- includeUtm: boolean;
17
13
  sessionTimeout: number;
18
14
  storageProvider: MemoryStorage<Event[]>;
19
15
  trackingOptions: {
@@ -39,19 +35,23 @@ export declare class BrowserConfig extends Config implements IBrowserConfig {
39
35
  cookieSameSite: string;
40
36
  cookieSecure: boolean;
41
37
  cookieStorage: Storage<UserSession>;
42
- deviceId?: string;
43
38
  disableCookies: boolean;
44
39
  domain: string;
45
- includeGclid: boolean;
46
- includeFbclid: boolean;
47
- includeReferrer: boolean;
48
- includeUtm: boolean;
49
40
  partnerId?: string;
50
- sessionId?: number;
51
41
  sessionTimeout: number;
52
42
  trackingOptions: TrackingOptions;
53
- userId?: string;
43
+ sessionManager: ISessionManager;
54
44
  constructor(apiKey: string, userId?: string, options?: BrowserOptions);
45
+ get deviceId(): string | undefined;
46
+ set deviceId(deviceId: string | undefined);
47
+ get userId(): string | undefined;
48
+ set userId(userId: string | undefined);
49
+ get sessionId(): number | undefined;
50
+ set sessionId(sessionId: number | undefined);
51
+ get optOut(): boolean;
52
+ set optOut(optOut: boolean);
53
+ get lastEventTime(): number | undefined;
54
+ set lastEventTime(lastEventTime: number | undefined);
55
55
  }
56
56
  export declare const useBrowserConfig: (apiKey: string, userId?: string | undefined, options?: BrowserOptions | undefined) => IBrowserConfig;
57
57
  export declare const createCookieStorage: (overrides?: BrowserOptions | undefined, baseConfig?: {
@@ -61,10 +61,6 @@ export declare const createCookieStorage: (overrides?: BrowserOptions | undefine
61
61
  cookieStorage: MemoryStorage<UserSession>;
62
62
  disableCookies: boolean;
63
63
  domain: string;
64
- includeGclid: boolean;
65
- includeFbclid: boolean;
66
- includeReferrer: boolean;
67
- includeUtm: boolean;
68
64
  sessionTimeout: number;
69
65
  storageProvider: MemoryStorage<Event[]>;
70
66
  trackingOptions: {
@@ -84,8 +80,8 @@ export declare const createCookieStorage: (overrides?: BrowserOptions | undefine
84
80
  };
85
81
  transportProvider: FetchTransport;
86
82
  }) => Storage<UserSession>;
83
+ export declare const createFlexibleStorage: <T>(options: BrowserOptions) => Storage<T>;
87
84
  export declare const createEventsStorage: (overrides?: BrowserOptions | undefined) => Storage<Event[]>;
88
85
  export declare const createDeviceId: (idFromCookies?: string | undefined, idFromOptions?: string | undefined, idFromQueryParams?: string | undefined) => string;
89
- export declare const createSessionId: (idFromCookies: number | undefined, idFromOptions: number | undefined, lastEventTime: number | undefined, sessionTimeout: number) => number;
90
86
  export declare const createTransport: (transport?: TransportType | undefined) => FetchTransport | XHRTransport | SendBeaconTransport;
91
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,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,aAAa,EAAQ,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,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,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;CA4BtE;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"}
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,EACX,cAAc,IAAI,eAAe,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAQ,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB3B,CAAC;AAEH,qBAAa,aAAc,SAAQ,MAAO,YAAW,cAAc;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,eAAe,CAAC;gBAEpB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;IA8BrE,IAAI,QAAQ,IAIW,MAAM,GAAG,SAAS,CAFxC;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAExC;IAED,IAAI,MAAM,IAIS,MAAM,GAAG,SAAS,CAFpC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAEpC;IAED,IAAI,SAAS,IAIY,MAAM,GAAG,SAAS,CAF1C;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAE1C;IAED,IAAI,MAAM,IAIS,OAAO,CAFzB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAEzB;IAED,IAAI,aAAa,IAIgB,MAAM,GAAG,SAAS,CAFlD;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAElD;CACF;AAED,eAAO,MAAM,gBAAgB,WAAY,MAAM,wEAA8C,cAmB5F,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;0BAO/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAgB,cAAc,eAc/D,CAAC;AAEF,eAAO,MAAM,mBAAmB,8DAS/B,CAAC;AAEF,eAAO,MAAM,cAAc,4HAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,gGAQ3B,CAAC"}
package/lib/cjs/config.js CHANGED
@@ -1,15 +1,16 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.createTransport = exports.createSessionId = exports.createDeviceId = exports.createEventsStorage = exports.createCookieStorage = exports.useBrowserConfig = exports.BrowserConfig = exports.getDefaultConfig = void 0;
2
+ exports.createTransport = exports.createDeviceId = exports.createEventsStorage = exports.createFlexibleStorage = exports.createCookieStorage = exports.useBrowserConfig = exports.BrowserConfig = exports.getDefaultConfig = void 0;
3
3
  var tslib_1 = require("tslib");
4
4
  var analytics_types_1 = require("@amplitude/analytics-types");
5
5
  var analytics_core_1 = require("@amplitude/analytics-core");
6
6
  var cookie_1 = require("./storage/cookie");
7
7
  var fetch_1 = require("./transports/fetch");
8
8
  var local_storage_1 = require("./storage/local-storage");
9
- var session_manager_1 = require("./session-manager");
9
+ var cookie_name_1 = require("./utils/cookie-name");
10
10
  var query_params_1 = require("./utils/query-params");
11
11
  var xhr_1 = require("./transports/xhr");
12
12
  var send_beacon_1 = require("./transports/send-beacon");
13
+ var session_manager_1 = require("./session-manager");
13
14
  var getDefaultConfig = function () { return ({
14
15
  cookieExpiration: 365,
15
16
  cookieSameSite: 'Lax',
@@ -17,10 +18,6 @@ var getDefaultConfig = function () { return ({
17
18
  cookieStorage: new analytics_core_1.MemoryStorage(),
18
19
  disableCookies: false,
19
20
  domain: '',
20
- includeGclid: true,
21
- includeFbclid: true,
22
- includeReferrer: true,
23
- includeUtm: true,
24
21
  sessionTimeout: 30 * 60 * 1000,
25
22
  storageProvider: new analytics_core_1.MemoryStorage(),
26
23
  trackingOptions: {
@@ -44,41 +41,94 @@ exports.getDefaultConfig = getDefaultConfig;
44
41
  var BrowserConfig = /** @class */ (function (_super) {
45
42
  (0, tslib_1.__extends)(BrowserConfig, _super);
46
43
  function BrowserConfig(apiKey, userId, options) {
47
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
44
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
48
45
  var _this = this;
49
46
  var defaultConfig = (0, exports.getDefaultConfig)();
50
- _this = _super.call(this, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { apiKey: apiKey, optOut: Boolean(options === null || options === void 0 ? void 0 : options.optOut), storageProvider: (_a = options === null || options === void 0 ? void 0 : options.storageProvider) !== null && _a !== void 0 ? _a : defaultConfig.storageProvider, transportProvider: (_b = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _b !== void 0 ? _b : defaultConfig.transportProvider })) || this;
47
+ _this = _super.call(this, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { apiKey: apiKey, storageProvider: (_a = options === null || options === void 0 ? void 0 : options.storageProvider) !== null && _a !== void 0 ? _a : defaultConfig.storageProvider, transportProvider: (_b = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _b !== void 0 ? _b : defaultConfig.transportProvider })) || this;
48
+ _this.cookieStorage = (_c = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _c !== void 0 ? _c : defaultConfig.cookieStorage;
49
+ _this.sessionTimeout = (_d = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _d !== void 0 ? _d : defaultConfig.sessionTimeout;
50
+ _this.sessionManager = new session_manager_1.SessionManager(_this.cookieStorage, {
51
+ apiKey: apiKey,
52
+ sessionTimeout: _this.sessionTimeout,
53
+ });
51
54
  _this.appVersion = options === null || options === void 0 ? void 0 : options.appVersion;
52
- _this.cookieExpiration = (_c = options === null || options === void 0 ? void 0 : options.cookieExpiration) !== null && _c !== void 0 ? _c : defaultConfig.cookieExpiration;
53
- _this.cookieSameSite = (_d = options === null || options === void 0 ? void 0 : options.cookieSameSite) !== null && _d !== void 0 ? _d : defaultConfig.cookieSameSite;
54
- _this.cookieSecure = (_e = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _e !== void 0 ? _e : defaultConfig.cookieSecure;
55
- _this.cookieStorage = (_f = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _f !== void 0 ? _f : defaultConfig.cookieStorage;
55
+ _this.cookieExpiration = (_e = options === null || options === void 0 ? void 0 : options.cookieExpiration) !== null && _e !== void 0 ? _e : defaultConfig.cookieExpiration;
56
+ _this.cookieSameSite = (_f = options === null || options === void 0 ? void 0 : options.cookieSameSite) !== null && _f !== void 0 ? _f : defaultConfig.cookieSameSite;
57
+ _this.cookieSecure = (_g = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _g !== void 0 ? _g : defaultConfig.cookieSecure;
56
58
  _this.deviceId = options === null || options === void 0 ? void 0 : options.deviceId;
57
- _this.disableCookies = (_g = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _g !== void 0 ? _g : defaultConfig.disableCookies;
58
- _this.domain = (_h = options === null || options === void 0 ? void 0 : options.domain) !== null && _h !== void 0 ? _h : defaultConfig.domain;
59
- _this.includeGclid = (_j = options === null || options === void 0 ? void 0 : options.includeGclid) !== null && _j !== void 0 ? _j : defaultConfig.includeGclid;
60
- _this.includeFbclid = (_k = options === null || options === void 0 ? void 0 : options.includeFbclid) !== null && _k !== void 0 ? _k : defaultConfig.includeFbclid;
61
- _this.includeReferrer = (_l = options === null || options === void 0 ? void 0 : options.includeReferrer) !== null && _l !== void 0 ? _l : defaultConfig.includeReferrer;
62
- _this.includeUtm = (_m = options === null || options === void 0 ? void 0 : options.includeUtm) !== null && _m !== void 0 ? _m : defaultConfig.includeUtm;
59
+ _this.disableCookies = (_h = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _h !== void 0 ? _h : defaultConfig.disableCookies;
60
+ _this.domain = (_j = options === null || options === void 0 ? void 0 : options.domain) !== null && _j !== void 0 ? _j : defaultConfig.domain;
61
+ _this.lastEventTime = (_k = _this.lastEventTime) !== null && _k !== void 0 ? _k : options === null || options === void 0 ? void 0 : options.lastEventTime;
62
+ _this.optOut = Boolean(options === null || options === void 0 ? void 0 : options.optOut);
63
63
  _this.partnerId = options === null || options === void 0 ? void 0 : options.partnerId;
64
64
  _this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;
65
- _this.sessionTimeout = (_o = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _o !== void 0 ? _o : defaultConfig.sessionTimeout;
66
- _this.trackingOptions = (_p = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _p !== void 0 ? _p : defaultConfig.trackingOptions;
65
+ _this.trackingOptions = (_l = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _l !== void 0 ? _l : defaultConfig.trackingOptions;
67
66
  _this.userId = userId;
68
67
  return _this;
69
68
  }
69
+ Object.defineProperty(BrowserConfig.prototype, "deviceId", {
70
+ get: function () {
71
+ return this.sessionManager.getDeviceId();
72
+ },
73
+ set: function (deviceId) {
74
+ this.sessionManager.setDeviceId(deviceId);
75
+ },
76
+ enumerable: false,
77
+ configurable: true
78
+ });
79
+ Object.defineProperty(BrowserConfig.prototype, "userId", {
80
+ get: function () {
81
+ return this.sessionManager.getUserId();
82
+ },
83
+ set: function (userId) {
84
+ this.sessionManager.setUserId(userId);
85
+ },
86
+ enumerable: false,
87
+ configurable: true
88
+ });
89
+ Object.defineProperty(BrowserConfig.prototype, "sessionId", {
90
+ get: function () {
91
+ return this.sessionManager.getSessionId();
92
+ },
93
+ set: function (sessionId) {
94
+ this.sessionManager.setSessionId(sessionId);
95
+ },
96
+ enumerable: false,
97
+ configurable: true
98
+ });
99
+ Object.defineProperty(BrowserConfig.prototype, "optOut", {
100
+ get: function () {
101
+ return this.sessionManager.getOptOut();
102
+ },
103
+ set: function (optOut) {
104
+ var _a;
105
+ (_a = this.sessionManager) === null || _a === void 0 ? void 0 : _a.setOptOut(Boolean(optOut));
106
+ },
107
+ enumerable: false,
108
+ configurable: true
109
+ });
110
+ Object.defineProperty(BrowserConfig.prototype, "lastEventTime", {
111
+ get: function () {
112
+ return this.sessionManager.getLastEventTime();
113
+ },
114
+ set: function (lastEventTime) {
115
+ this.sessionManager.setLastEventTime(lastEventTime);
116
+ },
117
+ enumerable: false,
118
+ configurable: true
119
+ });
70
120
  return BrowserConfig;
71
121
  }(analytics_core_1.Config));
72
122
  exports.BrowserConfig = BrowserConfig;
73
123
  var useBrowserConfig = function (apiKey, userId, options) {
74
- var _a, _b, _c;
124
+ var _a, _b, _c, _d, _e;
75
125
  var defaultConfig = (0, exports.getDefaultConfig)();
76
126
  var cookieStorage = (0, exports.createCookieStorage)(options);
77
- var cookieName = (0, session_manager_1.getCookieName)(apiKey);
127
+ var cookieName = (0, cookie_name_1.getCookieName)(apiKey);
78
128
  var cookies = cookieStorage.get(cookieName);
79
129
  var queryParams = (0, query_params_1.getQueryParams)();
80
130
  var sessionTimeout = (_a = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _a !== void 0 ? _a : defaultConfig.sessionTimeout;
81
- return new BrowserConfig(apiKey, userId !== null && userId !== void 0 ? userId : cookies === null || cookies === void 0 ? void 0 : cookies.userId, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { cookieStorage: cookieStorage, sessionTimeout: sessionTimeout, deviceId: (0, exports.createDeviceId)(cookies === null || cookies === void 0 ? void 0 : cookies.deviceId, options === null || options === void 0 ? void 0 : options.deviceId, queryParams.deviceId), optOut: (_b = options === null || options === void 0 ? void 0 : options.optOut) !== null && _b !== void 0 ? _b : Boolean(cookies === null || cookies === void 0 ? void 0 : cookies.optOut), sessionId: (0, exports.createSessionId)(cookies === null || cookies === void 0 ? void 0 : cookies.sessionId, options === null || options === void 0 ? void 0 : options.sessionId, cookies === null || cookies === void 0 ? void 0 : cookies.lastEventTime, sessionTimeout), storageProvider: (0, exports.createEventsStorage)(options), trackingOptions: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, defaultConfig.trackingOptions), options === null || options === void 0 ? void 0 : options.trackingOptions), transportProvider: (_c = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _c !== void 0 ? _c : (0, exports.createTransport)(options === null || options === void 0 ? void 0 : options.transport) }));
131
+ return new BrowserConfig(apiKey, userId !== null && userId !== void 0 ? userId : cookies === null || cookies === void 0 ? void 0 : cookies.userId, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { cookieStorage: cookieStorage, sessionTimeout: sessionTimeout, deviceId: (0, exports.createDeviceId)(cookies === null || cookies === void 0 ? void 0 : cookies.deviceId, options === null || options === void 0 ? void 0 : options.deviceId, queryParams.deviceId), optOut: (_b = options === null || options === void 0 ? void 0 : options.optOut) !== null && _b !== void 0 ? _b : Boolean(cookies === null || cookies === void 0 ? void 0 : cookies.optOut), sessionId: (_d = (_c = cookieStorage.get(cookieName)) === null || _c === void 0 ? void 0 : _c.sessionId) !== null && _d !== void 0 ? _d : options === null || options === void 0 ? void 0 : options.sessionId, storageProvider: (0, exports.createEventsStorage)(options), trackingOptions: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, defaultConfig.trackingOptions), options === null || options === void 0 ? void 0 : options.trackingOptions), transportProvider: (_e = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _e !== void 0 ? _e : (0, exports.createTransport)(options === null || options === void 0 ? void 0 : options.transport) }));
82
132
  };
83
133
  exports.useBrowserConfig = useBrowserConfig;
84
134
  var createCookieStorage = function (overrides, baseConfig) {
@@ -86,22 +136,27 @@ var createCookieStorage = function (overrides, baseConfig) {
86
136
  var options = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, baseConfig), overrides);
87
137
  var cookieStorage = overrides === null || overrides === void 0 ? void 0 : overrides.cookieStorage;
88
138
  if (!cookieStorage || !cookieStorage.isEnabled()) {
89
- cookieStorage = new cookie_1.CookieStorage({
90
- domain: options.domain,
91
- expirationDays: options.cookieExpiration,
92
- sameSite: options.cookieSameSite,
93
- secure: options.cookieSecure,
94
- });
95
- if (options.disableCookies || !cookieStorage.isEnabled()) {
96
- cookieStorage = new local_storage_1.LocalStorage();
97
- if (!cookieStorage.isEnabled()) {
98
- cookieStorage = new analytics_core_1.MemoryStorage();
99
- }
100
- }
139
+ return (0, exports.createFlexibleStorage)(options);
101
140
  }
102
141
  return cookieStorage;
103
142
  };
104
143
  exports.createCookieStorage = createCookieStorage;
144
+ var createFlexibleStorage = function (options) {
145
+ var storage = new cookie_1.CookieStorage({
146
+ domain: options.domain,
147
+ expirationDays: options.cookieExpiration,
148
+ sameSite: options.cookieSameSite,
149
+ secure: options.cookieSecure,
150
+ });
151
+ if (options.disableCookies || !storage.isEnabled()) {
152
+ storage = new local_storage_1.LocalStorage();
153
+ if (!storage.isEnabled()) {
154
+ storage = new analytics_core_1.MemoryStorage();
155
+ }
156
+ }
157
+ return storage;
158
+ };
159
+ exports.createFlexibleStorage = createFlexibleStorage;
105
160
  var createEventsStorage = function (overrides) {
106
161
  var eventsStorage = overrides === null || overrides === void 0 ? void 0 : overrides.storageProvider;
107
162
  if (!eventsStorage || !eventsStorage.isEnabled()) {
@@ -117,16 +172,6 @@ var createDeviceId = function (idFromCookies, idFromOptions, idFromQueryParams)
117
172
  return idFromOptions || idFromQueryParams || idFromCookies || (0, analytics_core_1.UUID)();
118
173
  };
119
174
  exports.createDeviceId = createDeviceId;
120
- var createSessionId = function (idFromCookies, idFromOptions, lastEventTime, sessionTimeout) {
121
- if (idFromCookies === void 0) { idFromCookies = 0; }
122
- if (idFromOptions === void 0) { idFromOptions = 0; }
123
- if (lastEventTime === void 0) { lastEventTime = 0; }
124
- if (idFromCookies && Date.now() - lastEventTime < sessionTimeout) {
125
- return idFromCookies;
126
- }
127
- return idFromOptions ? idFromOptions : Date.now();
128
- };
129
- exports.createSessionId = createSessionId;
130
175
  var createTransport = function (transport) {
131
176
  if (transport === analytics_types_1.TransportType.XHR) {
132
177
  return new xhr_1.XHRTransport();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\n\nimport { CookieStorage } from './storage/cookie';\nimport { FetchTransport } from './transports/fetch';\nimport { LocalStorage } from './storage/local-storage';\nimport { getCookieName } from './session-manager';\nimport { getQueryParams } from './utils/query-params';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\n\nexport const getDefaultConfig = () => ({\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage: new MemoryStorage<UserSession>(),\n disableCookies: false,\n domain: '',\n includeGclid: true,\n includeFbclid: true,\n includeReferrer: true,\n includeUtm: true,\n sessionTimeout: 30 * 60 * 1000,\n storageProvider: new MemoryStorage<Event[]>(),\n trackingOptions: {\n city: true,\n country: true,\n carrier: true,\n deviceManufacturer: true,\n deviceModel: true,\n dma: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n region: true,\n versionName: true,\n },\n transportProvider: new FetchTransport(),\n});\n\nexport class BrowserConfig extends Config implements IBrowserConfig {\n appVersion?: string;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieStorage: Storage<UserSession>;\n deviceId?: string;\n disableCookies: boolean;\n domain: string;\n includeGclid: boolean;\n includeFbclid: boolean;\n includeReferrer: boolean;\n includeUtm: boolean;\n partnerId?: string;\n sessionId?: number;\n sessionTimeout: number;\n trackingOptions: TrackingOptions;\n userId?: string;\n\n constructor(apiKey: string, userId?: string, options?: BrowserOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n ...options,\n apiKey,\n optOut: Boolean(options?.optOut),\n storageProvider: options?.storageProvider ?? defaultConfig.storageProvider,\n transportProvider: options?.transportProvider ?? defaultConfig.transportProvider,\n });\n\n this.appVersion = options?.appVersion;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.deviceId = options?.deviceId;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.includeGclid = options?.includeGclid ?? defaultConfig.includeGclid;\n this.includeFbclid = options?.includeFbclid ?? defaultConfig.includeFbclid;\n this.includeReferrer = options?.includeReferrer ?? defaultConfig.includeReferrer;\n this.includeUtm = options?.includeUtm ?? defaultConfig.includeUtm;\n this.partnerId = options?.partnerId;\n this.sessionId = options?.sessionId;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n this.userId = userId;\n }\n}\n\nexport const useBrowserConfig = (apiKey: string, userId?: string, options?: BrowserOptions): IBrowserConfig => {\n const defaultConfig = getDefaultConfig();\n const cookieStorage = createCookieStorage(options);\n const cookieName = getCookieName(apiKey);\n const cookies = cookieStorage.get(cookieName);\n const queryParams = getQueryParams();\n const sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n\n return new BrowserConfig(apiKey, userId ?? cookies?.userId, {\n ...options,\n cookieStorage,\n sessionTimeout,\n deviceId: createDeviceId(cookies?.deviceId, options?.deviceId, queryParams.deviceId),\n optOut: options?.optOut ?? Boolean(cookies?.optOut),\n sessionId: createSessionId(cookies?.sessionId, options?.sessionId, cookies?.lastEventTime, sessionTimeout),\n storageProvider: createEventsStorage(options),\n trackingOptions: { ...defaultConfig.trackingOptions, ...options?.trackingOptions },\n transportProvider: options?.transportProvider ?? createTransport(options?.transport),\n });\n};\n\nexport const createCookieStorage = (overrides?: BrowserOptions, baseConfig = getDefaultConfig()) => {\n const options = { ...baseConfig, ...overrides };\n let cookieStorage = overrides?.cookieStorage;\n if (!cookieStorage || !cookieStorage.isEnabled()) {\n cookieStorage = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n if (options.disableCookies || !cookieStorage.isEnabled()) {\n cookieStorage = new LocalStorage();\n if (!cookieStorage.isEnabled()) {\n cookieStorage = new MemoryStorage();\n }\n }\n }\n return cookieStorage;\n};\n\nexport const createEventsStorage = (overrides?: BrowserOptions) => {\n let eventsStorage = overrides?.storageProvider;\n if (!eventsStorage || !eventsStorage.isEnabled()) {\n eventsStorage = new LocalStorage();\n if (!eventsStorage.isEnabled()) {\n eventsStorage = new MemoryStorage();\n }\n }\n return eventsStorage;\n};\n\nexport const createDeviceId = (idFromCookies?: string, idFromOptions?: string, idFromQueryParams?: string) => {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\n\nexport const createSessionId = (idFromCookies = 0, idFromOptions = 0, lastEventTime = 0, sessionTimeout: number) => {\n if (idFromCookies && Date.now() - lastEventTime < sessionTimeout) {\n return idFromCookies;\n }\n return idFromOptions ? idFromOptions : Date.now();\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n SessionManager as ISessionManager,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\n\nimport { CookieStorage } from './storage/cookie';\nimport { FetchTransport } from './transports/fetch';\nimport { LocalStorage } from './storage/local-storage';\nimport { getCookieName } from './utils/cookie-name';\nimport { getQueryParams } from './utils/query-params';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { SessionManager } from './session-manager';\n\nexport const getDefaultConfig = () => ({\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage: new MemoryStorage<UserSession>(),\n disableCookies: false,\n domain: '',\n sessionTimeout: 30 * 60 * 1000,\n storageProvider: new MemoryStorage<Event[]>(),\n trackingOptions: {\n city: true,\n country: true,\n carrier: true,\n deviceManufacturer: true,\n deviceModel: true,\n dma: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n region: true,\n versionName: true,\n },\n transportProvider: new FetchTransport(),\n});\n\nexport class BrowserConfig extends Config implements IBrowserConfig {\n appVersion?: string;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieStorage: Storage<UserSession>;\n disableCookies: boolean;\n domain: string;\n partnerId?: string;\n sessionTimeout: number;\n trackingOptions: TrackingOptions;\n sessionManager: ISessionManager;\n\n constructor(apiKey: string, userId?: string, options?: BrowserOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n ...options,\n apiKey,\n storageProvider: options?.storageProvider ?? defaultConfig.storageProvider,\n transportProvider: options?.transportProvider ?? defaultConfig.transportProvider,\n });\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n this.sessionManager = new SessionManager(this.cookieStorage, {\n apiKey,\n sessionTimeout: this.sessionTimeout,\n });\n\n this.appVersion = options?.appVersion;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.deviceId = options?.deviceId;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.lastEventTime = this.lastEventTime ?? options?.lastEventTime;\n this.optOut = Boolean(options?.optOut);\n this.partnerId = options?.partnerId;\n this.sessionId = options?.sessionId;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n this.userId = userId;\n }\n\n get deviceId() {\n return this.sessionManager.getDeviceId();\n }\n\n set deviceId(deviceId: string | undefined) {\n this.sessionManager.setDeviceId(deviceId);\n }\n\n get userId() {\n return this.sessionManager.getUserId();\n }\n\n set userId(userId: string | undefined) {\n this.sessionManager.setUserId(userId);\n }\n\n get sessionId() {\n return this.sessionManager.getSessionId();\n }\n\n set sessionId(sessionId: number | undefined) {\n this.sessionManager.setSessionId(sessionId);\n }\n\n get optOut() {\n return this.sessionManager.getOptOut();\n }\n\n set optOut(optOut: boolean) {\n this.sessionManager?.setOptOut(Boolean(optOut));\n }\n\n get lastEventTime() {\n return this.sessionManager.getLastEventTime();\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n this.sessionManager.setLastEventTime(lastEventTime);\n }\n}\n\nexport const useBrowserConfig = (apiKey: string, userId?: string, options?: BrowserOptions): IBrowserConfig => {\n const defaultConfig = getDefaultConfig();\n const cookieStorage = createCookieStorage(options);\n const cookieName = getCookieName(apiKey);\n const cookies = cookieStorage.get(cookieName);\n const queryParams = getQueryParams();\n const sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n\n return new BrowserConfig(apiKey, userId ?? cookies?.userId, {\n ...options,\n cookieStorage,\n sessionTimeout,\n deviceId: createDeviceId(cookies?.deviceId, options?.deviceId, queryParams.deviceId),\n optOut: options?.optOut ?? Boolean(cookies?.optOut),\n sessionId: cookieStorage.get(cookieName)?.sessionId ?? options?.sessionId,\n storageProvider: createEventsStorage(options),\n trackingOptions: { ...defaultConfig.trackingOptions, ...options?.trackingOptions },\n transportProvider: options?.transportProvider ?? createTransport(options?.transport),\n });\n};\n\nexport const createCookieStorage = (overrides?: BrowserOptions, baseConfig = getDefaultConfig()) => {\n const options = { ...baseConfig, ...overrides };\n const cookieStorage = overrides?.cookieStorage;\n if (!cookieStorage || !cookieStorage.isEnabled()) {\n return createFlexibleStorage<UserSession>(options);\n }\n return cookieStorage;\n};\n\nexport const createFlexibleStorage = <T>(options: BrowserOptions): Storage<T> => {\n let storage: Storage<T> = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n if (options.disableCookies || !storage.isEnabled()) {\n storage = new LocalStorage();\n if (!storage.isEnabled()) {\n storage = new MemoryStorage();\n }\n }\n return storage;\n};\n\nexport const createEventsStorage = (overrides?: BrowserOptions) => {\n let eventsStorage = overrides?.storageProvider;\n if (!eventsStorage || !eventsStorage.isEnabled()) {\n eventsStorage = new LocalStorage();\n if (!eventsStorage.isEnabled()) {\n eventsStorage = new MemoryStorage();\n }\n }\n return eventsStorage;\n};\n\nexport const createDeviceId = (idFromCookies?: string, idFromOptions?: string, idFromQueryParams?: string) => {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.decode = exports.parseTime = exports.parseOldCookies = void 0;
3
3
  var tslib_1 = require("tslib");
4
- var session_manager_1 = require("../session-manager");
4
+ var cookie_name_1 = require("../utils/cookie-name");
5
5
  var local_storage_1 = require("../storage/local-storage");
6
6
  var cookie_1 = require("../storage/cookie");
7
7
  var parseOldCookies = function (apiKey, options) {
@@ -14,7 +14,7 @@ var parseOldCookies = function (apiKey, options) {
14
14
  optOut: false,
15
15
  };
16
16
  }
17
- var oldCookieName = (0, session_manager_1.getOldCookieName)(apiKey);
17
+ var oldCookieName = (0, cookie_name_1.getOldCookieName)(apiKey);
18
18
  var cookies = storage.getRaw(oldCookieName);
19
19
  if (!cookies) {
20
20
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cookie-migration/index.ts"],"names":[],"mappings":";;;AACA,sDAAsD;AACtD,0DAAwD;AACxD,4CAAkD;AAE3C,IAAM,eAAe,GAAG,UAAC,MAAc,EAAE,OAAwB;IACtE,IAAI,OAAO,GAAoB,IAAI,sBAAa,EAAU,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAA,EAAE;QACnD,OAAO,GAAG,IAAI,4BAAY,EAAU,CAAC;KACtC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE;QACxB,OAAO;YACL,MAAM,EAAE,KAAK;SACd,CAAC;KACH;IAED,IAAM,aAAa,GAAG,IAAA,kCAAgB,EAAC,MAAM,CAAC,CAAC;IAC/C,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;YACL,MAAM,EAAE,KAAK;SACd,CAAC;KACH;IAED,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxB,IAAA,KAAA,oBAAuD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAAxE,QAAQ,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,SAAS,QAAA,EAAE,aAAa,QAAsB,CAAC;IAChF,OAAO;QACL,QAAQ,UAAA;QACR,MAAM,EAAE,IAAA,cAAM,EAAC,MAAM,CAAC;QACtB,SAAS,EAAE,IAAA,iBAAS,EAAC,SAAS,CAAC;QAC/B,aAAa,EAAE,IAAA,iBAAS,EAAC,aAAa,CAAC;QACvC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;KACxB,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,eAAe,mBA6B1B;AAEK,IAAM,SAAS,GAAG,UAAC,GAAW;IACnC,IAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAClB,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB;AAEK,IAAM,MAAM,GAAG,UAAC,KAAc;IACnC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;QAC9B,OAAO,SAAS,CAAC;KAClB;IACD,IAAI;QACF,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAChD;IAAC,WAAM;QACN,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AATW,QAAA,MAAM,UASjB","sourcesContent":["import { BrowserOptions, Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '../session-manager';\nimport { LocalStorage } from '../storage/local-storage';\nimport { CookieStorage } from '../storage/cookie';\n\nexport const parseOldCookies = (apiKey: string, options?: BrowserOptions): UserSession => {\n let storage: Storage<string> = new CookieStorage<string>();\n if (!storage.isEnabled() || options?.disableCookies) {\n storage = new LocalStorage<string>();\n }\n if (!storage.isEnabled()) {\n return {\n optOut: false,\n };\n }\n\n const oldCookieName = getOldCookieName(apiKey);\n const cookies = storage.getRaw(oldCookieName);\n\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n\n storage.remove(oldCookieName);\n const [deviceId, userId, optOut, sessionId, lastEventTime] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cookie-migration/index.ts"],"names":[],"mappings":";;;AACA,oDAAwD;AACxD,0DAAwD;AACxD,4CAAkD;AAE3C,IAAM,eAAe,GAAG,UAAC,MAAc,EAAE,OAAwB;IACtE,IAAI,OAAO,GAAoB,IAAI,sBAAa,EAAU,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAA,EAAE;QACnD,OAAO,GAAG,IAAI,4BAAY,EAAU,CAAC;KACtC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE;QACxB,OAAO;YACL,MAAM,EAAE,KAAK;SACd,CAAC;KACH;IAED,IAAM,aAAa,GAAG,IAAA,8BAAgB,EAAC,MAAM,CAAC,CAAC;IAC/C,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;YACL,MAAM,EAAE,KAAK;SACd,CAAC;KACH;IAED,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxB,IAAA,KAAA,oBAAuD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAAxE,QAAQ,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,SAAS,QAAA,EAAE,aAAa,QAAsB,CAAC;IAChF,OAAO;QACL,QAAQ,UAAA;QACR,MAAM,EAAE,IAAA,cAAM,EAAC,MAAM,CAAC;QACtB,SAAS,EAAE,IAAA,iBAAS,EAAC,SAAS,CAAC;QAC/B,aAAa,EAAE,IAAA,iBAAS,EAAC,aAAa,CAAC;QACvC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;KACxB,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,eAAe,mBA6B1B;AAEK,IAAM,SAAS,GAAG,UAAC,GAAW;IACnC,IAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAClB,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB;AAEK,IAAM,MAAM,GAAG,UAAC,KAAc;IACnC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;QAC9B,OAAO,SAAS,CAAC;KAClB;IACD,IAAI;QACF,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAChD;IAAC,WAAM;QACN,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AATW,QAAA,MAAM,UASjB","sourcesContent":["import { BrowserOptions, Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '../utils/cookie-name';\nimport { LocalStorage } from '../storage/local-storage';\nimport { CookieStorage } from '../storage/cookie';\n\nexport const parseOldCookies = (apiKey: string, options?: BrowserOptions): UserSession => {\n let storage: Storage<string> = new CookieStorage<string>();\n if (!storage.isEnabled() || options?.disableCookies) {\n storage = new LocalStorage<string>();\n }\n if (!storage.isEnabled()) {\n return {\n optOut: false,\n };\n }\n\n const oldCookieName = getOldCookieName(apiKey);\n const cookies = storage.getRaw(oldCookieName);\n\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n\n storage.remove(oldCookieName);\n const [deviceId, userId, optOut, sessionId, lastEventTime] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n"]}
@@ -10,5 +10,6 @@ export declare class Context implements BeforePlugin {
10
10
  constructor();
11
11
  setup(config: BrowserConfig): Promise<undefined>;
12
12
  execute(context: Event): Promise<Event>;
13
+ isSessionValid(): boolean;
13
14
  }
14
15
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAS/C,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,SAAa;IACjB,IAAI,oBAA8B;IAKlC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,SAAK;IACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC3B,OAAO,SAA6B;;IAWpC,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAKhD,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;CAiCxC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAQ/C,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,SAAa;IACjB,IAAI,oBAA8B;IAKlC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,SAAK;IACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC3B,OAAO,SAA6B;;IAWpC,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAMhD,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAuCvC,cAAc;CAKf"}
@@ -6,7 +6,6 @@ var ua_parser_js_1 = (0, tslib_1.__importDefault)(require("@amplitude/ua-parser-
6
6
  var analytics_core_1 = require("@amplitude/analytics-core");
7
7
  var language_1 = require("../utils/language");
8
8
  var version_1 = require("../version");
9
- var session_manager_1 = require("../session-manager");
10
9
  var BROWSER_PLATFORM = 'Web';
11
10
  var IP_ADDRESS = '$remote';
12
11
  var Context = /** @class */ (function () {
@@ -27,18 +26,27 @@ var Context = /** @class */ (function () {
27
26
  return Promise.resolve(undefined);
28
27
  };
29
28
  Context.prototype.execute = function (context) {
30
- var _this = this;
31
- return new Promise(function (resolve) {
32
- var time = new Date().getTime();
33
- var osName = _this.uaResult.browser.name;
34
- var osVersion = _this.uaResult.browser.version;
35
- var deviceModel = _this.uaResult.device.model || _this.uaResult.os.name;
36
- var deviceVendor = _this.uaResult.device.vendor;
37
- (0, session_manager_1.checkSessionExpiry)(_this.config);
38
- (0, session_manager_1.updateCookies)(_this.config, time);
39
- var contextEvent = (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({ user_id: _this.config.userId, device_id: _this.config.deviceId, session_id: _this.config.sessionId, time: time }, (_this.config.appVersion && { app_version: _this.config.appVersion })), (_this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM })), (_this.config.trackingOptions.osName && { os_name: osName })), (_this.config.trackingOptions.osVersion && { os_version: osVersion })), (_this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor })), (_this.config.trackingOptions.deviceModel && { device_model: deviceModel })), (_this.config.trackingOptions.language && { language: (0, language_1.getLanguage)() })), (_this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS })), { insert_id: (0, analytics_core_1.UUID)(), partner_id: _this.config.partnerId, plan: _this.config.plan }), context), { event_id: _this.eventId++, library: _this.library });
40
- return resolve(contextEvent);
41
- });
29
+ /**
30
+ * Manages user session triggered by new events
31
+ */
32
+ if (!this.isSessionValid()) {
33
+ // Creates new session
34
+ this.config.sessionId = Date.now();
35
+ } // else use previously creates session
36
+ // Updates last event time to extend time-based session
37
+ this.config.lastEventTime = Date.now();
38
+ var time = new Date().getTime();
39
+ var osName = this.uaResult.browser.name;
40
+ var osVersion = this.uaResult.browser.version;
41
+ var deviceModel = this.uaResult.device.model || this.uaResult.os.name;
42
+ var deviceVendor = this.uaResult.device.vendor;
43
+ var event = (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({ user_id: this.config.userId, device_id: this.config.deviceId, session_id: this.config.sessionId, time: time }, (this.config.appVersion && { app_version: this.config.appVersion })), (this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM })), (this.config.trackingOptions.osName && { os_name: osName })), (this.config.trackingOptions.osVersion && { os_version: osVersion })), (this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor })), (this.config.trackingOptions.deviceModel && { device_model: deviceModel })), (this.config.trackingOptions.language && { language: (0, language_1.getLanguage)() })), (this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS })), { insert_id: (0, analytics_core_1.UUID)(), partner_id: this.config.partnerId, plan: this.config.plan }), context), { event_id: this.eventId++, library: this.library });
44
+ return Promise.resolve(event);
45
+ };
46
+ Context.prototype.isSessionValid = function () {
47
+ var lastEventTime = this.config.lastEventTime || Date.now();
48
+ var timeSinceLastEvent = Date.now() - lastEventTime;
49
+ return timeSinceLastEvent < this.config.sessionTimeout;
42
50
  };
43
51
  return Context;
44
52
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { BeforePlugin, BrowserConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '../utils/language';\nimport { VERSION } from '../version';\nimport { checkSessionExpiry, updateCookies } from '../session-manager';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\n\nexport class Context implements BeforePlugin {\n name = 'context';\n type = PluginType.BEFORE as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n eventId = 0;\n uaResult: UAParser.IResult;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n let agent: string | undefined;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n\n setup(config: BrowserConfig): Promise<undefined> {\n this.config = config;\n return Promise.resolve(undefined);\n }\n\n execute(context: Event): Promise<Event> {\n return new Promise((resolve) => {\n const time = new Date().getTime();\n const osName = this.uaResult.browser.name;\n const osVersion = this.uaResult.browser.version;\n const deviceModel = this.uaResult.device.model || this.uaResult.os.name;\n const deviceVendor = this.uaResult.device.vendor;\n\n checkSessionExpiry(this.config);\n updateCookies(this.config, time);\n const contextEvent: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return resolve(contextEvent);\n });\n }\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { BeforePlugin, BrowserConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '../utils/language';\nimport { VERSION } from '../version';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\n\nexport class Context implements BeforePlugin {\n name = 'context';\n type = PluginType.BEFORE as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n eventId = 0;\n uaResult: UAParser.IResult;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n let agent: string | undefined;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n\n setup(config: BrowserConfig): Promise<undefined> {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n execute(context: Event): Promise<Event> {\n /**\n * Manages user session triggered by new events\n */\n if (!this.isSessionValid()) {\n // Creates new session\n this.config.sessionId = Date.now();\n } // else use previously creates session\n // Updates last event time to extend time-based session\n this.config.lastEventTime = Date.now();\n const time = new Date().getTime();\n const osName = this.uaResult.browser.name;\n const osVersion = this.uaResult.browser.version;\n const deviceModel = this.uaResult.device.model || this.uaResult.os.name;\n const deviceVendor = this.uaResult.device.vendor;\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n\n return Promise.resolve(event);\n }\n\n isSessionValid() {\n const lastEventTime = this.config.lastEventTime || Date.now();\n const timeSinceLastEvent = Date.now() - lastEventTime;\n return timeSinceLastEvent < this.config.sessionTimeout;\n }\n}\n"]}
@@ -1,6 +1,20 @@
1
- import { BrowserConfig } from '@amplitude/analytics-types';
2
- export declare const updateCookies: (config: BrowserConfig, lastEventTime?: number | undefined) => void;
3
- export declare const checkSessionExpiry: (config: BrowserConfig) => void;
4
- export declare const getCookieName: (apiKey: string, limit?: number) => string;
5
- export declare const getOldCookieName: (apiKey: string) => string;
1
+ import { UserSession, Storage, SessionManager as ISessionManager, SessionManagerOptions } from '@amplitude/analytics-types';
2
+ export declare class SessionManager implements ISessionManager {
3
+ private storage;
4
+ storageKey: string;
5
+ sessionTimeout: number;
6
+ cache: UserSession;
7
+ constructor(storage: Storage<UserSession>, options: SessionManagerOptions);
8
+ setSession(session: Partial<UserSession>): void;
9
+ getSessionId(): number | undefined;
10
+ setSessionId(sessionId: number): void;
11
+ getDeviceId(): string | undefined;
12
+ setDeviceId(deviceId: string): void;
13
+ getUserId(): string | undefined;
14
+ setUserId(userId: string): void;
15
+ getLastEventTime(): number | undefined;
16
+ setLastEventTime(lastEventTime: number): void;
17
+ getOptOut(): boolean;
18
+ setOptOut(optOut: boolean): void;
19
+ }
6
20
  //# sourceMappingURL=session-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,eAAO,MAAM,aAAa,WAAY,aAAa,6CASlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAAY,aAAa,SAQvD,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,MAAM,2BAE3C,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,MAAM,WAE9C,CAAC"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,cAAc,IAAI,eAAe,EACjC,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAGpC,qBAAa,cAAe,YAAW,eAAe;IAKxC,OAAO,CAAC,OAAO;IAJ3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;gBAEC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,qBAAqB;IAQjF,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC;IAKxC,YAAY;IAKZ,YAAY,CAAC,SAAS,EAAE,MAAM;IAI9B,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,gBAAgB;IAIhB,gBAAgB,CAAC,aAAa,EAAE,MAAM;IAItC,SAAS,IAAI,OAAO;IAIpB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;CAGjC"}
@@ -1,36 +1,54 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.getOldCookieName = exports.getCookieName = exports.checkSessionExpiry = exports.updateCookies = void 0;
3
- var analytics_core_1 = require("@amplitude/analytics-core");
4
- var updateCookies = function (config, lastEventTime) {
5
- var _a;
6
- var cookieName = (0, exports.getCookieName)(config.apiKey);
7
- config.cookieStorage.set(cookieName, {
8
- userId: config.userId,
9
- deviceId: config.deviceId,
10
- sessionId: config.sessionId,
11
- lastEventTime: lastEventTime !== null && lastEventTime !== void 0 ? lastEventTime : (_a = config.cookieStorage.get(cookieName)) === null || _a === void 0 ? void 0 : _a.lastEventTime,
12
- optOut: Boolean(config.optOut),
13
- });
14
- };
15
- exports.updateCookies = updateCookies;
16
- var checkSessionExpiry = function (config) {
17
- var _a;
18
- var cookieName = (0, exports.getCookieName)(config.apiKey);
19
- var lastEventTime = (_a = config.cookieStorage.get(cookieName)) === null || _a === void 0 ? void 0 : _a.lastEventTime;
20
- var now = Date.now();
21
- if (lastEventTime && now - lastEventTime >= config.sessionTimeout) {
22
- config.sessionId = now;
23
- (0, exports.updateCookies)(config);
2
+ exports.SessionManager = void 0;
3
+ var tslib_1 = require("tslib");
4
+ var cookie_name_1 = require("./utils/cookie-name");
5
+ var SessionManager = /** @class */ (function () {
6
+ function SessionManager(storage, options) {
7
+ var _a;
8
+ this.storage = storage;
9
+ this.storageKey = (0, cookie_name_1.getCookieName)(options.apiKey);
10
+ this.sessionTimeout = options.sessionTimeout;
11
+ this.cache = (_a = this.storage.get(this.storageKey)) !== null && _a !== void 0 ? _a : {
12
+ optOut: false,
13
+ };
24
14
  }
25
- };
26
- exports.checkSessionExpiry = checkSessionExpiry;
27
- var getCookieName = function (apiKey, limit) {
28
- if (limit === void 0) { limit = 10; }
29
- return "".concat(analytics_core_1.AMPLITUDE_PREFIX, "_").concat(apiKey.substring(0, limit));
30
- };
31
- exports.getCookieName = getCookieName;
32
- var getOldCookieName = function (apiKey) {
33
- return "".concat(analytics_core_1.AMPLITUDE_PREFIX.toLowerCase(), "_").concat(apiKey.substring(0, 6));
34
- };
35
- exports.getOldCookieName = getOldCookieName;
15
+ SessionManager.prototype.setSession = function (session) {
16
+ this.cache = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.cache), session);
17
+ this.storage.set(this.storageKey, this.cache);
18
+ };
19
+ SessionManager.prototype.getSessionId = function () {
20
+ var _a;
21
+ // Note: always read directly from storage
22
+ return (_a = this.storage.get(this.storageKey)) === null || _a === void 0 ? void 0 : _a.sessionId;
23
+ };
24
+ SessionManager.prototype.setSessionId = function (sessionId) {
25
+ this.setSession({ sessionId: sessionId });
26
+ };
27
+ SessionManager.prototype.getDeviceId = function () {
28
+ return this.cache.deviceId;
29
+ };
30
+ SessionManager.prototype.setDeviceId = function (deviceId) {
31
+ this.setSession({ deviceId: deviceId });
32
+ };
33
+ SessionManager.prototype.getUserId = function () {
34
+ return this.cache.userId;
35
+ };
36
+ SessionManager.prototype.setUserId = function (userId) {
37
+ this.setSession({ userId: userId });
38
+ };
39
+ SessionManager.prototype.getLastEventTime = function () {
40
+ return this.cache.lastEventTime;
41
+ };
42
+ SessionManager.prototype.setLastEventTime = function (lastEventTime) {
43
+ this.setSession({ lastEventTime: lastEventTime });
44
+ };
45
+ SessionManager.prototype.getOptOut = function () {
46
+ return this.cache.optOut;
47
+ };
48
+ SessionManager.prototype.setOptOut = function (optOut) {
49
+ this.setSession({ optOut: optOut });
50
+ };
51
+ return SessionManager;
52
+ }());
53
+ exports.SessionManager = SessionManager;
36
54
  //# sourceMappingURL=session-manager.js.map