@amplitude/plugin-web-attribution-browser 2.1.7 → 2.1.8-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAW,MAAM,2BAA2B,CAAC;AAGhF,eAAO,MAAM,oBAAoB,EAAE,0BAyClC,CAAC"}
1
+ {"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAW,MAAM,2BAA2B,CAAC;AAGhF,eAAO,MAAM,oBAAoB,EAAE,0BA8BlC,CAAC"}
@@ -2,8 +2,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.webAttributionPlugin = void 0;
3
3
  var tslib_1 = require("tslib");
4
4
  var analytics_client_common_1 = require("@amplitude/analytics-client-common");
5
- var helpers_1 = require("./helpers");
6
5
  var analytics_client_common_2 = require("@amplitude/analytics-client-common");
6
+ var analytics_client_common_3 = require("@amplitude/analytics-client-common");
7
7
  var webAttributionPlugin = function (options) {
8
8
  var _this = this;
9
9
  if (options === void 0) { options = {}; }
@@ -11,32 +11,27 @@ var webAttributionPlugin = function (options) {
11
11
  name: '@amplitude/plugin-web-attribution-browser',
12
12
  type: 'before',
13
13
  setup: function (config, amplitude) {
14
- var _a;
15
14
  return tslib_1.__awaiter(this, void 0, void 0, function () {
16
- var pluginConfig, storage, storageKey, _b, currentCampaign, previousCampaign, isEventInNewSession, campaignEvent;
17
- return tslib_1.__generator(this, function (_c) {
18
- switch (_c.label) {
15
+ var webAttribution, pluginConfig, currentCampaign, previousCampaign, isEventInNewSession, campaignEvent;
16
+ return tslib_1.__generator(this, function (_a) {
17
+ switch (_a.label) {
19
18
  case 0:
20
- pluginConfig = tslib_1.__assign({ initialEmptyValue: 'EMPTY', resetSessionOnNewCampaign: false, excludeReferrers: (0, helpers_1.getDefaultExcludedReferrers)((_a = config.cookieOptions) === null || _a === void 0 ? void 0 : _a.domain) }, options);
21
- config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');
22
- storage = config.cookieStorage;
23
- storageKey = (0, helpers_1.getStorageKey)(config.apiKey, 'MKTG');
24
- return [4 /*yield*/, Promise.all([
25
- new analytics_client_common_1.CampaignParser().parse(),
26
- storage.get(storageKey),
27
- ])];
19
+ webAttribution = new analytics_client_common_1.WebAttribution(options, config);
20
+ return [4 /*yield*/, webAttribution.init()];
28
21
  case 1:
29
- _b = tslib_1.__read.apply(void 0, [_c.sent(), 2]), currentCampaign = _b[0], previousCampaign = _b[1];
30
- isEventInNewSession = (0, analytics_client_common_2.isNewSession)(config.sessionTimeout, config.lastEventTime);
31
- if ((0, helpers_1.isNewCampaign)(currentCampaign, previousCampaign, pluginConfig, isEventInNewSession)) {
22
+ _a.sent();
23
+ pluginConfig = webAttribution.options;
24
+ currentCampaign = webAttribution.currentCampaign;
25
+ previousCampaign = webAttribution.previousCampaign;
26
+ isEventInNewSession = (0, analytics_client_common_3.isNewSession)(config.sessionTimeout, config.lastEventTime);
27
+ if ((0, analytics_client_common_2.isNewCampaign)(currentCampaign, previousCampaign, pluginConfig, isEventInNewSession)) {
32
28
  if (pluginConfig.resetSessionOnNewCampaign) {
33
29
  amplitude.setSessionId(Date.now());
34
30
  config.loggerProvider.log('Created a new session for new campaign.');
35
31
  }
36
32
  config.loggerProvider.log('Tracking attribution.');
37
- campaignEvent = (0, helpers_1.createCampaignEvent)(currentCampaign, pluginConfig);
33
+ campaignEvent = webAttribution.generateCampaignEvent();
38
34
  amplitude.track(campaignEvent);
39
- void storage.set(storageKey, currentCampaign);
40
35
  }
41
36
  return [2 /*return*/];
42
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":";;;AAAA,8EAAoE;AAEpE,qCAA2G;AAE3G,8EAAkE;AAE3D,IAAM,oBAAoB,GAA+B,UAAU,OAAqB;IAA/B,iBAyC/D;IAzCyE,wBAAA,EAAA,YAAqB;IAC7F,IAAM,MAAM,GAAiB;QAC3B,IAAI,EAAE,2CAA2C;QACjD,IAAI,EAAE,QAAQ;QAEd,KAAK,EAAE,UAAgB,MAAqB,EAAE,SAAwB;;;;;;;4BAC9D,YAAY,sBAChB,iBAAiB,EAAE,OAAO,EAC1B,yBAAyB,EAAE,KAAK,EAChC,gBAAgB,EAAE,IAAA,qCAA2B,EAAC,MAAA,MAAM,CAAC,aAAa,0CAAE,MAAM,CAAC,IACxE,OAAO,CACX,CAAC;4BACF,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;4BAG7E,OAAO,GAAG,MAAM,CAAC,aAA6C,CAAC;4BAC/D,UAAU,GAAG,IAAA,uBAAa,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;4BAEZ,qBAAM,OAAO,CAAC,GAAG,CAAC;oCAC5D,IAAI,wCAAc,EAAE,CAAC,KAAK,EAAE;oCAC5B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;iCACxB,CAAC,EAAA;;4BAHI,KAAA,8BAAsC,SAG1C,KAAA,EAHK,eAAe,QAAA,EAAE,gBAAgB,QAAA;4BAKlC,mBAAmB,GAAG,IAAA,sCAAY,EAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;4BAEtF,IAAI,IAAA,uBAAa,EAAC,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE;gCACvF,IAAI,YAAY,CAAC,yBAAyB,EAAE;oCAC1C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oCACnC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;iCACtE;gCACD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gCAC7C,aAAa,GAAG,IAAA,6BAAmB,EAAC,eAAe,EAAE,YAAY,CAAC,CAAC;gCACzE,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gCAC/B,KAAK,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;6BAC/C;;;;;SACF;QAED,OAAO,EAAE,UAAO,KAAY;YAAK,sBAAA,KAAK,EAAA;iBAAA;KACvC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAzCW,QAAA,oBAAoB,wBAyC/B","sourcesContent":["import { CampaignParser } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient, BrowserConfig, Campaign, Event, Storage } from '@amplitude/analytics-types';\nimport { createCampaignEvent, getDefaultExcludedReferrers, getStorageKey, isNewCampaign } from './helpers';\nimport { CreateWebAttributionPlugin, Options } from './typings/web-attribution';\nimport { isNewSession } from '@amplitude/analytics-client-common';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (options: Options = {}) {\n const plugin: BeforePlugin = {\n name: '@amplitude/plugin-web-attribution-browser',\n type: 'before',\n\n setup: async function (config: BrowserConfig, amplitude: BrowserClient) {\n const pluginConfig = {\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n excludeReferrers: getDefaultExcludedReferrers(config.cookieOptions?.domain),\n ...options,\n };\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');\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 const isEventInNewSession = isNewSession(config.sessionTimeout, config.lastEventTime);\n\n if (isNewCampaign(currentCampaign, previousCampaign, pluginConfig, isEventInNewSession)) {\n if (pluginConfig.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, pluginConfig);\n amplitude.track(campaignEvent);\n void storage.set(storageKey, currentCampaign);\n }\n },\n\n execute: async (event: Event) => event,\n };\n\n return plugin;\n};\n"]}
1
+ {"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":";;;AAAA,8EAAoE;AAEpE,8EAAmE;AAEnE,8EAAkE;AAE3D,IAAM,oBAAoB,GAA+B,UAAU,OAAqB;IAA/B,iBA8B/D;IA9ByE,wBAAA,EAAA,YAAqB;IAC7F,IAAM,MAAM,GAAiB;QAC3B,IAAI,EAAE,2CAA2C;QACjD,IAAI,EAAE,QAAQ;QAEd,KAAK,EAAE,UAAgB,MAAqB,EAAE,SAAwB;;;;;;4BAC9D,cAAc,GAAG,IAAI,wCAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BAC3D,qBAAM,cAAc,CAAC,IAAI,EAAE,EAAA;;4BAA3B,SAA2B,CAAC;4BAEtB,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC;4BACtC,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC;4BACjD,gBAAgB,GAAG,cAAc,CAAC,gBAAgB,CAAC;4BAEnD,mBAAmB,GAAG,IAAA,sCAAY,EAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;4BAEtF,IAAI,IAAA,uCAAa,EAAC,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE;gCACvF,IAAI,YAAY,CAAC,yBAAyB,EAAE;oCAC1C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oCACnC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;iCACtE;gCACD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gCAC7C,aAAa,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;gCAC7D,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;6BAChC;;;;;SACF;QAED,OAAO,EAAE,UAAO,KAAY;YAAK,sBAAA,KAAK,EAAA;iBAAA;KACvC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA9BW,QAAA,oBAAoB,wBA8B/B","sourcesContent":["import { WebAttribution } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient, BrowserConfig, Event } from '@amplitude/analytics-types';\nimport { isNewCampaign } from '@amplitude/analytics-client-common';\nimport { CreateWebAttributionPlugin, Options } from './typings/web-attribution';\nimport { isNewSession } from '@amplitude/analytics-client-common';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (options: Options = {}) {\n const plugin: BeforePlugin = {\n name: '@amplitude/plugin-web-attribution-browser',\n type: 'before',\n\n setup: async function (config: BrowserConfig, amplitude: BrowserClient) {\n const webAttribution = new WebAttribution(options, config);\n await webAttribution.init();\n\n const pluginConfig = webAttribution.options;\n const currentCampaign = webAttribution.currentCampaign;\n const previousCampaign = webAttribution.previousCampaign;\n\n const isEventInNewSession = isNewSession(config.sessionTimeout, config.lastEventTime);\n\n if (isNewCampaign(currentCampaign, previousCampaign, pluginConfig, isEventInNewSession)) {\n if (pluginConfig.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 = webAttribution.generateCampaignEvent();\n amplitude.track(campaignEvent);\n }\n },\n\n execute: async (event: Event) => event,\n };\n\n return plugin;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAW,MAAM,2BAA2B,CAAC;AAGhF,eAAO,MAAM,oBAAoB,EAAE,0BAyClC,CAAC"}
1
+ {"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAW,MAAM,2BAA2B,CAAC;AAGhF,eAAO,MAAM,oBAAoB,EAAE,0BA8BlC,CAAC"}
@@ -1,6 +1,6 @@
1
- import { __assign, __awaiter, __generator, __read } from "tslib";
2
- import { CampaignParser } from '@amplitude/analytics-client-common';
3
- import { createCampaignEvent, getDefaultExcludedReferrers, getStorageKey, isNewCampaign } from './helpers';
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { WebAttribution } from '@amplitude/analytics-client-common';
3
+ import { isNewCampaign } from '@amplitude/analytics-client-common';
4
4
  import { isNewSession } from '@amplitude/analytics-client-common';
5
5
  export var webAttributionPlugin = function (options) {
6
6
  var _this = this;
@@ -9,22 +9,18 @@ export var webAttributionPlugin = function (options) {
9
9
  name: '@amplitude/plugin-web-attribution-browser',
10
10
  type: 'before',
11
11
  setup: function (config, amplitude) {
12
- var _a;
13
12
  return __awaiter(this, void 0, void 0, function () {
14
- var pluginConfig, storage, storageKey, _b, currentCampaign, previousCampaign, isEventInNewSession, campaignEvent;
15
- return __generator(this, function (_c) {
16
- switch (_c.label) {
13
+ var webAttribution, pluginConfig, currentCampaign, previousCampaign, isEventInNewSession, campaignEvent;
14
+ return __generator(this, function (_a) {
15
+ switch (_a.label) {
17
16
  case 0:
18
- pluginConfig = __assign({ initialEmptyValue: 'EMPTY', resetSessionOnNewCampaign: false, excludeReferrers: getDefaultExcludedReferrers((_a = config.cookieOptions) === null || _a === void 0 ? void 0 : _a.domain) }, options);
19
- config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');
20
- storage = config.cookieStorage;
21
- storageKey = getStorageKey(config.apiKey, 'MKTG');
22
- return [4 /*yield*/, Promise.all([
23
- new CampaignParser().parse(),
24
- storage.get(storageKey),
25
- ])];
17
+ webAttribution = new WebAttribution(options, config);
18
+ return [4 /*yield*/, webAttribution.init()];
26
19
  case 1:
27
- _b = __read.apply(void 0, [_c.sent(), 2]), currentCampaign = _b[0], previousCampaign = _b[1];
20
+ _a.sent();
21
+ pluginConfig = webAttribution.options;
22
+ currentCampaign = webAttribution.currentCampaign;
23
+ previousCampaign = webAttribution.previousCampaign;
28
24
  isEventInNewSession = isNewSession(config.sessionTimeout, config.lastEventTime);
29
25
  if (isNewCampaign(currentCampaign, previousCampaign, pluginConfig, isEventInNewSession)) {
30
26
  if (pluginConfig.resetSessionOnNewCampaign) {
@@ -32,9 +28,8 @@ export var webAttributionPlugin = function (options) {
32
28
  config.loggerProvider.log('Created a new session for new campaign.');
33
29
  }
34
30
  config.loggerProvider.log('Tracking attribution.');
35
- campaignEvent = createCampaignEvent(currentCampaign, pluginConfig);
31
+ campaignEvent = webAttribution.generateCampaignEvent();
36
32
  amplitude.track(campaignEvent);
37
- void storage.set(storageKey, currentCampaign);
38
33
  }
39
34
  return [2 /*return*/];
40
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE3G,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,CAAC,IAAM,oBAAoB,GAA+B,UAAU,OAAqB;IAA/B,iBAyC/D;IAzCyE,wBAAA,EAAA,YAAqB;IAC7F,IAAM,MAAM,GAAiB;QAC3B,IAAI,EAAE,2CAA2C;QACjD,IAAI,EAAE,QAAQ;QAEd,KAAK,EAAE,UAAgB,MAAqB,EAAE,SAAwB;;;;;;;4BAC9D,YAAY,cAChB,iBAAiB,EAAE,OAAO,EAC1B,yBAAyB,EAAE,KAAK,EAChC,gBAAgB,EAAE,2BAA2B,CAAC,MAAA,MAAM,CAAC,aAAa,0CAAE,MAAM,CAAC,IACxE,OAAO,CACX,CAAC;4BACF,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;4BAG7E,OAAO,GAAG,MAAM,CAAC,aAA6C,CAAC;4BAC/D,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;4BAEZ,qBAAM,OAAO,CAAC,GAAG,CAAC;oCAC5D,IAAI,cAAc,EAAE,CAAC,KAAK,EAAE;oCAC5B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;iCACxB,CAAC,EAAA;;4BAHI,KAAA,sBAAsC,SAG1C,KAAA,EAHK,eAAe,QAAA,EAAE,gBAAgB,QAAA;4BAKlC,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;4BAEtF,IAAI,aAAa,CAAC,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE;gCACvF,IAAI,YAAY,CAAC,yBAAyB,EAAE;oCAC1C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oCACnC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;iCACtE;gCACD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gCAC7C,aAAa,GAAG,mBAAmB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;gCACzE,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gCAC/B,KAAK,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;6BAC/C;;;;;SACF;QAED,OAAO,EAAE,UAAO,KAAY;YAAK,sBAAA,KAAK,EAAA;iBAAA;KACvC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import { CampaignParser } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient, BrowserConfig, Campaign, Event, Storage } from '@amplitude/analytics-types';\nimport { createCampaignEvent, getDefaultExcludedReferrers, getStorageKey, isNewCampaign } from './helpers';\nimport { CreateWebAttributionPlugin, Options } from './typings/web-attribution';\nimport { isNewSession } from '@amplitude/analytics-client-common';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (options: Options = {}) {\n const plugin: BeforePlugin = {\n name: '@amplitude/plugin-web-attribution-browser',\n type: 'before',\n\n setup: async function (config: BrowserConfig, amplitude: BrowserClient) {\n const pluginConfig = {\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n excludeReferrers: getDefaultExcludedReferrers(config.cookieOptions?.domain),\n ...options,\n };\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');\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 const isEventInNewSession = isNewSession(config.sessionTimeout, config.lastEventTime);\n\n if (isNewCampaign(currentCampaign, previousCampaign, pluginConfig, isEventInNewSession)) {\n if (pluginConfig.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, pluginConfig);\n amplitude.track(campaignEvent);\n void storage.set(storageKey, currentCampaign);\n }\n },\n\n execute: async (event: Event) => event,\n };\n\n return plugin;\n};\n"]}
1
+ {"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,CAAC,IAAM,oBAAoB,GAA+B,UAAU,OAAqB;IAA/B,iBA8B/D;IA9ByE,wBAAA,EAAA,YAAqB;IAC7F,IAAM,MAAM,GAAiB;QAC3B,IAAI,EAAE,2CAA2C;QACjD,IAAI,EAAE,QAAQ;QAEd,KAAK,EAAE,UAAgB,MAAqB,EAAE,SAAwB;;;;;;4BAC9D,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BAC3D,qBAAM,cAAc,CAAC,IAAI,EAAE,EAAA;;4BAA3B,SAA2B,CAAC;4BAEtB,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC;4BACtC,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC;4BACjD,gBAAgB,GAAG,cAAc,CAAC,gBAAgB,CAAC;4BAEnD,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;4BAEtF,IAAI,aAAa,CAAC,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE;gCACvF,IAAI,YAAY,CAAC,yBAAyB,EAAE;oCAC1C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oCACnC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;iCACtE;gCACD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gCAC7C,aAAa,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;gCAC7D,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;6BAChC;;;;;SACF;QAED,OAAO,EAAE,UAAO,KAAY;YAAK,sBAAA,KAAK,EAAA;iBAAA;KACvC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import { WebAttribution } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient, BrowserConfig, Event } from '@amplitude/analytics-types';\nimport { isNewCampaign } from '@amplitude/analytics-client-common';\nimport { CreateWebAttributionPlugin, Options } from './typings/web-attribution';\nimport { isNewSession } from '@amplitude/analytics-client-common';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (options: Options = {}) {\n const plugin: BeforePlugin = {\n name: '@amplitude/plugin-web-attribution-browser',\n type: 'before',\n\n setup: async function (config: BrowserConfig, amplitude: BrowserClient) {\n const webAttribution = new WebAttribution(options, config);\n await webAttribution.init();\n\n const pluginConfig = webAttribution.options;\n const currentCampaign = webAttribution.currentCampaign;\n const previousCampaign = webAttribution.previousCampaign;\n\n const isEventInNewSession = isNewSession(config.sessionTimeout, config.lastEventTime);\n\n if (isNewCampaign(currentCampaign, previousCampaign, pluginConfig, isEventInNewSession)) {\n if (pluginConfig.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 = webAttribution.generateCampaignEvent();\n amplitude.track(campaignEvent);\n }\n },\n\n execute: async (event: Event) => event,\n };\n\n return plugin;\n};\n"]}
@@ -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=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{f(n.next(e))}catch(e){o(e)}}function a(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(u,a)}f((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(f){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,f])}}}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,f,s=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=l(r[0]),i=l(r[1]);return i?(e[n]=i,e):e}),{}):{}},l=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},c="dclid",d="fbclid",p="gbraid",v="gclid",y="ko_click_id",h="li_fat_id",m="msclkid",_="rtd_cid",g="ttclid",b="twclid",E="wbraid",w={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,li_fat_id:void 0,msclkid:void 0,rtd_cid:void 0,ttclid:void 0,twclid:void 0,wbraid:void 0},S=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({},w),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=s();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=s();return(e={})[c]=t[c],e[d]=t[d],e[p]=t[p],e[v]=t[v],e[y]=t[y],e[h]=t[h],e[m]=t[m],e[_]=t[_],e[g]=t[g],e[b]=t[b],e[E]=t[E],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"}(f||(f={}));var O="AMP",P=function(e){if(Object.keys(e).length>1e3)return!1;for(var t in e){var r=e[t];if(!T(t,r))return!1}return!0},T=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&&P(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 P(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||T(t,r)))},e}(),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,i){void 0===i&&(i=!0),e.referrer;var o=e.referring_domain,u=r(e,["referrer","referring_domain"]),a=t||{};a.referrer;var f=a.referring_domain,s=r(a,["referrer","referring_domain"]);if(A(n.excludeReferrers,e.referring_domain))return!1;if(!i&&function(e){return Object.values(e).every((function(e){return!e}))}(e)&&t)return!1;var l=JSON.stringify(u)!==JSON.stringify(s),c=N(o||"")!==N(f||"");return!t||l||c},A=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=""),e.some((function(e){return e instanceof RegExp?e.test(t):e===t}))},x=function(e,r){var n,i,u=t(t({},w),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:f.IDENTIFY,user_properties:n.getUserProperties()})},D=function(e){var r=this;return void 0===e&&(e={}),{name:"@amplitude/plugin-web-attribution-browser",type:"before",setup:function(r,u){var a;return n(this,void 0,void 0,(function(){var n,f,s,l,c,d,p,v;return i(this,(function(i){switch(i.label){case 0:return n=t({initialEmptyValue:"EMPTY",resetSessionOnNewCampaign:!1,excludeReferrers:(b=null===(a=r.cookieOptions)||void 0===a?void 0:a.domain,E=b,E?(E.startsWith(".")&&(E=E.substring(1)),[new RegExp("".concat(E.replace(".","\\."),"$"))]):[])},e),r.loggerProvider.log("Installing @amplitude/plugin-web-attribution-browser."),f=r.cookieStorage,m=r.apiKey,void 0===(_="MKTG")&&(_=""),void 0===g&&(g=10),s=[O,_,m.substring(0,g)].filter(Boolean).join("_"),[4,Promise.all([(new S).parse(),f.get(s)])];case 1:return l=o.apply(void 0,[i.sent(),2]),c=l[0],d=l[1],y=r.sessionTimeout,void 0===(h=r.lastEventTime)&&(h=Date.now()),p=Date.now()-h>y,I(c,d,n,p)&&(n.resetSessionOnNewCampaign&&(u.setSessionId(Date.now()),r.loggerProvider.log("Created a new session for new campaign.")),r.loggerProvider.log("Tracking attribution."),v=x(c,n),u.track(v),f.set(s,c)),[2]}var y,h,m,_,g,b,E}))}))},execute:function(e){return n(r,void 0,void 0,(function(){return i(this,(function(t){return[2,e]}))}))}}};e.plugin=D,e.webAttributionPlugin=D,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{s(n.next(e))}catch(e){o(e)}}function a(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(u,a)}s((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(s){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,s])}}}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,s,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""}},l="dclid",p="fbclid",d="gbraid",v="gclid",h="ko_click_id",y="li_fat_id",g="msclkid",m="rtd_cid",_="ttclid",b="twclid",E="wbraid",w={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,li_fat_id:void 0,msclkid:void 0,rtd_cid:void 0,ttclid:void 0,twclid:void 0,wbraid:void 0},S=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({},w),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={})[l]=t[l],e[p]=t[p],e[d]=t[d],e[v]=t[v],e[h]=t[h],e[y]=t[y],e[g]=t[g],e[m]=t[m],e[_]=t[_],e[b]=t[b],e[E]=t[E],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"}(s||(s={}));var T="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},N=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}(),C=function(e){var t=e.split(".");return t.length<=2?e:t.slice(t.length-2,t.length).join(".")},R=function(e,t,n,i){void 0===i&&(i=!0),e.referrer;var o=e.referring_domain,u=r(e,["referrer","referring_domain"]),a=t||{};a.referrer;var s=a.referring_domain,c=r(a,["referrer","referring_domain"]);if(I(n.excludeReferrers,e.referring_domain))return!1;if(!i&&function(e){return Object.values(e).every((function(e){return!e}))}(e)&&t)return!1;var f=JSON.stringify(u)!==JSON.stringify(c),l=C(o||"")!==C(s||"");return!t||f||l},I=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=""),e.some((function(e){return e instanceof RegExp?e.test(t):e===t}))},k=function(e,r){var n,i,u=t(t({},w),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 N);return n=a,t(t({},i),{event_type:s.IDENTIFY,user_properties:n.getUserProperties()})},A=function(){function e(e,r){var n,i,o,u,a,s;this.shouldTrackNewCampaign=!1,this.options=t({initialEmptyValue:"EMPTY",resetSessionOnNewCampaign:!1,excludeReferrers:(i=null===(n=r.cookieOptions)||void 0===n?void 0:n.domain,o=i,o?(o.startsWith(".")&&(o=o.substring(1)),[new RegExp("".concat(o.replace(".","\\."),"$"))]):[])},e),this.storage=r.cookieStorage,this.storageKey=(u=r.apiKey,void 0===(a="MKTG")&&(a=""),void 0===s&&(s=10),[T,a,u.substring(0,s)].filter(Boolean).join("_")),this.currentCampaign=w,r.loggerProvider.log("Installing web attribution tracking.")}return e.prototype.init=function(){return n(this,void 0,void 0,(function(){var e;return i(this,(function(t){switch(t.label){case 0:return[4,this.fetchCampaign()];case 1:return e=o.apply(void 0,[t.sent(),2]),this.currentCampaign=e[0],this.previousCampaign=e[1],R(this.currentCampaign,this.previousCampaign,this.options)?(this.shouldTrackNewCampaign=!0,[4,this.storage.set(this.storageKey,this.currentCampaign)]):[3,3];case 2:t.sent(),t.label=3;case 3:return[2]}}))}))},e.prototype.fetchCampaign=function(){return n(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,Promise.all([(new S).parse(),this.storage.get(this.storageKey)])];case 1:return[2,e.sent()]}}))}))},e.prototype.generateCampaignEvent=function(e){this.shouldTrackNewCampaign=!1;var t=k(this.currentCampaign,this.options);return e&&(t.event_id=e),t},e.prototype.shouldSetSessionIdOnNewCampaign=function(){return this.shouldTrackNewCampaign&&!!this.options.resetSessionOnNewCampaign},e}(),x=function(e){var t=this;return void 0===e&&(e={}),{name:"@amplitude/plugin-web-attribution-browser",type:"before",setup:function(t,r){return n(this,void 0,void 0,(function(){var n,o,u,a,s,c;return i(this,(function(i){switch(i.label){case 0:return[4,(n=new A(e,t)).init()];case 1:return i.sent(),o=n.options,u=n.currentCampaign,a=n.previousCampaign,f=t.sessionTimeout,void 0===(l=t.lastEventTime)&&(l=Date.now()),s=Date.now()-l>f,R(u,a,o,s)&&(o.resetSessionOnNewCampaign&&(r.setSessionId(Date.now()),t.loggerProvider.log("Created a new session for new campaign.")),t.loggerProvider.log("Tracking attribution."),c=n.generateCampaignEvent(),r.track(c)),[2]}var f,l}))}))},execute:function(e){return n(t,void 0,void 0,(function(){return i(this,(function(t){return[2,e]}))}))}}};e.plugin=x,e.webAttributionPlugin=x,Object.defineProperty(e,"__esModule",{value:!0})}));
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAW,MAAM,2BAA2B,CAAC;AAGhF,eAAO,MAAM,oBAAoB,EAAE,0BAyClC,CAAC"}
1
+ {"version":3,"file":"web-attribution.d.ts","sourceRoot":"","sources":["../../src/web-attribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAW,MAAM,2BAA2B,CAAC;AAGhF,eAAO,MAAM,oBAAoB,EAAE,0BA8BlC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/plugin-web-attribution-browser",
3
- "version": "2.1.7",
3
+ "version": "2.1.8-beta.0",
4
4
  "description": "",
5
5
  "author": "Amplitude Inc",
6
6
  "homepage": "https://github.com/amplitude/Amplitude-TypeScript",
@@ -36,13 +36,13 @@
36
36
  "url": "https://github.com/amplitude/Amplitude-TypeScript/issues"
37
37
  },
38
38
  "dependencies": {
39
- "@amplitude/analytics-client-common": "^2.1.3",
39
+ "@amplitude/analytics-client-common": "^2.1.4-beta.0",
40
40
  "@amplitude/analytics-core": "^2.2.4",
41
41
  "@amplitude/analytics-types": "^2.5.0",
42
42
  "tslib": "^2.4.1"
43
43
  },
44
44
  "devDependencies": {
45
- "@amplitude/analytics-browser": "^2.6.2",
45
+ "@amplitude/analytics-browser": "^2.6.3-beta.0",
46
46
  "@rollup/plugin-commonjs": "^23.0.4",
47
47
  "@rollup/plugin-node-resolve": "^15.0.1",
48
48
  "@rollup/plugin-typescript": "^10.0.1",
@@ -54,5 +54,5 @@
54
54
  "files": [
55
55
  "lib"
56
56
  ],
57
- "gitHead": "4820f115b7d250892c1c077242d24f22e329fa9c"
57
+ "gitHead": "e55f597fcaed19a1deeb8ec02d8e623593a7b3e8"
58
58
  }
@@ -1,8 +0,0 @@
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, isNewSession?: boolean) => boolean;
5
- export declare const isExcludedReferrer: (excludeReferrers?: (string | RegExp)[], referringDomain?: string) => boolean;
6
- export declare const createCampaignEvent: (campaign: Campaign, options: Options) => import("@amplitude/analytics-types").IdentifyEvent;
7
- export declare const getDefaultExcludedReferrers: (cookieDomain: string | undefined) => RegExp[];
8
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
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;AAiBF,eAAO,MAAM,aAAa,YACf,QAAQ,YACP,QAAQ,GAAG,SAAS,WACrB,OAAO,oCAoBjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,sBAAsB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,sCAIvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,QAAQ,WAAW,OAAO,uDAgBvE,CAAC;AAEF,eAAO,MAAM,2BAA2B,iBAAkB,MAAM,GAAG,SAAS,aAS3E,CAAC"}
@@ -1,72 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.getDefaultExcludedReferrers = exports.createCampaignEvent = exports.isExcludedReferrer = 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
- //Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.
20
- var isDirectTraffic = function (current) {
21
- return Object.values(current).every(function (value) { return !value; });
22
- };
23
- var isNewCampaign = function (current, previous, options, isNewSession) {
24
- if (isNewSession === void 0) { isNewSession = true; }
25
- var referrer = current.referrer, referring_domain = current.referring_domain, currentCampaign = tslib_1.__rest(current, ["referrer", "referring_domain"]);
26
- var _a = previous || {}, _previous_referrer = _a.referrer, prevReferringDomain = _a.referring_domain, previousCampaign = tslib_1.__rest(_a, ["referrer", "referring_domain"]);
27
- if ((0, exports.isExcludedReferrer)(options.excludeReferrers, current.referring_domain)) {
28
- return false;
29
- }
30
- //In the same session, direct traffic should not override or unset any persisting query params
31
- if (!isNewSession && isDirectTraffic(current) && previous) {
32
- return false;
33
- }
34
- var hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);
35
- var hasNewDomain = domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');
36
- return !previous || hasNewCampaign || hasNewDomain;
37
- };
38
- exports.isNewCampaign = isNewCampaign;
39
- var isExcludedReferrer = function (excludeReferrers, referringDomain) {
40
- if (excludeReferrers === void 0) { excludeReferrers = []; }
41
- if (referringDomain === void 0) { referringDomain = ''; }
42
- return excludeReferrers.some(function (value) {
43
- return value instanceof RegExp ? value.test(referringDomain) : value === referringDomain;
44
- });
45
- };
46
- exports.isExcludedReferrer = isExcludedReferrer;
47
- var createCampaignEvent = function (campaign, options) {
48
- var campaignParameters = tslib_1.__assign(tslib_1.__assign({}, analytics_client_common_1.BASE_CAMPAIGN), campaign);
49
- var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {
50
- var _b;
51
- var _c = tslib_1.__read(_a, 2), key = _c[0], value = _c[1];
52
- identify.setOnce("initial_".concat(key), (_b = value !== null && value !== void 0 ? value : options.initialEmptyValue) !== null && _b !== void 0 ? _b : 'EMPTY');
53
- if (value) {
54
- return identify.set(key, value);
55
- }
56
- return identify.unset(key);
57
- }, new analytics_core_1.Identify());
58
- return (0, analytics_core_1.createIdentifyEvent)(identifyEvent);
59
- };
60
- exports.createCampaignEvent = createCampaignEvent;
61
- var getDefaultExcludedReferrers = function (cookieDomain) {
62
- var domain = cookieDomain;
63
- if (domain) {
64
- if (domain.startsWith('.')) {
65
- domain = domain.substring(1);
66
- }
67
- return [new RegExp("".concat(domain.replace('.', '\\.'), "$"))];
68
- }
69
- return [];
70
- };
71
- exports.getDefaultExcludedReferrers = getDefaultExcludedReferrers;
72
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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","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\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nconst isDirectTraffic = (current: Campaign) => {\n return Object.values(current).every((value) => !value);\n};\n\nexport const isNewCampaign = (\n current: Campaign,\n previous: Campaign | undefined,\n options: Options,\n isNewSession = true,\n) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n return false;\n }\n\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n return !previous || hasNewCampaign || hasNewDomain;\n};\n\nexport const isExcludedReferrer = (excludeReferrers: (string | RegExp)[] = [], referringDomain = '') => {\n return excludeReferrers.some((value) =>\n value instanceof RegExp ? value.test(referringDomain) : value === referringDomain,\n );\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\nexport const getDefaultExcludedReferrers = (cookieDomain: string | undefined) => {\n let domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(`${domain.replace('.', '\\\\.')}$`)];\n }\n return [];\n};\n"]}
@@ -1,8 +0,0 @@
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, isNewSession?: boolean) => boolean;
5
- export declare const isExcludedReferrer: (excludeReferrers?: (string | RegExp)[], referringDomain?: string) => boolean;
6
- export declare const createCampaignEvent: (campaign: Campaign, options: Options) => import("@amplitude/analytics-types").IdentifyEvent;
7
- export declare const getDefaultExcludedReferrers: (cookieDomain: string | undefined) => RegExp[];
8
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
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;AAiBF,eAAO,MAAM,aAAa,YACf,QAAQ,YACP,QAAQ,GAAG,SAAS,WACrB,OAAO,oCAoBjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,sBAAsB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,sCAIvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,QAAQ,WAAW,OAAO,uDAgBvE,CAAC;AAEF,eAAO,MAAM,2BAA2B,iBAAkB,MAAM,GAAG,SAAS,aAS3E,CAAC"}
@@ -1,65 +0,0 @@
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
- //Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.
17
- var isDirectTraffic = function (current) {
18
- return Object.values(current).every(function (value) { return !value; });
19
- };
20
- export var isNewCampaign = function (current, previous, options, isNewSession) {
21
- if (isNewSession === void 0) { isNewSession = true; }
22
- var referrer = current.referrer, referring_domain = current.referring_domain, currentCampaign = __rest(current, ["referrer", "referring_domain"]);
23
- var _a = previous || {}, _previous_referrer = _a.referrer, prevReferringDomain = _a.referring_domain, previousCampaign = __rest(_a, ["referrer", "referring_domain"]);
24
- if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {
25
- return false;
26
- }
27
- //In the same session, direct traffic should not override or unset any persisting query params
28
- if (!isNewSession && isDirectTraffic(current) && previous) {
29
- return false;
30
- }
31
- var hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);
32
- var hasNewDomain = domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');
33
- return !previous || hasNewCampaign || hasNewDomain;
34
- };
35
- export var isExcludedReferrer = function (excludeReferrers, referringDomain) {
36
- if (excludeReferrers === void 0) { excludeReferrers = []; }
37
- if (referringDomain === void 0) { referringDomain = ''; }
38
- return excludeReferrers.some(function (value) {
39
- return value instanceof RegExp ? value.test(referringDomain) : value === referringDomain;
40
- });
41
- };
42
- export var createCampaignEvent = function (campaign, options) {
43
- var campaignParameters = __assign(__assign({}, BASE_CAMPAIGN), campaign);
44
- var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {
45
- var _b;
46
- var _c = __read(_a, 2), key = _c[0], value = _c[1];
47
- identify.setOnce("initial_".concat(key), (_b = value !== null && value !== void 0 ? value : options.initialEmptyValue) !== null && _b !== void 0 ? _b : 'EMPTY');
48
- if (value) {
49
- return identify.set(key, value);
50
- }
51
- return identify.unset(key);
52
- }, new Identify());
53
- return createIdentifyEvent(identifyEvent);
54
- };
55
- export var getDefaultExcludedReferrers = function (cookieDomain) {
56
- var domain = cookieDomain;
57
- if (domain) {
58
- if (domain.startsWith('.')) {
59
- domain = domain.substring(1);
60
- }
61
- return [new RegExp("".concat(domain.replace('.', '\\.'), "$"))];
62
- }
63
- return [];
64
- };
65
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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","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\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nconst isDirectTraffic = (current: Campaign) => {\n return Object.values(current).every((value) => !value);\n};\n\nexport const isNewCampaign = (\n current: Campaign,\n previous: Campaign | undefined,\n options: Options,\n isNewSession = true,\n) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n return false;\n }\n\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n return !previous || hasNewCampaign || hasNewDomain;\n};\n\nexport const isExcludedReferrer = (excludeReferrers: (string | RegExp)[] = [], referringDomain = '') => {\n return excludeReferrers.some((value) =>\n value instanceof RegExp ? value.test(referringDomain) : value === referringDomain,\n );\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\nexport const getDefaultExcludedReferrers = (cookieDomain: string | undefined) => {\n let domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(`${domain.replace('.', '\\\\.')}$`)];\n }\n return [];\n};\n"]}
@@ -1,8 +0,0 @@
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, isNewSession?: boolean) => boolean;
5
- export declare const isExcludedReferrer: (excludeReferrers?: (string | RegExp)[], referringDomain?: string) => boolean;
6
- export declare const createCampaignEvent: (campaign: Campaign, options: Options) => import("@amplitude/analytics-types").IdentifyEvent;
7
- export declare const getDefaultExcludedReferrers: (cookieDomain: string | undefined) => RegExp[];
8
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
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;AAiBF,eAAO,MAAM,aAAa,YACf,QAAQ,YACP,QAAQ,GAAG,SAAS,WACrB,OAAO,oCAoBjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,sBAAsB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,sCAIvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,QAAQ,WAAW,OAAO,uDAgBvE,CAAC;AAEF,eAAO,MAAM,2BAA2B,iBAAkB,MAAM,GAAG,SAAS,aAS3E,CAAC"}