@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
package/README.md CHANGED
@@ -32,7 +32,7 @@ Alternatively, the package is also distributed through a CDN. Copy and paste the
32
32
  <!-- README_SNIPPET_BLOCK -->
33
33
  ```html
34
34
  <script type="text/javascript">
35
- !function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[]};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{r.invoked=!0;var n=t.createElement("script");n.type="text/javascript",n.integrity="sha384-LXfeh+DR5OUpZh/DgXlUyDk2rPfEHuspdPhunqmzSzvWrAfTubKZI5uIHlzd9Uzz",n.crossOrigin="anonymous",n.async=!0,n.src="https://cdn.amplitude.com/libs/analytics-browser-0.5.1-min.js.gz",n.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var s=t.getElementsByTagName("script")[0];function v(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}}s.parentNode.insertBefore(n,s);for(var o=function(){return this._q=[],this},i=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],a=0;a<i.length;a++)v(o,i[a]);r.Identify=o;for(var u=function(){return this._q=[],this},c=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],p=0;p<c.length;p++)v(u,c[p]);r.Revenue=u;var d=["getDeviceId","setDeviceId","regenerateDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport"],l=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue"];function f(e){function t(t,r){e[t]=function(){var n={promise:new Promise((r=>{e._q.push({name:t,args:Array.prototype.slice.call(arguments,0),resolve:r})}))};if(r)return n}}for(var r=0;r<d.length;r++)t(d[r],!1);for(var n=0;n<l.length;n++)t(l[n],!0)}f(r),e.amplitude=r}}(window,document)}();
35
+ !function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[]};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{r.invoked=!0;var n=t.createElement("script");n.type="text/javascript",n.integrity="sha384-4cI8KmvK50Np4vrOodfx8p0b15oVvHpnhj9jrlCLpvzxkXaIoJu7qoeud6+iIDSv",n.crossOrigin="anonymous",n.async=!0,n.src="https://cdn.amplitude.com/libs/analytics-browser-0.7.0-min.js.gz",n.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var o=t.getElementsByTagName("script")[0];function v(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}}o.parentNode.insertBefore(n,o);for(var s=function(){return this._q=[],this},i=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],a=0;a<i.length;a++)v(s,i[a]);r.Identify=s;for(var u=function(){return this._q=[],this},c=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],p=0;p<c.length;p++)v(u,c[p]);r.Revenue=u;var d=["getDeviceId","setDeviceId","regenerateDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport"],l=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue"];function f(e){function t(t,r){e[t]=function(){var n={promise:new Promise((r=>{e._q.push({name:t,args:Array.prototype.slice.call(arguments,0),resolve:r})}))};if(r)return n}}for(var r=0;r<d.length;r++)t(d[r],!1);for(var n=0;n<l.length;n++)t(l[n],!0)}f(r),e.amplitude=r}}(window,document)}();
36
36
 
37
37
  amplitude.init("YOUR_API_KEY_HERE");
38
38
  </script>
@@ -0,0 +1,10 @@
1
+ import { UTMCookie } from '../storage/utm-cookie';
2
+ import { Campaign, CampaignParser as ICampaignParser, ClickIdParameters, ReferrerParameters, UTMParameters } from '@amplitude/analytics-types';
3
+ export declare class CampaignParser implements ICampaignParser {
4
+ utmCookieStorage: UTMCookie;
5
+ parse(): Promise<Campaign>;
6
+ getUtmParam(): Promise<UTMParameters>;
7
+ getReferrer(): ReferrerParameters;
8
+ getClickIds(): ClickIdParameters;
9
+ }
10
+ //# sourceMappingURL=campaign-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-parser.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAiBlD,OAAO,EACL,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACd,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,cAAe,YAAW,eAAe;IACpD,gBAAgB,YAAmB;IAE7B,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;IAS1B,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;IAmB3C,WAAW,IAAI,kBAAkB;IAcjC,WAAW,IAAI,iBAAiB;CAOjC"}
@@ -0,0 +1,83 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.CampaignParser = void 0;
3
+ var tslib_1 = require("tslib");
4
+ var utm_cookie_1 = require("../storage/utm-cookie");
5
+ var query_params_1 = require("../utils/query-params");
6
+ var constants_1 = require("./constants");
7
+ var CampaignParser = /** @class */ (function () {
8
+ function CampaignParser() {
9
+ this.utmCookieStorage = new utm_cookie_1.UTMCookie();
10
+ }
11
+ CampaignParser.prototype.parse = function () {
12
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
13
+ var _a;
14
+ return (0, tslib_1.__generator)(this, function (_b) {
15
+ switch (_b.label) {
16
+ case 0:
17
+ _a = [(0, tslib_1.__assign)({}, constants_1.BASE_CAMPAIGN)];
18
+ return [4 /*yield*/, this.getUtmParam()];
19
+ case 1: return [2 /*return*/, tslib_1.__assign.apply(void 0, [tslib_1.__assign.apply(void 0, [tslib_1.__assign.apply(void 0, _a.concat([(_b.sent())])), this.getReferrer()]), this.getClickIds()])];
20
+ }
21
+ });
22
+ });
23
+ };
24
+ CampaignParser.prototype.getUtmParam = function () {
25
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
26
+ var params, cookies, _a, utmSource, utmMedium, utmCampaign, utmTerm, utmContent;
27
+ return (0, tslib_1.__generator)(this, function (_b) {
28
+ switch (_b.label) {
29
+ case 0:
30
+ params = (0, query_params_1.getQueryParams)();
31
+ return [4 /*yield*/, this.utmCookieStorage.isEnabled()];
32
+ case 1:
33
+ _a = (_b.sent());
34
+ if (!_a) return [3 /*break*/, 3];
35
+ return [4 /*yield*/, this.utmCookieStorage.get('__utmz')];
36
+ case 2:
37
+ _a = (_b.sent());
38
+ _b.label = 3;
39
+ case 3:
40
+ cookies = (_a) || {};
41
+ utmSource = params[constants_1.UTM_SOURCE] || cookies[constants_1.UTMZ_SOURCE];
42
+ utmMedium = params[constants_1.UTM_MEDIUM] || cookies[constants_1.UTMZ_MEDIUM];
43
+ utmCampaign = params[constants_1.UTM_CAMPAIGN] || cookies[constants_1.UTMZ_CAMPAIGN];
44
+ utmTerm = params[constants_1.UTM_TERM] || cookies[constants_1.UTMZ_TERM];
45
+ utmContent = params[constants_1.UTM_CONTENT] || cookies[constants_1.UTMZ_CONTENT];
46
+ return [2 /*return*/, {
47
+ utm_source: utmSource,
48
+ utm_medium: utmMedium,
49
+ utm_campaign: utmCampaign,
50
+ utm_term: utmTerm,
51
+ utm_content: utmContent,
52
+ }];
53
+ }
54
+ });
55
+ });
56
+ };
57
+ CampaignParser.prototype.getReferrer = function () {
58
+ var _a, _b;
59
+ var data = {
60
+ referrer: undefined,
61
+ referring_domain: undefined,
62
+ };
63
+ try {
64
+ data.referrer = document.referrer || undefined;
65
+ data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;
66
+ }
67
+ catch (_c) {
68
+ // nothing to track
69
+ }
70
+ return data;
71
+ };
72
+ CampaignParser.prototype.getClickIds = function () {
73
+ var _a;
74
+ var params = (0, query_params_1.getQueryParams)();
75
+ return _a = {},
76
+ _a[constants_1.GCLID] = params[constants_1.GCLID],
77
+ _a[constants_1.FBCLID] = params[constants_1.FBCLID],
78
+ _a;
79
+ };
80
+ return CampaignParser;
81
+ }());
82
+ exports.CampaignParser = CampaignParser;
83
+ //# sourceMappingURL=campaign-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-parser.js","sourceRoot":"","sources":["../../../src/attribution/campaign-parser.ts"],"names":[],"mappings":";;;AAAA,oDAAkD;AAClD,sDAAuD;AACvD,yCAcqB;AASrB;IAAA;QACE,qBAAgB,GAAG,IAAI,sBAAS,EAAE,CAAC;IAmDrC,CAAC;IAjDO,8BAAK,GAAX;;;;;;wDAEO,yBAAa;wBACZ,qBAAM,IAAI,CAAC,WAAW,EAAE,EAAA;4BAF9B,sBAAO,0GAEF,CAAC,SAAwB,CAAC,KAC1B,IAAI,CAAC,WAAW,EAAE,IAClB,IAAI,CAAC,WAAW,EAAE,EACV,EAAC;;;;KACf;IAEK,oCAAW,GAAjB;;;;;;wBACQ,MAAM,GAAG,IAAA,6BAAc,GAAE,CAAC;wBACd,qBAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAA;;wBAAxC,KAAA,CAAC,SAAuC,CAAC,CAAA;iCAAzC,wBAAyC;wBAAK,qBAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAA;;wBAA1C,KAAA,CAAC,SAAyC,CAAC,CAAA;;;wBAAnG,OAAO,GAAG,IAA0F,IAAI,EAAE;wBAE1G,SAAS,GAAG,MAAM,CAAC,sBAAU,CAAC,IAAI,OAAO,CAAC,uBAAW,CAAC,CAAC;wBACvD,SAAS,GAAG,MAAM,CAAC,sBAAU,CAAC,IAAI,OAAO,CAAC,uBAAW,CAAC,CAAC;wBACvD,WAAW,GAAG,MAAM,CAAC,wBAAY,CAAC,IAAI,OAAO,CAAC,yBAAa,CAAC,CAAC;wBAC7D,OAAO,GAAG,MAAM,CAAC,oBAAQ,CAAC,IAAI,OAAO,CAAC,qBAAS,CAAC,CAAC;wBACjD,UAAU,GAAG,MAAM,CAAC,uBAAW,CAAC,IAAI,OAAO,CAAC,wBAAY,CAAC,CAAC;wBAEhE,sBAAO;gCACL,UAAU,EAAE,SAAS;gCACrB,UAAU,EAAE,SAAS;gCACrB,YAAY,EAAE,WAAW;gCACzB,QAAQ,EAAE,OAAO;gCACjB,WAAW,EAAE,UAAU;6BACxB,EAAC;;;;KACH;IAED,oCAAW,GAAX;;QACE,IAAM,IAAI,GAAuB;YAC/B,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,SAAS;SAC5B,CAAC;QACF,IAAI;YACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC;YAC/C,IAAI,CAAC,gBAAgB,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAI,SAAS,CAAC;SACnE;QAAC,WAAM;YACN,mBAAmB;SACpB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAW,GAAX;;QACE,IAAM,MAAM,GAAG,IAAA,6BAAc,GAAE,CAAC;QAChC;YACE,GAAC,iBAAK,IAAG,MAAM,CAAC,iBAAK,CAAC;YACtB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;eACxB;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AApDD,IAoDC;AApDY,wCAAc","sourcesContent":["import { UTMCookie } from '../storage/utm-cookie';\nimport { getQueryParams } from '../utils/query-params';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n UTMZ_SOURCE,\n UTMZ_MEDIUM,\n UTMZ_CAMPAIGN,\n UTMZ_TERM,\n UTMZ_CONTENT,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from '@amplitude/analytics-types';\n\nexport class CampaignParser implements ICampaignParser {\n utmCookieStorage = new UTMCookie();\n\n async parse(): Promise<Campaign> {\n return {\n ...BASE_CAMPAIGN,\n ...(await this.getUtmParam()),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n async getUtmParam(): Promise<UTMParameters> {\n const params = getQueryParams();\n const cookies = ((await this.utmCookieStorage.isEnabled()) && (await this.utmCookieStorage.get('__utmz'))) || {};\n\n const utmSource = params[UTM_SOURCE] || cookies[UTMZ_SOURCE];\n const utmMedium = params[UTM_MEDIUM] || cookies[UTMZ_MEDIUM];\n const utmCampaign = params[UTM_CAMPAIGN] || cookies[UTMZ_CAMPAIGN];\n const utmTerm = params[UTM_TERM] || cookies[UTMZ_TERM];\n const utmContent = params[UTM_CONTENT] || cookies[UTMZ_CONTENT];\n\n return {\n utm_source: utmSource,\n utm_medium: utmMedium,\n utm_campaign: utmCampaign,\n utm_term: utmTerm,\n utm_content: utmContent,\n };\n }\n\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [GCLID]: params[GCLID],\n [FBCLID]: params[FBCLID],\n };\n }\n}\n"]}
@@ -0,0 +1,72 @@
1
+ import { Storage, Campaign, CampaignParser as ICampaignParser, CampaignTracker as ICampaignTracker, CampaignTrackFunction, CampaignTrackerOptions } from '@amplitude/analytics-types';
2
+ export declare class CampaignTracker implements ICampaignTracker {
3
+ storage: Storage<Campaign>;
4
+ storageKey: string;
5
+ parser: ICampaignParser;
6
+ track: CampaignTrackFunction;
7
+ onNewCampaign: (campaign: Campaign) => unknown;
8
+ disabled: boolean;
9
+ trackNewCampaigns: boolean;
10
+ trackPageViews: boolean;
11
+ excludeReferrers: string[];
12
+ initialEmptyValue: string;
13
+ constructor(apiKey: string, options: CampaignTrackerOptions);
14
+ isNewCampaign(currentCampaign: Campaign, previousCampaign: Campaign): boolean;
15
+ saveCampaignToStorage(campaign: Campaign): Promise<void>;
16
+ getCampaignFromStorage(): Promise<Campaign>;
17
+ createCampaignEvent(campaign: Campaign): {
18
+ event_type: string;
19
+ event_properties?: {
20
+ [key: string]: any;
21
+ } | undefined;
22
+ user_properties: {
23
+ [key: string]: any;
24
+ } | import("@amplitude/analytics-types").IdentifyUserProperties | {
25
+ [x: string]: any;
26
+ };
27
+ group_properties?: {
28
+ [key: string]: any;
29
+ } | undefined;
30
+ groups?: {
31
+ [key: string]: any;
32
+ } | undefined;
33
+ user_id?: string | undefined;
34
+ device_id?: string | undefined;
35
+ time?: number | undefined;
36
+ location_lat?: number | undefined;
37
+ location_lng?: number | undefined;
38
+ app_version?: string | undefined;
39
+ version_name?: string | undefined;
40
+ library?: string | undefined;
41
+ platform?: string | undefined;
42
+ os_name?: string | undefined;
43
+ os_version?: string | undefined;
44
+ device_brand?: string | undefined;
45
+ device_manufacturer?: string | undefined;
46
+ device_model?: string | undefined;
47
+ carrier?: string | undefined;
48
+ country?: string | undefined;
49
+ region?: string | undefined;
50
+ city?: string | undefined;
51
+ dma?: string | undefined;
52
+ idfa?: string | undefined;
53
+ idfv?: string | undefined;
54
+ adid?: string | undefined;
55
+ android_id?: string | undefined;
56
+ language?: string | undefined;
57
+ ip?: string | undefined;
58
+ uuid?: string | undefined;
59
+ price?: number | undefined;
60
+ quantity?: number | undefined;
61
+ revenue?: number | undefined;
62
+ productId?: string | undefined;
63
+ revenueType?: string | undefined;
64
+ event_id?: number | undefined;
65
+ session_id?: number | undefined;
66
+ insert_id?: string | undefined;
67
+ plan?: import("@amplitude/analytics-types").Plan | undefined;
68
+ partner_id?: string | undefined;
69
+ };
70
+ send(isNewSession: boolean): Promise<void>;
71
+ }
72
+ //# sourceMappingURL=campaign-tracker.d.ts.map
@@ -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,113 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.CampaignTracker = void 0;
3
+ var tslib_1 = require("tslib");
4
+ var analytics_core_1 = require("@amplitude/analytics-core");
5
+ var cookie_name_1 = require("../utils/cookie-name");
6
+ var campaign_parser_1 = require("./campaign-parser");
7
+ var constants_1 = require("./constants");
8
+ var CampaignTracker = /** @class */ (function () {
9
+ function CampaignTracker(apiKey, options) {
10
+ var _a, _b;
11
+ this.storage = options.storage;
12
+ this.storageKey = (0, cookie_name_1.getCookieName)(apiKey, constants_1.MKTG);
13
+ this.parser = new campaign_parser_1.CampaignParser();
14
+ this.track = options.track;
15
+ this.onNewCampaign = options.onNewCampaign;
16
+ this.disabled = Boolean(options.disabled);
17
+ this.trackNewCampaigns = Boolean(options.trackNewCampaigns);
18
+ this.trackPageViews = Boolean(options.trackPageViews);
19
+ this.excludeReferrers = (_a = options.excludeReferrers) !== null && _a !== void 0 ? _a : [];
20
+ if (typeof location !== 'undefined') {
21
+ this.excludeReferrers.unshift(location.hostname);
22
+ }
23
+ this.initialEmptyValue = (_b = options.initialEmptyValue) !== null && _b !== void 0 ? _b : constants_1.EMPTY_VALUE;
24
+ }
25
+ CampaignTracker.prototype.isNewCampaign = function (currentCampaign, previousCampaign) {
26
+ var isReferrerExcluded = Boolean(currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain));
27
+ var hasNewUtm = previousCampaign.utm_campaign !== currentCampaign.utm_campaign ||
28
+ previousCampaign.utm_source !== currentCampaign.utm_source ||
29
+ previousCampaign.utm_medium !== currentCampaign.utm_medium ||
30
+ previousCampaign.utm_term !== currentCampaign.utm_term ||
31
+ previousCampaign.utm_content !== currentCampaign.utm_content;
32
+ var hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;
33
+ return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);
34
+ };
35
+ CampaignTracker.prototype.saveCampaignToStorage = function (campaign) {
36
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
37
+ return (0, tslib_1.__generator)(this, function (_a) {
38
+ switch (_a.label) {
39
+ case 0: return [4 /*yield*/, this.storage.set(this.storageKey, campaign)];
40
+ case 1:
41
+ _a.sent();
42
+ return [2 /*return*/];
43
+ }
44
+ });
45
+ });
46
+ };
47
+ CampaignTracker.prototype.getCampaignFromStorage = function () {
48
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
49
+ return (0, tslib_1.__generator)(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0: return [4 /*yield*/, this.storage.get(this.storageKey)];
52
+ case 1: return [2 /*return*/, (_a.sent()) || (0, tslib_1.__assign)({}, constants_1.BASE_CAMPAIGN)];
53
+ }
54
+ });
55
+ });
56
+ };
57
+ CampaignTracker.prototype.createCampaignEvent = function (campaign) {
58
+ var _this = this;
59
+ var campaignParameters = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, constants_1.BASE_CAMPAIGN), campaign);
60
+ var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {
61
+ var _b = (0, tslib_1.__read)(_a, 2), key = _b[0], value = _b[1];
62
+ identify.setOnce("initial_".concat(key), value || _this.initialEmptyValue);
63
+ if (value) {
64
+ return identify.set(key, value);
65
+ }
66
+ return identify.unset(key);
67
+ }, new analytics_core_1.Identify());
68
+ var pageViewEvent = {
69
+ event_type: 'Page View',
70
+ event_properties: {
71
+ page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',
72
+ page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',
73
+ page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',
74
+ },
75
+ };
76
+ return (0, tslib_1.__assign)((0, tslib_1.__assign)({}, (0, analytics_core_1.createIdentifyEvent)(identifyEvent)), (this.trackPageViews && pageViewEvent));
77
+ };
78
+ CampaignTracker.prototype.send = function (isNewSession) {
79
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
80
+ var currentCampaign, previousCampaign;
81
+ return (0, tslib_1.__generator)(this, function (_a) {
82
+ switch (_a.label) {
83
+ case 0:
84
+ if (this.disabled) {
85
+ return [2 /*return*/];
86
+ }
87
+ return [4 /*yield*/, this.parser.parse()];
88
+ case 1:
89
+ currentCampaign = _a.sent();
90
+ return [4 /*yield*/, this.getCampaignFromStorage()];
91
+ case 2:
92
+ previousCampaign = _a.sent();
93
+ if (!isNewSession) {
94
+ if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {
95
+ return [2 /*return*/];
96
+ }
97
+ this.onNewCampaign(currentCampaign);
98
+ }
99
+ return [4 /*yield*/, this.track(this.createCampaignEvent(currentCampaign))];
100
+ case 3:
101
+ _a.sent();
102
+ return [4 /*yield*/, this.saveCampaignToStorage(currentCampaign)];
103
+ case 4:
104
+ _a.sent();
105
+ return [2 /*return*/];
106
+ }
107
+ });
108
+ });
109
+ };
110
+ return CampaignTracker;
111
+ }());
112
+ exports.CampaignTracker = CampaignTracker;
113
+ //# sourceMappingURL=campaign-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-tracker.js","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":";;;AAAA,4DAA0E;AAU1E,oDAAsE;AACtE,qDAAmD;AACnD,yCAA+D;AAE/D;IAaE,yBAAY,MAAc,EAAE,OAA+B;;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAA,2BAAa,EAAC,MAAM,EAAE,gBAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,gCAAc,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAE3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,EAAE,CAAC;QACvD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,iBAAiB,mCAAI,uBAAW,CAAC;IACpE,CAAC;IAED,uCAAa,GAAb,UAAc,eAAyB,EAAE,gBAA0B;QACjE,IAAM,kBAAkB,GAAG,OAAO,CAChC,eAAe,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACrG,CAAC;QACF,IAAM,SAAS,GACb,gBAAgB,CAAC,YAAY,KAAK,eAAe,CAAC,YAAY;YAC9D,gBAAgB,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU;YAC1D,gBAAgB,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU;YAC1D,gBAAgB,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ;YACtD,gBAAgB,CAAC,WAAW,KAAK,eAAe,CAAC,WAAW,CAAC;QAC/D,IAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,KAAK,eAAe,CAAC,gBAAgB,CAAC;QAE9F,OAAO,CAAC,kBAAkB,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC;IAC9D,CAAC;IAEK,+CAAqB,GAA3B,UAA4B,QAAkB;;;;4BAC5C,qBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAA;;wBAAjD,SAAiD,CAAC;;;;;KACnD;IAEK,gDAAsB,GAA5B;;;;4BACU,qBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;4BAA/C,sBAAO,CAAC,SAAuC,CAAC,8BAAS,yBAAa,CAAE,EAAC;;;;KAC1E;IAED,6CAAmB,GAAnB,UAAoB,QAAkB;QAAtC,iBA2BC;QA1BC,IAAM,kBAAkB,mDAGnB,yBAAa,GACb,QAAQ,CACZ,CAAC;QACF,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,EAAY;gBAAZ,KAAA,0BAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;YACpF,QAAQ,CAAC,OAAO,CAAC,kBAAW,GAAG,CAAE,EAAE,KAAK,IAAI,KAAI,CAAC,iBAAiB,CAAC,CAAC;YACpE,IAAI,KAAK,EAAE;gBACT,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACjC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,EAAE,IAAI,yBAAQ,EAAE,CAAC,CAAC;QAEnB,IAAM,aAAa,GAAc;YAC/B,UAAU,EAAE,WAAW;YACvB,gBAAgB,EAAE;gBAChB,UAAU,EAAE,0BAA0B,CAAC,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;gBAChG,aAAa,EAAE,0BAA0B,CAAC,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClG,SAAS,EAAE,0BAA0B,CAAC,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;aACnG;SACF,CAAC;QACF,uDACK,IAAA,oCAAmB,EAAC,aAAa,CAAC,GAClC,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,EACzC;IACJ,CAAC;IAEK,8BAAI,GAAV,UAAW,YAAqB;;;;;;wBAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACjB,sBAAO;yBACR;wBACuB,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAA;;wBAA3C,eAAe,GAAG,SAAyB;wBACxB,qBAAM,IAAI,CAAC,sBAAsB,EAAE,EAAA;;wBAAtD,gBAAgB,GAAG,SAAmC;wBAC5D,IAAI,CAAC,YAAY,EAAE;4BACjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE;gCACrF,sBAAO;6BACR;4BACD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;yBACrC;wBACD,qBAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,EAAA;;wBAA3D,SAA2D,CAAC;wBAC5D,qBAAM,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,EAAA;;wBAAjD,SAAiD,CAAC;;;;;KACnD;IACH,sBAAC;AAAD,CAAC,AAjGD,IAiGC;AAjGY,0CAAe","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 '../utils/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"]}
@@ -1,3 +1,4 @@
1
+ import { Campaign } from '@amplitude/analytics-types';
1
2
  export declare const UTM_SOURCE = "utm_source";
2
3
  export declare const UTM_MEDIUM = "utm_medium";
3
4
  export declare const UTM_CAMPAIGN = "utm_campaign";
@@ -10,4 +11,7 @@ export declare const UTMZ_TERM = "utmctr";
10
11
  export declare const UTMZ_CONTENT = "utmcct";
11
12
  export declare const GCLID = "gclid";
12
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";
13
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,28 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.MKTG = exports.BASE_CAMPAIGN = exports.EMPTY_VALUE = exports.FBCLID = exports.GCLID = exports.UTMZ_CONTENT = exports.UTMZ_TERM = exports.UTMZ_CAMPAIGN = exports.UTMZ_MEDIUM = exports.UTMZ_SOURCE = exports.UTM_CONTENT = exports.UTM_TERM = exports.UTM_CAMPAIGN = exports.UTM_MEDIUM = exports.UTM_SOURCE = void 0;
3
+ exports.UTM_SOURCE = 'utm_source';
4
+ exports.UTM_MEDIUM = 'utm_medium';
5
+ exports.UTM_CAMPAIGN = 'utm_campaign';
6
+ exports.UTM_TERM = 'utm_term';
7
+ exports.UTM_CONTENT = 'utm_content';
8
+ exports.UTMZ_SOURCE = 'utmcsr';
9
+ exports.UTMZ_MEDIUM = 'utmcmd';
10
+ exports.UTMZ_CAMPAIGN = 'utmccn';
11
+ exports.UTMZ_TERM = 'utmctr';
12
+ exports.UTMZ_CONTENT = 'utmcct';
13
+ exports.GCLID = 'gclid';
14
+ exports.FBCLID = 'fbclid';
15
+ exports.EMPTY_VALUE = 'EMPTY';
16
+ exports.BASE_CAMPAIGN = {
17
+ utm_source: undefined,
18
+ utm_medium: undefined,
19
+ utm_campaign: undefined,
20
+ utm_term: undefined,
21
+ utm_content: undefined,
22
+ referrer: undefined,
23
+ referring_domain: undefined,
24
+ gclid: undefined,
25
+ fbclid: undefined,
26
+ };
27
+ exports.MKTG = 'MKTG';
28
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/attribution/constants.ts"],"names":[],"mappings":";;AAEa,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,QAAQ,GAAG,UAAU,CAAC;AACtB,QAAA,WAAW,GAAG,aAAa,CAAC;AAE5B,QAAA,WAAW,GAAG,QAAQ,CAAC;AACvB,QAAA,WAAW,GAAG,QAAQ,CAAC;AACvB,QAAA,aAAa,GAAG,QAAQ,CAAC;AACzB,QAAA,SAAS,GAAG,QAAQ,CAAC;AACrB,QAAA,YAAY,GAAG,QAAQ,CAAC;AAExB,QAAA,KAAK,GAAG,OAAO,CAAC;AAChB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAElB,QAAA,WAAW,GAAG,OAAO,CAAC;AAEtB,QAAA,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;AAEW,QAAA,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"]}
@@ -1,7 +1,8 @@
1
1
  import { AmplitudeCore } from '@amplitude/analytics-core';
2
- import { BrowserConfig, BrowserOptions, EventOptions, Identify as IIdentify, Result, Revenue as IRevenue, TransportType } from '@amplitude/analytics-types';
2
+ import { AdditionalBrowserOptions, AttributionBrowserOptions, BrowserConfig, BrowserOptions, EventOptions, Identify as IIdentify, Result, Revenue as IRevenue, TransportType } from '@amplitude/analytics-types';
3
3
  export declare class AmplitudeBrowser extends AmplitudeCore<BrowserConfig> {
4
- init(apiKey: string, userId?: string, options?: BrowserOptions): Promise<void>;
4
+ init(apiKey: string, userId?: string, options?: BrowserOptions & AdditionalBrowserOptions): Promise<void>;
5
+ runAttributionStrategy(attributionConfig?: AttributionBrowserOptions, isNewSession?: boolean): Promise<void>;
5
6
  getUserId(): string | undefined;
6
7
  setUserId(userId: string | undefined): void;
7
8
  getDeviceId(): string | undefined;
@@ -14,7 +15,6 @@ export declare class AmplitudeBrowser extends AmplitudeCore<BrowserConfig> {
14
15
  identify(identify: IIdentify, eventOptions?: EventOptions): Promise<Result>;
15
16
  groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions): Promise<Result>;
16
17
  revenue(revenue: IRevenue, eventOptions?: EventOptions): Promise<Result>;
17
- trackAttributions(): Promise<Result> | undefined;
18
18
  }
19
19
  /**
20
20
  * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.
@@ -24,7 +24,7 @@ export declare class AmplitudeBrowser extends AmplitudeCore<BrowserConfig> {
24
24
  * await init(API_KEY, USER_ID, options).promise;
25
25
  * ```
