@amplitude/analytics-browser 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) 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 +83 -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 +113 -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 +16 -4
  15. package/lib/cjs/browser-client.d.ts.map +1 -1
  16. package/lib/cjs/browser-client.js +62 -34
  17. package/lib/cjs/browser-client.js.map +1 -1
  18. package/lib/cjs/config.d.ts +19 -20
  19. package/lib/cjs/config.d.ts.map +1 -1
  20. package/lib/cjs/config.js +204 -91
  21. package/lib/cjs/config.js.map +1 -1
  22. package/lib/cjs/cookie-migration/index.d.ts +1 -1
  23. package/lib/cjs/cookie-migration/index.d.ts.map +1 -1
  24. package/lib/cjs/cookie-migration/index.js +43 -28
  25. package/lib/cjs/cookie-migration/index.js.map +1 -1
  26. package/lib/cjs/index.d.ts +1 -1
  27. package/lib/cjs/index.d.ts.map +1 -1
  28. package/lib/cjs/index.js +2 -1
  29. package/lib/cjs/index.js.map +1 -1
  30. package/lib/cjs/plugins/context.d.ts +1 -0
  31. package/lib/cjs/plugins/context.d.ts.map +1 -1
  32. package/lib/cjs/plugins/context.js +25 -12
  33. package/lib/cjs/plugins/context.js.map +1 -1
  34. package/lib/cjs/session-manager.d.ts +27 -5
  35. package/lib/cjs/session-manager.d.ts.map +1 -1
  36. package/lib/cjs/session-manager.js +81 -33
  37. package/lib/cjs/session-manager.js.map +1 -1
  38. package/lib/cjs/storage/cookie.d.ts +6 -6
  39. package/lib/cjs/storage/cookie.d.ts.map +1 -1
  40. package/lib/cjs/storage/cookie.js +116 -67
  41. package/lib/cjs/storage/cookie.js.map +1 -1
  42. package/lib/cjs/storage/local-storage.d.ts +6 -6
  43. package/lib/cjs/storage/local-storage.d.ts.map +1 -1
  44. package/lib/cjs/storage/local-storage.js +95 -50
  45. package/lib/cjs/storage/local-storage.js.map +1 -1
  46. package/lib/cjs/storage/utm-cookie.d.ts +2 -2
  47. package/lib/cjs/storage/utm-cookie.d.ts.map +1 -1
  48. package/lib/cjs/storage/utm-cookie.js +32 -18
  49. package/lib/cjs/storage/utm-cookie.js.map +1 -1
  50. package/lib/cjs/utils/cookie-name.d.ts +3 -0
  51. package/lib/cjs/utils/cookie-name.d.ts.map +1 -0
  52. package/lib/cjs/utils/cookie-name.js +14 -0
  53. package/lib/cjs/utils/cookie-name.js.map +1 -0
  54. package/lib/cjs/version.d.ts +1 -1
  55. package/lib/cjs/version.js +1 -1
  56. package/lib/cjs/version.js.map +1 -1
  57. package/lib/esm/attribution/campaign-parser.d.ts +10 -0
  58. package/lib/esm/attribution/campaign-parser.d.ts.map +1 -0
  59. package/lib/esm/attribution/campaign-parser.js +81 -0
  60. package/lib/esm/attribution/campaign-parser.js.map +1 -0
  61. package/lib/esm/attribution/campaign-tracker.d.ts +72 -0
  62. package/lib/esm/attribution/campaign-tracker.d.ts.map +1 -0
  63. package/lib/esm/attribution/campaign-tracker.js +111 -0
  64. package/lib/esm/attribution/campaign-tracker.js.map +1 -0
  65. package/lib/esm/{constants.d.ts → attribution/constants.d.ts} +4 -0
  66. package/lib/esm/attribution/constants.d.ts.map +1 -0
  67. package/lib/esm/{constants.js → attribution/constants.js} +13 -0
  68. package/lib/esm/attribution/constants.js.map +1 -0
  69. package/lib/esm/browser-client.d.ts +16 -4
  70. package/lib/esm/browser-client.d.ts.map +1 -1
  71. package/lib/esm/browser-client.js +63 -35
  72. package/lib/esm/browser-client.js.map +1 -1
  73. package/lib/esm/config.d.ts +19 -20
  74. package/lib/esm/config.d.ts.map +1 -1
  75. package/lib/esm/config.js +202 -90
  76. package/lib/esm/config.js.map +1 -1
  77. package/lib/esm/cookie-migration/index.d.ts +1 -1
  78. package/lib/esm/cookie-migration/index.d.ts.map +1 -1
  79. package/lib/esm/cookie-migration/index.js +43 -29
  80. package/lib/esm/cookie-migration/index.js.map +1 -1
  81. package/lib/esm/index.d.ts +1 -1
  82. package/lib/esm/index.d.ts.map +1 -1
  83. package/lib/esm/index.js +1 -1
  84. package/lib/esm/index.js.map +1 -1
  85. package/lib/esm/plugins/context.d.ts +1 -0
  86. package/lib/esm/plugins/context.d.ts.map +1 -1
  87. package/lib/esm/plugins/context.js +26 -13
  88. package/lib/esm/plugins/context.js.map +1 -1
  89. package/lib/esm/session-manager.d.ts +27 -5
  90. package/lib/esm/session-manager.d.ts.map +1 -1
  91. package/lib/esm/session-manager.js +80 -28
  92. package/lib/esm/session-manager.js.map +1 -1
  93. package/lib/esm/storage/cookie.d.ts +6 -6
  94. package/lib/esm/storage/cookie.d.ts.map +1 -1
  95. package/lib/esm/storage/cookie.js +117 -68
  96. package/lib/esm/storage/cookie.js.map +1 -1
  97. package/lib/esm/storage/local-storage.d.ts +6 -6
  98. package/lib/esm/storage/local-storage.d.ts.map +1 -1
  99. package/lib/esm/storage/local-storage.js +95 -50
  100. package/lib/esm/storage/local-storage.js.map +1 -1
  101. package/lib/esm/storage/utm-cookie.d.ts +2 -2
  102. package/lib/esm/storage/utm-cookie.d.ts.map +1 -1
  103. package/lib/esm/storage/utm-cookie.js +33 -19
  104. package/lib/esm/storage/utm-cookie.js.map +1 -1
  105. package/lib/esm/utils/cookie-name.d.ts +3 -0
  106. package/lib/esm/utils/cookie-name.d.ts.map +1 -0
  107. package/lib/esm/utils/cookie-name.js +10 -0
  108. package/lib/esm/utils/cookie-name.js.map +1 -0
  109. package/lib/esm/version.d.ts +1 -1
  110. package/lib/esm/version.js +1 -1
  111. package/lib/esm/version.js.map +1 -1
  112. package/lib/scripts/amplitude-min.js +1 -1
  113. package/lib/scripts/amplitude-min.js.gz +0 -0
  114. package/lib/scripts/amplitude-min.umd.js +1 -1
  115. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  116. package/lib/scripts/amplitude-snippet-instructions.html +1 -1
  117. package/lib/scripts/amplitude-snippet-min.js +1 -1
  118. package/package.json +4 -4
  119. package/lib/cjs/attribution.d.ts +0 -11
  120. package/lib/cjs/attribution.d.ts.map +0 -1
  121. package/lib/cjs/attribution.js +0 -64
  122. package/lib/cjs/attribution.js.map +0 -1
  123. package/lib/cjs/constants.d.ts.map +0 -1
  124. package/lib/cjs/constants.js +0 -15
  125. package/lib/cjs/constants.js.map +0 -1
  126. package/lib/esm/attribution.d.ts +0 -11
  127. package/lib/esm/attribution.d.ts.map +0 -1
  128. package/lib/esm/attribution.js +0 -57
  129. package/lib/esm/attribution.js.map +0 -1
  130. package/lib/esm/constants.d.ts.map +0 -1
  131. package/lib/esm/constants.js.map +0 -1
