@amplitude/analytics-client-common 0.0.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 (106) hide show
  1. package/LICENSE +21 -0
  2. package/lib/cjs/analytics-connector.d.ts +3 -0
  3. package/lib/cjs/analytics-connector.d.ts.map +1 -0
  4. package/lib/cjs/analytics-connector.js +8 -0
  5. package/lib/cjs/analytics-connector.js.map +1 -0
  6. package/lib/cjs/attribution/campaign-parser.d.ts +10 -0
  7. package/lib/cjs/attribution/campaign-parser.d.ts.map +1 -0
  8. package/lib/cjs/attribution/campaign-parser.js +83 -0
  9. package/lib/cjs/attribution/campaign-parser.js.map +1 -0
  10. package/lib/cjs/attribution/campaign-tracker.d.ts +75 -0
  11. package/lib/cjs/attribution/campaign-tracker.d.ts.map +1 -0
  12. package/lib/cjs/attribution/campaign-tracker.js +113 -0
  13. package/lib/cjs/attribution/campaign-tracker.js.map +1 -0
  14. package/lib/cjs/attribution/constants.d.ts +17 -0
  15. package/lib/cjs/attribution/constants.d.ts.map +1 -0
  16. package/lib/cjs/attribution/constants.js +28 -0
  17. package/lib/cjs/attribution/constants.js.map +1 -0
  18. package/lib/cjs/cookie-name.d.ts +3 -0
  19. package/lib/cjs/cookie-name.d.ts.map +1 -0
  20. package/lib/cjs/cookie-name.js +14 -0
  21. package/lib/cjs/cookie-name.js.map +1 -0
  22. package/lib/cjs/index.d.ts +12 -0
  23. package/lib/cjs/index.d.ts.map +1 -0
  24. package/lib/cjs/index.js +26 -0
  25. package/lib/cjs/index.js.map +1 -0
  26. package/lib/cjs/language.d.ts +2 -0
  27. package/lib/cjs/language.d.ts.map +1 -0
  28. package/lib/cjs/language.js +12 -0
  29. package/lib/cjs/language.js.map +1 -0
  30. package/lib/cjs/plugins/identity.d.ts +9 -0
  31. package/lib/cjs/plugins/identity.d.ts.map +1 -0
  32. package/lib/cjs/plugins/identity.js +30 -0
  33. package/lib/cjs/plugins/identity.js.map +1 -0
  34. package/lib/cjs/query-params.d.ts +3 -0
  35. package/lib/cjs/query-params.d.ts.map +1 -0
  36. package/lib/cjs/query-params.js +32 -0
  37. package/lib/cjs/query-params.js.map +1 -0
  38. package/lib/cjs/session-manager.d.ts +28 -0
  39. package/lib/cjs/session-manager.d.ts.map +1 -0
  40. package/lib/cjs/session-manager.js +84 -0
  41. package/lib/cjs/session-manager.js.map +1 -0
  42. package/lib/cjs/storage/cookie.d.ts +12 -0
  43. package/lib/cjs/storage/cookie.d.ts.map +1 -0
  44. package/lib/cjs/storage/cookie.js +146 -0
  45. package/lib/cjs/storage/cookie.js.map +1 -0
  46. package/lib/cjs/storage/utm-cookie.d.ts +6 -0
  47. package/lib/cjs/storage/utm-cookie.d.ts.map +1 -0
  48. package/lib/cjs/storage/utm-cookie.js +50 -0
  49. package/lib/cjs/storage/utm-cookie.js.map +1 -0
  50. package/lib/cjs/transports/fetch.d.ts +6 -0
  51. package/lib/cjs/transports/fetch.d.ts.map +1 -0
  52. package/lib/cjs/transports/fetch.js +42 -0
  53. package/lib/cjs/transports/fetch.js.map +1 -0
  54. package/lib/esm/analytics-connector.d.ts +3 -0
  55. package/lib/esm/analytics-connector.d.ts.map +1 -0
  56. package/lib/esm/analytics-connector.js +5 -0
  57. package/lib/esm/analytics-connector.js.map +1 -0
  58. package/lib/esm/attribution/campaign-parser.d.ts +10 -0
  59. package/lib/esm/attribution/campaign-parser.d.ts.map +1 -0
  60. package/lib/esm/attribution/campaign-parser.js +81 -0
  61. package/lib/esm/attribution/campaign-parser.js.map +1 -0
  62. package/lib/esm/attribution/campaign-tracker.d.ts +75 -0
  63. package/lib/esm/attribution/campaign-tracker.d.ts.map +1 -0
  64. package/lib/esm/attribution/campaign-tracker.js +111 -0
  65. package/lib/esm/attribution/campaign-tracker.js.map +1 -0
  66. package/lib/esm/attribution/constants.d.ts +17 -0
  67. package/lib/esm/attribution/constants.d.ts.map +1 -0
  68. package/lib/esm/attribution/constants.js +26 -0
  69. package/lib/esm/attribution/constants.js.map +1 -0
  70. package/lib/esm/cookie-name.d.ts +3 -0
  71. package/lib/esm/cookie-name.d.ts.map +1 -0
  72. package/lib/esm/cookie-name.js +10 -0
  73. package/lib/esm/cookie-name.js.map +1 -0
  74. package/lib/esm/index.d.ts +12 -0
  75. package/lib/esm/index.d.ts.map +1 -0
  76. package/lib/esm/index.js +12 -0
  77. package/lib/esm/index.js.map +1 -0
  78. package/lib/esm/language.d.ts +2 -0
  79. package/lib/esm/language.d.ts.map +1 -0
  80. package/lib/esm/language.js +9 -0
  81. package/lib/esm/language.js.map +1 -0
  82. package/lib/esm/plugins/identity.d.ts +9 -0
  83. package/lib/esm/plugins/identity.d.ts.map +1 -0
  84. package/lib/esm/plugins/identity.js +28 -0
  85. package/lib/esm/plugins/identity.js.map +1 -0
  86. package/lib/esm/query-params.d.ts +3 -0
  87. package/lib/esm/query-params.d.ts.map +1 -0
  88. package/lib/esm/query-params.js +28 -0
  89. package/lib/esm/query-params.js.map +1 -0
  90. package/lib/esm/session-manager.d.ts +28 -0
  91. package/lib/esm/session-manager.d.ts.map +1 -0
  92. package/lib/esm/session-manager.js +82 -0
  93. package/lib/esm/session-manager.js.map +1 -0
  94. package/lib/esm/storage/cookie.d.ts +12 -0
  95. package/lib/esm/storage/cookie.d.ts.map +1 -0
  96. package/lib/esm/storage/cookie.js +144 -0
  97. package/lib/esm/storage/cookie.js.map +1 -0
  98. package/lib/esm/storage/utm-cookie.d.ts +6 -0
  99. package/lib/esm/storage/utm-cookie.d.ts.map +1 -0
  100. package/lib/esm/storage/utm-cookie.js +48 -0
  101. package/lib/esm/storage/utm-cookie.js.map +1 -0
  102. package/lib/esm/transports/fetch.d.ts +6 -0
  103. package/lib/esm/transports/fetch.d.ts.map +1 -0
  104. package/lib/esm/transports/fetch.js +40 -0
  105. package/lib/esm/transports/fetch.js.map +1 -0
  106. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-tracker.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,eAAe,IAAI,gBAAgB,EACnC,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE/C,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAiB3D,aAAa,CAAC,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ;IAe7D,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,sBAAsB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIjD,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BhC,IAAI,CAAC,YAAY,EAAE,OAAO;CAejC"}