26
26
  */
27
- export declare const init: (apiKey: string, userId?: string | undefined, options?: BrowserOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<void>;
27
+ export declare const init: (apiKey: string, userId?: string | undefined, options?: (BrowserOptions & AdditionalBrowserOptions) | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<void>;
28
28
  /**
29
29
  * Adds a new plugin.
30
30
  *
@@ -206,4 +206,16 @@ export declare const setOptOut: (optOut: boolean) => void;
206
206
  * ```
207
207
  */
208
208
  export declare const setTransport: (transport: TransportType) => void;
209
+ /**
210
+ * Flush and send all the events which haven't been sent.
211
+ *
212
+ *```typescript
213
+ * // Send all the unsent events
214
+ * flush();
215
+ *
216
+ * // alternatively, this tracking method is awaitable
217
+ * await flush().promise;
218
+ * ```
219
+ */
220
+ export declare const flush: () => import("@amplitude/analytics-types").AmplitudeReturn<void>;
209
221
  //# sourceMappingURL=browser-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiD,MAAM,2BAA2B,CAAC;AACzG,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,IAAI,SAAS,EACrB,MAAM,EACN,OAAO,IAAI,QAAQ,EACnB,aAAa,EACd,MAAM,4BAA4B,CAAC;AAQpC,qBAAa,gBAAiB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;IAwBpE,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAKpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAK5B,kBAAkB;IAKlB,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;IAK9B,SAAS,CAAC,MAAM,EAAE,OAAO;IAKzB,YAAY,CAAC,SAAS,EAAE,aAAa;IAIrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAS3E,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,QAAQ,EAAE,SAAS,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,CAAC;IASlB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,YAAY;IAStD,iBAAiB;CAclB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,mJAA0C,CAAC;AAE5D;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,qHAAyC,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,oFAA4C,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,mOAA2C,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,QAAQ,mOAA8C,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,gIAA8C,CAAC;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,iLAAmD,CAAC;AAC9E,eAAO,MAAM,QAAQ,mHAA8C,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,8HAA6C,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,0BAAgC,CAAC;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,WArNF,MAAM,GAAG,SAAS,SAqNgB,CAAC;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,0BAAkC,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,aAhOA,MAAM,SAgO4B,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,YAAyC,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,0BAAmC,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,cAhPC,MAAM,SAgP4B,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,WAxPF,OAAO,SAwP2B,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,cAnQC,aAAa,SAmQqB,CAAC"}
1
+ {"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiD,MAAM,2BAA2B,CAAC;AACzG,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACb,cAAc,EAEd,YAAY,EACZ,QAAQ,IAAI,SAAS,EACrB,MAAM,EACN,OAAO,IAAI,QAAQ,EACnB,aAAa,EACd,MAAM,4BAA4B,CAAC;AAOpC,qBAAa,gBAAiB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,wBAAwB;IAoCzF,sBAAsB,CAAC,iBAAiB,CAAC,EAAE,yBAAyB,EAAE,YAAY,UAAQ;IAehG,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAIpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAI5B,kBAAkB;IAKlB,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;IAI9B,SAAS,CAAC,MAAM,EAAE,OAAO;IAIzB,YAAY,CAAC,SAAS,EAAE,aAAa;IAIrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAS3E,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,QAAQ,EAAE,SAAS,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,CAAC;IASlB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,YAAY;CAQvD;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,gLAA0C,CAAC;AAE5D;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,qHAAyC,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,oFAA4C,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,mOAA2C,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,QAAQ,mOAA8C,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,gIAA8C,CAAC;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,iLAAmD,CAAC;AAC9E,eAAO,MAAM,QAAQ,mHAA8C,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,8HAA6C,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,0BAAgC,CAAC;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,WAlMF,MAAM,GAAG,SAAS,SAkMgB,CAAC;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,0BAAkC,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,aA9MA,MAAM,SA8M4B,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,YAAyC,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,0BAAmC,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,cA/NC,MAAM,SA+N4B,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,WAxOF,OAAO,SAwO2B,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,cApPC,aAAa,SAoPqB,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,kEAA2C,CAAC"}
@@ -1,13 +1,12 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.setTransport = exports.setOptOut = exports.setSessionId = exports.getSessionId = exports.regenerateDeviceId = exports.setDeviceId = exports.getDeviceId = exports.setUserId = exports.getUserId = exports.revenue = exports.setGroup = exports.groupIdentify = exports.identify = exports.logEvent = exports.track = exports.remove = exports.add = exports.init = exports.AmplitudeBrowser = void 0;
2
+ exports.flush = exports.setTransport = exports.setOptOut = exports.setSessionId = exports.getSessionId = exports.regenerateDeviceId = exports.setDeviceId = exports.getDeviceId = exports.setUserId = exports.getUserId = exports.revenue = exports.setGroup = exports.groupIdentify = exports.identify = exports.logEvent = exports.track = exports.remove = exports.add = exports.init = exports.AmplitudeBrowser = void 0;
3
3
  var tslib_1 = require("tslib");
4
4
  var analytics_core_1 = require("@amplitude/analytics-core");
5
5
  var snippet_helper_1 = require("./utils/snippet-helper");
6
6
  var context_1 = require("./plugins/context");
7
7
  var config_1 = require("./config");
8
- var attribution_1 = require("./attribution");
9
- var session_manager_1 = require("./session-manager");
10
8
  var cookie_migration_1 = require("./cookie-migration");
9
+ var campaign_tracker_1 = require("./attribution/campaign-tracker");
11
10
  var AmplitudeBrowser = /** @class */ (function (_super) {
12
11
  (0, tslib_1.__extends)(AmplitudeBrowser, _super);
13
12
  function AmplitudeBrowser() {
@@ -16,27 +15,63 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
16
15
  AmplitudeBrowser.prototype.init = function (apiKey, userId, options) {
17
16
  var _a, _b, _c;
18
17
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
19
- var oldCookies, browserOptions;
18
+ var oldCookies, browserOptions, isNewSession;
20
19
  return (0, tslib_1.__generator)(this, function (_d) {
21
20
  switch (_d.label) {
22
- case 0:
23
- oldCookies = (0, cookie_migration_1.parseOldCookies)(apiKey, options);
24
- browserOptions = (0, config_1.useBrowserConfig)(apiKey, userId || oldCookies.userId, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { deviceId: (_a = oldCookies.deviceId) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.deviceId, sessionId: (_b = oldCookies.sessionId) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.sessionId, optOut: (_c = options === null || options === void 0 ? void 0 : options.optOut) !== null && _c !== void 0 ? _c : oldCookies.optOut }));
25
- return [4 /*yield*/, _super.prototype.init.call(this, undefined, undefined, browserOptions)];
21
+ case 0: return [4 /*yield*/, (0, cookie_migration_1.parseOldCookies)(apiKey, options)];
26
22
  case 1:
23
+ oldCookies = _d.sent();
24
+ return [4 /*yield*/, (0, config_1.useBrowserConfig)(apiKey, userId || oldCookies.userId, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { deviceId: (_a = oldCookies.deviceId) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.deviceId, sessionId: (_b = oldCookies.sessionId) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.sessionId, optOut: (_c = options === null || options === void 0 ? void 0 : options.optOut) !== null && _c !== void 0 ? _c : oldCookies.optOut, lastEventTime: oldCookies.lastEventTime }))];
25
+ case 2:
26
+ browserOptions = _d.sent();
27
+ return [4 /*yield*/, _super.prototype.init.call(this, undefined, undefined, browserOptions)];
28
+ case 3:
27
29
  _d.sent();
28
- // Step 3: Store user session in cookie storage
29
- (0, session_manager_1.updateCookies)(this.config, oldCookies.lastEventTime);
30
+ isNewSession = false;
31
+ if (!this.config.sessionId ||
32
+ (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)) {
33
+ // Either
34
+ // 1) No previous session; or
35
+ // 2) Previous session expired
36
+ this.config.sessionId = Date.now();
37
+ isNewSession = true;
38
+ }
30
39
  // Step 4: Install plugins
40
+ // Do not track any events before this
31
41
  return [4 /*yield*/, this.add(new context_1.Context())];
32
- case 2:
42
+ case 4:
33
43
  // Step 4: Install plugins
44
+ // Do not track any events before this
34
45
  _d.sent();
35
46
  return [4 /*yield*/, this.add(new analytics_core_1.Destination())];
36
- case 3:
47
+ case 5:
48
+ _d.sent();
49
+ // Step 5: Track attributions
50
+ return [4 /*yield*/, this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession)];
51
+ case 6:
52
+ // Step 5: Track attributions
37
53
  _d.sent();
38
- // Step 4: Track attributions
39
- void this.trackAttributions();
54
+ return [2 /*return*/];
55
+ }
56
+ });
57
+ });
58
+ };
59
+ AmplitudeBrowser.prototype.runAttributionStrategy = function (attributionConfig, isNewSession) {
60
+ if (isNewSession === void 0) { isNewSession = false; }
61
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
62
+ var track, onNewCampaign, storage, campaignTracker;
63
+ return (0, tslib_1.__generator)(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ track = this.track.bind(this);
67
+ onNewCampaign = this.setSessionId.bind(this, Date.now());
68
+ return [4 /*yield*/, (0, config_1.createFlexibleStorage)(this.config)];
69
+ case 1:
70
+ storage = _a.sent();
71
+ campaignTracker = new campaign_tracker_1.CampaignTracker(this.config.apiKey, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, attributionConfig), { storage: storage, track: track, onNewCampaign: onNewCampaign }));
72
+ return [4 /*yield*/, campaignTracker.send(isNewSession)];
73
+ case 2:
74
+ _a.sent();
40
75
  return [2 /*return*/];