@@ -1,36 +1,51 @@
1
+ var _this = this;
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.decode = exports.parseTime = exports.parseOldCookies = void 0;
3
4
  var tslib_1 = require("tslib");
4
- var session_manager_1 = require("../session-manager");
5
+ var cookie_name_1 = require("../utils/cookie-name");
5
6
  var local_storage_1 = require("../storage/local-storage");
6
7
  var cookie_1 = require("../storage/cookie");
7
- var parseOldCookies = function (apiKey, options) {
8
- var storage = new cookie_1.CookieStorage();
9
- if (!storage.isEnabled() || (options === null || options === void 0 ? void 0 : options.disableCookies)) {
10
- storage = new local_storage_1.LocalStorage();
11
- }
12
- if (!storage.isEnabled()) {
13
- return {
14
- optOut: false,
15
- };
16
- }
17
- var oldCookieName = (0, session_manager_1.getOldCookieName)(apiKey);
18
- var cookies = storage.getRaw(oldCookieName);
19
- if (!cookies) {
20
- return {
21
- optOut: false,
22
- };
23
- }
24
- storage.remove(oldCookieName);
25
- var _a = (0, tslib_1.__read)(cookies.split('.'), 5), deviceId = _a[0], userId = _a[1], optOut = _a[2], sessionId = _a[3], lastEventTime = _a[4];
26
- return {
27
- deviceId: deviceId,
28
- userId: (0, exports.decode)(userId),
29
- sessionId: (0, exports.parseTime)(sessionId),
30
- lastEventTime: (0, exports.parseTime)(lastEventTime),
31
- optOut: Boolean(optOut),
32
- };
33
- };
8
+ var parseOldCookies = function (apiKey, options) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
9
+ var storage, oldCookieName, cookies, _a, deviceId, userId, optOut, sessionId, lastEventTime;
10
+ return (0, tslib_1.__generator)(this, function (_b) {
11
+ switch (_b.label) {
12
+ case 0:
13
+ storage = new cookie_1.CookieStorage();
14
+ return [4 /*yield*/, storage.isEnabled()];
15
+ case 1:
16
+ if (!(_b.sent()) || (options === null || options === void 0 ? void 0 : options.disableCookies)) {
17
+ storage = new local_storage_1.LocalStorage();
18
+ }
19
+ return [4 /*yield*/, storage.isEnabled()];
20
+ case 2:
21
+ if (!(_b.sent())) {
22
+ return [2 /*return*/, {
23
+ optOut: false,
24
+ }];
25
+ }
26
+ oldCookieName = (0, cookie_name_1.getOldCookieName)(apiKey);
27
+ return [4 /*yield*/, storage.getRaw(oldCookieName)];
28
+ case 3:
29
+ cookies = _b.sent();
30
+ if (!cookies) {
31
+ return [2 /*return*/, {
32
+ optOut: false,
33
+ }];
34
+ }
35
+ return [4 /*yield*/, storage.remove(oldCookieName)];
36
+ case 4:
37
+ _b.sent();
38
+ _a = (0, tslib_1.__read)(cookies.split('.'), 5), deviceId = _a[0], userId = _a[1], optOut = _a[2], sessionId = _a[3], lastEventTime = _a[4];
39
+ return [2 /*return*/, {
40
+ deviceId: deviceId,
41
+ userId: (0, exports.decode)(userId),
42
+ sessionId: (0, exports.parseTime)(sessionId),
43
+ lastEventTime: (0, exports.parseTime)(lastEventTime),
44
+ optOut: Boolean(optOut),
45
+ }];
46
+ }
47
+ });
48
+ }); };
34
49
  exports.parseOldCookies = parseOldCookies;
