@amplitude/plugin-web-attribution-browser 0.5.7 → 0.6.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/helpers.d.ts +6 -0
- package/lib/cjs/helpers.d.ts.map +1 -0
- package/lib/cjs/helpers.js +45 -0
- package/lib/cjs/helpers.js.map +1 -0
- package/lib/cjs/typings/web-attribution.d.ts +6 -0
- package/lib/cjs/typings/web-attribution.d.ts.map +1 -1
- package/lib/cjs/typings/web-attribution.js.map +1 -1
- package/lib/cjs/web-attribution.d.ts +2 -3
- package/lib/cjs/web-attribution.d.ts.map +1 -1
- package/lib/cjs/web-attribution.js +73 -34
- package/lib/cjs/web-attribution.js.map +1 -1
- package/lib/esm/helpers.d.ts +6 -0
- package/lib/esm/helpers.d.ts.map +1 -0
- package/lib/esm/helpers.js +40 -0
- package/lib/esm/helpers.js.map +1 -0
- package/lib/esm/typings/web-attribution.d.ts +6 -0
- package/lib/esm/typings/web-attribution.d.ts.map +1 -1
- package/lib/esm/typings/web-attribution.js.map +1 -1
- package/lib/esm/web-attribution.d.ts +2 -3
- package/lib/esm/web-attribution.d.ts.map +1 -1
- package/lib/esm/web-attribution.js +75 -34
- package/lib/esm/web-attribution.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/helpers.d.ts +6 -0
- package/lib/scripts/helpers.d.ts.map +1 -0
- package/lib/scripts/typings/web-attribution.d.ts +6 -0
- package/lib/scripts/typings/web-attribution.d.ts.map +1 -1
- package/lib/scripts/web-attribution.d.ts +2 -3
- package/lib/scripts/web-attribution.d.ts.map +1 -1
- package/package.json +5 -5
- package/lib/cjs/plugin-campaign-tracker.d.ts +0 -67
- package/lib/cjs/plugin-campaign-tracker.d.ts.map +0 -1
- package/lib/cjs/plugin-campaign-tracker.js +0 -58
- package/lib/cjs/plugin-campaign-tracker.js.map +0 -1
- package/lib/esm/plugin-campaign-tracker.d.ts +0 -67
- package/lib/esm/plugin-campaign-tracker.d.ts.map +0 -1
- package/lib/esm/plugin-campaign-tracker.js +0 -56
- package/lib/esm/plugin-campaign-tracker.js.map +0 -1
- package/lib/scripts/plugin-campaign-tracker.d.ts +0 -67
- package/lib/scripts/plugin-campaign-tracker.d.ts.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Campaign } from '@amplitude/analytics-types';
|
|
2
|
+
import { Options } from './typings/web-attribution';
|
|
3
|
+
export declare const getStorageKey: (apiKey: string, postKey?: string, limit?: number) => string;
|
|
4
|
+
export declare const isNewCampaign: (current: Campaign, previous: Campaign | undefined, options: Options) => boolean;
|
|
5
|
+
export declare const createCampaignEvent: (campaign: Campaign, options: Options) => import("@amplitude/analytics-types").IdentifyEvent;
|
|
6
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,eAAO,MAAM,aAAa,WAAY,MAAM,6CAE3C,CAAC;AAYF,eAAO,MAAM,aAAa,YAAa,QAAQ,YAAY,QAAQ,GAAG,SAAS,WAAW,OAAO,YAchG,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,QAAQ,WAAW,OAAO,uDAgBvE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
exports.createCampaignEvent = exports.isNewCampaign = exports.getStorageKey = void 0;
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var analytics_client_common_1 = require("@amplitude/analytics-client-common");
|
|
5
|
+
var analytics_core_1 = require("@amplitude/analytics-core");
|
|
6
|
+
var getStorageKey = function (apiKey, postKey, limit) {
|
|
7
|
+
if (postKey === void 0) { postKey = ''; }
|
|
8
|
+
if (limit === void 0) { limit = 10; }
|
|
9
|
+
return [analytics_core_1.AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');
|
|
10
|
+
};
|
|
11
|
+
exports.getStorageKey = getStorageKey;
|
|
12
|
+
var domainWithoutSubdomain = function (domain) {
|
|
13
|
+
var parts = domain.split('.');
|
|
14
|
+
if (parts.length <= 2) {
|
|
15
|
+
return domain;
|
|
16
|
+
}
|
|
17
|
+
return parts.slice(parts.length - 2, parts.length).join('.');
|
|
18
|
+
};
|
|
19
|
+
var isNewCampaign = function (current, previous, options) {
|
|
20
|
+
var _a;
|
|
21
|
+
var referrer = current.referrer, referring_domain = current.referring_domain, currentCampaign = tslib_1.__rest(current, ["referrer", "referring_domain"]);
|
|
22
|
+
var _b = previous || {}, _previous_referrer = _b.referrer, prevReferringDomain = _b.referring_domain, previousCampaign = tslib_1.__rest(_b, ["referrer", "referring_domain"]);
|
|
23
|
+
if (current.referring_domain && ((_a = options.excludeReferrers) === null || _a === void 0 ? void 0 : _a.includes(current.referring_domain))) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
var hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);
|
|
27
|
+
var hasNewDomain = domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');
|
|
28
|
+
return !previous || hasNewCampaign || hasNewDomain;
|
|
29
|
+
};
|
|
30
|
+
exports.isNewCampaign = isNewCampaign;
|
|
31
|
+
var createCampaignEvent = function (campaign, options) {
|
|
32
|
+
var campaignParameters = tslib_1.__assign(tslib_1.__assign({}, analytics_client_common_1.BASE_CAMPAIGN), campaign);
|
|
33
|
+
var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {
|
|
34
|
+
var _b;
|
|
35
|
+
var _c = tslib_1.__read(_a, 2), key = _c[0], value = _c[1];
|
|
36
|
+
identify.setOnce("initial_".concat(key), (_b = value !== null && value !== void 0 ? value : options.initialEmptyValue) !== null && _b !== void 0 ? _b : 'EMPTY');
|
|
37
|
+
if (value) {
|
|
38
|
+
return identify.set(key, value);
|
|
39
|
+
}
|
|
40
|
+
return identify.unset(key);
|
|
41
|
+
}, new analytics_core_1.Identify());
|
|
42
|
+
return (0, analytics_core_1.createIdentifyEvent)(identifyEvent);
|
|
43
|
+
};
|
|
44
|
+
exports.createCampaignEvent = createCampaignEvent;
|
|
45
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;AAAA,8EAAmE;AACnE,4DAA4F;AAIrF,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAAY,EAAE,KAAU;IAAxB,wBAAA,EAAA,YAAY;IAAE,sBAAA,EAAA,UAAU;IACpE,OAAO,CAAC,iCAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEF,IAAM,sBAAsB,GAAG,UAAC,MAAc;IAC5C,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;QACrB,OAAO,MAAM,CAAC;KACf;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEK,IAAM,aAAa,GAAG,UAAC,OAAiB,EAAE,QAA8B,EAAE,OAAgB;;IACvF,IAAA,QAAQ,GAA2C,OAAO,SAAlD,EAAE,gBAAgB,GAAyB,OAAO,iBAAhC,EAAK,eAAe,kBAAK,OAAO,EAA5D,gCAAkD,CAAF,CAAa;IACnE,IAAM,KAA+F,QAAQ,IAAI,EAAE,EAAjG,kBAAkB,cAAA,EAAoB,mBAAmB,sBAAA,EAAK,gBAAgB,sBAA1F,gCAA4F,CAAiB,CAAC;IAEpH,IAAI,OAAO,CAAC,gBAAgB,KAAI,MAAA,OAAO,CAAC,gBAAgB,0CAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,EAAE;QAC5F,OAAO,KAAK,CAAC;KACd;IAED,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5F,IAAM,YAAY,GAChB,sBAAsB,CAAC,gBAAgB,IAAI,EAAE,CAAC,KAAK,sBAAsB,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAEvG,OAAO,CAAC,QAAQ,IAAI,cAAc,IAAI,YAAY,CAAC;AACrD,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB;AAEK,IAAM,mBAAmB,GAAG,UAAC,QAAkB,EAAE,OAAgB;IACtE,IAAM,kBAAkB,yCAGnB,uCAAa,GACb,QAAQ,CACZ,CAAC;IACF,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,EAAY;;YAAZ,KAAA,qBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;QACpF,QAAQ,CAAC,OAAO,CAAC,kBAAW,GAAG,CAAE,EAAE,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,iBAAiB,mCAAI,OAAO,CAAC,CAAC;QAClF,IAAI,KAAK,EAAE;YACT,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACjC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,EAAE,IAAI,yBAAQ,EAAE,CAAC,CAAC;IAEnB,OAAO,IAAA,oCAAmB,EAAC,aAAa,CAAC,CAAC;AAC5C,CAAC,CAAC;AAhBW,QAAA,mBAAmB,uBAgB9B","sourcesContent":["import { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { AMPLITUDE_PREFIX, createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { Campaign } from '@amplitude/analytics-types';\nimport { Options } from './typings/web-attribution';\n\nexport const getStorageKey = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\nexport const isNewCampaign = (current: Campaign, previous: Campaign | undefined, options: Options) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (current.referring_domain && options.excludeReferrers?.includes(current.referring_domain)) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n return !previous || hasNewCampaign || hasNewDomain;\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\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 ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n"]}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';
|
|
1
2
|
export interface Options {
|
|
2
3
|
disabled?: boolean;
|
|
3
4
|
excludeReferrers?: string[];
|
|
4
5
|
initialEmptyValue?: string;
|
|
5
6
|
resetSessionOnNewCampaign?: boolean;
|
|
6
7
|
}
|
|
8
|
+
export interface CreateWebAttributionPlugin {
|
|
9
|
+
(client: BrowserClient, options?: Options): BeforePlugin;
|
|
10
|
+
(options?: Options): BeforePlugin;
|
|
11
|
+
}
|
|
12
|
+
export type CreateWebAttributionPluginParameters = [BrowserClient, Options?] | [Options?];
|
|
7
13
|
//# sourceMappingURL=web-attribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC"}
|
|
1
|
+
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACzD,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CACnC;AAED,MAAM,MAAM,oCAAoC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"","sourcesContent":["import { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';\n\nexport interface Options {\n disabled?: boolean;\n excludeReferrers?: string[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n\nexport interface CreateWebAttributionPlugin {\n (client: BrowserClient, options?: Options): BeforePlugin;\n (options?: Options): BeforePlugin;\n}\n\nexport type CreateWebAttributionPluginParameters = [BrowserClient, Options?] | [Options?];\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare const webAttributionPlugin: (client: BrowserClient, options?: Options) => BeforePlugin;
|
|
1
|
+
import { CreateWebAttributionPlugin } from './typings/web-attribution';
|
|
2
|
+
export declare const webAttributionPlugin: CreateWebAttributionPlugin;
|
|
4
3
|
//# sourceMappingURL=web-attribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,0BAA0B,EAAiD,MAAM,2BAA2B,CAAC;AAEtH,eAAO,MAAM,oBAAoB,EAAE,0BA+FlC,CAAC"}
|
|
@@ -1,53 +1,92 @@
|
|
|
1
|
-
var _this = this;
|
|
2
1
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
2
|
exports.webAttributionPlugin = void 0;
|
|
4
3
|
var tslib_1 = require("tslib");
|
|
4
|
+
var analytics_client_common_1 = require("@amplitude/analytics-client-common");
|
|
5
5
|
var analytics_types_1 = require("@amplitude/analytics-types");
|
|
6
|
-
var
|
|
7
|
-
var webAttributionPlugin = function (
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
var helpers_1 = require("./helpers");
|
|
7
|
+
var webAttributionPlugin = function () {
|
|
8
|
+
var _this = this;
|
|
9
|
+
var _a;
|
|
10
|
+
var args = [];
|
|
11
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
12
|
+
args[_i] = arguments[_i];
|
|
13
|
+
}
|
|
14
|
+
var amplitude;
|
|
15
|
+
var options = {};
|
|
16
|
+
var _b = tslib_1.__read(args, 2), clientOrOptions = _b[0], configOrUndefined = _b[1];
|
|
17
|
+
if (clientOrOptions && 'init' in clientOrOptions) {
|
|
18
|
+
amplitude = clientOrOptions;
|
|
19
|
+
if (configOrUndefined) {
|
|
20
|
+
options = configOrUndefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else if (clientOrOptions) {
|
|
24
|
+
options = clientOrOptions;
|
|
25
|
+
}
|
|
26
|
+
var excludeReferrers = (_a = options.excludeReferrers) !== null && _a !== void 0 ? _a : [];
|
|
27
|
+
if (typeof location !== 'undefined') {
|
|
28
|
+
excludeReferrers.unshift(location.hostname);
|
|
29
|
+
}
|
|
30
|
+
options = tslib_1.__assign(tslib_1.__assign({ disabled: false, initialEmptyValue: 'EMPTY', resetSessionOnNewCampaign: false }, options), { excludeReferrers: excludeReferrers });
|
|
31
|
+
var plugin = {
|
|
10
32
|
name: 'web-attribution',
|
|
11
33
|
type: analytics_types_1.PluginType.BEFORE,
|
|
12
|
-
setup: function (config
|
|
13
|
-
var storage, campaignTracker;
|
|
14
|
-
var _this = this;
|
|
34
|
+
setup: function (config, client) {
|
|
15
35
|
var _a;
|
|
16
|
-
return tslib_1.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (
|
|
36
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
37
|
+
var receivedType, storage, storageKey, _b, currentCampaign, previousCampaign, pluginEnabledOverride, campaignEvent;
|
|
38
|
+
return tslib_1.__generator(this, function (_c) {
|
|
39
|
+
switch (_c.label) {
|
|
40
|
+
case 0:
|
|
41
|
+
amplitude = amplitude !== null && amplitude !== void 0 ? amplitude : client;
|
|
42
|
+
if (!amplitude) {
|
|
43
|
+
receivedType = clientOrOptions ? 'Options' : 'undefined';
|
|
44
|
+
config.loggerProvider.error("Argument of type '".concat(receivedType, "' is not assignable to parameter of type 'BrowserClient'."));
|
|
45
|
+
return [2 /*return*/];
|
|
46
|
+
}
|
|
47
|
+
if (options.disabled) {
|
|
48
|
+
config.loggerProvider.log('@amplitude/plugin-web-attribution-browser is disabled. Attribution is not tracked.');
|
|
49
|
+
return [2 /*return*/];
|
|
50
|
+
}
|
|
51
|
+
config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');
|
|
52
|
+
if (!client && !((_a = config.attribution) === null || _a === void 0 ? void 0 : _a.disabled)) {
|
|
53
|
+
config.loggerProvider.warn('@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser. Resolve by disabling web attribution tracking in @amplitude/analytics-browser.');
|
|
54
|
+
config.attribution = {
|
|
55
|
+
disabled: true,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
storage = config.cookieStorage;
|
|
59
|
+
storageKey = (0, helpers_1.getStorageKey)(config.apiKey, 'MKTG');
|
|
60
|
+
return [4 /*yield*/, Promise.all([
|
|
61
|
+
new analytics_client_common_1.CampaignParser().parse(),
|
|
62
|
+
storage.get(storageKey),
|
|
63
|
+
])];
|
|
64
|
+
case 1:
|
|
65
|
+
_b = tslib_1.__read.apply(void 0, [_c.sent(), 2]), currentCampaign = _b[0], previousCampaign = _b[1];
|
|
66
|
+
pluginEnabledOverride = this.__pluginEnabledOverride;
|
|
67
|
+
if (pluginEnabledOverride !== null && pluginEnabledOverride !== void 0 ? pluginEnabledOverride : (0, helpers_1.isNewCampaign)(currentCampaign, previousCampaign, options)) {
|
|
33
68
|
if (options.resetSessionOnNewCampaign) {
|
|
34
|
-
|
|
35
|
-
config.loggerProvider.log('Created a new session for new campaign');
|
|
69
|
+
amplitude.setSessionId(Date.now());
|
|
70
|
+
config.loggerProvider.log('Created a new session for new campaign.');
|
|
36
71
|
}
|
|
37
|
-
config.loggerProvider.log('Tracking
|
|
38
|
-
|
|
72
|
+
config.loggerProvider.log('Tracking attribution.');
|
|
73
|
+
campaignEvent = (0, helpers_1.createCampaignEvent)(currentCampaign, options);
|
|
74
|
+
amplitude.track(campaignEvent);
|
|
75
|
+
void storage.set(storageKey, currentCampaign);
|
|
39
76
|
}
|
|
40
77
|
return [2 /*return*/];
|
|
41
|
-
|
|
42
|
-
});
|
|
78
|
+
}
|
|
43
79
|
});
|
|
44
|
-
return [2 /*return*/];
|
|
45
80
|
});
|
|
46
|
-
}
|
|
81
|
+
},
|
|
47
82
|
execute: function (event) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
48
83
|
return [2 /*return*/, event];
|
|
49
84
|
}); }); },
|
|
50
|
-
}
|
|
85
|
+
};
|
|
86
|
+
// For Amplitude-internal functionality
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
88
|
+
plugin.__pluginEnabledOverride = undefined;
|
|
89
|
+
return plugin;
|
|
51
90
|
};
|
|
52
91
|
exports.webAttributionPlugin = webAttributionPlugin;
|
|
53
92
|
//# sourceMappingURL=web-attribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"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","sourcesContent":["import { CampaignParser } from '@amplitude/analytics-client-common';\nimport {\n BeforePlugin,\n BrowserClient,\n BrowserConfig,\n Campaign,\n Event,\n PluginType,\n Storage,\n} from '@amplitude/analytics-types';\nimport { createCampaignEvent, getStorageKey, isNewCampaign } from './helpers';\nimport { CreateWebAttributionPlugin, CreateWebAttributionPluginParameters, Options } from './typings/web-attribution';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (\n ...args: CreateWebAttributionPluginParameters\n) {\n let amplitude: BrowserClient | undefined;\n let options: Options = {};\n\n const [clientOrOptions, configOrUndefined] = args;\n if (clientOrOptions && 'init' in clientOrOptions) {\n amplitude = clientOrOptions;\n if (configOrUndefined) {\n options = configOrUndefined;\n }\n } else if (clientOrOptions) {\n options = clientOrOptions;\n }\n\n const excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n excludeReferrers.unshift(location.hostname);\n }\n\n options = {\n disabled: false,\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n ...options,\n excludeReferrers,\n };\n\n const plugin: BeforePlugin = {\n name: 'web-attribution',\n type: PluginType.BEFORE,\n\n setup: async function (config: BrowserConfig, client?: BrowserClient) {\n amplitude = amplitude ?? client;\n if (!amplitude) {\n const receivedType = clientOrOptions ? 'Options' : 'undefined';\n config.loggerProvider.error(\n `Argument of type '${receivedType}' is not assignable to parameter of type 'BrowserClient'.`,\n );\n return;\n }\n\n if (options.disabled) {\n config.loggerProvider.log('@amplitude/plugin-web-attribution-browser is disabled. Attribution is not tracked.');\n return;\n }\n\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');\n\n if (!client && !config.attribution?.disabled) {\n config.loggerProvider.warn(\n '@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser. Resolve by disabling web attribution tracking in @amplitude/analytics-browser.',\n );\n config.attribution = {\n disabled: true,\n };\n }\n\n // Share cookie storage with user session storage\n const storage = config.cookieStorage as unknown as Storage<Campaign>;\n const storageKey = getStorageKey(config.apiKey, 'MKTG');\n\n const [currentCampaign, previousCampaign] = await Promise.all([\n new CampaignParser().parse(),\n storage.get(storageKey),\n ]);\n\n // For Amplitude-internal functionality\n // if pluginEnabledOverride === undefined then use plugin default logic\n // if pluginEnabledOverride === true then track attribution\n // if pluginEnabledOverride === false then do not track attribution\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n const pluginEnabledOverride: boolean | undefined = (this as any).__pluginEnabledOverride;\n\n if (pluginEnabledOverride ?? isNewCampaign(currentCampaign, previousCampaign, options)) {\n if (options.resetSessionOnNewCampaign) {\n amplitude.setSessionId(Date.now());\n config.loggerProvider.log('Created a new session for new campaign.');\n }\n config.loggerProvider.log('Tracking attribution.');\n const campaignEvent = createCampaignEvent(currentCampaign, options);\n amplitude.track(campaignEvent);\n void storage.set(storageKey, currentCampaign);\n }\n },\n\n execute: async (event: Event) => event,\n };\n\n // For Amplitude-internal functionality\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (plugin as any).__pluginEnabledOverride = undefined;\n\n return plugin;\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Campaign } from '@amplitude/analytics-types';
|
|
2
|
+
import { Options } from './typings/web-attribution';
|
|
3
|
+
export declare const getStorageKey: (apiKey: string, postKey?: string, limit?: number) => string;
|
|
4
|
+
export declare const isNewCampaign: (current: Campaign, previous: Campaign | undefined, options: Options) => boolean;
|
|
5
|
+
export declare const createCampaignEvent: (campaign: Campaign, options: Options) => import("@amplitude/analytics-types").IdentifyEvent;
|
|
6
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,eAAO,MAAM,aAAa,WAAY,MAAM,6CAE3C,CAAC;AAYF,eAAO,MAAM,aAAa,YAAa,QAAQ,YAAY,QAAQ,GAAG,SAAS,WAAW,OAAO,YAchG,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,QAAQ,WAAW,OAAO,uDAgBvE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { __assign, __read, __rest } from "tslib";
|
|
2
|
+
import { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';
|
|
3
|
+
import { AMPLITUDE_PREFIX, createIdentifyEvent, Identify } from '@amplitude/analytics-core';
|
|
4
|
+
export var getStorageKey = function (apiKey, postKey, limit) {
|
|
5
|
+
if (postKey === void 0) { postKey = ''; }
|
|
6
|
+
if (limit === void 0) { limit = 10; }
|
|
7
|
+
return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');
|
|
8
|
+
};
|
|
9
|
+
var domainWithoutSubdomain = function (domain) {
|
|
10
|
+
var parts = domain.split('.');
|
|
11
|
+
if (parts.length <= 2) {
|
|
12
|
+
return domain;
|
|
13
|
+
}
|
|
14
|
+
return parts.slice(parts.length - 2, parts.length).join('.');
|
|
15
|
+
};
|
|
16
|
+
export var isNewCampaign = function (current, previous, options) {
|
|
17
|
+
var _a;
|
|
18
|
+
var referrer = current.referrer, referring_domain = current.referring_domain, currentCampaign = __rest(current, ["referrer", "referring_domain"]);
|
|
19
|
+
var _b = previous || {}, _previous_referrer = _b.referrer, prevReferringDomain = _b.referring_domain, previousCampaign = __rest(_b, ["referrer", "referring_domain"]);
|
|
20
|
+
if (current.referring_domain && ((_a = options.excludeReferrers) === null || _a === void 0 ? void 0 : _a.includes(current.referring_domain))) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
var hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);
|
|
24
|
+
var hasNewDomain = domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');
|
|
25
|
+
return !previous || hasNewCampaign || hasNewDomain;
|
|
26
|
+
};
|
|
27
|
+
export var createCampaignEvent = function (campaign, options) {
|
|
28
|
+
var campaignParameters = __assign(__assign({}, BASE_CAMPAIGN), campaign);
|
|
29
|
+
var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {
|
|
30
|
+
var _b;
|
|
31
|
+
var _c = __read(_a, 2), key = _c[0], value = _c[1];
|
|
32
|
+
identify.setOnce("initial_".concat(key), (_b = value !== null && value !== void 0 ? value : options.initialEmptyValue) !== null && _b !== void 0 ? _b : 'EMPTY');
|
|
33
|
+
if (value) {
|
|
34
|
+
return identify.set(key, value);
|
|
35
|
+
}
|
|
36
|
+
return identify.unset(key);
|
|
37
|
+
}, new Identify());
|
|
38
|
+
return createIdentifyEvent(identifyEvent);
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAI5F,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAAY,EAAE,KAAU;IAAxB,wBAAA,EAAA,YAAY;IAAE,sBAAA,EAAA,UAAU;IACpE,OAAO,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,IAAM,sBAAsB,GAAG,UAAC,MAAc;IAC5C,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;QACrB,OAAO,MAAM,CAAC;KACf;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,OAAiB,EAAE,QAA8B,EAAE,OAAgB;;IACvF,IAAA,QAAQ,GAA2C,OAAO,SAAlD,EAAE,gBAAgB,GAAyB,OAAO,iBAAhC,EAAK,eAAe,UAAK,OAAO,EAA5D,gCAAkD,CAAF,CAAa;IACnE,IAAM,KAA+F,QAAQ,IAAI,EAAE,EAAjG,kBAAkB,cAAA,EAAoB,mBAAmB,sBAAA,EAAK,gBAAgB,cAA1F,gCAA4F,CAAiB,CAAC;IAEpH,IAAI,OAAO,CAAC,gBAAgB,KAAI,MAAA,OAAO,CAAC,gBAAgB,0CAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,EAAE;QAC5F,OAAO,KAAK,CAAC;KACd;IAED,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5F,IAAM,YAAY,GAChB,sBAAsB,CAAC,gBAAgB,IAAI,EAAE,CAAC,KAAK,sBAAsB,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAEvG,OAAO,CAAC,QAAQ,IAAI,cAAc,IAAI,YAAY,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,QAAkB,EAAE,OAAgB;IACtE,IAAM,kBAAkB,yBAGnB,aAAa,GACb,QAAQ,CACZ,CAAC;IACF,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,EAAY;;YAAZ,KAAA,aAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;QACpF,QAAQ,CAAC,OAAO,CAAC,kBAAW,GAAG,CAAE,EAAE,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,iBAAiB,mCAAI,OAAO,CAAC,CAAC;QAClF,IAAI,KAAK,EAAE;YACT,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACjC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;IAEnB,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC,CAAC","sourcesContent":["import { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { AMPLITUDE_PREFIX, createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { Campaign } from '@amplitude/analytics-types';\nimport { Options } from './typings/web-attribution';\n\nexport const getStorageKey = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\nexport const isNewCampaign = (current: Campaign, previous: Campaign | undefined, options: Options) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (current.referring_domain && options.excludeReferrers?.includes(current.referring_domain)) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n return !previous || hasNewCampaign || hasNewDomain;\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\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 ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n"]}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';
|
|
1
2
|
export interface Options {
|
|
2
3
|
disabled?: boolean;
|
|
3
4
|
excludeReferrers?: string[];
|
|
4
5
|
initialEmptyValue?: string;
|
|
5
6
|
resetSessionOnNewCampaign?: boolean;
|
|
6
7
|
}
|
|
8
|
+
export interface CreateWebAttributionPlugin {
|
|
9
|
+
(client: BrowserClient, options?: Options): BeforePlugin;
|
|
10
|
+
(options?: Options): BeforePlugin;
|
|
11
|
+
}
|
|
12
|
+
export type CreateWebAttributionPluginParameters = [BrowserClient, Options?] | [Options?];
|
|
7
13
|
//# sourceMappingURL=web-attribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC"}
|
|
1
|
+
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACzD,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CACnC;AAED,MAAM,MAAM,oCAAoC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"","sourcesContent":["import { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';\n\nexport interface Options {\n disabled?: boolean;\n excludeReferrers?: string[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n\nexport interface CreateWebAttributionPlugin {\n (client: BrowserClient, options?: Options): BeforePlugin;\n (options?: Options): BeforePlugin;\n}\n\nexport type CreateWebAttributionPluginParameters = [BrowserClient, Options?] | [Options?];\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare const webAttributionPlugin: (client: BrowserClient, options?: Options) => BeforePlugin;
|
|
1
|
+
import { CreateWebAttributionPlugin } from './typings/web-attribution';
|
|
2
|
+
export declare const webAttributionPlugin: CreateWebAttributionPlugin;
|
|
4
3
|
//# sourceMappingURL=web-attribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,0BAA0B,EAAiD,MAAM,2BAA2B,CAAC;AAEtH,eAAO,MAAM,oBAAoB,EAAE,0BA+FlC,CAAC"}
|
|
@@ -1,48 +1,89 @@
|
|
|
1
|
-
import { __assign, __awaiter, __generator } from "tslib";
|
|
1
|
+
import { __assign, __awaiter, __generator, __read } from "tslib";
|
|
2
|
+
import { CampaignParser } from '@amplitude/analytics-client-common';
|
|
2
3
|
import { PluginType, } from '@amplitude/analytics-types';
|
|
3
|
-
import {
|
|
4
|
-
export var webAttributionPlugin = function (
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { createCampaignEvent, getStorageKey, isNewCampaign } from './helpers';
|
|
5
|
+
export var webAttributionPlugin = function () {
|
|
6
|
+
var _this = this;
|
|
7
|
+
var _a;
|
|
8
|
+
var args = [];
|
|
9
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
10
|
+
args[_i] = arguments[_i];
|
|
11
|
+
}
|
|
12
|
+
var amplitude;
|
|
13
|
+
var options = {};
|
|
14
|
+
var _b = __read(args, 2), clientOrOptions = _b[0], configOrUndefined = _b[1];
|
|
15
|
+
if (clientOrOptions && 'init' in clientOrOptions) {
|
|
16
|
+
amplitude = clientOrOptions;
|
|
17
|
+
if (configOrUndefined) {
|
|
18
|
+
options = configOrUndefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else if (clientOrOptions) {
|
|
22
|
+
options = clientOrOptions;
|
|
23
|
+
}
|
|
24
|
+
var excludeReferrers = (_a = options.excludeReferrers) !== null && _a !== void 0 ? _a : [];
|
|
25
|
+
if (typeof location !== 'undefined') {
|
|
26
|
+
excludeReferrers.unshift(location.hostname);
|
|
27
|
+
}
|
|
28
|
+
options = __assign(__assign({ disabled: false, initialEmptyValue: 'EMPTY', resetSessionOnNewCampaign: false }, options), { excludeReferrers: excludeReferrers });
|
|
29
|
+
var plugin = {
|
|
7
30
|
name: 'web-attribution',
|
|
8
31
|
type: PluginType.BEFORE,
|
|
9
|
-
setup: function (config
|
|
10
|
-
var storage, campaignTracker;
|
|
32
|
+
setup: function (config, client) {
|
|
11
33
|
var _a;
|
|
12
|
-
return
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (
|
|
34
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
35
|
+
var receivedType, storage, storageKey, _b, currentCampaign, previousCampaign, pluginEnabledOverride, campaignEvent;
|
|
36
|
+
return __generator(this, function (_c) {
|
|
37
|
+
switch (_c.label) {
|
|
38
|
+
case 0:
|
|
39
|
+
amplitude = amplitude !== null && amplitude !== void 0 ? amplitude : client;
|
|
40
|
+
if (!amplitude) {
|
|
41
|
+
receivedType = clientOrOptions ? 'Options' : 'undefined';
|
|
42
|
+
config.loggerProvider.error("Argument of type '".concat(receivedType, "' is not assignable to parameter of type 'BrowserClient'."));
|
|
43
|
+
return [2 /*return*/];
|
|
44
|
+
}
|
|
45
|
+
if (options.disabled) {
|
|
46
|
+
config.loggerProvider.log('@amplitude/plugin-web-attribution-browser is disabled. Attribution is not tracked.');
|
|
47
|
+
return [2 /*return*/];
|
|
48
|
+
}
|
|
49
|
+
config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');
|
|
50
|
+
if (!client && !((_a = config.attribution) === null || _a === void 0 ? void 0 : _a.disabled)) {
|
|
51
|
+
config.loggerProvider.warn('@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser. Resolve by disabling web attribution tracking in @amplitude/analytics-browser.');
|
|
52
|
+
config.attribution = {
|
|
53
|
+
disabled: true,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
storage = config.cookieStorage;
|
|
57
|
+
storageKey = getStorageKey(config.apiKey, 'MKTG');
|
|
58
|
+
return [4 /*yield*/, Promise.all([
|
|
59
|
+
new CampaignParser().parse(),
|
|
60
|
+
storage.get(storageKey),
|
|
61
|
+
])];
|
|
62
|
+
case 1:
|
|
63
|
+
_b = __read.apply(void 0, [_c.sent(), 2]), currentCampaign = _b[0], previousCampaign = _b[1];
|
|
64
|
+
pluginEnabledOverride = this.__pluginEnabledOverride;
|
|
65
|
+
if (pluginEnabledOverride !== null && pluginEnabledOverride !== void 0 ? pluginEnabledOverride : isNewCampaign(currentCampaign, previousCampaign, options)) {
|
|
29
66
|
if (options.resetSessionOnNewCampaign) {
|
|
30
|
-
|
|
31
|
-
config.loggerProvider.log('Created a new session for new campaign');
|
|
67
|
+
amplitude.setSessionId(Date.now());
|
|
68
|
+
config.loggerProvider.log('Created a new session for new campaign.');
|
|
32
69
|
}
|
|
33
|
-
config.loggerProvider.log('Tracking
|
|
34
|
-
|
|
70
|
+
config.loggerProvider.log('Tracking attribution.');
|
|
71
|
+
campaignEvent = createCampaignEvent(currentCampaign, options);
|
|
72
|
+
amplitude.track(campaignEvent);
|
|
73
|
+
void storage.set(storageKey, currentCampaign);
|
|
35
74
|
}
|
|
36
75
|
return [2 /*return*/];
|
|
37
|
-
|
|
38
|
-
});
|
|
76
|
+
}
|
|
39
77
|
});
|
|
40
|
-
return [2 /*return*/];
|
|
41
78
|
});
|
|
42
|
-
}
|
|
43
|
-
execute: function (event) { return __awaiter(
|
|
79
|
+
},
|
|
80
|
+
execute: function (event) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
44
81
|
return [2 /*return*/, event];
|
|
45
82
|
}); }); },
|
|
46
|
-
}
|
|
83
|
+
};
|
|
84
|
+
// For Amplitude-internal functionality
|
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
86
|
+
plugin.__pluginEnabledOverride = undefined;
|
|
87
|
+
return plugin;
|
|
47
88
|
};
|
|
48
89
|
//# sourceMappingURL=web-attribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":";AAAA,OAAO,EAML,UAAU,GAEX,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"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","sourcesContent":["import { CampaignParser } from '@amplitude/analytics-client-common';\nimport {\n BeforePlugin,\n BrowserClient,\n BrowserConfig,\n Campaign,\n Event,\n PluginType,\n Storage,\n} from '@amplitude/analytics-types';\nimport { createCampaignEvent, getStorageKey, isNewCampaign } from './helpers';\nimport { CreateWebAttributionPlugin, CreateWebAttributionPluginParameters, Options } from './typings/web-attribution';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (\n ...args: CreateWebAttributionPluginParameters\n) {\n let amplitude: BrowserClient | undefined;\n let options: Options = {};\n\n const [clientOrOptions, configOrUndefined] = args;\n if (clientOrOptions && 'init' in clientOrOptions) {\n amplitude = clientOrOptions;\n if (configOrUndefined) {\n options = configOrUndefined;\n }\n } else if (clientOrOptions) {\n options = clientOrOptions;\n }\n\n const excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n excludeReferrers.unshift(location.hostname);\n }\n\n options = {\n disabled: false,\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n ...options,\n excludeReferrers,\n };\n\n const plugin: BeforePlugin = {\n name: 'web-attribution',\n type: PluginType.BEFORE,\n\n setup: async function (config: BrowserConfig, client?: BrowserClient) {\n amplitude = amplitude ?? client;\n if (!amplitude) {\n const receivedType = clientOrOptions ? 'Options' : 'undefined';\n config.loggerProvider.error(\n `Argument of type '${receivedType}' is not assignable to parameter of type 'BrowserClient'.`,\n );\n return;\n }\n\n if (options.disabled) {\n config.loggerProvider.log('@amplitude/plugin-web-attribution-browser is disabled. Attribution is not tracked.');\n return;\n }\n\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');\n\n if (!client && !config.attribution?.disabled) {\n config.loggerProvider.warn(\n '@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser. Resolve by disabling web attribution tracking in @amplitude/analytics-browser.',\n );\n config.attribution = {\n disabled: true,\n };\n }\n\n // Share cookie storage with user session storage\n const storage = config.cookieStorage as unknown as Storage<Campaign>;\n const storageKey = getStorageKey(config.apiKey, 'MKTG');\n\n const [currentCampaign, previousCampaign] = await Promise.all([\n new CampaignParser().parse(),\n storage.get(storageKey),\n ]);\n\n // For Amplitude-internal functionality\n // if pluginEnabledOverride === undefined then use plugin default logic\n // if pluginEnabledOverride === true then track attribution\n // if pluginEnabledOverride === false then do not track attribution\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n const pluginEnabledOverride: boolean | undefined = (this as any).__pluginEnabledOverride;\n\n if (pluginEnabledOverride ?? isNewCampaign(currentCampaign, previousCampaign, options)) {\n if (options.resetSessionOnNewCampaign) {\n amplitude.setSessionId(Date.now());\n config.loggerProvider.log('Created a new session for new campaign.');\n }\n config.loggerProvider.log('Tracking attribution.');\n const campaignEvent = createCampaignEvent(currentCampaign, options);\n amplitude.track(campaignEvent);\n void storage.set(storageKey, currentCampaign);\n }\n },\n\n execute: async (event: Event) => event,\n };\n\n // For Amplitude-internal functionality\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (plugin as any).__pluginEnabledOverride = undefined;\n\n return plugin;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var webAttribution=function(e){"use strict";var t,r,n,i,o=function(){return o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},o.apply(this,arguments)};function a(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}function u(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{s(n.next(e))}catch(e){o(e)}}function u(e){try{s(n.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((n=n.apply(e,t||[])).next())}))}function s(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(s){return function(u){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(a=0)),a;)try{if(r=1,n&&(i=2&u[0]?n.return:u[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,u[1])).done)return i;switch(n=0,i&&(u=[2&u[0],i.value]),u[0]){case 0:case 1:i=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,n=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==u[0]&&2!==u[0])){a=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]<i[3])){a.label=u[1];break}if(6===u[0]&&a.label<i[1]){a.label=i[1],i=u;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(u);break}i[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],n=0}finally{r=i=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,s])}}}!function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(t||(t={})),function(e){e.REVENUE_PRODUCT_ID="$productId",e.REVENUE_QUANTITY="$quantity",e.REVENUE_PRICE="$price",e.REVENUE_TYPE="$revenueType",e.REVENUE="$revenue"}(r||(r={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(n||(n={})),function(e){e.BEFORE="before",e.ENRICHMENT="enrichment",e.DESTINATION="destination"}(i||(i={}));var c=function(){var e,t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;return(null===(e=null==t?void 0:t.location)||void 0===e?void 0:e.search)?t.location.search.substring(1).split("&").filter(Boolean).reduce((function(e,t){var r=t.split("=",2),n=p(r[0]),i=p(r[1]);return i?(e[n]=i,e):e}),{}):{}},p=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},f="dclid",l="fbclid",d="gbraid",g="gclid",h="ko_click_id",v="msclkid",m="ttclid",y="twclid",b="wbraid",_={utm_campaign:void 0,utm_content:void 0,utm_id:void 0,utm_medium:void 0,utm_source:void 0,utm_term:void 0,referrer:void 0,referring_domain:void 0,dclid:void 0,gbraid:void 0,gclid:void 0,fbclid:void 0,ko_click_id:void 0,msclkid:void 0,ttclid:void 0,twclid:void 0,wbraid:void 0},E=function(){function e(){}return e.prototype.parse=function(){return u(this,void 0,void 0,(function(){return s(this,(function(e){return[2,o(o(o(o({},_),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=c();return{utm_campaign:e.utm_campaign,utm_content:e.utm_content,utm_id:e.utm_id,utm_medium:e.utm_medium,utm_source:e.utm_source,utm_term:e.utm_term}},e.prototype.getReferrer=function(){var e,t,r={referrer:void 0,referring_domain:void 0};try{r.referrer=document.referrer||void 0,r.referring_domain=null!==(t=null===(e=r.referrer)||void 0===e?void 0:e.split("/")[2])&&void 0!==t?t:void 0}catch(e){}return r},e.prototype.getClickIds=function(){var e,t=c();return(e={})[f]=t[f],e[l]=t[l],e[d]=t[d],e[g]=t[g],e[h]=t[h],e[v]=t[v],e[m]=t[m],e[y]=t[y],e[b]=t[b],e},e}(),w="AMP",S=function(e){if(Object.keys(e).length>1e3)return!1;for(var t in e){var r=e[t];if(!C(t,r))return!1}return!0},C=function(e,t){var r,n;if("string"!=typeof e)return!1;if(Array.isArray(t)){var i=!0;try{for(var o=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),a=o.next();!a.done;a=o.next()){var u=a.value;if(Array.isArray(u))return!1;if("object"==typeof u)i=i&&S(u);else if(!["number","string"].includes(typeof u))return!1;if(!i)return!1}}catch(e){r={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}}else{if(null==t)return!1;if("object"==typeof t)return S(t);if(!["number","string","boolean"].includes(typeof t))return!1}return!0},N=function(){function e(){this._propertySet=new Set,this._properties={}}return e.prototype.getUserProperties=function(){return o({},this._properties)},e.prototype.set=function(e,r){return this._safeSet(t.SET,e,r),this},e.prototype.setOnce=function(e,r){return this._safeSet(t.SET_ONCE,e,r),this},e.prototype.append=function(e,r){return this._safeSet(t.APPEND,e,r),this},e.prototype.prepend=function(e,r){return this._safeSet(t.PREPEND,e,r),this},e.prototype.postInsert=function(e,r){return this._safeSet(t.POSTINSERT,e,r),this},e.prototype.preInsert=function(e,r){return this._safeSet(t.PREINSERT,e,r),this},e.prototype.remove=function(e,r){return this._safeSet(t.REMOVE,e,r),this},e.prototype.add=function(e,r){return this._safeSet(t.ADD,e,r),this},e.prototype.unset=function(e){return this._safeSet(t.UNSET,e,"-"),this},e.prototype.clearAll=function(){return this._properties={},this._properties[t.CLEAR_ALL]="-",this},e.prototype._safeSet=function(e,t,r){if(this._validate(e,t,r)){var n=this._properties[e];return void 0===n&&(n={},this._properties[e]=n),n[t]=r,this._propertySet.add(t),!0}return!1},e.prototype._validate=function(e,r,n){return void 0===this._properties[t.CLEAR_ALL]&&(!this._propertySet.has(r)&&(e===t.ADD?"number"==typeof n:e===t.UNSET||e===t.REMOVE||C(r,n)))},e}(),P=function(){function e(e,t){var r,n;this.storage=t.storage,this.storageKey=function(e,t,r){return void 0===t&&(t=""),void 0===r&&(r=10),[w,t,e.substring(0,r)].filter(Boolean).join("_")}(e,"MKTG"),this.parser=new E,this.track=t.track,this.onNewCampaign=t.onNewCampaign,this.disabled=Boolean(t.disabled),this.trackNewCampaigns=Boolean(t.trackNewCampaigns),this.trackPageViews=Boolean(t.trackPageViews),this.excludeReferrers=null!==(r=t.excludeReferrers)&&void 0!==r?r:[],"undefined"!=typeof location&&this.excludeReferrers.unshift(location.hostname),this.initialEmptyValue=null!==(n=t.initialEmptyValue)&&void 0!==n?n:"EMPTY"}return e.prototype.isNewCampaign=function(e,t,r){void 0===r&&(r=!1),e.referrer;var n=e.referring_domain,i=a(e,["referrer","referring_domain"]),o=t||{};o.referrer;var u=o.referring_domain,s=a(o,["referrer","referring_domain"]);if(e.referring_domain&&this.excludeReferrers.includes(e.referring_domain))return!1;var c=JSON.stringify(i)!==JSON.stringify(s),p=r?T(n||"")!==T(u||""):n!==u;return!t||c||p},e.prototype.saveCampaignToStorage=function(e){return u(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this.storage.set(this.storageKey,e)];case 1:return t.sent(),[2]}}))}))},e.prototype.getCampaignFromStorage=function(){return u(this,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.storage.get(this.storageKey)];case 1:return[2,e.sent()]}}))}))},e.prototype.createCampaignEvent=function(e){var t,r,i=this,a=o(o({},_),e),u=Object.entries(a).reduce((function(e,t){var r=function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}(t,2),n=r[0],o=r[1];return e.setOnce("initial_".concat(n),o||i.initialEmptyValue),o?e.set(n,o):e.unset(n)}),new N),s={event_type:"Page View",event_properties:{page_title:"undefined"!=typeof document&&document.title||"",page_location:"undefined"!=typeof location&&location.href||"",page_path:"undefined"!=typeof location&&location.pathname||""}};return o(o({},(t=u,o(o({},r),{event_type:n.IDENTIFY,user_properties:t.getUserProperties()}))),this.trackPageViews&&s)},e.prototype.send=function(e){return u(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:return this.disabled?[2]:[4,this.parser.parse()];case 1:return t=n.sent(),[4,this.getCampaignFromStorage()];case 2:if(r=n.sent(),!e){if(!this.trackNewCampaigns||!this.isNewCampaign(t,r))return[2];this.onNewCampaign(t)}return[4,this.track(this.createCampaignEvent(t))];case 3:return n.sent(),[4,this.saveCampaignToStorage(t)];case 4:return n.sent(),[2]}}))}))},e}(),T=function(e){var t=e.split(".");return t.length<=2?e:t.slice(t.length-2,t.length).join(".")},O=function(){function e(e,t,r){this.campaignTracker=new P(e,o(o({},r),{trackPageViews:!1,track:function(){return Promise.resolve()},onNewCampaign:function(){return function(){}},storage:t}))}return e.prototype.createCampaignEvent=function(e){return this.campaignTracker.createCampaignEvent(e)},e.prototype.onPageChange=function(e){return u(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:return t=e,[4,this.getCurrentState()];case 1:return[4,t.apply(void 0,[n.sent()])];case 2:return n.sent(),[4,this.getCurrentState()];case 3:return(r=n.sent()).isNewCampaign&&this.campaignTracker.saveCampaignToStorage(r.currentCampaign),[2]}}))}))},e.prototype.getCurrentState=function(){return u(this,void 0,void 0,(function(){var e,t,r,n;return s(this,(function(i){switch(i.label){case 0:return[4,this.campaignTracker.parser.parse()];case 1:return e=i.sent(),r=(t=this.campaignTracker).isNewCampaign,n=[e],[4,this.campaignTracker.getCampaignFromStorage()];case 2:return[2,{isNewCampaign:r.apply(t,n.concat([i.sent(),!0])),currentCampaign:e}]}}))}))},e}(),k=function(e,t){return void 0===t&&(t={}),{name:"web-attribution",type:i.BEFORE,setup:function(r){return u(void 0,void 0,void 0,(function(){var n,i,a;return s(this,(function(c){return r.loggerProvider.log("Installing @amplitude/plugin-web-attribution-browser"),(null===(a=r.attribution)||void 0===a?void 0:a.disabled)||(r.loggerProvider.warn("@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser"),r.attribution={disabled:!0}),n=r.cookieStorage,(i=new O(r.apiKey,n,o({},t))).onPageChange((function(n){var o=n.isNewCampaign,a=n.currentCampaign;return u(void 0,void 0,void 0,(function(){return s(this,(function(n){return o&&(t.resetSessionOnNewCampaign&&(e.setSessionId(Date.now()),r.loggerProvider.log("Created a new session for new campaign")),r.loggerProvider.log("Tracking new campaign event"),e.track(i.createCampaignEvent(a))),[2]}))}))})),[2]}))}))},execute:function(e){return u(void 0,void 0,void 0,(function(){return s(this,(function(t){return[2,e]}))}))}}},R=Object.freeze({__proto__:null});return e.Types=R,e.plugin=k,e.webAttributionPlugin=k,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
|
|
1
|
+
var webAttribution=function(e){"use strict";var t=function(){return t=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)};function r(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}function n(e,t,r,n){return new(r||(r=Promise))((function(i,o){function u(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(u,a)}l((n=n.apply(e,t||[])).next())}))}function i(e,t){var r,n,i,o,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(l){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(u=0)),u;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,n=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(i=u.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){u=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){u.label=a[1];break}if(6===a[0]&&u.label<i[1]){u.label=i[1],i=a;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(a);break}i[2]&&u.ops.pop(),u.trys.pop();continue}a=t.call(e,u)}catch(e){a=[6,e],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}function o(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),u=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}var u,a,l,s,f=function(){var e,t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;return(null===(e=null==t?void 0:t.location)||void 0===e?void 0:e.search)?t.location.search.substring(1).split("&").filter(Boolean).reduce((function(e,t){var r=t.split("=",2),n=c(r[0]),i=c(r[1]);return i?(e[n]=i,e):e}),{}):{}},c=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},d="dclid",p="fbclid",v="gbraid",y="gclid",b="ko_click_id",g="msclkid",h="ttclid",m="twclid",_="wbraid",E={utm_campaign:void 0,utm_content:void 0,utm_id:void 0,utm_medium:void 0,utm_source:void 0,utm_term:void 0,referrer:void 0,referring_domain:void 0,dclid:void 0,gbraid:void 0,gclid:void 0,fbclid:void 0,ko_click_id:void 0,msclkid:void 0,ttclid:void 0,twclid:void 0,wbraid:void 0},w=function(){function e(){}return e.prototype.parse=function(){return n(this,void 0,void 0,(function(){return i(this,(function(e){return[2,t(t(t(t({},E),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=f();return{utm_campaign:e.utm_campaign,utm_content:e.utm_content,utm_id:e.utm_id,utm_medium:e.utm_medium,utm_source:e.utm_source,utm_term:e.utm_term}},e.prototype.getReferrer=function(){var e,t,r={referrer:void 0,referring_domain:void 0};try{r.referrer=document.referrer||void 0,r.referring_domain=null!==(t=null===(e=r.referrer)||void 0===e?void 0:e.split("/")[2])&&void 0!==t?t:void 0}catch(e){}return r},e.prototype.getClickIds=function(){var e,t=f();return(e={})[d]=t[d],e[p]=t[p],e[v]=t[v],e[y]=t[y],e[b]=t[b],e[g]=t[g],e[h]=t[h],e[m]=t[m],e[_]=t[_],e},e}();!function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(u||(u={})),function(e){e.REVENUE_PRODUCT_ID="$productId",e.REVENUE_QUANTITY="$quantity",e.REVENUE_PRICE="$price",e.REVENUE_TYPE="$revenueType",e.REVENUE="$revenue"}(a||(a={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(l||(l={})),function(e){e.BEFORE="before",e.ENRICHMENT="enrichment",e.DESTINATION="destination"}(s||(s={}));var S="AMP",O=function(e){if(Object.keys(e).length>1e3)return!1;for(var t in e){var r=e[t];if(!P(t,r))return!1}return!0},P=function(e,t){var r,n;if("string"!=typeof e)return!1;if(Array.isArray(t)){var i=!0;try{for(var o=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),u=o.next();!u.done;u=o.next()){var a=u.value;if(Array.isArray(a))return!1;if("object"==typeof a)i=i&&O(a);else if(!["number","string"].includes(typeof a))return!1;if(!i)return!1}}catch(e){r={error:e}}finally{try{u&&!u.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}}else{if(null==t)return!1;if("object"==typeof t)return O(t);if(!["number","string","boolean"].includes(typeof t))return!1}return!0},R=function(){function e(){this._propertySet=new Set,this._properties={}}return e.prototype.getUserProperties=function(){return t({},this._properties)},e.prototype.set=function(e,t){return this._safeSet(u.SET,e,t),this},e.prototype.setOnce=function(e,t){return this._safeSet(u.SET_ONCE,e,t),this},e.prototype.append=function(e,t){return this._safeSet(u.APPEND,e,t),this},e.prototype.prepend=function(e,t){return this._safeSet(u.PREPEND,e,t),this},e.prototype.postInsert=function(e,t){return this._safeSet(u.POSTINSERT,e,t),this},e.prototype.preInsert=function(e,t){return this._safeSet(u.PREINSERT,e,t),this},e.prototype.remove=function(e,t){return this._safeSet(u.REMOVE,e,t),this},e.prototype.add=function(e,t){return this._safeSet(u.ADD,e,t),this},e.prototype.unset=function(e){return this._safeSet(u.UNSET,e,"-"),this},e.prototype.clearAll=function(){return this._properties={},this._properties[u.CLEAR_ALL]="-",this},e.prototype._safeSet=function(e,t,r){if(this._validate(e,t,r)){var n=this._properties[e];return void 0===n&&(n={},this._properties[e]=n),n[t]=r,this._propertySet.add(t),!0}return!1},e.prototype._validate=function(e,t,r){return void 0===this._properties[u.CLEAR_ALL]&&(!this._propertySet.has(t)&&(e===u.ADD?"number"==typeof r:e===u.UNSET||e===u.REMOVE||P(t,r)))},e}(),T=function(e,t,r){return void 0===t&&(t=""),void 0===r&&(r=10),[S,t,e.substring(0,r)].filter(Boolean).join("_")},N=function(e){var t=e.split(".");return t.length<=2?e:t.slice(t.length-2,t.length).join(".")},I=function(e,t,n){var i;e.referrer;var o=e.referring_domain,u=r(e,["referrer","referring_domain"]),a=t||{};a.referrer;var l=a.referring_domain,s=r(a,["referrer","referring_domain"]);if(e.referring_domain&&(null===(i=n.excludeReferrers)||void 0===i?void 0:i.includes(e.referring_domain)))return!1;var f=JSON.stringify(u)!==JSON.stringify(s),c=N(o||"")!==N(l||"");return!t||f||c},A=function(e,r){var n,i,u=t(t({},E),e),a=Object.entries(u).reduce((function(e,t){var n,i=o(t,2),u=i[0],a=i[1];return e.setOnce("initial_".concat(u),null!==(n=null!=a?a:r.initialEmptyValue)&&void 0!==n?n:"EMPTY"),a?e.set(u,a):e.unset(u)}),new R);return n=a,t(t({},i),{event_type:l.IDENTIFY,user_properties:n.getUserProperties()})},k=function(){for(var e,r,u=this,a=[],l=0;l<arguments.length;l++)a[l]=arguments[l];var f={},c=o(a,2),d=c[0],p=c[1];d&&"init"in d?(r=d,p&&(f=p)):d&&(f=d);var v=null!==(e=f.excludeReferrers)&&void 0!==e?e:[];"undefined"!=typeof location&&v.unshift(location.hostname),f=t(t({disabled:!1,initialEmptyValue:"EMPTY",resetSessionOnNewCampaign:!1},f),{excludeReferrers:v});var y={name:"web-attribution",type:s.BEFORE,setup:function(e,t){var u;return n(this,void 0,void 0,(function(){var n,a,l,s,c,p,v,y;return i(this,(function(i){switch(i.label){case 0:return(r=null!=r?r:t)?f.disabled?(e.loggerProvider.log("@amplitude/plugin-web-attribution-browser is disabled. Attribution is not tracked."),[2]):(e.loggerProvider.log("Installing @amplitude/plugin-web-attribution-browser."),t||(null===(u=e.attribution)||void 0===u?void 0:u.disabled)||(e.loggerProvider.warn("@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser. Resolve by disabling web attribution tracking in @amplitude/analytics-browser."),e.attribution={disabled:!0}),a=e.cookieStorage,l=T(e.apiKey,"MKTG"),[4,Promise.all([(new w).parse(),a.get(l)])]):(n=d?"Options":"undefined",e.loggerProvider.error("Argument of type '".concat(n,"' is not assignable to parameter of type 'BrowserClient'.")),[2]);case 1:return s=o.apply(void 0,[i.sent(),2]),c=s[0],p=s[1],(null!=(v=this.__pluginEnabledOverride)?v:I(c,p,f))&&(f.resetSessionOnNewCampaign&&(r.setSessionId(Date.now()),e.loggerProvider.log("Created a new session for new campaign.")),e.loggerProvider.log("Tracking attribution."),y=A(c,f),r.track(y),a.set(l,c)),[2]}}))}))},execute:function(e){return n(u,void 0,void 0,(function(){return i(this,(function(t){return[2,e]}))}))},__pluginEnabledOverride:void 0};return y},D=Object.freeze({__proto__:null});return e.Types=D,e.plugin=k,e.webAttributionPlugin=k,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).amplitude={})}(this,(function(e){"use strict";var t,r,n,i,o=function(){return o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},o.apply(this,arguments)};function a(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}function u(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{s(n.next(e))}catch(e){o(e)}}function u(e){try{s(n.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((n=n.apply(e,t||[])).next())}))}function s(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(s){return function(u){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(a=0)),a;)try{if(r=1,n&&(i=2&u[0]?n.return:u[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,u[1])).done)return i;switch(n=0,i&&(u=[2&u[0],i.value]),u[0]){case 0:case 1:i=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,n=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==u[0]&&2!==u[0])){a=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]<i[3])){a.label=u[1];break}if(6===u[0]&&a.label<i[1]){a.label=i[1],i=u;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(u);break}i[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],n=0}finally{r=i=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,s])}}}!function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(t||(t={})),function(e){e.REVENUE_PRODUCT_ID="$productId",e.REVENUE_QUANTITY="$quantity",e.REVENUE_PRICE="$price",e.REVENUE_TYPE="$revenueType",e.REVENUE="$revenue"}(r||(r={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(n||(n={})),function(e){e.BEFORE="before",e.ENRICHMENT="enrichment",e.DESTINATION="destination"}(i||(i={}));var c=function(){var e,t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;return(null===(e=null==t?void 0:t.location)||void 0===e?void 0:e.search)?t.location.search.substring(1).split("&").filter(Boolean).reduce((function(e,t){var r=t.split("=",2),n=f(r[0]),i=f(r[1]);return i?(e[n]=i,e):e}),{}):{}},f=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},p="dclid",l="fbclid",d="gbraid",g="gclid",h="ko_click_id",v="msclkid",m="ttclid",y="twclid",b="wbraid",_={utm_campaign:void 0,utm_content:void 0,utm_id:void 0,utm_medium:void 0,utm_source:void 0,utm_term:void 0,referrer:void 0,referring_domain:void 0,dclid:void 0,gbraid:void 0,gclid:void 0,fbclid:void 0,ko_click_id:void 0,msclkid:void 0,ttclid:void 0,twclid:void 0,wbraid:void 0},E=function(){function e(){}return e.prototype.parse=function(){return u(this,void 0,void 0,(function(){return s(this,(function(e){return[2,o(o(o(o({},_),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=c();return{utm_campaign:e.utm_campaign,utm_content:e.utm_content,utm_id:e.utm_id,utm_medium:e.utm_medium,utm_source:e.utm_source,utm_term:e.utm_term}},e.prototype.getReferrer=function(){var e,t,r={referrer:void 0,referring_domain:void 0};try{r.referrer=document.referrer||void 0,r.referring_domain=null!==(t=null===(e=r.referrer)||void 0===e?void 0:e.split("/")[2])&&void 0!==t?t:void 0}catch(e){}return r},e.prototype.getClickIds=function(){var e,t=c();return(e={})[p]=t[p],e[l]=t[l],e[d]=t[d],e[g]=t[g],e[h]=t[h],e[v]=t[v],e[m]=t[m],e[y]=t[y],e[b]=t[b],e},e}(),w="AMP",S=function(e){if(Object.keys(e).length>1e3)return!1;for(var t in e){var r=e[t];if(!C(t,r))return!1}return!0},C=function(e,t){var r,n;if("string"!=typeof e)return!1;if(Array.isArray(t)){var i=!0;try{for(var o=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),a=o.next();!a.done;a=o.next()){var u=a.value;if(Array.isArray(u))return!1;if("object"==typeof u)i=i&&S(u);else if(!["number","string"].includes(typeof u))return!1;if(!i)return!1}}catch(e){r={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}}else{if(null==t)return!1;if("object"==typeof t)return S(t);if(!["number","string","boolean"].includes(typeof t))return!1}return!0},N=function(){function e(){this._propertySet=new Set,this._properties={}}return e.prototype.getUserProperties=function(){return o({},this._properties)},e.prototype.set=function(e,r){return this._safeSet(t.SET,e,r),this},e.prototype.setOnce=function(e,r){return this._safeSet(t.SET_ONCE,e,r),this},e.prototype.append=function(e,r){return this._safeSet(t.APPEND,e,r),this},e.prototype.prepend=function(e,r){return this._safeSet(t.PREPEND,e,r),this},e.prototype.postInsert=function(e,r){return this._safeSet(t.POSTINSERT,e,r),this},e.prototype.preInsert=function(e,r){return this._safeSet(t.PREINSERT,e,r),this},e.prototype.remove=function(e,r){return this._safeSet(t.REMOVE,e,r),this},e.prototype.add=function(e,r){return this._safeSet(t.ADD,e,r),this},e.prototype.unset=function(e){return this._safeSet(t.UNSET,e,"-"),this},e.prototype.clearAll=function(){return this._properties={},this._properties[t.CLEAR_ALL]="-",this},e.prototype._safeSet=function(e,t,r){if(this._validate(e,t,r)){var n=this._properties[e];return void 0===n&&(n={},this._properties[e]=n),n[t]=r,this._propertySet.add(t),!0}return!1},e.prototype._validate=function(e,r,n){return void 0===this._properties[t.CLEAR_ALL]&&(!this._propertySet.has(r)&&(e===t.ADD?"number"==typeof n:e===t.UNSET||e===t.REMOVE||C(r,n)))},e}(),T=function(){function e(e,t){var r,n;this.storage=t.storage,this.storageKey=function(e,t,r){return void 0===t&&(t=""),void 0===r&&(r=10),[w,t,e.substring(0,r)].filter(Boolean).join("_")}(e,"MKTG"),this.parser=new E,this.track=t.track,this.onNewCampaign=t.onNewCampaign,this.disabled=Boolean(t.disabled),this.trackNewCampaigns=Boolean(t.trackNewCampaigns),this.trackPageViews=Boolean(t.trackPageViews),this.excludeReferrers=null!==(r=t.excludeReferrers)&&void 0!==r?r:[],"undefined"!=typeof location&&this.excludeReferrers.unshift(location.hostname),this.initialEmptyValue=null!==(n=t.initialEmptyValue)&&void 0!==n?n:"EMPTY"}return e.prototype.isNewCampaign=function(e,t,r){void 0===r&&(r=!1),e.referrer;var n=e.referring_domain,i=a(e,["referrer","referring_domain"]),o=t||{};o.referrer;var u=o.referring_domain,s=a(o,["referrer","referring_domain"]);if(e.referring_domain&&this.excludeReferrers.includes(e.referring_domain))return!1;var c=JSON.stringify(i)!==JSON.stringify(s),f=r?P(n||"")!==P(u||""):n!==u;return!t||c||f},e.prototype.saveCampaignToStorage=function(e){return u(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this.storage.set(this.storageKey,e)];case 1:return t.sent(),[2]}}))}))},e.prototype.getCampaignFromStorage=function(){return u(this,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.storage.get(this.storageKey)];case 1:return[2,e.sent()]}}))}))},e.prototype.createCampaignEvent=function(e){var t,r,i=this,a=o(o({},_),e),u=Object.entries(a).reduce((function(e,t){var r=function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}(t,2),n=r[0],o=r[1];return e.setOnce("initial_".concat(n),o||i.initialEmptyValue),o?e.set(n,o):e.unset(n)}),new N),s={event_type:"Page View",event_properties:{page_title:"undefined"!=typeof document&&document.title||"",page_location:"undefined"!=typeof location&&location.href||"",page_path:"undefined"!=typeof location&&location.pathname||""}};return o(o({},(t=u,o(o({},r),{event_type:n.IDENTIFY,user_properties:t.getUserProperties()}))),this.trackPageViews&&s)},e.prototype.send=function(e){return u(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:return this.disabled?[2]:[4,this.parser.parse()];case 1:return t=n.sent(),[4,this.getCampaignFromStorage()];case 2:if(r=n.sent(),!e){if(!this.trackNewCampaigns||!this.isNewCampaign(t,r))return[2];this.onNewCampaign(t)}return[4,this.track(this.createCampaignEvent(t))];case 3:return n.sent(),[4,this.saveCampaignToStorage(t)];case 4:return n.sent(),[2]}}))}))},e}(),P=function(e){var t=e.split(".");return t.length<=2?e:t.slice(t.length-2,t.length).join(".")},O=function(){function e(e,t,r){this.campaignTracker=new T(e,o(o({},r),{trackPageViews:!1,track:function(){return Promise.resolve()},onNewCampaign:function(){return function(){}},storage:t}))}return e.prototype.createCampaignEvent=function(e){return this.campaignTracker.createCampaignEvent(e)},e.prototype.onPageChange=function(e){return u(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:return t=e,[4,this.getCurrentState()];case 1:return[4,t.apply(void 0,[n.sent()])];case 2:return n.sent(),[4,this.getCurrentState()];case 3:return(r=n.sent()).isNewCampaign&&this.campaignTracker.saveCampaignToStorage(r.currentCampaign),[2]}}))}))},e.prototype.getCurrentState=function(){return u(this,void 0,void 0,(function(){var e,t,r,n;return s(this,(function(i){switch(i.label){case 0:return[4,this.campaignTracker.parser.parse()];case 1:return e=i.sent(),r=(t=this.campaignTracker).isNewCampaign,n=[e],[4,this.campaignTracker.getCampaignFromStorage()];case 2:return[2,{isNewCampaign:r.apply(t,n.concat([i.sent(),!0])),currentCampaign:e}]}}))}))},e}(),k=function(e,t){return void 0===t&&(t={}),{name:"web-attribution",type:i.BEFORE,setup:function(r){return u(void 0,void 0,void 0,(function(){var n,i,a;return s(this,(function(c){return r.loggerProvider.log("Installing @amplitude/plugin-web-attribution-browser"),(null===(a=r.attribution)||void 0===a?void 0:a.disabled)||(r.loggerProvider.warn("@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser"),r.attribution={disabled:!0}),n=r.cookieStorage,(i=new O(r.apiKey,n,o({},t))).onPageChange((function(n){var o=n.isNewCampaign,a=n.currentCampaign;return u(void 0,void 0,void 0,(function(){return s(this,(function(n){return o&&(t.resetSessionOnNewCampaign&&(e.setSessionId(Date.now()),r.loggerProvider.log("Created a new session for new campaign")),r.loggerProvider.log("Tracking new campaign event"),e.track(i.createCampaignEvent(a))),[2]}))}))})),[2]}))}))},execute:function(e){return u(void 0,void 0,void 0,(function(){return s(this,(function(t){return[2,e]}))}))}}},R=Object.freeze({__proto__:null});e.Types=R,e.plugin=k,e.webAttributionPlugin=k,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).amplitude={})}(this,(function(e){"use strict";var t=function(){return t=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)};function r(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}function n(e,t,r,n){return new(r||(r=Promise))((function(i,o){function u(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(u,a)}l((n=n.apply(e,t||[])).next())}))}function i(e,t){var r,n,i,o,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(l){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(u=0)),u;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,n=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(i=u.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){u=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){u.label=a[1];break}if(6===a[0]&&u.label<i[1]){u.label=i[1],i=a;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(a);break}i[2]&&u.ops.pop(),u.trys.pop();continue}a=t.call(e,u)}catch(e){a=[6,e],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}function o(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),u=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}var u,a,l,s,f=function(){var e,t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;return(null===(e=null==t?void 0:t.location)||void 0===e?void 0:e.search)?t.location.search.substring(1).split("&").filter(Boolean).reduce((function(e,t){var r=t.split("=",2),n=c(r[0]),i=c(r[1]);return i?(e[n]=i,e):e}),{}):{}},c=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},d="dclid",p="fbclid",v="gbraid",y="gclid",b="ko_click_id",h="msclkid",g="ttclid",m="twclid",_="wbraid",E={utm_campaign:void 0,utm_content:void 0,utm_id:void 0,utm_medium:void 0,utm_source:void 0,utm_term:void 0,referrer:void 0,referring_domain:void 0,dclid:void 0,gbraid:void 0,gclid:void 0,fbclid:void 0,ko_click_id:void 0,msclkid:void 0,ttclid:void 0,twclid:void 0,wbraid:void 0},w=function(){function e(){}return e.prototype.parse=function(){return n(this,void 0,void 0,(function(){return i(this,(function(e){return[2,t(t(t(t({},E),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=f();return{utm_campaign:e.utm_campaign,utm_content:e.utm_content,utm_id:e.utm_id,utm_medium:e.utm_medium,utm_source:e.utm_source,utm_term:e.utm_term}},e.prototype.getReferrer=function(){var e,t,r={referrer:void 0,referring_domain:void 0};try{r.referrer=document.referrer||void 0,r.referring_domain=null!==(t=null===(e=r.referrer)||void 0===e?void 0:e.split("/")[2])&&void 0!==t?t:void 0}catch(e){}return r},e.prototype.getClickIds=function(){var e,t=f();return(e={})[d]=t[d],e[p]=t[p],e[v]=t[v],e[y]=t[y],e[b]=t[b],e[h]=t[h],e[g]=t[g],e[m]=t[m],e[_]=t[_],e},e}();!function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(u||(u={})),function(e){e.REVENUE_PRODUCT_ID="$productId",e.REVENUE_QUANTITY="$quantity",e.REVENUE_PRICE="$price",e.REVENUE_TYPE="$revenueType",e.REVENUE="$revenue"}(a||(a={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(l||(l={})),function(e){e.BEFORE="before",e.ENRICHMENT="enrichment",e.DESTINATION="destination"}(s||(s={}));var S="AMP",O=function(e){if(Object.keys(e).length>1e3)return!1;for(var t in e){var r=e[t];if(!P(t,r))return!1}return!0},P=function(e,t){var r,n;if("string"!=typeof e)return!1;if(Array.isArray(t)){var i=!0;try{for(var o=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),u=o.next();!u.done;u=o.next()){var a=u.value;if(Array.isArray(a))return!1;if("object"==typeof a)i=i&&O(a);else if(!["number","string"].includes(typeof a))return!1;if(!i)return!1}}catch(e){r={error:e}}finally{try{u&&!u.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}}else{if(null==t)return!1;if("object"==typeof t)return O(t);if(!["number","string","boolean"].includes(typeof t))return!1}return!0},T=function(){function e(){this._propertySet=new Set,this._properties={}}return e.prototype.getUserProperties=function(){return t({},this._properties)},e.prototype.set=function(e,t){return this._safeSet(u.SET,e,t),this},e.prototype.setOnce=function(e,t){return this._safeSet(u.SET_ONCE,e,t),this},e.prototype.append=function(e,t){return this._safeSet(u.APPEND,e,t),this},e.prototype.prepend=function(e,t){return this._safeSet(u.PREPEND,e,t),this},e.prototype.postInsert=function(e,t){return this._safeSet(u.POSTINSERT,e,t),this},e.prototype.preInsert=function(e,t){return this._safeSet(u.PREINSERT,e,t),this},e.prototype.remove=function(e,t){return this._safeSet(u.REMOVE,e,t),this},e.prototype.add=function(e,t){return this._safeSet(u.ADD,e,t),this},e.prototype.unset=function(e){return this._safeSet(u.UNSET,e,"-"),this},e.prototype.clearAll=function(){return this._properties={},this._properties[u.CLEAR_ALL]="-",this},e.prototype._safeSet=function(e,t,r){if(this._validate(e,t,r)){var n=this._properties[e];return void 0===n&&(n={},this._properties[e]=n),n[t]=r,this._propertySet.add(t),!0}return!1},e.prototype._validate=function(e,t,r){return void 0===this._properties[u.CLEAR_ALL]&&(!this._propertySet.has(t)&&(e===u.ADD?"number"==typeof r:e===u.UNSET||e===u.REMOVE||P(t,r)))},e}(),R=function(e,t,r){return void 0===t&&(t=""),void 0===r&&(r=10),[S,t,e.substring(0,r)].filter(Boolean).join("_")},N=function(e){var t=e.split(".");return t.length<=2?e:t.slice(t.length-2,t.length).join(".")},I=function(e,t,n){var i;e.referrer;var o=e.referring_domain,u=r(e,["referrer","referring_domain"]),a=t||{};a.referrer;var l=a.referring_domain,s=r(a,["referrer","referring_domain"]);if(e.referring_domain&&(null===(i=n.excludeReferrers)||void 0===i?void 0:i.includes(e.referring_domain)))return!1;var f=JSON.stringify(u)!==JSON.stringify(s),c=N(o||"")!==N(l||"");return!t||f||c},A=function(e,r){var n,i,u=t(t({},E),e),a=Object.entries(u).reduce((function(e,t){var n,i=o(t,2),u=i[0],a=i[1];return e.setOnce("initial_".concat(u),null!==(n=null!=a?a:r.initialEmptyValue)&&void 0!==n?n:"EMPTY"),a?e.set(u,a):e.unset(u)}),new T);return n=a,t(t({},i),{event_type:l.IDENTIFY,user_properties:n.getUserProperties()})},k=function(){for(var e,r,u=this,a=[],l=0;l<arguments.length;l++)a[l]=arguments[l];var f={},c=o(a,2),d=c[0],p=c[1];d&&"init"in d?(r=d,p&&(f=p)):d&&(f=d);var v=null!==(e=f.excludeReferrers)&&void 0!==e?e:[];"undefined"!=typeof location&&v.unshift(location.hostname),f=t(t({disabled:!1,initialEmptyValue:"EMPTY",resetSessionOnNewCampaign:!1},f),{excludeReferrers:v});var y={name:"web-attribution",type:s.BEFORE,setup:function(e,t){var u;return n(this,void 0,void 0,(function(){var n,a,l,s,c,p,v,y;return i(this,(function(i){switch(i.label){case 0:return(r=null!=r?r:t)?f.disabled?(e.loggerProvider.log("@amplitude/plugin-web-attribution-browser is disabled. Attribution is not tracked."),[2]):(e.loggerProvider.log("Installing @amplitude/plugin-web-attribution-browser."),t||(null===(u=e.attribution)||void 0===u?void 0:u.disabled)||(e.loggerProvider.warn("@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser. Resolve by disabling web attribution tracking in @amplitude/analytics-browser."),e.attribution={disabled:!0}),a=e.cookieStorage,l=R(e.apiKey,"MKTG"),[4,Promise.all([(new w).parse(),a.get(l)])]):(n=d?"Options":"undefined",e.loggerProvider.error("Argument of type '".concat(n,"' is not assignable to parameter of type 'BrowserClient'.")),[2]);case 1:return s=o.apply(void 0,[i.sent(),2]),c=s[0],p=s[1],(null!=(v=this.__pluginEnabledOverride)?v:I(c,p,f))&&(f.resetSessionOnNewCampaign&&(r.setSessionId(Date.now()),e.loggerProvider.log("Created a new session for new campaign.")),e.loggerProvider.log("Tracking attribution."),y=A(c,f),r.track(y),a.set(l,c)),[2]}}))}))},execute:function(e){return n(u,void 0,void 0,(function(){return i(this,(function(t){return[2,e]}))}))},__pluginEnabledOverride:void 0};return y},x=Object.freeze({__proto__:null});e.Types=x,e.plugin=k,e.webAttributionPlugin=k,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
Binary file
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Campaign } from '@amplitude/analytics-types';
|
|
2
|
+
import { Options } from './typings/web-attribution';
|
|
3
|
+
export declare const getStorageKey: (apiKey: string, postKey?: string, limit?: number) => string;
|
|
4
|
+
export declare const isNewCampaign: (current: Campaign, previous: Campaign | undefined, options: Options) => boolean;
|
|
5
|
+
export declare const createCampaignEvent: (campaign: Campaign, options: Options) => import("@amplitude/analytics-types").IdentifyEvent;
|
|
6
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,eAAO,MAAM,aAAa,WAAY,MAAM,6CAE3C,CAAC;AAYF,eAAO,MAAM,aAAa,YAAa,QAAQ,YAAY,QAAQ,GAAG,SAAS,WAAW,OAAO,YAchG,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,QAAQ,WAAW,OAAO,uDAgBvE,CAAC"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';
|
|
1
2
|
export interface Options {
|
|
2
3
|
disabled?: boolean;
|
|
3
4
|
excludeReferrers?: string[];
|
|
4
5
|
initialEmptyValue?: string;
|
|
5
6
|
resetSessionOnNewCampaign?: boolean;
|
|
6
7
|
}
|
|
8
|
+
export interface CreateWebAttributionPlugin {
|
|
9
|
+
(client: BrowserClient, options?: Options): BeforePlugin;
|
|
10
|
+
(options?: Options): BeforePlugin;
|
|
11
|
+
}
|
|
12
|
+
export type CreateWebAttributionPluginParameters = [BrowserClient, Options?] | [Options?];
|
|
7
13
|
//# sourceMappingURL=web-attribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC"}
|
|
1
|
+
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../../src/typings/web-attribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACzD,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CACnC;AAED,MAAM,MAAM,oCAAoC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare const webAttributionPlugin: (client: BrowserClient, options?: Options) => BeforePlugin;
|
|
1
|
+
import { CreateWebAttributionPlugin } from './typings/web-attribution';
|
|
2
|
+
export declare const webAttributionPlugin: CreateWebAttributionPlugin;
|
|
4
3
|
//# sourceMappingURL=web-attribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,0BAA0B,EAAiD,MAAM,2BAA2B,CAAC;AAEtH,eAAO,MAAM,oBAAoB,EAAE,0BA+FlC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amplitude/plugin-web-attribution-browser",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-beta.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Amplitude Inc",
|
|
6
6
|
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
|
|
@@ -36,12 +36,12 @@
|
|
|
36
36
|
"url": "https://github.com/amplitude/Amplitude-TypeScript/issues"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@amplitude/analytics-client-common": "^0.
|
|
40
|
-
"@amplitude/analytics-types": "^0.
|
|
39
|
+
"@amplitude/analytics-client-common": "^0.6.0-beta.0",
|
|
40
|
+
"@amplitude/analytics-types": "^0.17.0-beta.0",
|
|
41
41
|
"tslib": "^2.4.1"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@amplitude/analytics-browser": "^1.
|
|
44
|
+
"@amplitude/analytics-browser": "^1.9.0-beta.1",
|
|
45
45
|
"@rollup/plugin-commonjs": "^23.0.4",
|
|
46
46
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
47
47
|
"@rollup/plugin-typescript": "^10.0.1",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"files": [
|
|
54
54
|
"lib"
|
|
55
55
|
],
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "1c7e1613e485026105fb138cab17fed924da6e92"
|
|
57
57
|
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { AttributionOptions, Campaign } from '@amplitude/analytics-types';
|
|
2
|
-
import { CampaignTracker } from '@amplitude/analytics-client-common';
|
|
3
|
-
import { Storage } from '@amplitude/analytics-types';
|
|
4
|
-
export declare class PluginCampaignTracker {
|
|
5
|
-
campaignTracker: CampaignTracker;
|
|
6
|
-
constructor(apiKey: string, storage: Storage<Campaign>, options: AttributionOptions);
|
|
7
|
-
createCampaignEvent(currentCampaign: Campaign): {
|
|
8
|
-
event_type: string;
|
|
9
|
-
event_properties?: {
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
} | undefined;
|
|
12
|
-
user_properties: {
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
};
|
|
15
|
-
group_properties?: {
|
|
16
|
-
[key: string]: any;
|
|
17
|
-
} | undefined;
|
|
18
|
-
groups?: {
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
} | undefined;
|
|
21
|
-
user_id?: string | undefined;
|
|
22
|
-
device_id?: string | undefined;
|
|
23
|
-
time?: number | undefined;
|
|
24
|
-
location_lat?: number | undefined;
|
|
25
|
-
location_lng?: number | undefined;
|
|
26
|
-
app_version?: string | undefined;
|
|
27
|
-
version_name?: string | undefined;
|
|
28
|
-
library?: string | undefined;
|
|
29
|
-
platform?: string | undefined;
|
|
30
|
-
os_name?: string | undefined;
|
|
31
|
-
os_version?: string | undefined;
|
|
32
|
-
device_brand?: string | undefined;
|
|
33
|
-
device_manufacturer?: string | undefined;
|
|
34
|
-
device_model?: string | undefined;
|
|
35
|
-
carrier?: string | undefined;
|
|
36
|
-
country?: string | undefined;
|
|
37
|
-
region?: string | undefined;
|
|
38
|
-
city?: string | undefined;
|
|
39
|
-
dma?: string | undefined;
|
|
40
|
-
idfa?: string | undefined;
|
|
41
|
-
idfv?: string | undefined;
|
|
42
|
-
adid?: string | undefined;
|
|
43
|
-
android_id?: string | undefined;
|
|
44
|
-
language?: string | undefined;
|
|
45
|
-
ip?: string | undefined;
|
|
46
|
-
price?: number | undefined;
|
|
47
|
-
quantity?: number | undefined;
|
|
48
|
-
revenue?: number | undefined;
|
|
49
|
-
productId?: string | undefined;
|
|
50
|
-
revenueType?: string | undefined;
|
|
51
|
-
event_id?: number | undefined;
|
|
52
|
-
session_id?: number | undefined;
|
|
53
|
-
insert_id?: string | undefined;
|
|
54
|
-
plan?: import("@amplitude/analytics-types").Plan | undefined;
|
|
55
|
-
ingestion_metadata?: import("@amplitude/analytics-types/lib/esm/ingestion-metadata").IngestionMetadataEventProperty | undefined;
|
|
56
|
-
partner_id?: string | undefined;
|
|
57
|
-
extra?: {
|
|
58
|
-
[key: string]: any;
|
|
59
|
-
} | undefined;
|
|
60
|
-
};
|
|
61
|
-
onPageChange(callback: (state: {
|
|
62
|
-
isNewCampaign: boolean;
|
|
63
|
-
currentCampaign: Campaign;
|
|
64
|
-
}) => Promise<unknown>): Promise<void>;
|
|
65
|
-
private getCurrentState;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=plugin-campaign-tracker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-campaign-tracker.d.ts","sourceRoot":"","sources":["../../src/plugin-campaign-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,qBAAa,qBAAqB;IAChC,eAAe,EAAE,eAAe,CAAC;gBAErB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,kBAAkB;IAUnF,mBAAmB,CAAC,eAAe,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIvC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,QAAQ,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC;YASjG,eAAe;CAY9B"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
exports.PluginCampaignTracker = void 0;
|
|
3
|
-
var tslib_1 = require("tslib");
|
|
4
|
-
var analytics_client_common_1 = require("@amplitude/analytics-client-common");
|
|
5
|
-
var PluginCampaignTracker = /** @class */ (function () {
|
|
6
|
-
function PluginCampaignTracker(apiKey, storage, options) {
|
|
7
|
-
this.campaignTracker = new analytics_client_common_1.CampaignTracker(apiKey, tslib_1.__assign(tslib_1.__assign({}, options), { trackPageViews: false, track: /* istanbul ignore next */ function () { return Promise.resolve(); }, onNewCampaign: /* istanbul ignore next */ function () { return function () { return undefined; }; }, storage: storage }));
|
|
8
|
-
}
|
|
9
|
-
PluginCampaignTracker.prototype.createCampaignEvent = function (currentCampaign) {
|
|
10
|
-
return this.campaignTracker.createCampaignEvent(currentCampaign);
|
|
11
|
-
};
|
|
12
|
-
PluginCampaignTracker.prototype.onPageChange = function (callback) {
|
|
13
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
14
|
-
var _a, currentState;
|
|
15
|
-
return tslib_1.__generator(this, function (_b) {
|
|
16
|
-
switch (_b.label) {
|
|
17
|
-
case 0:
|
|
18
|
-
_a = callback;
|
|
19
|
-
return [4 /*yield*/, this.getCurrentState()];
|
|
20
|
-
case 1: return [4 /*yield*/, _a.apply(void 0, [_b.sent()])];
|
|
21
|
-
case 2:
|
|
22
|
-
_b.sent();
|
|
23
|
-
return [4 /*yield*/, this.getCurrentState()];
|
|
24
|
-
case 3:
|
|
25
|
-
currentState = _b.sent();
|
|
26
|
-
if (currentState.isNewCampaign) {
|
|
27
|
-
void this.campaignTracker.saveCampaignToStorage(currentState.currentCampaign);
|
|
28
|
-
}
|
|
29
|
-
return [2 /*return*/];
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
PluginCampaignTracker.prototype.getCurrentState = function () {
|
|
35
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
36
|
-
var currentCampaign, isNewCampaign, _a, _b, _c;
|
|
37
|
-
return tslib_1.__generator(this, function (_d) {
|
|
38
|
-
switch (_d.label) {
|
|
39
|
-
case 0: return [4 /*yield*/, this.campaignTracker.parser.parse()];
|
|
40
|
-
case 1:
|
|
41
|
-
currentCampaign = _d.sent();
|
|
42
|
-
_b = (_a = this.campaignTracker).isNewCampaign;
|
|
43
|
-
_c = [currentCampaign];
|
|
44
|
-
return [4 /*yield*/, this.campaignTracker.getCampaignFromStorage()];
|
|
45
|
-
case 2:
|
|
46
|
-
isNewCampaign = _b.apply(_a, _c.concat([_d.sent(), true]));
|
|
47
|
-
return [2 /*return*/, {
|
|
48
|
-
isNewCampaign: isNewCampaign,
|
|
49
|
-
currentCampaign: currentCampaign,
|
|
50
|
-
}];
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
return PluginCampaignTracker;
|
|
56
|
-
}());
|
|
57
|
-
exports.PluginCampaignTracker = PluginCampaignTracker;
|
|
58
|
-
//# sourceMappingURL=plugin-campaign-tracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-campaign-tracker.js","sourceRoot":"","sources":["../../src/plugin-campaign-tracker.ts"],"names":[],"mappings":";;;AACA,8EAAqE;AAGrE;IAGE,+BAAY,MAAc,EAAE,OAA0B,EAAE,OAA2B;QACjF,IAAI,CAAC,eAAe,GAAG,IAAI,yCAAe,CAAC,MAAM,wCAC5C,OAAO,KACV,cAAc,EAAE,KAAK,EACrB,KAAK,EAAE,0BAA0B,CAAC,cAAM,OAAA,OAAO,CAAC,OAAO,EAAE,EAAjB,CAAiB,EACzD,aAAa,EAAE,0BAA0B,CAAC,cAAM,OAAA,cAAM,OAAA,SAAS,EAAT,CAAS,EAAf,CAAe,EAC/D,OAAO,SAAA,IACP,CAAC;IACL,CAAC;IAED,mDAAmB,GAAnB,UAAoB,eAAyB;QAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACnE,CAAC;IAEK,4CAAY,GAAlB,UAAmB,QAA4F;;;;;;wBACvG,KAAA,QAAQ,CAAA;wBAAC,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;4BAA3C,qBAAM,kBAAS,SAA4B,EAAC,EAAA;;wBAA5C,SAA4C,CAAC;wBAExB,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;wBAA3C,YAAY,GAAG,SAA4B;wBACjD,IAAI,YAAY,CAAC,aAAa,EAAE;4BAC9B,KAAK,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;yBAC/E;;;;;KACF;IAEa,+CAAe,GAA7B;;;;;4BAC0B,qBAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,EAAA;;wBAA3D,eAAe,GAAG,SAAyC;wBAC3C,KAAA,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,aAAa,CAAA;8BACtD,eAAe;wBACf,qBAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,EAAA;;wBAF/C,aAAa,GAAG,wBAEpB,SAAmD,EACnD,IAAI,GACL;wBACD,sBAAO;gCACL,aAAa,eAAA;gCACb,eAAe,iBAAA;6BAChB,EAAC;;;;KACH;IACH,4BAAC;AAAD,CAAC,AAtCD,IAsCC;AAtCY,sDAAqB","sourcesContent":["import { AttributionOptions, Campaign } from '@amplitude/analytics-types';\nimport { CampaignTracker } from '@amplitude/analytics-client-common';\nimport { Storage } from '@amplitude/analytics-types';\n\nexport class PluginCampaignTracker {\n campaignTracker: CampaignTracker;\n\n constructor(apiKey: string, storage: Storage<Campaign>, options: AttributionOptions) {\n this.campaignTracker = new CampaignTracker(apiKey, {\n ...options,\n trackPageViews: false,\n track: /* istanbul ignore next */ () => Promise.resolve(),\n onNewCampaign: /* istanbul ignore next */ () => () => undefined,\n storage,\n });\n }\n\n createCampaignEvent(currentCampaign: Campaign) {\n return this.campaignTracker.createCampaignEvent(currentCampaign);\n }\n\n async onPageChange(callback: (state: { isNewCampaign: boolean; currentCampaign: Campaign }) => Promise<unknown>) {\n await callback(await this.getCurrentState());\n\n const currentState = await this.getCurrentState();\n if (currentState.isNewCampaign) {\n void this.campaignTracker.saveCampaignToStorage(currentState.currentCampaign);\n }\n }\n\n private async getCurrentState() {\n const currentCampaign = await this.campaignTracker.parser.parse();\n const isNewCampaign = this.campaignTracker.isNewCampaign(\n currentCampaign,\n await this.campaignTracker.getCampaignFromStorage(),\n true,\n );\n return {\n isNewCampaign,\n currentCampaign,\n };\n }\n}\n"]}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { AttributionOptions, Campaign } from '@amplitude/analytics-types';
|
|
2
|
-
import { CampaignTracker } from '@amplitude/analytics-client-common';
|
|
3
|
-
import { Storage } from '@amplitude/analytics-types';
|
|
4
|
-
export declare class PluginCampaignTracker {
|
|
5
|
-
campaignTracker: CampaignTracker;
|
|
6
|
-
constructor(apiKey: string, storage: Storage<Campaign>, options: AttributionOptions);
|
|
7
|
-
createCampaignEvent(currentCampaign: Campaign): {
|
|
8
|
-
event_type: string;
|
|
9
|
-
event_properties?: {
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
} | undefined;
|
|
12
|
-
user_properties: {
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
};
|
|
15
|
-
group_properties?: {
|
|
16
|
-
[key: string]: any;
|
|
17
|
-
} | undefined;
|
|
18
|
-
groups?: {
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
} | undefined;
|
|
21
|
-
user_id?: string | undefined;
|
|
22
|
-
device_id?: string | undefined;
|
|
23
|
-
time?: number | undefined;
|
|
24
|
-
location_lat?: number | undefined;
|
|
25
|
-
location_lng?: number | undefined;
|
|
26
|
-
app_version?: string | undefined;
|
|
27
|
-
version_name?: string | undefined;
|
|
28
|
-
library?: string | undefined;
|
|
29
|
-
platform?: string | undefined;
|
|
30
|
-
os_name?: string | undefined;
|
|
31
|
-
os_version?: string | undefined;
|
|
32
|
-
device_brand?: string | undefined;
|
|
33
|
-
device_manufacturer?: string | undefined;
|
|
34
|
-
device_model?: string | undefined;
|
|
35
|
-
carrier?: string | undefined;
|
|
36
|
-
country?: string | undefined;
|
|
37
|
-
region?: string | undefined;
|
|
38
|
-
city?: string | undefined;
|
|
39
|
-
dma?: string | undefined;
|
|
40
|
-
idfa?: string | undefined;
|
|
41
|
-
idfv?: string | undefined;
|
|
42
|
-
adid?: string | undefined;
|
|
43
|
-
android_id?: string | undefined;
|
|
44
|
-
language?: string | undefined;
|
|
45
|
-
ip?: string | undefined;
|
|
46
|
-
price?: number | undefined;
|
|
47
|
-
quantity?: number | undefined;
|
|
48
|
-
revenue?: number | undefined;
|
|
49
|
-
productId?: string | undefined;
|
|
50
|
-
revenueType?: string | undefined;
|
|
51
|
-
event_id?: number | undefined;
|
|
52
|
-
session_id?: number | undefined;
|
|
53
|
-
insert_id?: string | undefined;
|
|
54
|
-
plan?: import("@amplitude/analytics-types").Plan | undefined;
|
|
55
|
-
ingestion_metadata?: import("@amplitude/analytics-types/lib/esm/ingestion-metadata").IngestionMetadataEventProperty | undefined;
|
|
56
|
-
partner_id?: string | undefined;
|
|
57
|
-
extra?: {
|
|
58
|
-
[key: string]: any;
|
|
59
|
-
} | undefined;
|
|
60
|
-
};
|
|
61
|
-
onPageChange(callback: (state: {
|
|
62
|
-
isNewCampaign: boolean;
|
|
63
|
-
currentCampaign: Campaign;
|
|
64
|
-
}) => Promise<unknown>): Promise<void>;
|
|
65
|
-
private getCurrentState;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=plugin-campaign-tracker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-campaign-tracker.d.ts","sourceRoot":"","sources":["../../src/plugin-campaign-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,qBAAa,qBAAqB;IAChC,eAAe,EAAE,eAAe,CAAC;gBAErB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,kBAAkB;IAUnF,mBAAmB,CAAC,eAAe,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIvC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,QAAQ,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC;YASjG,eAAe;CAY9B"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { __assign, __awaiter, __generator } from "tslib";
|
|
2
|
-
import { CampaignTracker } from '@amplitude/analytics-client-common';
|
|
3
|
-
var PluginCampaignTracker = /** @class */ (function () {
|
|
4
|
-
function PluginCampaignTracker(apiKey, storage, options) {
|
|
5
|
-
this.campaignTracker = new CampaignTracker(apiKey, __assign(__assign({}, options), { trackPageViews: false, track: /* istanbul ignore next */ function () { return Promise.resolve(); }, onNewCampaign: /* istanbul ignore next */ function () { return function () { return undefined; }; }, storage: storage }));
|
|
6
|
-
}
|
|
7
|
-
PluginCampaignTracker.prototype.createCampaignEvent = function (currentCampaign) {
|
|
8
|
-
return this.campaignTracker.createCampaignEvent(currentCampaign);
|
|
9
|
-
};
|
|
10
|
-
PluginCampaignTracker.prototype.onPageChange = function (callback) {
|
|
11
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
12
|
-
var _a, currentState;
|
|
13
|
-
return __generator(this, function (_b) {
|
|
14
|
-
switch (_b.label) {
|
|
15
|
-
case 0:
|
|
16
|
-
_a = callback;
|
|
17
|
-
return [4 /*yield*/, this.getCurrentState()];
|
|
18
|
-
case 1: return [4 /*yield*/, _a.apply(void 0, [_b.sent()])];
|
|
19
|
-
case 2:
|
|
20
|
-
_b.sent();
|
|
21
|
-
return [4 /*yield*/, this.getCurrentState()];
|
|
22
|
-
case 3:
|
|
23
|
-
currentState = _b.sent();
|
|
24
|
-
if (currentState.isNewCampaign) {
|
|
25
|
-
void this.campaignTracker.saveCampaignToStorage(currentState.currentCampaign);
|
|
26
|
-
}
|
|
27
|
-
return [2 /*return*/];
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
PluginCampaignTracker.prototype.getCurrentState = function () {
|
|
33
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
34
|
-
var currentCampaign, isNewCampaign, _a, _b, _c;
|
|
35
|
-
return __generator(this, function (_d) {
|
|
36
|
-
switch (_d.label) {
|
|
37
|
-
case 0: return [4 /*yield*/, this.campaignTracker.parser.parse()];
|
|
38
|
-
case 1:
|
|
39
|
-
currentCampaign = _d.sent();
|
|
40
|
-
_b = (_a = this.campaignTracker).isNewCampaign;
|
|
41
|
-
_c = [currentCampaign];
|
|
42
|
-
return [4 /*yield*/, this.campaignTracker.getCampaignFromStorage()];
|
|
43
|
-
case 2:
|
|
44
|
-
isNewCampaign = _b.apply(_a, _c.concat([_d.sent(), true]));
|
|
45
|
-
return [2 /*return*/, {
|
|
46
|
-
isNewCampaign: isNewCampaign,
|
|
47
|
-
currentCampaign: currentCampaign,
|
|
48
|
-
}];
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
return PluginCampaignTracker;
|
|
54
|
-
}());
|
|
55
|
-
export { PluginCampaignTracker };
|
|
56
|
-
//# sourceMappingURL=plugin-campaign-tracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-campaign-tracker.js","sourceRoot":"","sources":["../../src/plugin-campaign-tracker.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE;IAGE,+BAAY,MAAc,EAAE,OAA0B,EAAE,OAA2B;QACjF,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,wBAC5C,OAAO,KACV,cAAc,EAAE,KAAK,EACrB,KAAK,EAAE,0BAA0B,CAAC,cAAM,OAAA,OAAO,CAAC,OAAO,EAAE,EAAjB,CAAiB,EACzD,aAAa,EAAE,0BAA0B,CAAC,cAAM,OAAA,cAAM,OAAA,SAAS,EAAT,CAAS,EAAf,CAAe,EAC/D,OAAO,SAAA,IACP,CAAC;IACL,CAAC;IAED,mDAAmB,GAAnB,UAAoB,eAAyB;QAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACnE,CAAC;IAEK,4CAAY,GAAlB,UAAmB,QAA4F;;;;;;wBACvG,KAAA,QAAQ,CAAA;wBAAC,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;4BAA3C,qBAAM,kBAAS,SAA4B,EAAC,EAAA;;wBAA5C,SAA4C,CAAC;wBAExB,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;wBAA3C,YAAY,GAAG,SAA4B;wBACjD,IAAI,YAAY,CAAC,aAAa,EAAE;4BAC9B,KAAK,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;yBAC/E;;;;;KACF;IAEa,+CAAe,GAA7B;;;;;4BAC0B,qBAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,EAAA;;wBAA3D,eAAe,GAAG,SAAyC;wBAC3C,KAAA,CAAA,KAAA,IAAI,CAAC,eAAe,CAAA,CAAC,aAAa,CAAA;8BACtD,eAAe;wBACf,qBAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,EAAA;;wBAF/C,aAAa,GAAG,wBAEpB,SAAmD,EACnD,IAAI,GACL;wBACD,sBAAO;gCACL,aAAa,eAAA;gCACb,eAAe,iBAAA;6BAChB,EAAC;;;;KACH;IACH,4BAAC;AAAD,CAAC,AAtCD,IAsCC","sourcesContent":["import { AttributionOptions, Campaign } from '@amplitude/analytics-types';\nimport { CampaignTracker } from '@amplitude/analytics-client-common';\nimport { Storage } from '@amplitude/analytics-types';\n\nexport class PluginCampaignTracker {\n campaignTracker: CampaignTracker;\n\n constructor(apiKey: string, storage: Storage<Campaign>, options: AttributionOptions) {\n this.campaignTracker = new CampaignTracker(apiKey, {\n ...options,\n trackPageViews: false,\n track: /* istanbul ignore next */ () => Promise.resolve(),\n onNewCampaign: /* istanbul ignore next */ () => () => undefined,\n storage,\n });\n }\n\n createCampaignEvent(currentCampaign: Campaign) {\n return this.campaignTracker.createCampaignEvent(currentCampaign);\n }\n\n async onPageChange(callback: (state: { isNewCampaign: boolean; currentCampaign: Campaign }) => Promise<unknown>) {\n await callback(await this.getCurrentState());\n\n const currentState = await this.getCurrentState();\n if (currentState.isNewCampaign) {\n void this.campaignTracker.saveCampaignToStorage(currentState.currentCampaign);\n }\n }\n\n private async getCurrentState() {\n const currentCampaign = await this.campaignTracker.parser.parse();\n const isNewCampaign = this.campaignTracker.isNewCampaign(\n currentCampaign,\n await this.campaignTracker.getCampaignFromStorage(),\n true,\n );\n return {\n isNewCampaign,\n currentCampaign,\n };\n }\n}\n"]}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { AttributionOptions, Campaign } from '@amplitude/analytics-types';
|
|
2
|
-
import { CampaignTracker } from '@amplitude/analytics-client-common';
|
|
3
|
-
import { Storage } from '@amplitude/analytics-types';
|
|
4
|
-
export declare class PluginCampaignTracker {
|
|
5
|
-
campaignTracker: CampaignTracker;
|
|
6
|
-
constructor(apiKey: string, storage: Storage<Campaign>, options: AttributionOptions);
|
|
7
|
-
createCampaignEvent(currentCampaign: Campaign): {
|
|
8
|
-
event_type: string;
|
|
9
|
-
event_properties?: {
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
} | undefined;
|
|
12
|
-
user_properties: {
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
};
|
|
15
|
-
group_properties?: {
|
|
16
|
-
[key: string]: any;
|
|
17
|
-
} | undefined;
|
|
18
|
-
groups?: {
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
} | undefined;
|
|
21
|
-
user_id?: string | undefined;
|
|
22
|
-
device_id?: string | undefined;
|
|
23
|
-
time?: number | undefined;
|
|
24
|
-
location_lat?: number | undefined;
|
|
25
|
-
location_lng?: number | undefined;
|
|
26
|
-
app_version?: string | undefined;
|
|
27
|
-
version_name?: string | undefined;
|
|
28
|
-
library?: string | undefined;
|
|
29
|
-
platform?: string | undefined;
|
|
30
|
-
os_name?: string | undefined;
|
|
31
|
-
os_version?: string | undefined;
|
|
32
|
-
device_brand?: string | undefined;
|
|
33
|
-
device_manufacturer?: string | undefined;
|
|
34
|
-
device_model?: string | undefined;
|
|
35
|
-
carrier?: string | undefined;
|
|
36
|
-
country?: string | undefined;
|
|
37
|
-
region?: string | undefined;
|
|
38
|
-
city?: string | undefined;
|
|
39
|
-
dma?: string | undefined;
|
|
40
|
-
idfa?: string | undefined;
|
|
41
|
-
idfv?: string | undefined;
|
|
42
|
-
adid?: string | undefined;
|
|
43
|
-
android_id?: string | undefined;
|
|
44
|
-
language?: string | undefined;
|
|
45
|
-
ip?: string | undefined;
|
|
46
|
-
price?: number | undefined;
|
|
47
|
-
quantity?: number | undefined;
|
|
48
|
-
revenue?: number | undefined;
|
|
49
|
-
productId?: string | undefined;
|
|
50
|
-
revenueType?: string | undefined;
|
|
51
|
-
event_id?: number | undefined;
|
|
52
|
-
session_id?: number | undefined;
|
|
53
|
-
insert_id?: string | undefined;
|
|
54
|
-
plan?: import("@amplitude/analytics-types").Plan | undefined;
|
|
55
|
-
ingestion_metadata?: import("@amplitude/analytics-types/lib/esm/ingestion-metadata").IngestionMetadataEventProperty | undefined;
|
|
56
|
-
partner_id?: string | undefined;
|
|
57
|
-
extra?: {
|
|
58
|
-
[key: string]: any;
|
|
59
|
-
} | undefined;
|
|
60
|
-
};
|
|
61
|
-
onPageChange(callback: (state: {
|
|
62
|
-
isNewCampaign: boolean;
|
|
63
|
-
currentCampaign: Campaign;
|
|
64
|
-
}) => Promise<unknown>): Promise<void>;
|
|
65
|
-
private getCurrentState;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=plugin-campaign-tracker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-campaign-tracker.d.ts","sourceRoot":"","sources":["../../src/plugin-campaign-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,qBAAa,qBAAqB;IAChC,eAAe,EAAE,eAAe,CAAC;gBAErB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,kBAAkB;IAUnF,mBAAmB,CAAC,eAAe,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIvC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,QAAQ,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC;YASjG,eAAe;CAY9B"}
|