41
76
  }
42
77
  });
@@ -47,14 +82,12 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
47
82
  };
48
83
  AmplitudeBrowser.prototype.setUserId = function (userId) {
49
84
  this.config.userId = userId;
50
- (0, session_manager_1.updateCookies)(this.config);
51
85
  };
52
86
  AmplitudeBrowser.prototype.getDeviceId = function () {
53
87
  return this.config.deviceId;
54
88
  };
55
89
  AmplitudeBrowser.prototype.setDeviceId = function (deviceId) {
56
90
  this.config.deviceId = deviceId;
57
- (0, session_manager_1.updateCookies)(this.config);
58
91
  };
59
92
  AmplitudeBrowser.prototype.regenerateDeviceId = function () {
60
93
  var deviceId = (0, config_1.createDeviceId)();
@@ -65,11 +98,9 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
65
98
  };
66
99
  AmplitudeBrowser.prototype.setSessionId = function (sessionId) {
67
100
  this.config.sessionId = sessionId;
68
- (0, session_manager_1.updateCookies)(this.config);
69
101
  };
70
102
  AmplitudeBrowser.prototype.setOptOut = function (optOut) {
71
- _super.prototype.setOptOut.call(this, optOut);
72
- (0, session_manager_1.updateCookies)(this.config);
103
+ this.config.optOut = optOut;
73
104
  };