35
50
  var parseTime = function (num) {
36
51
  var integer = parseInt(num, 32);
@@ -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":"AAAA,iBAsDA;;;;AArDA,oDAAwD;AACxD,0DAAwD;AACxD,4CAAkD;AAE3C,IAAM,eAAe,GAAG,UAAO,MAAc,EAAE,OAAwB;;;;;gBACxE,OAAO,GAAoB,IAAI,sBAAa,EAAU,CAAC;gBACrD,qBAAM,OAAO,CAAC,SAAS,EAAE,EAAA;;gBAA/B,IAAI,CAAC,CAAC,SAAyB,CAAC,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAA,EAAE;oBAC3D,OAAO,GAAG,IAAI,4BAAY,EAAU,CAAC;iBACtC;gBACK,qBAAM,OAAO,CAAC,SAAS,EAAE,EAAA;;gBAA/B,IAAI,CAAC,CAAC,SAAyB,CAAC,EAAE;oBAChC,sBAAO;4BACL,MAAM,EAAE,KAAK;yBACd,EAAC;iBACH;gBAEK,aAAa,GAAG,IAAA,8BAAgB,EAAC,MAAM,CAAC,CAAC;gBAC/B,qBAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAA;;gBAA7C,OAAO,GAAG,SAAmC;gBAEnD,IAAI,CAAC,OAAO,EAAE;oBACZ,sBAAO;4BACL,MAAM,EAAE,KAAK;yBACd,EAAC;iBACH;gBAED,qBAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAA;;gBAAnC,SAAmC,CAAC;gBAC9B,KAAA,oBAAuD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAAxE,QAAQ,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,SAAS,QAAA,EAAE,aAAa,QAAA,CAAuB;gBAChF,sBAAO;wBACL,QAAQ,UAAA;wBACR,MAAM,EAAE,IAAA,cAAM,EAAC,MAAM,CAAC;wBACtB,SAAS,EAAE,IAAA,iBAAS,EAAC,SAAS,CAAC;wBAC/B,aAAa,EAAE,IAAA,iBAAS,EAAC,aAAa,CAAC;wBACvC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;qBACxB,EAAC;;;KACH,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 = async (apiKey: string, options?: BrowserOptions): Promise<UserSession> => {\n let storage: Storage<string> = new CookieStorage<string>();\n if (!(await storage.isEnabled()) || options?.disableCookies) {\n storage = new LocalStorage<string>();\n }\n if (!(await storage.isEnabled())) {\n return {\n optOut: false,\n };\n }\n\n const oldCookieName = getOldCookieName(apiKey);\n const cookies = await storage.getRaw(oldCookieName);\n\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n\n await 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,4 +1,4 @@
1
- export { add, getDeviceId, getSessionId, getUserId, groupIdentify, identify, init, logEvent, remove, revenue, setDeviceId, setGroup, setOptOut, setSessionId, setTransport, setUserId, track, } from './browser-client';
1
+ export { add, flush, getDeviceId, getSessionId, getUserId, groupIdentify, identify, init, logEvent, remove, revenue, setDeviceId, setGroup, setOptOut, setSessionId, setTransport, setUserId, track, } from './browser-client';
2
2
  export { runQueuedFunctions } from './utils/snippet-helper';
3
3
  export { Revenue, Identify } from '@amplitude/analytics-core';
4
4
  export * as Types from '@amplitude/analytics-types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,KAAK,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC"}
package/lib/cjs/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.Types = exports.Identify = exports.Revenue = exports.runQueuedFunctions = exports.track = exports.setUserId = exports.setTransport = exports.setSessionId = exports.setOptOut = exports.setGroup = exports.setDeviceId = exports.revenue = exports.remove = exports.logEvent = exports.init = exports.identify = exports.groupIdentify = exports.getUserId = exports.getSessionId = exports.getDeviceId = exports.add = void 0;
2
+ exports.Types = exports.Identify = exports.Revenue = exports.runQueuedFunctions = exports.track = exports.setUserId = exports.setTransport = exports.setSessionId = exports.setOptOut = exports.setGroup = exports.setDeviceId = exports.revenue = exports.remove = exports.logEvent = exports.init = exports.identify = exports.groupIdentify = exports.getUserId = exports.getSessionId = exports.getDeviceId = exports.flush = exports.add = void 0;
3
3
  var tslib_1 = require("tslib");
4
4
  var browser_client_1 = require("./browser-client");
5
5
  Object.defineProperty(exports, "add", { enumerable: true, get: function () { return browser_client_1.add; } });
6
+ Object.defineProperty(exports, "flush", { enumerable: true, get: function () { return browser_client_1.flush; } });
6
7
  Object.defineProperty(exports, "getDeviceId", { enumerable: true, get: function () { return browser_client_1.getDeviceId; } });
7
8
  Object.defineProperty(exports, "getSessionId", { enumerable: true, get: function () { return browser_client_1.getSessionId; } });
8
9
  Object.defineProperty(exports, "getUserId", { enumerable: true, get: function () { return browser_client_1.getUserId; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAkB0B;AAjBxB,qGAAA,GAAG,OAAA;AACH,6GAAA,WAAW,OAAA;AACX,8GAAA,YAAY,OAAA;AACZ,2GAAA,SAAS,OAAA;AACT,+GAAA,aAAa,OAAA;AACb,0GAAA,QAAQ,OAAA;AACR,sGAAA,IAAI,OAAA;AACJ,0GAAA,QAAQ,OAAA;AACR,wGAAA,MAAM,OAAA;AACN,yGAAA,OAAO,OAAA;AACP,6GAAA,WAAW,OAAA;AACX,0GAAA,QAAQ,OAAA;AACR,2GAAA,SAAS,OAAA;AACT,8GAAA,YAAY,OAAA;AACZ,8GAAA,YAAY,OAAA;AACZ,2GAAA,SAAS,OAAA;AACT,uGAAA,KAAK,OAAA;AAEP,yDAA4D;AAAnD,oHAAA,kBAAkB,OAAA;AAC3B,4DAA8D;AAArD,yGAAA,OAAO,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC1B,iFAAoD","sourcesContent":["export {\n add,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} from './browser-client';\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nexport * as Types from '@amplitude/analytics-types';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAmB0B;AAlBxB,qGAAA,GAAG,OAAA;AACH,uGAAA,KAAK,OAAA;AACL,6GAAA,WAAW,OAAA;AACX,8GAAA,YAAY,OAAA;AACZ,2GAAA,SAAS,OAAA;AACT,+GAAA,aAAa,OAAA;AACb,0GAAA,QAAQ,OAAA;AACR,sGAAA,IAAI,OAAA;AACJ,0GAAA,QAAQ,OAAA;AACR,wGAAA,MAAM,OAAA;AACN,yGAAA,OAAO,OAAA;AACP,6GAAA,WAAW,OAAA;AACX,0GAAA,QAAQ,OAAA;AACR,2GAAA,SAAS,OAAA;AACT,8GAAA,YAAY,OAAA;AACZ,8GAAA,YAAY,OAAA;AACZ,2GAAA,SAAS,OAAA;AACT,uGAAA,KAAK,OAAA;AAEP,yDAA4D;AAAnD,oHAAA,kBAAkB,OAAA;AAC3B,4DAA8D;AAArD,yGAAA,OAAO,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC1B,iFAAoD","sourcesContent":["export {\n add,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} from './browser-client';\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nexport * as Types from '@amplitude/analytics-types';\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;IAM1C,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAuC7C,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,19 +26,33 @@ 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);
29
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
30
+ var time, osName, osVersion, deviceModel, deviceVendor, event;
31
+ return (0, tslib_1.__generator)(this, function (_a) {
32
+ /**
33
+ * Manages user session triggered by new events
34
+ */
35
+ if (!this.isSessionValid()) {
36
+ // Creates new session
37
+ this.config.sessionId = Date.now();
38
+ } // else use previously creates session
39
+ // Updates last event time to extend time-based session
40
+ this.config.lastEventTime = Date.now();
41
+ time = new Date().getTime();
42
+ osName = this.uaResult.browser.name;
43
+ osVersion = this.uaResult.browser.version;
44
+ deviceModel = this.uaResult.device.model || this.uaResult.os.name;
45
+ deviceVendor = this.uaResult.device.vendor;
46
+ 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 });
47
+ return [2 /*return*/, event];
48
+ });
41
49
  });
