@amplitude/plugin-page-view-tracking-browser 2.2.7-beta.0 → 2.2.8

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,4 +1,5 @@
1
1
  import { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';
2
+ export declare const defaultPageViewEvent = "[Amplitude] Page Viewed";
2
3
  export declare const pageViewTrackingPlugin: CreatePageViewTrackingPlugin;
3
4
  export declare const shouldTrackHistoryPageView: (trackingOption: Options['trackHistoryChanges'], newURL: string, oldURL: string) => boolean;
4
5
  //# sourceMappingURL=page-view-tracking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-view-tracking.d.ts","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGrF,eAAO,MAAM,sBAAsB,EAAE,4BAqHpC,CAAC;AAeF,eAAO,MAAM,0BAA0B,mBACrB,OAAO,CAAC,qBAAqB,CAAC,UACtC,MAAM,UACN,MAAM,KACb,OAOF,CAAC"}
1
+ {"version":3,"file":"page-view-tracking.d.ts","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGrF,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,eAAO,MAAM,sBAAsB,EAAE,4BA4HpC,CAAC;AAeF,eAAO,MAAM,0BAA0B,mBACrB,OAAO,CAAC,qBAAqB,CAAC,UACtC,MAAM,UACN,MAAM,KACb,OAOF,CAAC"}
@@ -1,11 +1,12 @@
1
1
  var _this = this;
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shouldTrackHistoryPageView = exports.pageViewTrackingPlugin = void 0;
3
+ exports.shouldTrackHistoryPageView = exports.pageViewTrackingPlugin = exports.defaultPageViewEvent = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var analytics_client_common_1 = require("@amplitude/analytics-client-common");
6
6
  var analytics_types_1 = require("@amplitude/analytics-types");
7
7
  var analytics_client_common_2 = require("@amplitude/analytics-client-common");
8
8
  var utils_1 = require("./utils");
9
+ exports.defaultPageViewEvent = '[Amplitude] Page Viewed';
9
10
  var pageViewTrackingPlugin = function (options) {
10
11
  if (options === void 0) { options = {}; }
11
12
  var amplitude;
@@ -13,31 +14,28 @@ var pageViewTrackingPlugin = function (options) {
13
14
  var loggerProvider = undefined;
14
15
  var pushState;
15
16
  var localConfig;
17
+ var trackOn = options.trackOn, trackHistoryChanges = options.trackHistoryChanges, _a = options.eventType, eventType = _a === void 0 ? exports.defaultPageViewEvent : _a;
16
18
  var createPageViewEvent = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
17
19
  var _a;
18
20
  var _b;
19
- var _c;
20
- return tslib_1.__generator(this, function (_d) {
21
- switch (_d.label) {
21
+ return tslib_1.__generator(this, function (_c) {
22
+ switch (_c.label) {
22
23
  case 0:
23
- localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;
24
24
  _b = {
25
- event_type: (_c = options.eventType) !== null && _c !== void 0 ? _c : '[Amplitude] Page Viewed'
25
+ event_type: eventType
26
26
  };
27
27
  _a = [{}];
28
28
  return [4 /*yield*/, getCampaignParams()];
29
- case 1: return [2 /*return*/, (_b.event_properties = tslib_1.__assign.apply(void 0, [tslib_1.__assign.apply(void 0, _a.concat([(_d.sent())])), { '[Amplitude] Page Domain':
29
+ case 1: return [2 /*return*/, (_b.event_properties = tslib_1.__assign.apply(void 0, [tslib_1.__assign.apply(void 0, _a.concat([(_c.sent())])), { '[Amplitude] Page Domain':
30
30
  /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '', '[Amplitude] Page Location':
31
31
  /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '', '[Amplitude] Page Path':
32
32
  /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '', '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '', '[Amplitude] Page URL':
33
- /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '', '[Amplitude] Page Counter': localConfig.pageCounter }]),
33
+ /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '' }]),
34
34
  _b)];
35
35
  }
36
36
  });
37
37
  }); };
38
- var shouldTrackOnPageLoad = function () {
39
- return typeof options.trackOn === 'undefined' || (typeof options.trackOn === 'function' && options.trackOn());
40
- };
38
+ var shouldTrackOnPageLoad = function () { return typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn()); };
41
39
  /* istanbul ignore next */
42
40
  var previousURL = typeof location !== 'undefined' ? location.href : null;
43
41
  var trackHistoryPageView = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
@@ -46,7 +44,7 @@ var pageViewTrackingPlugin = function (options) {
46
44
  switch (_d.label) {
47
45
  case 0:
48
46
  newURL = location.href;
49
- shouldTrackPageView = (0, exports.shouldTrackHistoryPageView)(options.trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();
47
+ shouldTrackPageView = (0, exports.shouldTrackHistoryPageView)(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();
50
48
  // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`
51
49
  // This was previously done after `amplitude?.track(await createPageViewEvent());` and
52
50
  // causes a concurrency issue where app triggers `pushState` twice with the same URL target
@@ -121,7 +119,7 @@ var pageViewTrackingPlugin = function (options) {
121
119
  return tslib_1.__generator(this, function (_a) {
122
120
  switch (_a.label) {
123
121
  case 0:
124
- if (!(options.trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];
122
+ if (!(trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];
125
123
  /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked
126
124
  loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Enriching campaign event to page view event with campaign parameters');
127
125
  return [4 /*yield*/, createPageViewEvent()];
@@ -130,7 +128,13 @@ var pageViewTrackingPlugin = function (options) {
130
128
  event.event_type = pageViewEvent.event_type;
131
129
  event.event_properties = tslib_1.__assign(tslib_1.__assign({}, event.event_properties), pageViewEvent.event_properties);
132
130
  _a.label = 2;
133
- case 2: return [2 /*return*/, event];
131
+ case 2:
132
+ // Update the pageCounter for the page view event
133
+ if (localConfig && event.event_type === eventType) {
134
+ localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;
135
+ event.event_properties = tslib_1.__assign(tslib_1.__assign({}, event.event_properties), { '[Amplitude] Page Counter': localConfig.pageCounter });
136
+ }
137
+ return [2 /*return*/, event];
134
138
  }
135
139
  });
136
140
  }); },
@@ -1 +1 @@
1
- {"version":3,"file":"page-view-tracking.js","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n EnrichmentPlugin,\n Event,\n IdentifyOperation,\n IdentifyUserProperties,\n Logger,\n} from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';\nimport { omitUndefined } from './utils';\n\nexport const pageViewTrackingPlugin: CreatePageViewTrackingPlugin = (options: Options = {}) => {\n let amplitude: BrowserClient | undefined;\n const globalScope = getGlobalScope();\n let loggerProvider: Logger | undefined = undefined;\n let pushState: undefined | ((data: any, unused: string, url?: string | URL | null) => void);\n let localConfig: BrowserConfig;\n\n const createPageViewEvent = async (): Promise<Event> => {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n return {\n event_type: options.eventType ?? '[Amplitude] Page Viewed',\n event_properties: {\n ...(await getCampaignParams()),\n '[Amplitude] Page Domain':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '',\n '[Amplitude] Page Location':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n '[Amplitude] Page Path':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n '[Amplitude] Page URL':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '',\n '[Amplitude] Page Counter': localConfig.pageCounter,\n },\n };\n };\n\n const shouldTrackOnPageLoad = () =>\n typeof options.trackOn === 'undefined' || (typeof options.trackOn === 'function' && options.trackOn());\n\n /* istanbul ignore next */\n let previousURL: string | null = typeof location !== 'undefined' ? location.href : null;\n\n const trackHistoryPageView = async (): Promise<void> => {\n const newURL = location.href;\n const shouldTrackPageView =\n shouldTrackHistoryPageView(options.trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n\n if (shouldTrackPageView) {\n /* istanbul ignore next */\n loggerProvider?.log('Tracking page view event');\n amplitude?.track(await createPageViewEvent());\n }\n };\n\n /* istanbul ignore next */\n const trackHistoryPageViewWrapper = () => {\n void trackHistoryPageView();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, client: BrowserClient) => {\n amplitude = client;\n localConfig = config;\n\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n\n if (shouldTrackOnPageLoad()) {\n loggerProvider.log('Tracking page view event');\n\n amplitude.track(await createPageViewEvent());\n }\n },\n\n execute: async (event: Event) => {\n if (options.trackOn === 'attribution' && isCampaignEvent(event)) {\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider?.log('Enriching campaign event to page view event with campaign parameters');\n const pageViewEvent = await createPageViewEvent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = {\n ...event.event_properties,\n ...pageViewEvent.event_properties,\n };\n }\n return event;\n },\n\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n },\n };\n return plugin;\n};\n\nconst getCampaignParams = async () => omitUndefined(await new CampaignParser().parse());\n\nconst isCampaignEvent = (event: Event) => {\n if (event.event_type === '$identify' && event.user_properties) {\n const properties = event.user_properties as IdentifyUserProperties;\n const $set = properties[IdentifyOperation.SET] || {};\n const $unset = properties[IdentifyOperation.UNSET] || {};\n const userProperties = [...Object.keys($set), ...Object.keys($unset)];\n return Object.keys(BASE_CAMPAIGN).every((value) => userProperties.includes(value));\n }\n return false;\n};\n\nexport const shouldTrackHistoryPageView = (\n trackingOption: Options['trackHistoryChanges'],\n newURL: string,\n oldURL: string,\n): boolean => {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\n};\n"]}
1
+ {"version":3,"file":"page-view-tracking.js","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n EnrichmentPlugin,\n Event,\n IdentifyOperation,\n IdentifyUserProperties,\n Logger,\n} from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';\nimport { omitUndefined } from './utils';\n\nexport const defaultPageViewEvent = '[Amplitude] Page Viewed';\n\nexport const pageViewTrackingPlugin: CreatePageViewTrackingPlugin = (options: Options = {}) => {\n let amplitude: BrowserClient | undefined;\n const globalScope = getGlobalScope();\n let loggerProvider: Logger | undefined = undefined;\n let pushState: undefined | ((data: any, unused: string, url?: string | URL | null) => void);\n let localConfig: BrowserConfig;\n const { trackOn, trackHistoryChanges, eventType = defaultPageViewEvent } = options;\n\n const createPageViewEvent = async (): Promise<Event> => {\n return {\n event_type: eventType,\n event_properties: {\n ...(await getCampaignParams()),\n '[Amplitude] Page Domain':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '',\n '[Amplitude] Page Location':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n '[Amplitude] Page Path':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n '[Amplitude] Page URL':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '',\n },\n };\n };\n\n const shouldTrackOnPageLoad = () => typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn());\n\n /* istanbul ignore next */\n let previousURL: string | null = typeof location !== 'undefined' ? location.href : null;\n\n const trackHistoryPageView = async (): Promise<void> => {\n const newURL = location.href;\n const shouldTrackPageView =\n shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n\n if (shouldTrackPageView) {\n /* istanbul ignore next */\n loggerProvider?.log('Tracking page view event');\n amplitude?.track(await createPageViewEvent());\n }\n };\n\n /* istanbul ignore next */\n const trackHistoryPageViewWrapper = () => {\n void trackHistoryPageView();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, client: BrowserClient) => {\n amplitude = client;\n localConfig = config;\n\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n\n if (shouldTrackOnPageLoad()) {\n loggerProvider.log('Tracking page view event');\n\n amplitude.track(await createPageViewEvent());\n }\n },\n\n execute: async (event: Event) => {\n if (trackOn === 'attribution' && isCampaignEvent(event)) {\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider?.log('Enriching campaign event to page view event with campaign parameters');\n const pageViewEvent = await createPageViewEvent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = {\n ...event.event_properties,\n ...pageViewEvent.event_properties,\n };\n }\n\n // Update the pageCounter for the page view event\n if (localConfig && event.event_type === eventType) {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n event.event_properties = {\n ...event.event_properties,\n '[Amplitude] Page Counter': localConfig.pageCounter,\n };\n }\n return event;\n },\n\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n },\n };\n return plugin;\n};\n\nconst getCampaignParams = async () => omitUndefined(await new CampaignParser().parse());\n\nconst isCampaignEvent = (event: Event) => {\n if (event.event_type === '$identify' && event.user_properties) {\n const properties = event.user_properties as IdentifyUserProperties;\n const $set = properties[IdentifyOperation.SET] || {};\n const $unset = properties[IdentifyOperation.UNSET] || {};\n const userProperties = [...Object.keys($set), ...Object.keys($unset)];\n return Object.keys(BASE_CAMPAIGN).every((value) => userProperties.includes(value));\n }\n return false;\n};\n\nexport const shouldTrackHistoryPageView = (\n trackingOption: Options['trackHistoryChanges'],\n newURL: string,\n oldURL: string,\n): boolean => {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\n};\n"]}
@@ -1,4 +1,5 @@
1
1
  import { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';
2
+ export declare const defaultPageViewEvent = "[Amplitude] Page Viewed";
2
3
  export declare const pageViewTrackingPlugin: CreatePageViewTrackingPlugin;
3
4
  export declare const shouldTrackHistoryPageView: (trackingOption: Options['trackHistoryChanges'], newURL: string, oldURL: string) => boolean;
4
5
  //# sourceMappingURL=page-view-tracking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-view-tracking.d.ts","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGrF,eAAO,MAAM,sBAAsB,EAAE,4BAqHpC,CAAC;AAeF,eAAO,MAAM,0BAA0B,mBACrB,OAAO,CAAC,qBAAqB,CAAC,UACtC,MAAM,UACN,MAAM,KACb,OAOF,CAAC"}
1
+ {"version":3,"file":"page-view-tracking.d.ts","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGrF,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,eAAO,MAAM,sBAAsB,EAAE,4BA4HpC,CAAC;AAeF,eAAO,MAAM,0BAA0B,mBACrB,OAAO,CAAC,qBAAqB,CAAC,UACtC,MAAM,UACN,MAAM,KACb,OAOF,CAAC"}
@@ -3,6 +3,7 @@ import { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-comm
3
3
  import { IdentifyOperation, } from '@amplitude/analytics-types';
4
4
  import { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';
5
5
  import { omitUndefined } from './utils';
6
+ export var defaultPageViewEvent = '[Amplitude] Page Viewed';
6
7
  export var pageViewTrackingPlugin = function (options) {
7
8
  if (options === void 0) { options = {}; }
8
9
  var amplitude;
@@ -10,31 +11,28 @@ export var pageViewTrackingPlugin = function (options) {
10
11
  var loggerProvider = undefined;
11
12
  var pushState;
12
13
  var localConfig;
14
+ var trackOn = options.trackOn, trackHistoryChanges = options.trackHistoryChanges, _a = options.eventType, eventType = _a === void 0 ? defaultPageViewEvent : _a;
13
15
  var createPageViewEvent = function () { return __awaiter(void 0, void 0, void 0, function () {
14
16
  var _a;
15
17
  var _b;
16
- var _c;
17
- return __generator(this, function (_d) {
18
- switch (_d.label) {
18
+ return __generator(this, function (_c) {
19
+ switch (_c.label) {
19
20
  case 0:
20
- localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;
21
21
  _b = {
22
- event_type: (_c = options.eventType) !== null && _c !== void 0 ? _c : '[Amplitude] Page Viewed'
22
+ event_type: eventType
23
23
  };
24
24
  _a = [{}];
25
25
  return [4 /*yield*/, getCampaignParams()];
26
- case 1: return [2 /*return*/, (_b.event_properties = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_d.sent())])), { '[Amplitude] Page Domain':
26
+ case 1: return [2 /*return*/, (_b.event_properties = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { '[Amplitude] Page Domain':
27
27
  /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '', '[Amplitude] Page Location':
28
28
  /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '', '[Amplitude] Page Path':
29
29
  /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '', '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '', '[Amplitude] Page URL':
30
- /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '', '[Amplitude] Page Counter': localConfig.pageCounter }]),
30
+ /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '' }]),
31
31
  _b)];
32
32
  }
33
33
  });
34
34
  }); };
35
- var shouldTrackOnPageLoad = function () {
36
- return typeof options.trackOn === 'undefined' || (typeof options.trackOn === 'function' && options.trackOn());
37
- };
35
+ var shouldTrackOnPageLoad = function () { return typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn()); };
38
36
  /* istanbul ignore next */
39
37
  var previousURL = typeof location !== 'undefined' ? location.href : null;
40
38
  var trackHistoryPageView = function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -43,7 +41,7 @@ export var pageViewTrackingPlugin = function (options) {
43
41
  switch (_d.label) {
44
42
  case 0:
45
43
  newURL = location.href;
46
- shouldTrackPageView = shouldTrackHistoryPageView(options.trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();
44
+ shouldTrackPageView = shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();
47
45
  // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`
48
46
  // This was previously done after `amplitude?.track(await createPageViewEvent());` and
49
47
  // causes a concurrency issue where app triggers `pushState` twice with the same URL target
@@ -118,7 +116,7 @@ export var pageViewTrackingPlugin = function (options) {
118
116
  return __generator(this, function (_a) {
119
117
  switch (_a.label) {
120
118
  case 0:
121
- if (!(options.trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];
119
+ if (!(trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];
122
120
  /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked
123
121
  loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Enriching campaign event to page view event with campaign parameters');
124
122
  return [4 /*yield*/, createPageViewEvent()];
@@ -127,7 +125,13 @@ export var pageViewTrackingPlugin = function (options) {
127
125
  event.event_type = pageViewEvent.event_type;
128
126
  event.event_properties = __assign(__assign({}, event.event_properties), pageViewEvent.event_properties);
129
127
  _a.label = 2;
130
- case 2: return [2 /*return*/, event];
128
+ case 2:
129
+ // Update the pageCounter for the page view event
130
+ if (localConfig && event.event_type === eventType) {
131
+ localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;
132
+ event.event_properties = __assign(__assign({}, event.event_properties), { '[Amplitude] Page Counter': localConfig.pageCounter });
133
+ }
134
+ return [2 /*return*/, event];
131
135
  }
132
136
  });
133
137
  }); },
@@ -1 +1 @@
1
- {"version":3,"file":"page-view-tracking.js","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n EnrichmentPlugin,\n Event,\n IdentifyOperation,\n IdentifyUserProperties,\n Logger,\n} from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';\nimport { omitUndefined } from './utils';\n\nexport const pageViewTrackingPlugin: CreatePageViewTrackingPlugin = (options: Options = {}) => {\n let amplitude: BrowserClient | undefined;\n const globalScope = getGlobalScope();\n let loggerProvider: Logger | undefined = undefined;\n let pushState: undefined | ((data: any, unused: string, url?: string | URL | null) => void);\n let localConfig: BrowserConfig;\n\n const createPageViewEvent = async (): Promise<Event> => {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n return {\n event_type: options.eventType ?? '[Amplitude] Page Viewed',\n event_properties: {\n ...(await getCampaignParams()),\n '[Amplitude] Page Domain':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '',\n '[Amplitude] Page Location':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n '[Amplitude] Page Path':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n '[Amplitude] Page URL':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '',\n '[Amplitude] Page Counter': localConfig.pageCounter,\n },\n };\n };\n\n const shouldTrackOnPageLoad = () =>\n typeof options.trackOn === 'undefined' || (typeof options.trackOn === 'function' && options.trackOn());\n\n /* istanbul ignore next */\n let previousURL: string | null = typeof location !== 'undefined' ? location.href : null;\n\n const trackHistoryPageView = async (): Promise<void> => {\n const newURL = location.href;\n const shouldTrackPageView =\n shouldTrackHistoryPageView(options.trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n\n if (shouldTrackPageView) {\n /* istanbul ignore next */\n loggerProvider?.log('Tracking page view event');\n amplitude?.track(await createPageViewEvent());\n }\n };\n\n /* istanbul ignore next */\n const trackHistoryPageViewWrapper = () => {\n void trackHistoryPageView();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, client: BrowserClient) => {\n amplitude = client;\n localConfig = config;\n\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n\n if (shouldTrackOnPageLoad()) {\n loggerProvider.log('Tracking page view event');\n\n amplitude.track(await createPageViewEvent());\n }\n },\n\n execute: async (event: Event) => {\n if (options.trackOn === 'attribution' && isCampaignEvent(event)) {\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider?.log('Enriching campaign event to page view event with campaign parameters');\n const pageViewEvent = await createPageViewEvent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = {\n ...event.event_properties,\n ...pageViewEvent.event_properties,\n };\n }\n return event;\n },\n\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n },\n };\n return plugin;\n};\n\nconst getCampaignParams = async () => omitUndefined(await new CampaignParser().parse());\n\nconst isCampaignEvent = (event: Event) => {\n if (event.event_type === '$identify' && event.user_properties) {\n const properties = event.user_properties as IdentifyUserProperties;\n const $set = properties[IdentifyOperation.SET] || {};\n const $unset = properties[IdentifyOperation.UNSET] || {};\n const userProperties = [...Object.keys($set), ...Object.keys($unset)];\n return Object.keys(BASE_CAMPAIGN).every((value) => userProperties.includes(value));\n }\n return false;\n};\n\nexport const shouldTrackHistoryPageView = (\n trackingOption: Options['trackHistoryChanges'],\n newURL: string,\n oldURL: string,\n): boolean => {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\n};\n"]}
1
+ {"version":3,"file":"page-view-tracking.js","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n EnrichmentPlugin,\n Event,\n IdentifyOperation,\n IdentifyUserProperties,\n Logger,\n} from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';\nimport { omitUndefined } from './utils';\n\nexport const defaultPageViewEvent = '[Amplitude] Page Viewed';\n\nexport const pageViewTrackingPlugin: CreatePageViewTrackingPlugin = (options: Options = {}) => {\n let amplitude: BrowserClient | undefined;\n const globalScope = getGlobalScope();\n let loggerProvider: Logger | undefined = undefined;\n let pushState: undefined | ((data: any, unused: string, url?: string | URL | null) => void);\n let localConfig: BrowserConfig;\n const { trackOn, trackHistoryChanges, eventType = defaultPageViewEvent } = options;\n\n const createPageViewEvent = async (): Promise<Event> => {\n return {\n event_type: eventType,\n event_properties: {\n ...(await getCampaignParams()),\n '[Amplitude] Page Domain':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '',\n '[Amplitude] Page Location':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n '[Amplitude] Page Path':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n '[Amplitude] Page URL':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '',\n },\n };\n };\n\n const shouldTrackOnPageLoad = () => typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn());\n\n /* istanbul ignore next */\n let previousURL: string | null = typeof location !== 'undefined' ? location.href : null;\n\n const trackHistoryPageView = async (): Promise<void> => {\n const newURL = location.href;\n const shouldTrackPageView =\n shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n\n if (shouldTrackPageView) {\n /* istanbul ignore next */\n loggerProvider?.log('Tracking page view event');\n amplitude?.track(await createPageViewEvent());\n }\n };\n\n /* istanbul ignore next */\n const trackHistoryPageViewWrapper = () => {\n void trackHistoryPageView();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, client: BrowserClient) => {\n amplitude = client;\n localConfig = config;\n\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n\n if (shouldTrackOnPageLoad()) {\n loggerProvider.log('Tracking page view event');\n\n amplitude.track(await createPageViewEvent());\n }\n },\n\n execute: async (event: Event) => {\n if (trackOn === 'attribution' && isCampaignEvent(event)) {\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider?.log('Enriching campaign event to page view event with campaign parameters');\n const pageViewEvent = await createPageViewEvent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = {\n ...event.event_properties,\n ...pageViewEvent.event_properties,\n };\n }\n\n // Update the pageCounter for the page view event\n if (localConfig && event.event_type === eventType) {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n event.event_properties = {\n ...event.event_properties,\n '[Amplitude] Page Counter': localConfig.pageCounter,\n };\n }\n return event;\n },\n\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n },\n };\n return plugin;\n};\n\nconst getCampaignParams = async () => omitUndefined(await new CampaignParser().parse());\n\nconst isCampaignEvent = (event: Event) => {\n if (event.event_type === '$identify' && event.user_properties) {\n const properties = event.user_properties as IdentifyUserProperties;\n const $set = properties[IdentifyOperation.SET] || {};\n const $unset = properties[IdentifyOperation.UNSET] || {};\n const userProperties = [...Object.keys($set), ...Object.keys($unset)];\n return Object.keys(BASE_CAMPAIGN).every((value) => userProperties.includes(value));\n }\n return false;\n};\n\nexport const shouldTrackHistoryPageView = (\n trackingOption: Options['trackHistoryChanges'],\n newURL: string,\n oldURL: string,\n): boolean => {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\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,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)};function n(e,t,n,r){return new(n||(n=Promise))((function(i,o){function u(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,a)}c((r=r.apply(e,t||[])).next())}))}function r(e,t){var n,r,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(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(u=0)),u;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=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++,r=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],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),u=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)u.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return u}function o(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var u,a,c,l=function(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0},d=function(){var e,t=l();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 n=t.split("=",2),r=p(n[0]),i=p(n[1]);return i?(e[r]=i,e):e}),{}):{}},p=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},f="dclid",s="fbclid",v="gbraid",y="gclid",m="ko_click_id",g="li_fat_id",h="msclkid",_="rtd_cid",b="ttclid",E="twclid",w="wbraid",k={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},P=function(){function e(){}return e.prototype.parse=function(){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,t(t(t(t({},k),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=d();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,n={referrer:void 0,referring_domain:void 0};try{n.referrer=document.referrer||void 0,n.referring_domain=null!==(t=null===(e=n.referrer)||void 0===e?void 0:e.split("/")[2])&&void 0!==t?t:void 0}catch(e){}return n},e.prototype.getClickIds=function(){var e,t=d();return(e={})[f]=t[f],e[s]=t[s],e[v]=t[v],e[y]=t[y],e[m]=t[m],e[g]=t[g],e[h]=t[h],e[_]=t[_],e[b]=t[b],e[E]=t[E],e[w]=t[w],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"}(c||(c={}));var T=function(e){var t={};for(var n in e){var r=e[n];r&&(t[n]=r)}return t},R=function(e){var o;void 0===e&&(e={});var u,a,c=l(),d=void 0,p=function(){return n(void 0,void 0,void 0,(function(){var n,i,o;return r(this,(function(r){switch(r.label){case 0:return a.pageCounter=a.pageCounter?a.pageCounter+1:1,i={event_type:null!==(o=e.eventType)&&void 0!==o?o:"[Amplitude] Page Viewed"},n=[{}],[4,O()];case 1:return[2,(i.event_properties=t.apply(void 0,[t.apply(void 0,n.concat([r.sent()])),{"[Amplitude] Page Domain":"undefined"!=typeof location&&location.hostname||"","[Amplitude] Page Location":"undefined"!=typeof location&&location.href||"","[Amplitude] Page Path":"undefined"!=typeof location&&location.pathname||"","[Amplitude] Page Title":"undefined"!=typeof document&&document.title||"","[Amplitude] Page URL":"undefined"!=typeof location&&location.href.split("?")[0]||"","[Amplitude] Page Counter":a.pageCounter}]),i)]}}))}))},f=function(){return void 0===e.trackOn||"function"==typeof e.trackOn&&e.trackOn()},s="undefined"!=typeof location?location.href:null,v=function(){return n(void 0,void 0,void 0,(function(){var t,n,i,u;return r(this,(function(r){switch(r.label){case 0:return t=location.href,n=I(e.trackHistoryChanges,t,s||"")&&f(),s=t,n?(null==d||d.log("Tracking page view event"),null!=o?[3,1]:[3,3]):[3,4];case 1:return u=(i=o).track,[4,p()];case 2:u.apply(i,[r.sent()]),r.label=3;case 3:r.label=4;case 4:return[2]}}))}))},y=function(){v()};return{name:"@amplitude/plugin-page-view-tracking-browser",type:"enrichment",setup:function(e,t){return n(void 0,void 0,void 0,(function(){var n,l;return r(this,(function(r){switch(r.label){case 0:return o=t,a=e,(d=e.loggerProvider).log("Installing @amplitude/plugin-page-view-tracking-browser"),c&&(c.addEventListener("popstate",y),u=c.history.pushState,c.history.pushState=new Proxy(c.history.pushState,{apply:function(e,t,n){var r=i(n,3),o=r[0],u=r[1],a=r[2];e.apply(t,[o,u,a]),v()}})),f()?(d.log("Tracking page view event"),l=(n=o).track,[4,p()]):[3,2];case 1:l.apply(n,[r.sent()]),r.label=2;case 2:return[2]}}))}))},execute:function(i){return n(void 0,void 0,void 0,(function(){var n;return r(this,(function(r){switch(r.label){case 0:return"attribution"===e.trackOn&&$(i)?(null==d||d.log("Enriching campaign event to page view event with campaign parameters"),[4,p()]):[3,2];case 1:n=r.sent(),i.event_type=n.event_type,i.event_properties=t(t({},i.event_properties),n.event_properties),r.label=2;case 2:return[2,i]}}))}))},teardown:function(){return n(void 0,void 0,void 0,(function(){return r(this,(function(e){return c&&(c.removeEventListener("popstate",y),u&&(c.history.pushState=u)),[2]}))}))}}},O=function(){return n(void 0,void 0,void 0,(function(){var e;return r(this,(function(t){switch(t.label){case 0:return e=T,[4,(new P).parse()];case 1:return[2,e.apply(void 0,[t.sent()])]}}))}))},$=function(e){if("$identify"===e.event_type&&e.user_properties){var t=e.user_properties,n=t[u.SET]||{},r=t[u.UNSET]||{},a=o(o([],i(Object.keys(n)),!1),i(Object.keys(r)),!1);return Object.keys(k).every((function(e){return a.includes(e)}))}return!1},I=function(e,t,n){return"pathOnly"===e?t.split("?")[0]!==n.split("?")[0]:t!==n};e.pageViewTrackingPlugin=R,e.plugin=R,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,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)};function n(e,t,n,r){return new(n||(n=Promise))((function(i,o){function u(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,a)}c((r=r.apply(e,t||[])).next())}))}function r(e,t){var n,r,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(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(u=0)),u;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=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++,r=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],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),u=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)u.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return u}function o(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var u,a,c,l=function(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0},d=function(){var e,t=l();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 n=t.split("=",2),r=p(n[0]),i=p(n[1]);return i?(e[r]=i,e):e}),{}):{}},p=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},f="dclid",s="fbclid",v="gbraid",y="gclid",m="ko_click_id",g="li_fat_id",h="msclkid",_="rtd_cid",b="ttclid",E="twclid",w="wbraid",P={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},T=function(){function e(){}return e.prototype.parse=function(){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,t(t(t(t({},P),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=d();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,n={referrer:void 0,referring_domain:void 0};try{n.referrer=document.referrer||void 0,n.referring_domain=null!==(t=null===(e=n.referrer)||void 0===e?void 0:e.split("/")[2])&&void 0!==t?t:void 0}catch(e){}return n},e.prototype.getClickIds=function(){var e,t=d();return(e={})[f]=t[f],e[s]=t[s],e[v]=t[v],e[y]=t[y],e[m]=t[m],e[g]=t[g],e[h]=t[h],e[_]=t[_],e[b]=t[b],e[E]=t[E],e[w]=t[w],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"}(c||(c={}));var k=function(e){var t={};for(var n in e){var r=e[n];r&&(t[n]=r)}return t},R=function(e){var o;void 0===e&&(e={});var u,a,c=l(),d=void 0,p=e.trackOn,f=e.trackHistoryChanges,s=e.eventType,v=void 0===s?"[Amplitude] Page Viewed":s,y=function(){return n(void 0,void 0,void 0,(function(){var e,n;return r(this,(function(r){switch(r.label){case 0:return n={event_type:v},e=[{}],[4,$()];case 1:return[2,(n.event_properties=t.apply(void 0,[t.apply(void 0,e.concat([r.sent()])),{"[Amplitude] Page Domain":"undefined"!=typeof location&&location.hostname||"","[Amplitude] Page Location":"undefined"!=typeof location&&location.href||"","[Amplitude] Page Path":"undefined"!=typeof location&&location.pathname||"","[Amplitude] Page Title":"undefined"!=typeof document&&document.title||"","[Amplitude] Page URL":"undefined"!=typeof location&&location.href.split("?")[0]||""}]),n)]}}))}))},m=function(){return void 0===p||"function"==typeof p&&p()},g="undefined"!=typeof location?location.href:null,h=function(){return n(void 0,void 0,void 0,(function(){var e,t,n,i;return r(this,(function(r){switch(r.label){case 0:return e=location.href,t=N(f,e,g||"")&&m(),g=e,t?(null==d||d.log("Tracking page view event"),null!=o?[3,1]:[3,3]):[3,4];case 1:return i=(n=o).track,[4,y()];case 2:i.apply(n,[r.sent()]),r.label=3;case 3:r.label=4;case 4:return[2]}}))}))},_=function(){h()},b={name:"@amplitude/plugin-page-view-tracking-browser",type:"enrichment",setup:function(e,t){return n(void 0,void 0,void 0,(function(){var n,l;return r(this,(function(r){switch(r.label){case 0:return o=t,a=e,(d=e.loggerProvider).log("Installing @amplitude/plugin-page-view-tracking-browser"),c&&(c.addEventListener("popstate",_),u=c.history.pushState,c.history.pushState=new Proxy(c.history.pushState,{apply:function(e,t,n){var r=i(n,3),o=r[0],u=r[1],a=r[2];e.apply(t,[o,u,a]),h()}})),m()?(d.log("Tracking page view event"),l=(n=o).track,[4,y()]):[3,2];case 1:l.apply(n,[r.sent()]),r.label=2;case 2:return[2]}}))}))},execute:function(e){return n(void 0,void 0,void 0,(function(){var n;return r(this,(function(r){switch(r.label){case 0:return"attribution"===p&&I(e)?(null==d||d.log("Enriching campaign event to page view event with campaign parameters"),[4,y()]):[3,2];case 1:n=r.sent(),e.event_type=n.event_type,e.event_properties=t(t({},e.event_properties),n.event_properties),r.label=2;case 2:return a&&e.event_type===v&&(a.pageCounter=a.pageCounter?a.pageCounter+1:1,e.event_properties=t(t({},e.event_properties),{"[Amplitude] Page Counter":a.pageCounter})),[2,e]}}))}))},teardown:function(){return n(void 0,void 0,void 0,(function(){return r(this,(function(e){return c&&(c.removeEventListener("popstate",_),u&&(c.history.pushState=u)),[2]}))}))}};return b},$=function(){return n(void 0,void 0,void 0,(function(){var e;return r(this,(function(t){switch(t.label){case 0:return e=k,[4,(new T).parse()];case 1:return[2,e.apply(void 0,[t.sent()])]}}))}))},I=function(e){if("$identify"===e.event_type&&e.user_properties){var t=e.user_properties,n=t[u.SET]||{},r=t[u.UNSET]||{},a=o(o([],i(Object.keys(n)),!1),i(Object.keys(r)),!1);return Object.keys(P).every((function(e){return a.includes(e)}))}return!1},N=function(e,t,n){return"pathOnly"===e?t.split("?")[0]!==n.split("?")[0]:t!==n};e.pageViewTrackingPlugin=R,e.plugin=R,Object.defineProperty(e,"__esModule",{value:!0})}));
Binary file
@@ -1,4 +1,5 @@
1
1
  import { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';
2
+ export declare const defaultPageViewEvent = "[Amplitude] Page Viewed";
2
3
  export declare const pageViewTrackingPlugin: CreatePageViewTrackingPlugin;
3
4
  export declare const shouldTrackHistoryPageView: (trackingOption: Options['trackHistoryChanges'], newURL: string, oldURL: string) => boolean;
4
5
  //# sourceMappingURL=page-view-tracking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-view-tracking.d.ts","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGrF,eAAO,MAAM,sBAAsB,EAAE,4BAqHpC,CAAC;AAeF,eAAO,MAAM,0BAA0B,mBACrB,OAAO,CAAC,qBAAqB,CAAC,UACtC,MAAM,UACN,MAAM,KACb,OAOF,CAAC"}
1
+ {"version":3,"file":"page-view-tracking.d.ts","sourceRoot":"","sources":["../../src/page-view-tracking.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGrF,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,eAAO,MAAM,sBAAsB,EAAE,4BA4HpC,CAAC;AAeF,eAAO,MAAM,0BAA0B,mBACrB,OAAO,CAAC,qBAAqB,CAAC,UACtC,MAAM,UACN,MAAM,KACb,OAOF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/plugin-page-view-tracking-browser",
3
- "version": "2.2.7-beta.0",
3
+ "version": "2.2.8",
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": "^2.1.4-beta.0",
39
+ "@amplitude/analytics-client-common": "^2.1.5",
40
40
  "@amplitude/analytics-types": "^2.5.0",
41
41
  "tslib": "^2.4.1"
42
42
  },
43
43
  "devDependencies": {
44
- "@amplitude/analytics-browser": "^2.6.3-beta.0",
44
+ "@amplitude/analytics-browser": "^2.7.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": "e55f597fcaed19a1deeb8ec02d8e623593a7b3e8"
56
+ "gitHead": "62e8e4aa56193545588e67ad5c431dabb4945e39"
57
57
  }