@amplitude/plugin-page-url-enrichment-browser 0.4.3 → 0.5.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":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAQtB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAQF,eAAO,MAAM,4BAA4B,aAIvC,CAAC;AAEH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,gBAgK1C,CAAC"}
1
+ {"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAQtB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAQF,eAAO,MAAM,4BAA4B,aAIvC,CAAC;AAEH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,gBA2K1C,CAAC"}
@@ -59,7 +59,7 @@ var pageUrlEnrichmentPlugin = function () {
59
59
  }
60
60
  };
61
61
  var saveURLInfo = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
62
- var URLInfo, previousURL, currentURL;
62
+ var URLInfo, currentURL, storedCurrentURL, previousURL;
63
63
  var _a;
64
64
  return tslib_1.__generator(this, function (_b) {
65
65
  switch (_b.label) {
@@ -68,8 +68,18 @@ var pageUrlEnrichmentPlugin = function () {
68
68
  return [4 /*yield*/, sessionStorage.get(exports.URL_INFO_STORAGE_KEY)];
69
69
  case 1:
70
70
  URLInfo = _b.sent();
71
- previousURL = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[exports.CURRENT_PAGE_STORAGE_KEY]) || '';
72
71
  currentURL = (0, analytics_core_1.getDecodeURI)((typeof location !== 'undefined' && location.href) || '');
72
+ storedCurrentURL = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[exports.CURRENT_PAGE_STORAGE_KEY]) || '';
73
+ previousURL = void 0;
74
+ if (currentURL === storedCurrentURL) {
75
+ previousURL = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[exports.PREVIOUS_PAGE_STORAGE_KEY]) || '';
76
+ }
77
+ else if (storedCurrentURL) {
78
+ previousURL = storedCurrentURL;
79
+ }
80
+ else {
81
+ previousURL = document.referrer || '';
82
+ }
73
83
  return [4 /*yield*/, sessionStorage.set(exports.URL_INFO_STORAGE_KEY, (_a = {},
74
84
  _a[exports.CURRENT_PAGE_STORAGE_KEY] = currentURL,
75
85
  _a[exports.PREVIOUS_PAGE_STORAGE_KEY] = previousURL,
@@ -133,31 +143,38 @@ var pageUrlEnrichmentPlugin = function () {
133
143
  });
134
144
  }); },
135
145
  execute: function (event) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
136
- var locationHREF, previousPage, URLInfo;
146
+ var locationHREF, URLInfo, updatedURLInfo, previousPage;
137
147
  var _a;
138
148
  return tslib_1.__generator(this, function (_b) {
139
149
  switch (_b.label) {
140
150
  case 0:
141
151
  locationHREF = (0, analytics_core_1.getDecodeURI)((typeof location !== 'undefined' && location.href) || '');
142
- previousPage = '';
143
- if (!(sessionStorage && isStorageEnabled)) return [3 /*break*/, 4];
152
+ if (!(sessionStorage && isStorageEnabled)) return [3 /*break*/, 5];
144
153
  return [4 /*yield*/, sessionStorage.get(exports.URL_INFO_STORAGE_KEY)];
145
154
  case 1:
146
155
  URLInfo = _b.sent();
147
- previousPage = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[exports.PREVIOUS_PAGE_STORAGE_KEY]) || document.referrer || '';
148
156
  if (!!(URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[exports.CURRENT_PAGE_STORAGE_KEY])) return [3 /*break*/, 3];
149
- return [4 /*yield*/, sessionStorage.set(exports.URL_INFO_STORAGE_KEY, tslib_1.__assign(tslib_1.__assign({}, (URLInfo || {})), (_a = {}, _a[exports.CURRENT_PAGE_STORAGE_KEY] = locationHREF, _a[exports.PREVIOUS_PAGE_STORAGE_KEY] = previousPage, _a)))];
157
+ return [4 /*yield*/, sessionStorage.set(exports.URL_INFO_STORAGE_KEY, (_a = {},
158
+ _a[exports.CURRENT_PAGE_STORAGE_KEY] = locationHREF,
159
+ _a[exports.PREVIOUS_PAGE_STORAGE_KEY] = document.referrer || '',
160
+ _a))];
150
161
  case 2:
151
162
  _b.sent();
152
163
  _b.label = 3;
153
- case 3:
164
+ case 3: return [4 /*yield*/, sessionStorage.get(exports.URL_INFO_STORAGE_KEY)];
165
+ case 4:
166
+ updatedURLInfo = _b.sent();
167
+ previousPage = '';
168
+ if (updatedURLInfo) {
169
+ previousPage = updatedURLInfo[exports.PREVIOUS_PAGE_STORAGE_KEY] || '';
170
+ }
154
171
  // no need to proceed to add additional properties if the event is one of the default event types to be excluded
155
172
  if (exports.EXCLUDED_DEFAULT_EVENT_TYPES.has(event.event_type)) {
156
173
  return [2 /*return*/, event];
157
174
  }
158
175
  event.event_properties = tslib_1.__assign(tslib_1.__assign({}, (event.event_properties || {})), { '[Amplitude] Page Domain': addIfNotExist(event, '[Amplitude] Page Domain', (typeof location !== 'undefined' && location.hostname) || ''), '[Amplitude] Page Location': addIfNotExist(event, '[Amplitude] Page Location', locationHREF), '[Amplitude] Page Path': addIfNotExist(event, '[Amplitude] Page Path', (typeof location !== 'undefined' && (0, analytics_core_1.getDecodeURI)(location.pathname)) || ''), '[Amplitude] Page Title': addIfNotExist(event, '[Amplitude] Page Title', (0, analytics_core_1.getPageTitle)(analytics_core_1.replaceSensitiveString)), '[Amplitude] Page URL': addIfNotExist(event, '[Amplitude] Page URL', locationHREF.split('?')[0]), '[Amplitude] Previous Page Location': previousPage, '[Amplitude] Previous Page Type': getPrevPageType(previousPage) });
159
- _b.label = 4;
160
- case 4: return [2 /*return*/, event];
176
+ _b.label = 5;
177
+ case 5: return [2 /*return*/, event];
161
178
  }
162
179
  });
163
180
  }); },