@@ -0,0 +1,111 @@
1
+ import { __assign, __awaiter, __generator, __read } from "tslib";
2
+ import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';
3
+ import { getCookieName as getStorageKey } from '../cookie-name';
4
+ import { CampaignParser } from './campaign-parser';
5
+ import { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';
6
+ var CampaignTracker = /** @class */ (function () {
7
+ function CampaignTracker(apiKey, options) {
8
+ var _a, _b;
9
+ this.storage = options.storage;
10
+ this.storageKey = getStorageKey(apiKey, MKTG);
11
+ this.parser = new CampaignParser();
12
+ this.track = options.track;
13
+ this.onNewCampaign = options.onNewCampaign;
14
+ this.disabled = Boolean(options.disabled);
15
+ this.trackNewCampaigns = Boolean(options.trackNewCampaigns);
16
+ this.trackPageViews = Boolean(options.trackPageViews);
17
+ this.excludeReferrers = (_a = options.excludeReferrers) !== null && _a !== void 0 ? _a : [];
18
+ if (typeof location !== 'undefined') {
19
+ this.excludeReferrers.unshift(location.hostname);
20
+ }
21
+ this.initialEmptyValue = (_b = options.initialEmptyValue) !== null && _b !== void 0 ? _b : EMPTY_VALUE;
22
+ }
23
+ CampaignTracker.prototype.isNewCampaign = function (currentCampaign, previousCampaign) {
24
+ var isReferrerExcluded = Boolean(currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain));
25
+ var hasNewUtm = previousCampaign.utm_campaign !== currentCampaign.utm_campaign ||
26
+ previousCampaign.utm_source !== currentCampaign.utm_source ||
27
+ previousCampaign.utm_medium !== currentCampaign.utm_medium ||
28
+ previousCampaign.utm_term !== currentCampaign.utm_term ||
29
+ previousCampaign.utm_content !== currentCampaign.utm_content;
30
+ var hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;
31
+ return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);
32
+ };
33
+ CampaignTracker.prototype.saveCampaignToStorage = function (campaign) {
34
+ return __awaiter(this, void 0, void 0, function () {
35
+ return __generator(this, function (_a) {
36
+ switch (_a.label) {
37
+ case 0: return [4 /*yield*/, this.storage.set(this.storageKey, campaign)];
38
+ case 1:
39
+ _a.sent();
40
+ return [2 /*return*/];
41
+ }
42
+ });
43
+ });
44
+ };
45
+ CampaignTracker.prototype.getCampaignFromStorage = function () {
46
+ return __awaiter(this, void 0, void 0, function () {
47
+ return __generator(this, function (_a) {
48
+ switch (_a.label) {
49
+ case 0: return [4 /*yield*/, this.storage.get(this.storageKey)];
50
+ case 1: return [2 /*return*/, (_a.sent()) || __assign({}, BASE_CAMPAIGN)];
51
+ }
52
+ });
53
+ });
54
+ };
55
+ CampaignTracker.prototype.createCampaignEvent = function (campaign) {
56
+ var _this = this;
57
+ var campaignParameters = __assign(__assign({}, BASE_CAMPAIGN), campaign);
58
+ var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {
59
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
60
+ identify.setOnce("initial_".concat(key), value || _this.initialEmptyValue);
61
+ if (value) {
62
+ return identify.set(key, value);
63
+ }
64
+ return identify.unset(key);
65
+ }, new Identify());
66
+ var pageViewEvent = {
67
+ event_type: 'Page View',
68
+ event_properties: {
69
+ page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',
70
+ page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',
71
+ page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',
72
+ },
73
+ };
74
+ return __assign(__assign({}, createIdentifyEvent(identifyEvent)), (this.trackPageViews && pageViewEvent));
75
+ };
76
+ CampaignTracker.prototype.send = function (isNewSession) {
77
+ return __awaiter(this, void 0, void 0, function () {
78
+ var currentCampaign, previousCampaign;
79
+ return __generator(this, function (_a) {
80
+ switch (_a.label) {
81
+ case 0:
82
+ if (this.disabled) {
83
+ return [2 /*return*/];
84
+ }
85
+ return [4 /*yield*/, this.parser.parse()];
86
+ case 1:
87
+ currentCampaign = _a.sent();
88
+ return [4 /*yield*/, this.getCampaignFromStorage()];
89
+ case 2:
90
+ previousCampaign = _a.sent();
91
+ if (!isNewSession) {
92
+ if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {
93
+ return [2 /*return*/];
94
+ }
95
+ this.onNewCampaign(currentCampaign);
96
+ }
97
+ return [4 /*yield*/, this.track(this.createCampaignEvent(currentCampaign))];
98
+ case 3:
99
+ _a.sent();
100
+ return [4 /*yield*/, this.saveCampaignToStorage(currentCampaign)];
101
+ case 4:
102
+ _a.sent();
103
+ return [2 /*return*/];
104
+ }
105
+ });
106
+ });
107
+ };
108
+ return CampaignTracker;
109
+ }());
110
+ export { CampaignTracker };
111
+ //# sourceMappingURL=campaign-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-tracker.js","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport {\n Storage,\n Campaign,\n CampaignParser as ICampaignParser,\n CampaignTracker as ICampaignTracker,\n CampaignTrackFunction,\n CampaignTrackerOptions,\n BaseEvent,\n} from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from '../cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\n\nexport class CampaignTracker implements ICampaignTracker {\n storage: Storage<Campaign>;\n storageKey: string;\n parser: ICampaignParser;\n track: CampaignTrackFunction;\n onNewCampaign: (campaign: Campaign) => unknown;\n\n disabled: boolean;\n trackNewCampaigns: boolean;\n trackPageViews: boolean;\n excludeReferrers: string[];\n initialEmptyValue: string;\n\n constructor(apiKey: string, options: CampaignTrackerOptions) {\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = Boolean(options.trackPageViews);\n this.excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;\n }\n\n isNewCampaign(currentCampaign: Campaign, previousCampaign: Campaign) {\n const isReferrerExcluded = Boolean(\n currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain),\n );\n const hasNewUtm =\n previousCampaign.utm_campaign !== currentCampaign.utm_campaign ||\n previousCampaign.utm_source !== currentCampaign.utm_source ||\n previousCampaign.utm_medium !== currentCampaign.utm_medium ||\n previousCampaign.utm_term !== currentCampaign.utm_term ||\n previousCampaign.utm_content !== currentCampaign.utm_content;\n const hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;\n\n return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);\n }\n\n async saveCampaignToStorage(campaign: Campaign): Promise<void> {\n await this.storage.set(this.storageKey, campaign);\n }\n\n async getCampaignFromStorage(): Promise<Campaign> {\n return (await this.storage.get(this.storageKey)) || { ...BASE_CAMPAIGN };\n }\n\n createCampaignEvent(campaign: Campaign) {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n const pageViewEvent: BaseEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return {\n ...createIdentifyEvent(identifyEvent),\n ...(this.trackPageViews && pageViewEvent),\n };\n }\n\n async send(isNewSession: boolean) {\n if (this.disabled) {\n return;\n }\n const currentCampaign = await this.parser.parse();\n const previousCampaign = await this.getCampaignFromStorage();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return;\n }\n this.onNewCampaign(currentCampaign);\n }\n await this.track(this.createCampaignEvent(currentCampaign));\n await this.saveCampaignToStorage(currentCampaign);\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { Campaign } from '@amplitude/analytics-types';
2
+ export declare const UTM_SOURCE = "utm_source";
3
+ export declare const UTM_MEDIUM = "utm_medium";
4
+ export declare const UTM_CAMPAIGN = "utm_campaign";
5
+ export declare const UTM_TERM = "utm_term";
6
+ export declare const UTM_CONTENT = "utm_content";
7
+ export declare const UTMZ_SOURCE = "utmcsr";
8
+ export declare const UTMZ_MEDIUM = "utmcmd";
9
+ export declare const UTMZ_CAMPAIGN = "utmccn";
10
+ export declare const UTMZ_TERM = "utmctr";
11
+ export declare const UTMZ_CONTENT = "utmcct";
12
+ export declare const GCLID = "gclid";
13
+ export declare const FBCLID = "fbclid";
14
+ export declare const EMPTY_VALUE = "EMPTY";
15
+ export declare const BASE_CAMPAIGN: Campaign;
16
+ export declare const MKTG = "MKTG";
17
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/attribution/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,aAAa,WAAW,CAAC;AACtC,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,aAAa,EAAE,QAU3B,CAAC;AAEF,eAAO,MAAM,IAAI,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ export var UTM_SOURCE = 'utm_source';
2
+ export var UTM_MEDIUM = 'utm_medium';
3
+ export var UTM_CAMPAIGN = 'utm_campaign';
4
+ export var UTM_TERM = 'utm_term';
5
+ export var UTM_CONTENT = 'utm_content';
6
+ export var UTMZ_SOURCE = 'utmcsr';
7
+ export var UTMZ_MEDIUM = 'utmcmd';
8
+ export var UTMZ_CAMPAIGN = 'utmccn';
9
+ export var UTMZ_TERM = 'utmctr';
10
+ export var UTMZ_CONTENT = 'utmcct';
11
+ export var GCLID = 'gclid';
12
+ export var FBCLID = 'fbclid';
13
+ export var EMPTY_VALUE = 'EMPTY';
14
+ export var BASE_CAMPAIGN = {
15
+ utm_source: undefined,
16
+ utm_medium: undefined,
17
+ utm_campaign: undefined,
18
+ utm_term: undefined,
19
+ utm_content: undefined,
20
+ referrer: undefined,
21
+ referring_domain: undefined,
22
+ gclid: undefined,
23
+ fbclid: undefined,
24
+ };
25
+ export var MKTG = 'MKTG';
26
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/attribution/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,IAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,IAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,IAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,IAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,MAAM,CAAC,IAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,IAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,IAAM,aAAa,GAAG,QAAQ,CAAC;AACtC,MAAM,CAAC,IAAM,SAAS,GAAG,QAAQ,CAAC;AAClC,MAAM,CAAC,IAAM,YAAY,GAAG,QAAQ,CAAC;AAErC,MAAM,CAAC,IAAM,KAAK,GAAG,OAAO,CAAC;AAC7B,MAAM,CAAC,IAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,MAAM,CAAC,IAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,MAAM,CAAC,IAAM,aAAa,GAAa;IACrC,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,SAAS;IACnB,gBAAgB,EAAE,SAAS;IAC3B,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF,MAAM,CAAC,IAAM,IAAI,GAAG,MAAM,CAAC","sourcesContent":["import { Campaign } from '@amplitude/analytics-types';\n\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_TERM = 'utm_term';\nexport const UTM_CONTENT = 'utm_content';\n\nexport const UTMZ_SOURCE = 'utmcsr';\nexport const UTMZ_MEDIUM = 'utmcmd';\nexport const UTMZ_CAMPAIGN = 'utmccn';\nexport const UTMZ_TERM = 'utmctr';\nexport const UTMZ_CONTENT = 'utmcct';\n\nexport const GCLID = 'gclid';\nexport const FBCLID = 'fbclid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_source: undefined,\n utm_medium: undefined,\n utm_campaign: undefined,\n utm_term: undefined,\n utm_content: undefined,\n referrer: undefined,\n referring_domain: undefined,\n gclid: undefined,\n fbclid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const getCookieName: (apiKey: string, postKey?: string, limit?: number) => string;
2
+ export declare const getOldCookieName: (apiKey: string) => string;
3
+ //# sourceMappingURL=cookie-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-name.d.ts","sourceRoot":"","sources":["../../src/cookie-name.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,WAAY,MAAM,6CAE3C,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,MAAM,WAE9C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';
2
+ export var getCookieName = function (apiKey, postKey, limit) {
3
+ if (postKey === void 0) { postKey = ''; }
4
+ if (limit === void 0) { limit = 10; }
5
+ return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');
6
+ };
7
+ export var getOldCookieName = function (apiKey) {
8
+ return "".concat(AMPLITUDE_PREFIX.toLowerCase(), "_").concat(apiKey.substring(0, 6));
9
+ };
10
+ //# sourceMappingURL=cookie-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-name.js","sourceRoot":"","sources":["../../src/cookie-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAAY,EAAE,KAAU;IAAxB,wBAAA,EAAA,YAAY;IAAE,sBAAA,EAAA,UAAU;IACpE,OAAO,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAO,UAAG,gBAAgB,CAAC,WAAW,EAAE,cAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;AACvE,CAAC,CAAC","sourcesContent":["import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getCookieName = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nexport const getOldCookieName = (apiKey: string) => {\n return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;\n};\n"]}
@@ -0,0 +1,12 @@
1
+ export { CampaignParser } from './attribution/campaign-parser';
2
+ export { CampaignTracker } from './attribution/campaign-tracker';
3
+ export { getQueryParams } from './query-params';
4
+ export { getCookieName, getOldCookieName } from './cookie-name';
5
+ export { CookieStorage } from './storage/cookie';
6
+ export { UTMCookie } from './storage/utm-cookie';
7
+ export { SessionManager } from './session-manager';
8
+ export { FetchTransport } from './transports/fetch';
9
+ export { getAnalyticsConnector } from './analytics-connector';
10
+ export { IdentityEventSender } from './plugins/identity';
11
+ export { getLanguage } from './language';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { CampaignParser } from './attribution/campaign-parser';
2
+ export { CampaignTracker } from './attribution/campaign-tracker';
3
+ export { getQueryParams } from './query-params';
4
+ export { getCookieName, getOldCookieName } from './cookie-name';
5
+ export { CookieStorage } from './storage/cookie';
6
+ export { UTMCookie } from './storage/utm-cookie';
7
+ export { SessionManager } from './session-manager';
8
+ export { FetchTransport } from './transports/fetch';
9
+ export { getAnalyticsConnector } from './analytics-connector';
10
+ export { IdentityEventSender } from './plugins/identity';
11
+ export { getLanguage } from './language';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export { CampaignParser } from './attribution/campaign-parser';\nexport { CampaignTracker } from './attribution/campaign-tracker';\nexport { getQueryParams } from './query-params';\nexport { getCookieName, getOldCookieName } from './cookie-name';\nexport { CookieStorage } from './storage/cookie';\nexport { UTMCookie } from './storage/utm-cookie';\nexport { SessionManager } from './session-manager';\nexport { FetchTransport } from './transports/fetch';\nexport { getAnalyticsConnector } from './analytics-connector';\nexport { IdentityEventSender } from './plugins/identity';\nexport { getLanguage } from './language';\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const getLanguage: () => string;
2
+ //# sourceMappingURL=language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/language.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAAO,MAM9B,CAAC"}
@@ -0,0 +1,9 @@
1
+ export var getLanguage = function () {
2
+ var _a, _b, _c, _d;
3
+ if (typeof navigator === 'undefined')
4
+ return '';
5
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
6
+ var userLanguage = navigator.userLanguage;
7
+ return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';
8
+ };
9
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/language.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,WAAW,GAAG;;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAChD,sEAAsE;IACtE,IAAM,YAAY,GAAI,SAAiB,CAAC,YAAkC,CAAC;IAE3E,OAAO,MAAA,MAAA,MAAA,MAAA,SAAS,CAAC,SAAS,0CAAG,CAAC,CAAC,mCAAI,SAAS,CAAC,QAAQ,mCAAI,YAAY,mCAAI,EAAE,CAAC;AAC9E,CAAC,CAAC","sourcesContent":["export const getLanguage = (): string => {\n if (typeof navigator === 'undefined') return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const userLanguage = (navigator as any).userLanguage as string | undefined;\n\n return navigator.languages?.[0] ?? navigator.language ?? userLanguage ?? '';\n};\n"]}
@@ -0,0 +1,9 @@
1
+ import { BeforePlugin, Config, Event, PluginType } from '@amplitude/analytics-types';
2
+ export declare class IdentityEventSender implements BeforePlugin {
3
+ name: string;
4
+ type: PluginType.BEFORE;
5
+ identityStore: import("@amplitude/analytics-connector/dist/types/src/identityStore").IdentityStoreImpl;
6
+ execute(context: Event): Promise<Event>;
7
+ setup(_: Config): Promise<undefined>;
8
+ }
9
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/plugins/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGrF,qBAAa,mBAAoB,YAAW,YAAY;IACtD,IAAI,SAAc;IAClB,IAAI,oBAA8B;IAElC,aAAa,0FAAyC;IAEhD,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAQ7C,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;CAGrC"}
@@ -0,0 +1,28 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { PluginType } from '@amplitude/analytics-types';
3
+ import { getAnalyticsConnector } from '../analytics-connector';
4
+ var IdentityEventSender = /** @class */ (function () {
5
+ function IdentityEventSender() {
6
+ this.name = 'identity';
7
+ this.type = PluginType.BEFORE;
8
+ this.identityStore = getAnalyticsConnector().identityStore;
9
+ }
10
+ IdentityEventSender.prototype.execute = function (context) {
11
+ return __awaiter(this, void 0, void 0, function () {
12
+ var userProperties;
13
+ return __generator(this, function (_a) {
14
+ userProperties = context.user_properties;
15
+ if (userProperties) {
16
+ this.identityStore.editIdentity().updateUserProperties(userProperties).commit();
17
+ }
18
+ return [2 /*return*/, context];
19
+ });
20
+ });
21
+ };
22
+ IdentityEventSender.prototype.setup = function (_) {
23
+ return Promise.resolve(undefined);
24
+ };
25
+ return IdentityEventSender;
26
+ }());
27
+ export { IdentityEventSender };
28
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/plugins/identity.ts"],"names":[],"mappings":";AAAA,OAAO,EAA+B,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;IAAA;QACE,SAAI,GAAG,UAAU,CAAC;QAClB,SAAI,GAAG,UAAU,CAAC,MAAe,CAAC;QAElC,kBAAa,GAAG,qBAAqB,EAAE,CAAC,aAAa,CAAC;IAaxD,CAAC;IAXO,qCAAO,GAAb,UAAc,OAAc;;;;gBACpB,cAAc,GAAG,OAAO,CAAC,eAAsC,CAAC;gBACtE,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjF;gBACD,sBAAO,OAAO,EAAC;;;KAChB;IAED,mCAAK,GAAL,UAAM,CAAS;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACH,0BAAC;AAAD,CAAC,AAjBD,IAiBC","sourcesContent":["import { BeforePlugin, Config, Event, PluginType } from '@amplitude/analytics-types';\nimport { getAnalyticsConnector } from '../analytics-connector';\n\nexport class IdentityEventSender implements BeforePlugin {\n name = 'identity';\n type = PluginType.BEFORE as const;\n\n identityStore = getAnalyticsConnector().identityStore;\n\n async execute(context: Event): Promise<Event> {\n const userProperties = context.user_properties as Record<string, any>;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return context;\n }\n\n setup(_: Config): Promise<undefined> {\n return Promise.resolve(undefined);\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const getQueryParams: () => Record<string, string | undefined>;
2
+ export declare const tryDecodeURIComponent: (value?: string) => string;
3
+ //# sourceMappingURL=query-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-params.d.ts","sourceRoot":"","sources":["../../src/query-params.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,QAAO,OAAO,MAAM,EAAE,MAAM,GAAG,SAAS,CAiBlE,CAAC;AAEF,eAAO,MAAM,qBAAqB,4BAMjC,CAAC"}
@@ -0,0 +1,28 @@
1
+ export var getQueryParams = function () {
2
+ /* istanbul ignore if */
3
+ if (typeof window === 'undefined' || !window.location || !window.location.search) {
4
+ return {};
5
+ }
6
+ var pairs = window.location.search.substring(1).split('&').filter(Boolean);
7
+ var params = pairs.reduce(function (acc, curr) {
8
+ var query = curr.split('=', 2);
9
+ var key = tryDecodeURIComponent(query[0]);
10
+ var value = tryDecodeURIComponent(query[1]);
11
+ if (!value) {
12
+ return acc;
13
+ }
14
+ acc[key] = value;
15
+ return acc;
16
+ }, {});
17
+ return params;
18
+ };
19
+ export var tryDecodeURIComponent = function (value) {
20
+ if (value === void 0) { value = ''; }
21
+ try {
22
+ return decodeURIComponent(value);
23
+ }
24
+ catch (_a) {
25
+ return '';
26
+ }
27
+ };
28
+ //# sourceMappingURL=query-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-params.js","sourceRoot":"","sources":["../../src/query-params.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,wBAAwB;IACxB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QAChF,OAAO,EAAE,CAAC;KACX;IACD,IAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7E,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAqC,UAAC,GAAG,EAAE,IAAI;QACxE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,IAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,GAAG,CAAC;SACZ;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,KAAU;IAAV,sBAAA,EAAA,UAAU;IAC9C,IAAI;QACF,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAClC;IAAC,WAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC","sourcesContent":["export const getQueryParams = (): Record<string, string | undefined> => {\n /* istanbul ignore if */\n if (typeof window === 'undefined' || !window.location || !window.location.search) {\n return {};\n }\n const pairs = window.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce<Record<string, string | undefined>>((acc, curr) => {\n const query = curr.split('=', 2);\n const key = tryDecodeURIComponent(query[0]);\n const value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\n\nexport const tryDecodeURIComponent = (value = '') => {\n try {\n return decodeURIComponent(value);\n } catch {\n return '';\n }\n};\n"]}
@@ -0,0 +1,28 @@
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
+ }
28
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,82 @@
1
+ import { __assign, __awaiter, __generator } from "tslib";
2
+ import { getCookieName as getStorageKey } from './cookie-name';
3
+ var SessionManager = /** @class */ (function () {
4
+ function SessionManager(storage, apiKey) {
5
+ this.storage = storage;
6
+ this.isSessionCacheValid = true;
7
+ this.storageKey = getStorageKey(apiKey);
8
+ this.cache = { optOut: false };
9
+ }
10
+ /**
11
+ * load() must be called immediately after instantation
12
+ *
13
+ * ```ts
14
+ * await new SessionManager(...).load();
15
+ * ```
16
+ */
17
+ SessionManager.prototype.load = function () {
18
+ var _a;
19
+ return __awaiter(this, void 0, void 0, function () {
20
+ var _b;
21
+ return __generator(this, function (_c) {
22
+ switch (_c.label) {
23
+ case 0:
24
+ _b = this;
25
+ return [4 /*yield*/, this.storage.get(this.storageKey)];
26
+ case 1:
27
+ _b.cache = (_a = (_c.sent())) !== null && _a !== void 0 ? _a : {
28
+ optOut: false,
29
+ };
30
+ return [2 /*return*/, this];
31
+ }
32
+ });
33
+ });
34
+ };
35
+ SessionManager.prototype.setSession = function (session) {
36
+ this.cache = __assign(__assign({}, this.cache), session);
37
+ void this.storage.set(this.storageKey, this.cache);
38
+ };
39
+ SessionManager.prototype.getSessionId = function () {
40
+ var _this = this;
41
+ this.isSessionCacheValid = true;
42
+ void this.storage.get(this.storageKey).then(function (userSession) {
43
+ // Checks if session id has been set since the last get
44
+ if (_this.isSessionCacheValid) {
45
+ _this.cache.sessionId = userSession === null || userSession === void 0 ? void 0 : userSession.sessionId;
46
+ }
47
+ });
48
+ return this.cache.sessionId;
49
+ };
50
+ SessionManager.prototype.setSessionId = function (sessionId) {
51
+ // Flags session id has been set
52
+ this.isSessionCacheValid = false;
53
+ this.setSession({ sessionId: sessionId });
54
+ };
55
+ SessionManager.prototype.getDeviceId = function () {
56
+ return this.cache.deviceId;
57
+ };
58
+ SessionManager.prototype.setDeviceId = function (deviceId) {
59
+ this.setSession({ deviceId: deviceId });
60
+ };
61
+ SessionManager.prototype.getUserId = function () {
62
+ return this.cache.userId;
63
+ };
64
+ SessionManager.prototype.setUserId = function (userId) {
65
+ this.setSession({ userId: userId });
66
+ };
67
+ SessionManager.prototype.getLastEventTime = function () {
68
+ return this.cache.lastEventTime;
69
+ };
70
+ SessionManager.prototype.setLastEventTime = function (lastEventTime) {
71
+ this.setSession({ lastEventTime: lastEventTime });
72
+ };
73
+ SessionManager.prototype.getOptOut = function () {
74
+ return this.cache.optOut;
75
+ };
76
+ SessionManager.prototype.setOptOut = function (optOut) {
77
+ this.setSession({ optOut: optOut });
78
+ };
79
+ return SessionManager;
80
+ }());
81
+ export { SessionManager };
82
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session-manager.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D;IAKE,wBAAoB,OAA6B,EAAE,MAAc;QAA7C,YAAO,GAAP,OAAO,CAAsB;QAFjD,wBAAmB,GAAG,IAAI,CAAC;QAGzB,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,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,yBAAQ,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","sourcesContent":["import { UserSession, Storage, SessionManager as ISessionManager } from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from './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"]}
@@ -0,0 +1,12 @@
1
+ import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';
2
+ export declare class CookieStorage<T> implements Storage<T> {
3
+ options: CookieStorageOptions;
4
+ constructor(options?: CookieStorageOptions);
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
+ }
12
+ //# sourceMappingURL=cookie.d.ts.map
@@ -0,0 +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;IAIpC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAmBxC,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"}