74
105
  AmplitudeBrowser.prototype.setTransport = function (transport) {
75
106
  this.config.transportProvider = (0, config_1.createTransport)(transport);
@@ -98,21 +129,6 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
98
129
  }
99
130
  return _super.prototype.revenue.call(this, revenue, eventOptions);
100
131
  };
101
- AmplitudeBrowser.prototype.trackAttributions = function () {
102
- var attributions = (0, attribution_1.getAttributions)(this.config);
103
- if (Object.keys(attributions).length === 0) {
104
- return;
105
- }
106
- var id = new analytics_core_1.Identify();
107
- Object.entries(attributions).forEach(function (_a) {
108
- var _b = (0, tslib_1.__read)(_a, 2), key = _b[0], value = _b[1];
109
- if (value) {
110
- id.setOnce("initial_".concat(key), value);
111
- id.set(key, value);
112
- }
113
- });
114
- return this.identify(id);
115
- };
116
132
  return AmplitudeBrowser;
117
133
  }(analytics_core_1.AmplitudeCore));
118
134
  exports.AmplitudeBrowser = AmplitudeBrowser;
@@ -307,4 +323,16 @@ exports.setOptOut = client.setOptOut.bind(client);
307
323
  * ```
308
324
  */
309
325
  exports.setTransport = client.setTransport.bind(client);
326
+ /**
327
+ * Flush and send all the events which haven't been sent.
328
+ *
329
+ *```typescript
330
+ * // Send all the unsent events
331
+ * flush();
332
+ *
333
+ * // alternatively, this tracking method is awaitable
334
+ * await flush().promise;
335
+ * ```
336
+ */
337
+ exports.flush = (0, analytics_core_1.returnWrapper)(client.flush.bind(client));
310
338
  //# sourceMappingURL=browser-client.js.map