@@ -165,9 +182,10 @@ var pageUrlEnrichmentPlugin = function () {
165
182
  return tslib_1.__generator(this, function (_a) {
166
183
  switch (_a.label) {
167
184
  case 0:
168
- if (!globalScope) return [3 /*break*/, 2];
169
- globalScope.removeEventListener('popstate', saveUrlInfoWrapper);
170
- isTracking = false;
185
+ if (globalScope) {
186
+ globalScope.removeEventListener('popstate', saveUrlInfoWrapper);
187
+ isTracking = false;
188
+ }
171
189
  if (!(sessionStorage && isStorageEnabled)) return [3 /*break*/, 2];
172
190
  return [4 /*yield*/, sessionStorage.set(exports.URL_INFO_STORAGE_KEY, {})];
173
191
  case 1:
@@ -1 +1 @@
1
- {"version":3,"file":"page-url-enrichment.js","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type BrowserClient,\n type BrowserConfig,\n BrowserStorage,\n type EnrichmentPlugin,\n type Event,\n getDecodeURI,\n getGlobalScope,\n getPageTitle,\n type ILogger,\n replaceSensitiveString,\n SpecialEventType,\n} from '@amplitude/analytics-core';\n\nexport const CURRENT_PAGE_STORAGE_KEY = 'AMP_CURRENT_PAGE';\nexport const PREVIOUS_PAGE_STORAGE_KEY = 'AMP_PREVIOUS_PAGE';\n\nexport const URL_INFO_STORAGE_KEY = 'AMP_URL_INFO';\n\nexport type URLInfo = {\n [CURRENT_PAGE_STORAGE_KEY]?: string;\n [PREVIOUS_PAGE_STORAGE_KEY]?: string;\n};\n\nenum PreviousPageType {\n Direct = 'direct', // for no prev page or referrer\n Internal = 'internal', // for same domain - this excludes subdomains\n External = 'external', // for different domains\n}\n\nexport const EXCLUDED_DEFAULT_EVENT_TYPES = new Set<string>([\n SpecialEventType.IDENTIFY,\n SpecialEventType.GROUP_IDENTIFY,\n SpecialEventType.REVENUE,\n]);\n\nexport const isPageUrlEnrichmentEnabled = (option: unknown): boolean => {\n if (typeof option === 'boolean') {\n return option;\n }\n if (typeof option === 'object' && option !== null && 'pageUrlEnrichment' in option) {\n return Boolean((option as { pageUrlEnrichment?: boolean }).pageUrlEnrichment);\n }\n return false;\n};\n\nexport const pageUrlEnrichmentPlugin = (): EnrichmentPlugin => {\n const globalScope = getGlobalScope();\n let sessionStorage: BrowserStorage<URLInfo> | undefined = undefined;\n let isStorageEnabled = false;\n let loggerProvider: ILogger | undefined = undefined;\n\n let isProxied = false;\n let isTracking = false;\n\n const getHostname = (url: string): string | undefined => {\n let hostname: string | undefined;\n\n try {\n const decodedUrl = getDecodeURI(url, loggerProvider);\n hostname = new URL(decodedUrl).hostname;\n } catch (e) {\n /* istanbul ignore next */\n loggerProvider?.error('Could not parse URL: ', e);\n }\n\n return hostname;\n };\n\n const getPrevPageType = (previousPage: string) => {\n const currentDomain = (typeof location !== 'undefined' && location.hostname) || '';\n const previousPageDomain = previousPage ? getHostname(previousPage) : undefined;\n\n switch (previousPageDomain) {\n case undefined:\n return PreviousPageType.Direct;\n case currentDomain:\n return PreviousPageType.Internal;\n default:\n return PreviousPageType.External;\n }\n };\n\n const saveURLInfo = async () => {\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n const previousURL = URLInfo?.[CURRENT_PAGE_STORAGE_KEY] || '';\n const currentURL = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n [CURRENT_PAGE_STORAGE_KEY]: currentURL,\n [PREVIOUS_PAGE_STORAGE_KEY]: previousURL,\n });\n }\n };\n\n const saveUrlInfoWrapper = () => {\n void saveURLInfo();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-url-enrichment-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, _: BrowserClient) => {\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-url-enrichment-browser');\n\n isTracking = true;\n\n if (globalScope) {\n sessionStorage = new BrowserStorage<URLInfo>(globalScope.sessionStorage);\n isStorageEnabled = await sessionStorage.isEnabled();\n\n globalScope.addEventListener('popstate', saveUrlInfoWrapper);\n\n if (!isProxied) {\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState and replaceState 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 if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.replaceState = new Proxy(globalScope.history.replaceState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n isProxied = true;\n }\n }\n },\n execute: async (event: Event) => {\n const locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n\n let previousPage = '';\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n previousPage = URLInfo?.[PREVIOUS_PAGE_STORAGE_KEY] || document.referrer || '';\n\n if (!URLInfo?.[CURRENT_PAGE_STORAGE_KEY]) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n ...(URLInfo || {}),\n [CURRENT_PAGE_STORAGE_KEY]: locationHREF,\n [PREVIOUS_PAGE_STORAGE_KEY]: previousPage,\n });\n }\n\n // no need to proceed to add additional properties if the event is one of the default event types to be excluded\n if (EXCLUDED_DEFAULT_EVENT_TYPES.has(event.event_type)) {\n return event;\n }\n\n event.event_properties = {\n ...(event.event_properties || {}),\n '[Amplitude] Page Domain': addIfNotExist(\n event,\n '[Amplitude] Page Domain',\n (typeof location !== 'undefined' && location.hostname) || '',\n ),\n '[Amplitude] Page Location': addIfNotExist(event, '[Amplitude] Page Location', locationHREF),\n '[Amplitude] Page Path': addIfNotExist(\n event,\n '[Amplitude] Page Path',\n (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || '',\n ),\n '[Amplitude] Page Title': addIfNotExist(\n event,\n '[Amplitude] Page Title',\n getPageTitle(replaceSensitiveString),\n ),\n '[Amplitude] Page URL': addIfNotExist(event, '[Amplitude] Page URL', locationHREF.split('?')[0]),\n '[Amplitude] Previous Page Location': previousPage,\n '[Amplitude] Previous Page Type': getPrevPageType(previousPage),\n };\n }\n\n return event;\n },\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', saveUrlInfoWrapper);\n\n isTracking = false;\n\n if (sessionStorage && isStorageEnabled) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {});\n }\n }\n },\n };\n\n return plugin;\n};\n\nfunction addIfNotExist(event: Event, key: string, value: string): string {\n if (!event.event_properties) {\n event.event_properties = {};\n }\n\n if ((event.event_properties as { [key: string]: any })[key] === undefined) {\n return value;\n }\n\n return (event.event_properties as { [key: string]: any })[key] as string;\n}\n"]}
1
+ {"version":3,"file":"page-url-enrichment.js","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type BrowserClient,\n type BrowserConfig,\n BrowserStorage,\n type EnrichmentPlugin,\n type Event,\n getDecodeURI,\n getGlobalScope,\n getPageTitle,\n type ILogger,\n replaceSensitiveString,\n SpecialEventType,\n} from '@amplitude/analytics-core';\n\nexport const CURRENT_PAGE_STORAGE_KEY = 'AMP_CURRENT_PAGE';\nexport const PREVIOUS_PAGE_STORAGE_KEY = 'AMP_PREVIOUS_PAGE';\nexport const URL_INFO_STORAGE_KEY = 'AMP_URL_INFO';\n\nexport type URLInfo = {\n [CURRENT_PAGE_STORAGE_KEY]?: string;\n [PREVIOUS_PAGE_STORAGE_KEY]?: string;\n};\n\nenum PreviousPageType {\n Direct = 'direct', // for no prev page or referrer\n Internal = 'internal', // for same domain - this excludes subdomains\n External = 'external', // for different domains\n}\n\nexport const EXCLUDED_DEFAULT_EVENT_TYPES = new Set<string>([\n SpecialEventType.IDENTIFY,\n SpecialEventType.GROUP_IDENTIFY,\n SpecialEventType.REVENUE,\n]);\n\nexport const isPageUrlEnrichmentEnabled = (option: unknown): boolean => {\n if (typeof option === 'boolean') {\n return option;\n }\n if (typeof option === 'object' && option !== null && 'pageUrlEnrichment' in option) {\n return Boolean((option as { pageUrlEnrichment?: boolean }).pageUrlEnrichment);\n }\n return false;\n};\n\nexport const pageUrlEnrichmentPlugin = (): EnrichmentPlugin => {\n const globalScope = getGlobalScope();\n let sessionStorage: BrowserStorage<URLInfo> | undefined = undefined;\n let isStorageEnabled = false;\n let loggerProvider: ILogger | undefined = undefined;\n\n let isProxied = false;\n let isTracking = false;\n\n const getHostname = (url: string): string | undefined => {\n let hostname: string | undefined;\n\n try {\n const decodedUrl = getDecodeURI(url, loggerProvider);\n hostname = new URL(decodedUrl).hostname;\n } catch (e) {\n /* istanbul ignore next */\n loggerProvider?.error('Could not parse URL: ', e);\n }\n\n return hostname;\n };\n\n const getPrevPageType = (previousPage: string) => {\n const currentDomain = (typeof location !== 'undefined' && location.hostname) || '';\n const previousPageDomain = previousPage ? getHostname(previousPage) : undefined;\n\n switch (previousPageDomain) {\n case undefined:\n return PreviousPageType.Direct;\n case currentDomain:\n return PreviousPageType.Internal;\n default:\n return PreviousPageType.External;\n }\n };\n\n const saveURLInfo = async () => {\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n const currentURL = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n const storedCurrentURL = URLInfo?.[CURRENT_PAGE_STORAGE_KEY] || '';\n\n let previousURL;\n if (currentURL === storedCurrentURL) {\n previousURL = URLInfo?.[PREVIOUS_PAGE_STORAGE_KEY] || '';\n } else if (storedCurrentURL) {\n previousURL = storedCurrentURL;\n } else {\n previousURL = document.referrer || '';\n }\n\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n [CURRENT_PAGE_STORAGE_KEY]: currentURL,\n [PREVIOUS_PAGE_STORAGE_KEY]: previousURL,\n });\n }\n };\n\n const saveUrlInfoWrapper = () => {\n void saveURLInfo();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-url-enrichment-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, _: BrowserClient) => {\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-url-enrichment-browser');\n\n isTracking = true;\n\n if (globalScope) {\n sessionStorage = new BrowserStorage<URLInfo>(globalScope.sessionStorage);\n isStorageEnabled = await sessionStorage.isEnabled();\n\n globalScope.addEventListener('popstate', saveUrlInfoWrapper);\n\n if (!isProxied) {\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState and replaceState 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 if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.replaceState = new Proxy(globalScope.history.replaceState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n isProxied = true;\n }\n }\n },\n execute: async (event: Event) => {\n const locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n if (!URLInfo?.[CURRENT_PAGE_STORAGE_KEY]) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n [CURRENT_PAGE_STORAGE_KEY]: locationHREF,\n [PREVIOUS_PAGE_STORAGE_KEY]: document.referrer || '',\n });\n }\n\n const updatedURLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n let previousPage = '';\n if (updatedURLInfo) {\n previousPage = updatedURLInfo[PREVIOUS_PAGE_STORAGE_KEY] || '';\n }\n\n // no need to proceed to add additional properties if the event is one of the default event types to be excluded\n if (EXCLUDED_DEFAULT_EVENT_TYPES.has(event.event_type)) {\n return event;\n }\n\n event.event_properties = {\n ...(event.event_properties || {}),\n '[Amplitude] Page Domain': addIfNotExist(\n event,\n '[Amplitude] Page Domain',\n (typeof location !== 'undefined' && location.hostname) || '',\n ),\n '[Amplitude] Page Location': addIfNotExist(event, '[Amplitude] Page Location', locationHREF),\n '[Amplitude] Page Path': addIfNotExist(\n event,\n '[Amplitude] Page Path',\n (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || '',\n ),\n '[Amplitude] Page Title': addIfNotExist(\n event,\n '[Amplitude] Page Title',\n getPageTitle(replaceSensitiveString),\n ),\n '[Amplitude] Page URL': addIfNotExist(event, '[Amplitude] Page URL', locationHREF.split('?')[0]),\n '[Amplitude] Previous Page Location': previousPage,\n '[Amplitude] Previous Page Type': getPrevPageType(previousPage),\n };\n }\n\n return event;\n },\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', saveUrlInfoWrapper);\n\n isTracking = false;\n }\n\n if (sessionStorage && isStorageEnabled) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {});\n }\n },\n };\n\n return plugin;\n};\n\nfunction addIfNotExist(event: Event, key: string, value: string): string {\n if (!event.event_properties) {\n event.event_properties = {};\n }\n\n if ((event.event_properties as { [key: string]: any })[key] === undefined) {\n return value;\n }\n\n return (event.event_properties as { [key: string]: any })[key] as string;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAQtB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAQF,eAAO,MAAM,4BAA4B,aAIvC,CAAC;AAEH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,gBAgK1C,CAAC"}
1
+ {"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAQtB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAQF,eAAO,MAAM,4BAA4B,aAIvC,CAAC;AAEH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,gBA2K1C,CAAC"}
@@ -55,7 +55,7 @@ export var pageUrlEnrichmentPlugin = function () {
55
55
  }
56
56
  };
57
57
  var saveURLInfo = function () { return __awaiter(void 0, void 0, void 0, function () {
58
- var URLInfo, previousURL, currentURL;
58
+ var URLInfo, currentURL, storedCurrentURL, previousURL;
59
59
  var _a;
60
60
  return __generator(this, function (_b) {
61
61
  switch (_b.label) {
@@ -64,8 +64,18 @@ export var pageUrlEnrichmentPlugin = function () {
64
64
  return [4 /*yield*/, sessionStorage.get(URL_INFO_STORAGE_KEY)];
65
65
  case 1:
66
66
  URLInfo = _b.sent();
67
- previousURL = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[CURRENT_PAGE_STORAGE_KEY]) || '';
68
67
  currentURL = getDecodeURI((typeof location !== 'undefined' && location.href) || '');
68
+ storedCurrentURL = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[CURRENT_PAGE_STORAGE_KEY]) || '';
69
+ previousURL = void 0;
70
+ if (currentURL === storedCurrentURL) {
71
+ previousURL = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[PREVIOUS_PAGE_STORAGE_KEY]) || '';
72
+ }
73
+ else if (storedCurrentURL) {
74
+ previousURL = storedCurrentURL;
75
+ }
76
+ else {
77
+ previousURL = document.referrer || '';
78
+ }
69
79
  return [4 /*yield*/, sessionStorage.set(URL_INFO_STORAGE_KEY, (_a = {},
70
80
  _a[CURRENT_PAGE_STORAGE_KEY] = currentURL,
71
81
  _a[PREVIOUS_PAGE_STORAGE_KEY] = previousURL,
@@ -129,31 +139,38 @@ export var pageUrlEnrichmentPlugin = function () {
129
139
  });
130
140
  }); },
131
141
  execute: function (event) { return __awaiter(void 0, void 0, void 0, function () {
132
- var locationHREF, previousPage, URLInfo;
142
+ var locationHREF, URLInfo, updatedURLInfo, previousPage;
133
143
  var _a;
134
144
  return __generator(this, function (_b) {
135
145
  switch (_b.label) {
136
146
  case 0:
137
147
  locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');
138
- previousPage = '';
139
- if (!(sessionStorage && isStorageEnabled)) return [3 /*break*/, 4];
148
+ if (!(sessionStorage && isStorageEnabled)) return [3 /*break*/, 5];
140
149
  return [4 /*yield*/, sessionStorage.get(URL_INFO_STORAGE_KEY)];
141
150
  case 1:
142
151
  URLInfo = _b.sent();
143
- previousPage = (URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[PREVIOUS_PAGE_STORAGE_KEY]) || document.referrer || '';
144
152
  if (!!(URLInfo === null || URLInfo === void 0 ? void 0 : URLInfo[CURRENT_PAGE_STORAGE_KEY])) return [3 /*break*/, 3];
145
- return [4 /*yield*/, sessionStorage.set(URL_INFO_STORAGE_KEY, __assign(__assign({}, (URLInfo || {})), (_a = {}, _a[CURRENT_PAGE_STORAGE_KEY] = locationHREF, _a[PREVIOUS_PAGE_STORAGE_KEY] = previousPage, _a)))];
153
+ return [4 /*yield*/, sessionStorage.set(URL_INFO_STORAGE_KEY, (_a = {},
154
+ _a[CURRENT_PAGE_STORAGE_KEY] = locationHREF,
155
+ _a[PREVIOUS_PAGE_STORAGE_KEY] = document.referrer || '',
156
+ _a))];
146
157
  case 2:
147
158
  _b.sent();
148
159
  _b.label = 3;
149
- case 3:
160
+ case 3: return [4 /*yield*/, sessionStorage.get(URL_INFO_STORAGE_KEY)];
161
+ case 4:
162
+ updatedURLInfo = _b.sent();
163
+ previousPage = '';
164
+ if (updatedURLInfo) {
165
+ previousPage = updatedURLInfo[PREVIOUS_PAGE_STORAGE_KEY] || '';
166
+ }
150
167
  // no need to proceed to add additional properties if the event is one of the default event types to be excluded
151
168
  if (EXCLUDED_DEFAULT_EVENT_TYPES.has(event.event_type)) {
152
169
  return [2 /*return*/, event];
153
170
  }
154
171
  event.event_properties = __assign(__assign({}, (event.event_properties || {})), { '[Amplitude] Page Domain': addIfNotExist(event, '[Amplitude] Page Domain', (typeof location !== 'undefined' && location.hostname) || ''), '[Amplitude] Page Location': addIfNotExist(event, '[Amplitude] Page Location', locationHREF), '[Amplitude] Page Path': addIfNotExist(event, '[Amplitude] Page Path', (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || ''), '[Amplitude] Page Title': addIfNotExist(event, '[Amplitude] Page Title', getPageTitle(replaceSensitiveString)), '[Amplitude] Page URL': addIfNotExist(event, '[Amplitude] Page URL', locationHREF.split('?')[0]), '[Amplitude] Previous Page Location': previousPage, '[Amplitude] Previous Page Type': getPrevPageType(previousPage) });
155
- _b.label = 4;
156
- case 4: return [2 /*return*/, event];
172
+ _b.label = 5;
173
+ case 5: return [2 /*return*/, event];
157
174
  }
158
175
  });
159
176
  }); },
@@ -161,9 +178,10 @@ export var pageUrlEnrichmentPlugin = function () {
161
178
  return __generator(this, function (_a) {
162
179
  switch (_a.label) {
163
180
  case 0:
164
- if (!globalScope) return [3 /*break*/, 2];
165
- globalScope.removeEventListener('popstate', saveUrlInfoWrapper);
166
- isTracking = false;
181
+ if (globalScope) {
182
+ globalScope.removeEventListener('popstate', saveUrlInfoWrapper);
183
+ isTracking = false;
184
+ }
167
185
  if (!(sessionStorage && isStorageEnabled)) return [3 /*break*/, 2];
168
186
  return [4 /*yield*/, sessionStorage.set(URL_INFO_STORAGE_KEY, {})];
169
187
  case 1:
@@ -1 +1 @@
1
- {"version":3,"file":"page-url-enrichment.js","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type BrowserClient,\n type BrowserConfig,\n BrowserStorage,\n type EnrichmentPlugin,\n type Event,\n getDecodeURI,\n getGlobalScope,\n getPageTitle,\n type ILogger,\n replaceSensitiveString,\n SpecialEventType,\n} from '@amplitude/analytics-core';\n\nexport const CURRENT_PAGE_STORAGE_KEY = 'AMP_CURRENT_PAGE';\nexport const PREVIOUS_PAGE_STORAGE_KEY = 'AMP_PREVIOUS_PAGE';\n\nexport const URL_INFO_STORAGE_KEY = 'AMP_URL_INFO';\n\nexport type URLInfo = {\n [CURRENT_PAGE_STORAGE_KEY]?: string;\n [PREVIOUS_PAGE_STORAGE_KEY]?: string;\n};\n\nenum PreviousPageType {\n Direct = 'direct', // for no prev page or referrer\n Internal = 'internal', // for same domain - this excludes subdomains\n External = 'external', // for different domains\n}\n\nexport const EXCLUDED_DEFAULT_EVENT_TYPES = new Set<string>([\n SpecialEventType.IDENTIFY,\n SpecialEventType.GROUP_IDENTIFY,\n SpecialEventType.REVENUE,\n]);\n\nexport const isPageUrlEnrichmentEnabled = (option: unknown): boolean => {\n if (typeof option === 'boolean') {\n return option;\n }\n if (typeof option === 'object' && option !== null && 'pageUrlEnrichment' in option) {\n return Boolean((option as { pageUrlEnrichment?: boolean }).pageUrlEnrichment);\n }\n return false;\n};\n\nexport const pageUrlEnrichmentPlugin = (): EnrichmentPlugin => {\n const globalScope = getGlobalScope();\n let sessionStorage: BrowserStorage<URLInfo> | undefined = undefined;\n let isStorageEnabled = false;\n let loggerProvider: ILogger | undefined = undefined;\n\n let isProxied = false;\n let isTracking = false;\n\n const getHostname = (url: string): string | undefined => {\n let hostname: string | undefined;\n\n try {\n const decodedUrl = getDecodeURI(url, loggerProvider);\n hostname = new URL(decodedUrl).hostname;\n } catch (e) {\n /* istanbul ignore next */\n loggerProvider?.error('Could not parse URL: ', e);\n }\n\n return hostname;\n };\n\n const getPrevPageType = (previousPage: string) => {\n const currentDomain = (typeof location !== 'undefined' && location.hostname) || '';\n const previousPageDomain = previousPage ? getHostname(previousPage) : undefined;\n\n switch (previousPageDomain) {\n case undefined:\n return PreviousPageType.Direct;\n case currentDomain:\n return PreviousPageType.Internal;\n default:\n return PreviousPageType.External;\n }\n };\n\n const saveURLInfo = async () => {\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n const previousURL = URLInfo?.[CURRENT_PAGE_STORAGE_KEY] || '';\n const currentURL = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n [CURRENT_PAGE_STORAGE_KEY]: currentURL,\n [PREVIOUS_PAGE_STORAGE_KEY]: previousURL,\n });\n }\n };\n\n const saveUrlInfoWrapper = () => {\n void saveURLInfo();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-url-enrichment-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, _: BrowserClient) => {\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-url-enrichment-browser');\n\n isTracking = true;\n\n if (globalScope) {\n sessionStorage = new BrowserStorage<URLInfo>(globalScope.sessionStorage);\n isStorageEnabled = await sessionStorage.isEnabled();\n\n globalScope.addEventListener('popstate', saveUrlInfoWrapper);\n\n if (!isProxied) {\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState and replaceState 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 if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.replaceState = new Proxy(globalScope.history.replaceState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n isProxied = true;\n }\n }\n },\n execute: async (event: Event) => {\n const locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n\n let previousPage = '';\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n previousPage = URLInfo?.[PREVIOUS_PAGE_STORAGE_KEY] || document.referrer || '';\n\n if (!URLInfo?.[CURRENT_PAGE_STORAGE_KEY]) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n ...(URLInfo || {}),\n [CURRENT_PAGE_STORAGE_KEY]: locationHREF,\n [PREVIOUS_PAGE_STORAGE_KEY]: previousPage,\n });\n }\n\n // no need to proceed to add additional properties if the event is one of the default event types to be excluded\n if (EXCLUDED_DEFAULT_EVENT_TYPES.has(event.event_type)) {\n return event;\n }\n\n event.event_properties = {\n ...(event.event_properties || {}),\n '[Amplitude] Page Domain': addIfNotExist(\n event,\n '[Amplitude] Page Domain',\n (typeof location !== 'undefined' && location.hostname) || '',\n ),\n '[Amplitude] Page Location': addIfNotExist(event, '[Amplitude] Page Location', locationHREF),\n '[Amplitude] Page Path': addIfNotExist(\n event,\n '[Amplitude] Page Path',\n (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || '',\n ),\n '[Amplitude] Page Title': addIfNotExist(\n event,\n '[Amplitude] Page Title',\n getPageTitle(replaceSensitiveString),\n ),\n '[Amplitude] Page URL': addIfNotExist(event, '[Amplitude] Page URL', locationHREF.split('?')[0]),\n '[Amplitude] Previous Page Location': previousPage,\n '[Amplitude] Previous Page Type': getPrevPageType(previousPage),\n };\n }\n\n return event;\n },\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', saveUrlInfoWrapper);\n\n isTracking = false;\n\n if (sessionStorage && isStorageEnabled) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {});\n }\n }\n },\n };\n\n return plugin;\n};\n\nfunction addIfNotExist(event: Event, key: string, value: string): string {\n if (!event.event_properties) {\n event.event_properties = {};\n }\n\n if ((event.event_properties as { [key: string]: any })[key] === undefined) {\n return value;\n }\n\n return (event.event_properties as { [key: string]: any })[key] as string;\n}\n"]}
1
+ {"version":3,"file":"page-url-enrichment.js","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type BrowserClient,\n type BrowserConfig,\n BrowserStorage,\n type EnrichmentPlugin,\n type Event,\n getDecodeURI,\n getGlobalScope,\n getPageTitle,\n type ILogger,\n replaceSensitiveString,\n SpecialEventType,\n} from '@amplitude/analytics-core';\n\nexport const CURRENT_PAGE_STORAGE_KEY = 'AMP_CURRENT_PAGE';\nexport const PREVIOUS_PAGE_STORAGE_KEY = 'AMP_PREVIOUS_PAGE';\nexport const URL_INFO_STORAGE_KEY = 'AMP_URL_INFO';\n\nexport type URLInfo = {\n [CURRENT_PAGE_STORAGE_KEY]?: string;\n [PREVIOUS_PAGE_STORAGE_KEY]?: string;\n};\n\nenum PreviousPageType {\n Direct = 'direct', // for no prev page or referrer\n Internal = 'internal', // for same domain - this excludes subdomains\n External = 'external', // for different domains\n}\n\nexport const EXCLUDED_DEFAULT_EVENT_TYPES = new Set<string>([\n SpecialEventType.IDENTIFY,\n SpecialEventType.GROUP_IDENTIFY,\n SpecialEventType.REVENUE,\n]);\n\nexport const isPageUrlEnrichmentEnabled = (option: unknown): boolean => {\n if (typeof option === 'boolean') {\n return option;\n }\n if (typeof option === 'object' && option !== null && 'pageUrlEnrichment' in option) {\n return Boolean((option as { pageUrlEnrichment?: boolean }).pageUrlEnrichment);\n }\n return false;\n};\n\nexport const pageUrlEnrichmentPlugin = (): EnrichmentPlugin => {\n const globalScope = getGlobalScope();\n let sessionStorage: BrowserStorage<URLInfo> | undefined = undefined;\n let isStorageEnabled = false;\n let loggerProvider: ILogger | undefined = undefined;\n\n let isProxied = false;\n let isTracking = false;\n\n const getHostname = (url: string): string | undefined => {\n let hostname: string | undefined;\n\n try {\n const decodedUrl = getDecodeURI(url, loggerProvider);\n hostname = new URL(decodedUrl).hostname;\n } catch (e) {\n /* istanbul ignore next */\n loggerProvider?.error('Could not parse URL: ', e);\n }\n\n return hostname;\n };\n\n const getPrevPageType = (previousPage: string) => {\n const currentDomain = (typeof location !== 'undefined' && location.hostname) || '';\n const previousPageDomain = previousPage ? getHostname(previousPage) : undefined;\n\n switch (previousPageDomain) {\n case undefined:\n return PreviousPageType.Direct;\n case currentDomain:\n return PreviousPageType.Internal;\n default:\n return PreviousPageType.External;\n }\n };\n\n const saveURLInfo = async () => {\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n const currentURL = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n const storedCurrentURL = URLInfo?.[CURRENT_PAGE_STORAGE_KEY] || '';\n\n let previousURL;\n if (currentURL === storedCurrentURL) {\n previousURL = URLInfo?.[PREVIOUS_PAGE_STORAGE_KEY] || '';\n } else if (storedCurrentURL) {\n previousURL = storedCurrentURL;\n } else {\n previousURL = document.referrer || '';\n }\n\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n [CURRENT_PAGE_STORAGE_KEY]: currentURL,\n [PREVIOUS_PAGE_STORAGE_KEY]: previousURL,\n });\n }\n };\n\n const saveUrlInfoWrapper = () => {\n void saveURLInfo();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-url-enrichment-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, _: BrowserClient) => {\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-url-enrichment-browser');\n\n isTracking = true;\n\n if (globalScope) {\n sessionStorage = new BrowserStorage<URLInfo>(globalScope.sessionStorage);\n isStorageEnabled = await sessionStorage.isEnabled();\n\n globalScope.addEventListener('popstate', saveUrlInfoWrapper);\n\n if (!isProxied) {\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState and replaceState 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 if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.replaceState = new Proxy(globalScope.history.replaceState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n if (isTracking) {\n saveUrlInfoWrapper();\n }\n },\n });\n\n isProxied = true;\n }\n }\n },\n execute: async (event: Event) => {\n const locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n\n if (sessionStorage && isStorageEnabled) {\n const URLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n if (!URLInfo?.[CURRENT_PAGE_STORAGE_KEY]) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {\n [CURRENT_PAGE_STORAGE_KEY]: locationHREF,\n [PREVIOUS_PAGE_STORAGE_KEY]: document.referrer || '',\n });\n }\n\n const updatedURLInfo = await sessionStorage.get(URL_INFO_STORAGE_KEY);\n let previousPage = '';\n if (updatedURLInfo) {\n previousPage = updatedURLInfo[PREVIOUS_PAGE_STORAGE_KEY] || '';\n }\n\n // no need to proceed to add additional properties if the event is one of the default event types to be excluded\n if (EXCLUDED_DEFAULT_EVENT_TYPES.has(event.event_type)) {\n return event;\n }\n\n event.event_properties = {\n ...(event.event_properties || {}),\n '[Amplitude] Page Domain': addIfNotExist(\n event,\n '[Amplitude] Page Domain',\n (typeof location !== 'undefined' && location.hostname) || '',\n ),\n '[Amplitude] Page Location': addIfNotExist(event, '[Amplitude] Page Location', locationHREF),\n '[Amplitude] Page Path': addIfNotExist(\n event,\n '[Amplitude] Page Path',\n (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || '',\n ),\n '[Amplitude] Page Title': addIfNotExist(\n event,\n '[Amplitude] Page Title',\n getPageTitle(replaceSensitiveString),\n ),\n '[Amplitude] Page URL': addIfNotExist(event, '[Amplitude] Page URL', locationHREF.split('?')[0]),\n '[Amplitude] Previous Page Location': previousPage,\n '[Amplitude] Previous Page Type': getPrevPageType(previousPage),\n };\n }\n\n return event;\n },\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', saveUrlInfoWrapper);\n\n isTracking = false;\n }\n\n if (sessionStorage && isStorageEnabled) {\n await sessionStorage.set(URL_INFO_STORAGE_KEY, {});\n }\n },\n };\n\n return plugin;\n};\n\nfunction addIfNotExist(event: Event, key: string, value: string): string {\n if (!event.event_properties) {\n event.event_properties = {};\n }\n\n if ((event.event_properties as { [key: string]: any })[key] === undefined) {\n return value;\n }\n\n return (event.event_properties as { [key: string]: any })[key] as string;\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,n,r=function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)};function o(e,t,n,r){return new(n||(n=Promise))(function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function u(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,u)}l((r=r.apply(e,t||[])).next())})}function i(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=u(0),a.throw=u(1),a.return=u(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(u){return function(l){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,l])}}}function a(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}"function"==typeof SuppressedError&&SuppressedError,function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(t||(t={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(n||(n={}));var u,l=function(e,t){var n=e;try{n=decodeURI(e)}catch(e){null==t||t.error("Malformed URI sequence: ",e)}return n},c=function(){function e(e){this.storage=e}return e.prototype.isEnabled=function(){return o(this,void 0,void 0,function(){var t,n,r;return i(this,function(o){switch(o.label){case 0:if(!this.storage)return[2,!1];t=String(Date.now()),n=new e(this.storage),r="AMP_TEST",o.label=1;case 1:return o.trys.push([1,4,5,7]),[4,n.set(r,t)];case 2:return o.sent(),[4,n.get(r)];case 3:return[2,o.sent()===t];case 4:return o.sent(),[2,!1];case 5:return[4,n.remove(r)];case 6:return o.sent(),[7];case 7:return[2]}})})},e.prototype.get=function(e){return o(this,void 0,void 0,function(){var t;return i(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.getRaw(e)];case 1:return(t=n.sent())?[2,JSON.parse(t)]:[2,void 0];case 2:return n.sent(),console.error("[Amplitude] Error: Could not get value from storage"),[2,void 0];case 3:return[2]}})})},e.prototype.getRaw=function(e){var t;return o(this,void 0,void 0,function(){return i(this,function(n){return[2,(null===(t=this.storage)||void 0===t?void 0:t.getItem(e))||void 0]})})},e.prototype.set=function(e,t){var n;return o(this,void 0,void 0,function(){return i(this,function(r){try{null===(n=this.storage)||void 0===n||n.setItem(e,JSON.stringify(t))}catch(e){}return[2]})})},e.prototype.remove=function(e){var t;return o(this,void 0,void 0,function(){return i(this,function(n){try{null===(t=this.storage)||void 0===t||t.removeItem(e)}catch(e){}return[2]})})},e.prototype.reset=function(){var e;return o(this,void 0,void 0,function(){return i(this,function(t){try{null===(e=this.storage)||void 0===e||e.clear()}catch(e){}return[2]})})},e}(),s="*****",f=/\b(?:\d[ -]*?){13,16}\b/,d=/(\d{3}-?\d{2}-?\d{4})/g,p=/[^\s@]+@[^\s@.]+\.[^\s@]+/g,v=function(e,t){var n,r;if(void 0===t&&(t=[]),"string"!=typeof e)return"";var o=e;o=(o=(o=o.replace(f,s)).replace(d,s)).replace(p,s);try{for(var i=function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),a=i.next();!a.done;a=i.next()){var u=a.value;try{o=o.replace(u,s)}catch(e){}}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return o},h=function(e){if("undefined"==typeof document||!document.title)return"";var t=document.querySelector("title");return t&&t.hasAttribute("data-amp-mask")?s:e?e(document.title):document.title},y="AMP_CURRENT_PAGE",g="AMP_PREVIOUS_PAGE",m="AMP_URL_INFO";!function(e){e.Direct="direct",e.Internal="internal",e.External="external"}(u||(u={}));var b=new Set([n.IDENTIFY,n.GROUP_IDENTIFY,n.REVENUE]),E=function(){var e,t=(e="ampIntegrationContext","undefined"!=typeof globalThis&&void 0!==globalThis[e]?globalThis[e]:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0),n=void 0,s=!1,f=void 0,d=!1,p=!1,E=function(e){var t="undefined"!=typeof location&&location.hostname||"";switch(e?function(e){var t;try{var n=l(e,f);t=new URL(n).hostname}catch(e){null==f||f.error("Could not parse URL: ",e)}return t}(e):void 0){case void 0:return u.Direct;case t:return u.Internal;default:return u.External}},w=function(){o(void 0,void 0,void 0,function(){var e,t,r,o;return i(this,function(i){switch(i.label){case 0:return n&&s?[4,n.get(m)]:[3,3];case 1:return e=i.sent(),t=(null==e?void 0:e[y])||"",r=l("undefined"!=typeof location&&location.href||""),[4,n.set(m,(o={},o[y]=r,o[g]=t,o))];case 2:i.sent(),i.label=3;case 3:return[2]}})})};return{name:"@amplitude/plugin-page-url-enrichment-browser",type:"enrichment",setup:function(e,r){return o(void 0,void 0,void 0,function(){return i(this,function(r){switch(r.label){case 0:return(f=e.loggerProvider).log("Installing @amplitude/plugin-page-url-enrichment-browser"),p=!0,t?[4,(n=new c(t.sessionStorage)).isEnabled()]:[3,2];case 1:s=r.sent(),t.addEventListener("popstate",w),d||(t.history.pushState=new Proxy(t.history.pushState,{apply:function(e,t,n){var r=a(n,3),o=r[0],i=r[1],u=r[2];e.apply(t,[o,i,u]),p&&w()}}),t.history.replaceState=new Proxy(t.history.replaceState,{apply:function(e,t,n){var r=a(n,3),o=r[0],i=r[1],u=r[2];e.apply(t,[o,i,u]),p&&w()}}),d=!0),r.label=2;case 2:return[2]}})})},execute:function(e){return o(void 0,void 0,void 0,function(){var t,o,a,u;return i(this,function(i){switch(i.label){case 0:return t=l("undefined"!=typeof location&&location.href||""),o="",n&&s?[4,n.get(m)]:[3,4];case 1:return a=i.sent(),o=(null==a?void 0:a[g])||document.referrer||"",(null==a?void 0:a[y])?[3,3]:[4,n.set(m,r(r({},a||{}),(u={},u[y]=t,u[g]=o,u)))];case 2:i.sent(),i.label=3;case 3:if(b.has(e.event_type))return[2,e];e.event_properties=r(r({},e.event_properties||{}),{"[Amplitude] Page Domain":P(e,"[Amplitude] Page Domain","undefined"!=typeof location&&location.hostname||""),"[Amplitude] Page Location":P(e,"[Amplitude] Page Location",t),"[Amplitude] Page Path":P(e,"[Amplitude] Page Path","undefined"!=typeof location&&l(location.pathname)||""),"[Amplitude] Page Title":P(e,"[Amplitude] Page Title",h(v)),"[Amplitude] Page URL":P(e,"[Amplitude] Page URL",t.split("?")[0]),"[Amplitude] Previous Page Location":o,"[Amplitude] Previous Page Type":E(o)}),i.label=4;case 4:return[2,e]}})})},teardown:function(){return o(void 0,void 0,void 0,function(){return i(this,function(e){switch(e.label){case 0:return t?(t.removeEventListener("popstate",w),p=!1,n&&s?[4,n.set(m,{})]:[3,2]):[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}})})}}};function P(e,t,n){return e.event_properties||(e.event_properties={}),void 0===e.event_properties[t]?n:e.event_properties[t]}e.CURRENT_PAGE_STORAGE_KEY=y,e.PREVIOUS_PAGE_STORAGE_KEY=g,e.URL_INFO_STORAGE_KEY=m,e.pageUrlEnrichmentPlugin=E,e.plugin=E,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,n,r=function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)};function o(e,t,n,r){return new(n||(n=Promise))(function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function u(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,u)}l((r=r.apply(e,t||[])).next())})}function i(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=u(0),a.throw=u(1),a.return=u(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(u){return function(l){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,l])}}}function a(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}"function"==typeof SuppressedError&&SuppressedError,function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(t||(t={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(n||(n={}));var u,l=function(e,t){var n=e;try{n=decodeURI(e)}catch(e){null==t||t.error("Malformed URI sequence: ",e)}return n},c=function(){function e(e){this.storage=e}return e.prototype.isEnabled=function(){return o(this,void 0,void 0,function(){var t,n,r;return i(this,function(o){switch(o.label){case 0:if(!this.storage)return[2,!1];t=String(Date.now()),n=new e(this.storage),r="AMP_TEST",o.label=1;case 1:return o.trys.push([1,4,5,7]),[4,n.set(r,t)];case 2:return o.sent(),[4,n.get(r)];case 3:return[2,o.sent()===t];case 4:return o.sent(),[2,!1];case 5:return[4,n.remove(r)];case 6:return o.sent(),[7];case 7:return[2]}})})},e.prototype.get=function(e){return o(this,void 0,void 0,function(){var t;return i(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.getRaw(e)];case 1:return(t=n.sent())?[2,JSON.parse(t)]:[2,void 0];case 2:return n.sent(),console.error("[Amplitude] Error: Could not get value from storage"),[2,void 0];case 3:return[2]}})})},e.prototype.getRaw=function(e){var t;return o(this,void 0,void 0,function(){return i(this,function(n){return[2,(null===(t=this.storage)||void 0===t?void 0:t.getItem(e))||void 0]})})},e.prototype.set=function(e,t){var n;return o(this,void 0,void 0,function(){return i(this,function(r){try{null===(n=this.storage)||void 0===n||n.setItem(e,JSON.stringify(t))}catch(e){}return[2]})})},e.prototype.remove=function(e){var t;return o(this,void 0,void 0,function(){return i(this,function(n){try{null===(t=this.storage)||void 0===t||t.removeItem(e)}catch(e){}return[2]})})},e.prototype.reset=function(){var e;return o(this,void 0,void 0,function(){return i(this,function(t){try{null===(e=this.storage)||void 0===e||e.clear()}catch(e){}return[2]})})},e}(),s="*****",f=/\b(?:\d[ -]*?){13,16}\b/,d=/(\d{3}-?\d{2}-?\d{4})/g,p=/[^\s@]+@[^\s@.]+\.[^\s@]+/g,v=function(e,t){var n,r;if(void 0===t&&(t=[]),"string"!=typeof e)return"";var o=e;o=(o=(o=o.replace(f,s)).replace(d,s)).replace(p,s);try{for(var i=function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),a=i.next();!a.done;a=i.next()){var u=a.value;try{o=o.replace(u,s)}catch(e){}}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return o},h=function(e){if("undefined"==typeof document||!document.title)return"";var t=document.querySelector("title");return t&&t.hasAttribute("data-amp-mask")?s:e?e(document.title):document.title},y="AMP_CURRENT_PAGE",g="AMP_PREVIOUS_PAGE",m="AMP_URL_INFO";!function(e){e.Direct="direct",e.Internal="internal",e.External="external"}(u||(u={}));var b=new Set([n.IDENTIFY,n.GROUP_IDENTIFY,n.REVENUE]),E=function(){var e,t=(e="ampIntegrationContext","undefined"!=typeof globalThis&&void 0!==globalThis[e]?globalThis[e]:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0),n=void 0,s=!1,f=void 0,d=!1,p=!1,E=function(e){var t="undefined"!=typeof location&&location.hostname||"";switch(e?function(e){var t;try{var n=l(e,f);t=new URL(n).hostname}catch(e){null==f||f.error("Could not parse URL: ",e)}return t}(e):void 0){case void 0:return u.Direct;case t:return u.Internal;default:return u.External}},w=function(){o(void 0,void 0,void 0,function(){var e,t,r,o,a;return i(this,function(i){switch(i.label){case 0:return n&&s?[4,n.get(m)]:[3,3];case 1:return e=i.sent(),t=l("undefined"!=typeof location&&location.href||""),r=(null==e?void 0:e[y])||"",o=void 0,o=t===r?(null==e?void 0:e[g])||"":r||document.referrer||"",[4,n.set(m,(a={},a[y]=t,a[g]=o,a))];case 2:i.sent(),i.label=3;case 3:return[2]}})})};return{name:"@amplitude/plugin-page-url-enrichment-browser",type:"enrichment",setup:function(e,r){return o(void 0,void 0,void 0,function(){return i(this,function(r){switch(r.label){case 0:return(f=e.loggerProvider).log("Installing @amplitude/plugin-page-url-enrichment-browser"),p=!0,t?[4,(n=new c(t.sessionStorage)).isEnabled()]:[3,2];case 1:s=r.sent(),t.addEventListener("popstate",w),d||(t.history.pushState=new Proxy(t.history.pushState,{apply:function(e,t,n){var r=a(n,3),o=r[0],i=r[1],u=r[2];e.apply(t,[o,i,u]),p&&w()}}),t.history.replaceState=new Proxy(t.history.replaceState,{apply:function(e,t,n){var r=a(n,3),o=r[0],i=r[1],u=r[2];e.apply(t,[o,i,u]),p&&w()}}),d=!0),r.label=2;case 2:return[2]}})})},execute:function(e){return o(void 0,void 0,void 0,function(){var t,o,a,u,c;return i(this,function(i){switch(i.label){case 0:return t=l("undefined"!=typeof location&&location.href||""),n&&s?[4,n.get(m)]:[3,5];case 1:return(null==(o=i.sent())?void 0:o[y])?[3,3]:[4,n.set(m,(c={},c[y]=t,c[g]=document.referrer||"",c))];case 2:i.sent(),i.label=3;case 3:return[4,n.get(m)];case 4:if(a=i.sent(),u="",a&&(u=a[g]||""),b.has(e.event_type))return[2,e];e.event_properties=r(r({},e.event_properties||{}),{"[Amplitude] Page Domain":P(e,"[Amplitude] Page Domain","undefined"!=typeof location&&location.hostname||""),"[Amplitude] Page Location":P(e,"[Amplitude] Page Location",t),"[Amplitude] Page Path":P(e,"[Amplitude] Page Path","undefined"!=typeof location&&l(location.pathname)||""),"[Amplitude] Page Title":P(e,"[Amplitude] Page Title",h(v)),"[Amplitude] Page URL":P(e,"[Amplitude] Page URL",t.split("?")[0]),"[Amplitude] Previous Page Location":u,"[Amplitude] Previous Page Type":E(u)}),i.label=5;case 5:return[2,e]}})})},teardown:function(){return o(void 0,void 0,void 0,function(){return i(this,function(e){switch(e.label){case 0:return t&&(t.removeEventListener("popstate",w),p=!1),n&&s?[4,n.set(m,{})]:[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}})})}}};function P(e,t,n){return e.event_properties||(e.event_properties={}),void 0===e.event_properties[t]?n:e.event_properties[t]}e.CURRENT_PAGE_STORAGE_KEY=y,e.PREVIOUS_PAGE_STORAGE_KEY=g,e.URL_INFO_STORAGE_KEY=m,e.pageUrlEnrichmentPlugin=E,e.plugin=E,Object.defineProperty(e,"__esModule",{value:!0})});
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAQtB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAQF,eAAO,MAAM,4BAA4B,aAIvC,CAAC;AAEH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,gBAgK1C,CAAC"}
1
+ {"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAQtB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAQF,eAAO,MAAM,4BAA4B,aAIvC,CAAC;AAEH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,gBA2K1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/plugin-page-url-enrichment-browser",
3
- "version": "0.4.3",
3
+ "version": "0.5.0",
4
4
  "description": "",
5
5
  "author": "Amplitude Inc",
6
6
  "homepage": "https://github.com/amplitude/Amplitude-TypeScript",
@@ -37,7 +37,7 @@
37
37
  "url": "https://github.com/amplitude/Amplitude-TypeScript/issues"
38
38
  },
39
39
  "dependencies": {
40
- "@amplitude/analytics-core": "^2.28.0",
40
+ "@amplitude/analytics-core": "^2.30.0",
41
41
  "tslib": "^2.4.1"
42
42
  },
43
43
  "devDependencies": {
@@ -52,5 +52,5 @@
52
52
  "files": [
53
53
  "lib"
54
54
  ],
55
- "gitHead": "af0b100912ccf2e7923558e8a92944238ec493bc"
55
+ "gitHead": "feee76642fc82bf50dcc35edde8b4a52733ddf9a"
56
56
  }