42
50
  };
51
+ Context.prototype.isSessionValid = function () {
52
+ var lastEventTime = this.config.lastEventTime || Date.now();
53
+ var timeSinceLastEvent = Date.now() - lastEventTime;
54
+ return timeSinceLastEvent < this.config.sessionTimeout;
55
+ };
43
56
  return Context;
44
57
  }());
45
58
  exports.Context = Context;
@@ -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 async 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\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 return 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,28 @@
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 } from '@amplitude/analytics-types';
2
+ export declare class SessionManager implements ISessionManager {
3
+ private storage;
4
+ storageKey: string;
5
+ cache: UserSession;
6
+ isSessionCacheValid: boolean;
7
+ constructor(storage: Storage<UserSession>, apiKey: string);
8
+ /**
9
+ * load() must be called immediately after instantation
10
+ *
11
+ * ```ts
12
+ * await new SessionManager(...).load();
13
+ * ```
14
+ */
15
+ load(): Promise<this>;
16
+ setSession(session: Partial<UserSession>): void;
17
+ getSessionId(): number | undefined;
18
+ setSessionId(sessionId: number): void;
19
+ getDeviceId(): string | undefined;
20
+ setDeviceId(deviceId: string): void;
21
+ getUserId(): string | undefined;
22
+ setUserId(userId: string): void;
23
+ getLastEventTime(): number | undefined;
24
+ setLastEventTime(lastEventTime: number): void;
25
+ getOptOut(): boolean;
26
+ setOptOut(optOut: boolean): void;
27
+ }
6
28
  //# 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,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGrG,qBAAa,cAAe,YAAW,eAAe;IAKxC,OAAO,CAAC,OAAO;IAJ3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,mBAAmB,UAAQ;gBAEP,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM;IAKjE;;;;;;OAMG;IACG,IAAI;IAOV,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC;IAKxC,YAAY;IAWZ,YAAY,CAAC,SAAS,EAAE,MAAM;IAM9B,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,84 @@
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, apiKey) {
7
+ this.storage = storage;
8
+ this.isSessionCacheValid = true;
9
+ this.storageKey = (0, cookie_name_1.getCookieName)(apiKey);
10
+ this.cache = { optOut: false };
24
11
  }
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;
12
+ /**
13
+ * load() must be called immediately after instantation
14
+ *
15
+ * ```ts
16
+ * await new SessionManager(...).load();
17
+ * ```
18
+ */
19
+ SessionManager.prototype.load = function () {
20
+ var _a;
21
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
22
+ var _b;
23
+ return (0, tslib_1.__generator)(this, function (_c) {
24
+ switch (_c.label) {
25
+ case 0:
26
+ _b = this;
27
+ return [4 /*yield*/, this.storage.get(this.storageKey)];
28
+ case 1:
29
+ _b.cache = (_a = (_c.sent())) !== null && _a !== void 0 ? _a : {
30
+ optOut: false,
31
+ };
32
+ return [2 /*return*/, this];
33
+ }
34
+ });
35
+ });
36
+ };
37
+ SessionManager.prototype.setSession = function (session) {
38
+ this.cache = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.cache), session);
39
+ void this.storage.set(this.storageKey, this.cache);
40
+ };
41
+ SessionManager.prototype.getSessionId = function () {
42
+ var _this = this;
43
+ this.isSessionCacheValid = true;
44
+ void this.storage.get(this.storageKey).then(function (userSession) {
45
+ // Checks if session id has been set since the last get
46
+ if (_this.isSessionCacheValid) {
47
+ _this.cache.sessionId = userSession === null || userSession === void 0 ? void 0 : userSession.sessionId;
48
+ }
49
+ });
50
+ return this.cache.sessionId;
51
+ };
52
+ SessionManager.prototype.setSessionId = function (sessionId) {
53
+ // Flags session id has been set
54
+ this.isSessionCacheValid = false;
55
+ this.setSession({ sessionId: sessionId });
56
+ };
57
+ SessionManager.prototype.getDeviceId = function () {
58
+ return this.cache.deviceId;
59
+ };
60
+ SessionManager.prototype.setDeviceId = function (deviceId) {
61
+ this.setSession({ deviceId: deviceId });
62
+ };
63
+ SessionManager.prototype.getUserId = function () {
64
+ return this.cache.userId;
65
+ };
66
+ SessionManager.prototype.setUserId = function (userId) {
67
+ this.setSession({ userId: userId });
68
+ };
69
+ SessionManager.prototype.getLastEventTime = function () {
70
+ return this.cache.lastEventTime;
71
+ };
72
+ SessionManager.prototype.setLastEventTime = function (lastEventTime) {
73
+ this.setSession({ lastEventTime: lastEventTime });
74
+ };
75
+ SessionManager.prototype.getOptOut = function () {
76
+ return this.cache.optOut;
77
+ };
78
+ SessionManager.prototype.setOptOut = function (optOut) {
79
+ this.setSession({ optOut: optOut });
80
+ };
81
+ return SessionManager;
82
+ }());
83
+ exports.SessionManager = SessionManager;
36
84
  //# sourceMappingURL=session-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session-manager.ts"],"names":[],"mappings":";;AACA,4DAA6D;AAEtD,IAAM,aAAa,GAAG,UAAC,MAAqB,EAAE,aAAsB;;IACzE,IAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,MAAA,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,0CAAE,aAAa;QACnF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;KAC/B,CAAC,CAAC;AACL,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB;AAEK,IAAM,kBAAkB,GAAG,UAAC,MAAqB;;IACtD,IAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,IAAM,aAAa,GAAG,MAAA,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,0CAAE,aAAa,CAAC;IAC1E,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,aAAa,IAAI,GAAG,GAAG,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE;QACjE,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QACvB,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC;KACvB;AACH,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B;AAEK,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,KAAU;IAAV,sBAAA,EAAA,UAAU;IACtD,OAAO,UAAG,iCAAgB,cAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAE,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,IAAM,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAO,UAAG,iCAAgB,CAAC,WAAW,EAAE,cAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;AACvE,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B","sourcesContent":["import { BrowserConfig } from '@amplitude/analytics-types';\nimport { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const updateCookies = (config: BrowserConfig, lastEventTime?: number) => {\n const cookieName = getCookieName(config.apiKey);\n config.cookieStorage.set(cookieName, {\n userId: config.userId,\n deviceId: config.deviceId,\n sessionId: config.sessionId,\n lastEventTime: lastEventTime ?? config.cookieStorage.get(cookieName)?.lastEventTime,\n optOut: Boolean(config.optOut),\n });\n};\n\nexport const checkSessionExpiry = (config: BrowserConfig) => {\n const cookieName = getCookieName(config.apiKey);\n const lastEventTime = config.cookieStorage.get(cookieName)?.lastEventTime;\n const now = Date.now();\n if (lastEventTime && now - lastEventTime >= config.sessionTimeout) {\n config.sessionId = now;\n updateCookies(config);\n }\n};\n\nexport const getCookieName = (apiKey: string, limit = 10) => {\n return `${AMPLITUDE_PREFIX}_${apiKey.substring(0, limit)}`;\n};\n\nexport const getOldCookieName = (apiKey: string) => {\n return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;\n};\n"]}
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session-manager.ts"],"names":[],"mappings":";;;AACA,mDAAqE;AAErE;IAKE,wBAAoB,OAA6B,EAAE,MAAc;QAA7C,YAAO,GAAP,OAAO,CAAsB;QAFjD,wBAAmB,GAAG,IAAI,CAAC;QAGzB,IAAI,CAAC,UAAU,GAAG,IAAA,2BAAa,EAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACG,6BAAI,GAAV;;;;;;;wBACE,KAAA,IAAI,CAAA;wBAAU,qBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;wBAArD,GAAK,KAAK,GAAG,MAAA,CAAC,SAAuC,CAAC,mCAAI;4BACxD,MAAM,EAAE,KAAK;yBACd,CAAC;wBACF,sBAAO,IAAI,EAAC;;;;KACb;IAED,mCAAU,GAAV,UAAW,OAA6B;QACtC,IAAI,CAAC,KAAK,mDAAQ,IAAI,CAAC,KAAK,GAAK,OAAO,CAAE,CAAC;QAC3C,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,qCAAY,GAAZ;QAAA,iBASC;QARC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,WAAW;YACtD,uDAAuD;YACvD,IAAI,KAAI,CAAC,mBAAmB,EAAE;gBAC5B,KAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC;aAC/C;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IAED,qCAAY,GAAZ,UAAa,SAAiB;QAC5B,gCAAgC;QAChC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,oCAAW,GAAX;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED,oCAAW,GAAX,UAAY,QAAgB;QAC1B,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,kCAAS,GAAT;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,kCAAS,GAAT,UAAU,MAAc;QACtB,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,yCAAgB,GAAhB;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAClC,CAAC;IAED,yCAAgB,GAAhB,UAAiB,aAAqB;QACpC,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa,eAAA,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,kCAAS,GAAT;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,kCAAS,GAAT,UAAU,MAAe;QACvB,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC9B,CAAC;IACH,qBAAC;AAAD,CAAC,AA7ED,IA6EC;AA7EY,wCAAc","sourcesContent":["import { UserSession, Storage, SessionManager as ISessionManager } from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from './utils/cookie-name';\n\nexport class SessionManager implements ISessionManager {\n storageKey: string;\n cache: UserSession;\n isSessionCacheValid = true;\n\n constructor(private storage: Storage<UserSession>, apiKey: string) {\n this.storageKey = getStorageKey(apiKey);\n this.cache = { optOut: false };\n }\n\n /**\n * load() must be called immediately after instantation\n *\n * ```ts\n * await new SessionManager(...).load();\n * ```\n */\n async load() {\n this.cache = (await this.storage.get(this.storageKey)) ?? {\n optOut: false,\n };\n return this;\n }\n\n setSession(session: Partial<UserSession>) {\n this.cache = { ...this.cache, ...session };\n void this.storage.set(this.storageKey, this.cache);\n }\n\n getSessionId() {\n this.isSessionCacheValid = true;\n void this.storage.get(this.storageKey).then((userSession) => {\n // Checks if session id has been set since the last get\n if (this.isSessionCacheValid) {\n this.cache.sessionId = userSession?.sessionId;\n }\n });\n return this.cache.sessionId;\n }\n\n setSessionId(sessionId: number) {\n // Flags session id has been set\n this.isSessionCacheValid = false;\n this.setSession({ sessionId });\n }\n\n getDeviceId(): string | undefined {\n return this.cache.deviceId;\n }\n\n setDeviceId(deviceId: string): void {\n this.setSession({ deviceId });\n }\n\n getUserId(): string | undefined {\n return this.cache.userId;\n }\n\n setUserId(userId: string): void {\n this.setSession({ userId });\n }\n\n getLastEventTime() {\n return this.cache.lastEventTime;\n }\n\n setLastEventTime(lastEventTime: number) {\n this.setSession({ lastEventTime });\n }\n\n getOptOut(): boolean {\n return this.cache.optOut;\n }\n\n setOptOut(optOut: boolean): void {\n this.setSession({ optOut });\n }\n}\n"]}
@@ -2,11 +2,11 @@ import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';
2
2
  export declare class CookieStorage<T> implements Storage<T> {
3
3
  options: CookieStorageOptions;
4
4
  constructor(options?: CookieStorageOptions);
5
- isEnabled(): boolean;
6
- get(key: string): T | undefined;
7
- getRaw(key: string): string | undefined;
8
- set(key: string, value: T | null): void;
9
- remove(key: string): void;
10
- reset(): void;
5
+ isEnabled(): Promise<boolean>;
6
+ get(key: string): Promise<T | undefined>;
7
+ getRaw(key: string): Promise<string | undefined>;
8
+ set(key: string, value: T | null): Promise<void>;
9
+ remove(key: string): Promise<void>;
10
+ reset(): Promise<void>;
11
11
  }
12
12
  //# sourceMappingURL=cookie.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../../src/storage/cookie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IACjD,OAAO,EAAE,oBAAoB,CAAC;gBAElB,OAAO,CAAC,EAAE,oBAAoB;IAI1C,SAAS;IAqBT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAc/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IASvC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IA8BhC,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,KAAK;CAGN"}
1
+ {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../../src/storage/cookie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IACjD,OAAO,EAAE,oBAAoB,CAAC;gBAElB,OAAO,CAAC,EAAE,oBAAoB;IAIpC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAcxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAShD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BhD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}