@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.
- package/README.md +1 -1
- package/lib/cjs/attribution/campaign-parser.d.ts +10 -0
- package/lib/cjs/attribution/campaign-parser.d.ts.map +1 -0
- package/lib/cjs/attribution/campaign-parser.js +83 -0
- package/lib/cjs/attribution/campaign-parser.js.map +1 -0
- package/lib/cjs/attribution/campaign-tracker.d.ts +72 -0
- package/lib/cjs/attribution/campaign-tracker.d.ts.map +1 -0
- package/lib/cjs/attribution/campaign-tracker.js +113 -0
- package/lib/cjs/attribution/campaign-tracker.js.map +1 -0
- package/lib/cjs/{constants.d.ts → attribution/constants.d.ts} +4 -0
- package/lib/cjs/attribution/constants.d.ts.map +1 -0
- package/lib/cjs/attribution/constants.js +28 -0
- package/lib/cjs/attribution/constants.js.map +1 -0
- package/lib/cjs/browser-client.d.ts +16 -4
- package/lib/cjs/browser-client.d.ts.map +1 -1
- package/lib/cjs/browser-client.js +62 -34
- package/lib/cjs/browser-client.js.map +1 -1
- package/lib/cjs/config.d.ts +19 -20
- package/lib/cjs/config.d.ts.map +1 -1
- package/lib/cjs/config.js +204 -91
- package/lib/cjs/config.js.map +1 -1
- package/lib/cjs/cookie-migration/index.d.ts +1 -1
- package/lib/cjs/cookie-migration/index.d.ts.map +1 -1
- package/lib/cjs/cookie-migration/index.js +43 -28
- package/lib/cjs/cookie-migration/index.js.map +1 -1
- package/lib/cjs/index.d.ts +1 -1
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/plugins/context.d.ts +1 -0
- package/lib/cjs/plugins/context.d.ts.map +1 -1
- package/lib/cjs/plugins/context.js +25 -12
- package/lib/cjs/plugins/context.js.map +1 -1
- package/lib/cjs/session-manager.d.ts +27 -5
- package/lib/cjs/session-manager.d.ts.map +1 -1
- package/lib/cjs/session-manager.js +81 -33
- package/lib/cjs/session-manager.js.map +1 -1
- package/lib/cjs/storage/cookie.d.ts +6 -6
- package/lib/cjs/storage/cookie.d.ts.map +1 -1
- package/lib/cjs/storage/cookie.js +116 -67
- package/lib/cjs/storage/cookie.js.map +1 -1
- package/lib/cjs/storage/local-storage.d.ts +6 -6
- package/lib/cjs/storage/local-storage.d.ts.map +1 -1
- package/lib/cjs/storage/local-storage.js +95 -50
- package/lib/cjs/storage/local-storage.js.map +1 -1
- package/lib/cjs/storage/utm-cookie.d.ts +2 -2
- package/lib/cjs/storage/utm-cookie.d.ts.map +1 -1
- package/lib/cjs/storage/utm-cookie.js +32 -18
- package/lib/cjs/storage/utm-cookie.js.map +1 -1
- package/lib/cjs/utils/cookie-name.d.ts +3 -0
- package/lib/cjs/utils/cookie-name.d.ts.map +1 -0
- package/lib/cjs/utils/cookie-name.js +14 -0
- package/lib/cjs/utils/cookie-name.js.map +1 -0
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/attribution/campaign-parser.d.ts +10 -0
- package/lib/esm/attribution/campaign-parser.d.ts.map +1 -0
- package/lib/esm/attribution/campaign-parser.js +81 -0
- package/lib/esm/attribution/campaign-parser.js.map +1 -0
- package/lib/esm/attribution/campaign-tracker.d.ts +72 -0
- package/lib/esm/attribution/campaign-tracker.d.ts.map +1 -0
- package/lib/esm/attribution/campaign-tracker.js +111 -0
- package/lib/esm/attribution/campaign-tracker.js.map +1 -0
- package/lib/esm/{constants.d.ts → attribution/constants.d.ts} +4 -0
- package/lib/esm/attribution/constants.d.ts.map +1 -0
- package/lib/esm/{constants.js → attribution/constants.js} +13 -0
- package/lib/esm/attribution/constants.js.map +1 -0
- package/lib/esm/browser-client.d.ts +16 -4
- package/lib/esm/browser-client.d.ts.map +1 -1
- package/lib/esm/browser-client.js +63 -35
- package/lib/esm/browser-client.js.map +1 -1
- package/lib/esm/config.d.ts +19 -20
- package/lib/esm/config.d.ts.map +1 -1
- package/lib/esm/config.js +202 -90
- package/lib/esm/config.js.map +1 -1
- package/lib/esm/cookie-migration/index.d.ts +1 -1
- package/lib/esm/cookie-migration/index.d.ts.map +1 -1
- package/lib/esm/cookie-migration/index.js +43 -29
- package/lib/esm/cookie-migration/index.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/plugins/context.d.ts +1 -0
- package/lib/esm/plugins/context.d.ts.map +1 -1
- package/lib/esm/plugins/context.js +26 -13
- package/lib/esm/plugins/context.js.map +1 -1
- package/lib/esm/session-manager.d.ts +27 -5
- package/lib/esm/session-manager.d.ts.map +1 -1
- package/lib/esm/session-manager.js +80 -28
- package/lib/esm/session-manager.js.map +1 -1
- package/lib/esm/storage/cookie.d.ts +6 -6
- package/lib/esm/storage/cookie.d.ts.map +1 -1
- package/lib/esm/storage/cookie.js +117 -68
- package/lib/esm/storage/cookie.js.map +1 -1
- package/lib/esm/storage/local-storage.d.ts +6 -6
- package/lib/esm/storage/local-storage.d.ts.map +1 -1
- package/lib/esm/storage/local-storage.js +95 -50
- package/lib/esm/storage/local-storage.js.map +1 -1
- package/lib/esm/storage/utm-cookie.d.ts +2 -2
- package/lib/esm/storage/utm-cookie.d.ts.map +1 -1
- package/lib/esm/storage/utm-cookie.js +33 -19
- package/lib/esm/storage/utm-cookie.js.map +1 -1
- package/lib/esm/utils/cookie-name.d.ts +3 -0
- package/lib/esm/utils/cookie-name.d.ts.map +1 -0
- package/lib/esm/utils/cookie-name.js +10 -0
- package/lib/esm/utils/cookie-name.js.map +1 -0
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/amplitude-snippet-instructions.html +1 -1
- package/lib/scripts/amplitude-snippet-min.js +1 -1
- package/package.json +4 -4
- package/lib/cjs/attribution.d.ts +0 -11
- package/lib/cjs/attribution.d.ts.map +0 -1
- package/lib/cjs/attribution.js +0 -64
- package/lib/cjs/attribution.js.map +0 -1
- package/lib/cjs/constants.d.ts.map +0 -1
- package/lib/cjs/constants.js +0 -15
- package/lib/cjs/constants.js.map +0 -1
- package/lib/esm/attribution.d.ts +0 -11
- package/lib/esm/attribution.d.ts.map +0 -1
- package/lib/esm/attribution.js +0 -57
- package/lib/esm/attribution.js.map +0 -1
- package/lib/esm/constants.d.ts.map +0 -1
- 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-
|
|
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":"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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 '../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,
|
|
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
|
-
|
|
29
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
39
|
-
|
|
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
|
-
|
|
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
|