@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.
Files changed (43) hide show
  1. package/lib/cjs/helpers.d.ts +6 -0
  2. package/lib/cjs/helpers.d.ts.map +1 -0
  3. package/lib/cjs/helpers.js +45 -0
  4. package/lib/cjs/helpers.js.map +1 -0
  5. package/lib/cjs/typings/web-attribution.d.ts +6 -0
  6. package/lib/cjs/typings/web-attribution.d.ts.map +1 -1
  7. package/lib/cjs/typings/web-attribution.js.map +1 -1
  8. package/lib/cjs/web-attribution.d.ts +2 -3
  9. package/lib/cjs/web-attribution.d.ts.map +1 -1
  10. package/lib/cjs/web-attribution.js +73 -34
  11. package/lib/cjs/web-attribution.js.map +1 -1
  12. package/lib/esm/helpers.d.ts +6 -0
  13. package/lib/esm/helpers.d.ts.map +1 -0
  14. package/lib/esm/helpers.js +40 -0
  15. package/lib/esm/helpers.js.map +1 -0
  16. package/lib/esm/typings/web-attribution.d.ts +6 -0
  17. package/lib/esm/typings/web-attribution.d.ts.map +1 -1
  18. package/lib/esm/typings/web-attribution.js.map +1 -1
  19. package/lib/esm/web-attribution.d.ts +2 -3
  20. package/lib/esm/web-attribution.d.ts.map +1 -1
  21. package/lib/esm/web-attribution.js +75 -34
  22. package/lib/esm/web-attribution.js.map +1 -1
  23. package/lib/scripts/amplitude-min.js +1 -1
  24. package/lib/scripts/amplitude-min.js.gz +0 -0
  25. package/lib/scripts/amplitude-min.umd.js +1 -1
  26. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  27. package/lib/scripts/helpers.d.ts +6 -0
  28. package/lib/scripts/helpers.d.ts.map +1 -0
  29. package/lib/scripts/typings/web-attribution.d.ts +6 -0
  30. package/lib/scripts/typings/web-attribution.d.ts.map +1 -1
  31. package/lib/scripts/web-attribution.d.ts +2 -3
  32. package/lib/scripts/web-attribution.d.ts.map +1 -1
  33. package/package.json +5 -5
  34. package/lib/cjs/plugin-campaign-tracker.d.ts +0 -67
  35. package/lib/cjs/plugin-campaign-tracker.d.ts.map +0 -1
  36. package/lib/cjs/plugin-campaign-tracker.js +0 -58
  37. package/lib/cjs/plugin-campaign-tracker.js.map +0 -1
  38. package/lib/esm/plugin-campaign-tracker.d.ts +0 -67
  39. package/lib/esm/plugin-campaign-tracker.d.ts.map +0 -1
  40. package/lib/esm/plugin-campaign-tracker.js +0 -56
  41. package/lib/esm/plugin-campaign-tracker.js.map +0 -1
  42. package/lib/scripts/plugin-campaign-tracker.d.ts +0 -67
  43. 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":["export interface Options {\n disabled?: boolean;\n excludeReferrers?: string[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n"]}
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 { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';
2
- import { Options } from './typings/web-attribution';
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":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAMd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,eAAO,MAAM,oBAAoB,WAAY,aAAa,YAAW,OAAO,KAAQ,YAsClF,CAAC"}
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 plugin_campaign_tracker_1 = require("./plugin-campaign-tracker");
7
- var webAttributionPlugin = function (client, options) {
8
- if (options === void 0) { options = {}; }
9
- return ({
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) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
13
- var storage, campaignTracker;
14
- var _this = this;
34
+ setup: function (config, client) {
15
35
  var _a;
16
- return tslib_1.__generator(this, function (_b) {
17
- config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser');
18
- // Disable "runAttributionStrategy" function
19
- if (!((_a = config.attribution) === null || _a === void 0 ? void 0 : _a.disabled)) {
20
- config.loggerProvider.warn('@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser');
21
- config.attribution = {
22
- disabled: true,
23
- };
24
- }
25
- storage = config.cookieStorage;
26
- campaignTracker = new plugin_campaign_tracker_1.PluginCampaignTracker(config.apiKey, storage, tslib_1.__assign({}, options));
27
- // Web Attribution tracking
28
- void campaignTracker.onPageChange(function (_a) {
29
- var isNewCampaign = _a.isNewCampaign, currentCampaign = _a.currentCampaign;
30
- return tslib_1.__awaiter(_this, void 0, void 0, function () {
31
- return tslib_1.__generator(this, function (_b) {
32
- if (isNewCampaign) {
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
- client.setSessionId(Date.now());
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 new campaign event');
38
- void client.track(campaignTracker.createCampaignEvent(currentCampaign));
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,iBAmDA;;;;AAnDA,8DAQoC;AACpC,qEAAkE;AAG3D,IAAM,oBAAoB,GAAG,UAAC,MAAqB,EAAE,OAAqB;IAArB,wBAAA,EAAA,YAAqB;IAAmB,OAAA,CAAC;QACnG,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,4BAAU,CAAC,MAAM;QAEvB,KAAK,EAAE,UAAO,MAAqB;;;;;gBACjC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;gBAElF,4CAA4C;gBAC5C,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,QAAQ,CAAA,EAAE;oBACjC,MAAM,CAAC,cAAc,CAAC,IAAI,CACxB,sHAAsH,CACvH,CAAC;oBACF,MAAM,CAAC,WAAW,GAAG;wBACnB,QAAQ,EAAE,IAAI;qBACf,CAAC;iBACH;gBAGK,OAAO,GAAG,MAAM,CAAC,aAA6C,CAAC;gBAE/D,eAAe,GAAG,IAAI,+CAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,uBACnE,OAAO,EACV,CAAC;gBAEH,2BAA2B;gBAC3B,KAAK,eAAe,CAAC,YAAY,CAAC,UAAO,EAAkC;wBAAhC,aAAa,mBAAA,EAAE,eAAe,qBAAA;;;4BACvE,IAAI,aAAa,EAAE;gCACjB,IAAI,OAAO,CAAC,yBAAyB,EAAE;oCACrC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oCAChC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;iCACrE;gCACD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gCACzD,KAAK,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC;6BACzE;;;;iBACF,CAAC,CAAC;;;aACJ;QAED,OAAO,EAAE,UAAO,KAAY;YAAK,sBAAA,KAAK,EAAA;iBAAA;KACvC,CAAC;AAtCkG,CAsClG,CAAC;AAtCU,QAAA,oBAAoB,wBAsC9B","sourcesContent":["import {\n BeforePlugin,\n BrowserClient,\n BrowserConfig,\n Campaign,\n Event,\n PluginType,\n Storage,\n} from '@amplitude/analytics-types';\nimport { PluginCampaignTracker } from './plugin-campaign-tracker';\nimport { Options } from './typings/web-attribution';\n\nexport const webAttributionPlugin = (client: BrowserClient, options: Options = {}): BeforePlugin => ({\n name: 'web-attribution',\n type: PluginType.BEFORE,\n\n setup: async (config: BrowserConfig) => {\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser');\n\n // Disable \"runAttributionStrategy\" function\n if (!config.attribution?.disabled) {\n config.loggerProvider.warn(\n '@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined 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\n const campaignTracker = new PluginCampaignTracker(config.apiKey, storage, {\n ...options,\n });\n\n // Web Attribution tracking\n void campaignTracker.onPageChange(async ({ isNewCampaign, currentCampaign }) => {\n if (isNewCampaign) {\n if (options.resetSessionOnNewCampaign) {\n client.setSessionId(Date.now());\n config.loggerProvider.log('Created a new session for new campaign');\n }\n config.loggerProvider.log('Tracking new campaign event');\n void client.track(campaignTracker.createCampaignEvent(currentCampaign));\n }\n });\n },\n\n execute: async (event: Event) => event,\n});\n"]}
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":["export interface Options {\n disabled?: boolean;\n excludeReferrers?: string[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n"]}
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 { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';
2
- import { Options } from './typings/web-attribution';
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":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAMd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,eAAO,MAAM,oBAAoB,WAAY,aAAa,YAAW,OAAO,KAAQ,YAsClF,CAAC"}
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 { PluginCampaignTracker } from './plugin-campaign-tracker';
4
- export var webAttributionPlugin = function (client, options) {
5
- if (options === void 0) { options = {}; }
6
- return ({
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) { return __awaiter(void 0, void 0, void 0, function () {
10
- var storage, campaignTracker;
32
+ setup: function (config, client) {
11
33
  var _a;
12
- return __generator(this, function (_b) {
13
- config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser');
14
- // Disable "runAttributionStrategy" function
15
- if (!((_a = config.attribution) === null || _a === void 0 ? void 0 : _a.disabled)) {
16
- config.loggerProvider.warn('@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser');
17
- config.attribution = {
18
- disabled: true,
19
- };
20
- }
21
- storage = config.cookieStorage;
22
- campaignTracker = new PluginCampaignTracker(config.apiKey, storage, __assign({}, options));
23
- // Web Attribution tracking
24
- void campaignTracker.onPageChange(function (_a) {
25
- var isNewCampaign = _a.isNewCampaign, currentCampaign = _a.currentCampaign;
26
- return __awaiter(void 0, void 0, void 0, function () {
27
- return __generator(this, function (_b) {
28
- if (isNewCampaign) {
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
- client.setSessionId(Date.now());
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 new campaign event');
34
- void client.track(campaignTracker.createCampaignEvent(currentCampaign));
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(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
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,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,MAAqB,EAAE,OAAqB;IAArB,wBAAA,EAAA,YAAqB;IAAmB,OAAA,CAAC;QACnG,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,UAAU,CAAC,MAAM;QAEvB,KAAK,EAAE,UAAO,MAAqB;;;;gBACjC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;gBAElF,4CAA4C;gBAC5C,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,QAAQ,CAAA,EAAE;oBACjC,MAAM,CAAC,cAAc,CAAC,IAAI,CACxB,sHAAsH,CACvH,CAAC;oBACF,MAAM,CAAC,WAAW,GAAG;wBACnB,QAAQ,EAAE,IAAI;qBACf,CAAC;iBACH;gBAGK,OAAO,GAAG,MAAM,CAAC,aAA6C,CAAC;gBAE/D,eAAe,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,eACnE,OAAO,EACV,CAAC;gBAEH,2BAA2B;gBAC3B,KAAK,eAAe,CAAC,YAAY,CAAC,UAAO,EAAkC;wBAAhC,aAAa,mBAAA,EAAE,eAAe,qBAAA;;;4BACvE,IAAI,aAAa,EAAE;gCACjB,IAAI,OAAO,CAAC,yBAAyB,EAAE;oCACrC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oCAChC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;iCACrE;gCACD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gCACzD,KAAK,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC;6BACzE;;;;iBACF,CAAC,CAAC;;;aACJ;QAED,OAAO,EAAE,UAAO,KAAY;YAAK,sBAAA,KAAK,EAAA;iBAAA;KACvC,CAAC;AAtCkG,CAsClG,CAAC","sourcesContent":["import {\n BeforePlugin,\n BrowserClient,\n BrowserConfig,\n Campaign,\n Event,\n PluginType,\n Storage,\n} from '@amplitude/analytics-types';\nimport { PluginCampaignTracker } from './plugin-campaign-tracker';\nimport { Options } from './typings/web-attribution';\n\nexport const webAttributionPlugin = (client: BrowserClient, options: Options = {}): BeforePlugin => ({\n name: 'web-attribution',\n type: PluginType.BEFORE,\n\n setup: async (config: BrowserConfig) => {\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser');\n\n // Disable \"runAttributionStrategy\" function\n if (!config.attribution?.disabled) {\n config.loggerProvider.warn(\n '@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined 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\n const campaignTracker = new PluginCampaignTracker(config.apiKey, storage, {\n ...options,\n });\n\n // Web Attribution tracking\n void campaignTracker.onPageChange(async ({ isNewCampaign, currentCampaign }) => {\n if (isNewCampaign) {\n if (options.resetSessionOnNewCampaign) {\n client.setSessionId(Date.now());\n config.loggerProvider.log('Created a new session for new campaign');\n }\n config.loggerProvider.log('Tracking new campaign event');\n void client.track(campaignTracker.createCampaignEvent(currentCampaign));\n }\n });\n },\n\n execute: async (event: Event) => event,\n});\n"]}
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 { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';
2
- import { Options } from './typings/web-attribution';
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":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAMd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,eAAO,MAAM,oBAAoB,WAAY,aAAa,YAAW,OAAO,KAAQ,YAsClF,CAAC"}
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.5.7",
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.5.4",
40
- "@amplitude/analytics-types": "^0.16.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.8.0",
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": "e9b73ad53882d499ca14e3d53e8885825554d0d9"
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"}