@amplitude/plugin-page-url-enrichment-browser 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/page-url-enrichment.d.ts.map +1 -1
- package/lib/cjs/page-url-enrichment.js +13 -6
- package/lib/cjs/page-url-enrichment.js.map +1 -1
- package/lib/esm/page-url-enrichment.d.ts.map +1 -1
- package/lib/esm/page-url-enrichment.js +13 -6
- package/lib/esm/page-url-enrichment.js.map +1 -1
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/page-url-enrichment.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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,EAMrB,KAAK,wBAAwB,EAG9B,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,yBAA8B,wBAAwB,KAAQ,
|
|
1
|
+
{"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAMrB,KAAK,wBAAwB,EAG9B,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,yBAA8B,wBAAwB,KAAQ,gBAoLjG,CAAC"}
|
|
@@ -100,17 +100,24 @@ var pageUrlEnrichmentPlugin = function (_a) {
|
|
|
100
100
|
name: '@amplitude/plugin-page-url-enrichment-browser',
|
|
101
101
|
type: 'enrichment',
|
|
102
102
|
setup: function (config, _) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
var _a;
|
|
104
|
+
return tslib_1.__generator(this, function (_b) {
|
|
105
|
+
switch (_b.label) {
|
|
105
106
|
case 0:
|
|
106
107
|
loggerProvider = config.loggerProvider;
|
|
107
108
|
loggerProvider.log('Installing @amplitude/plugin-page-url-enrichment-browser');
|
|
108
109
|
isTracking = true;
|
|
109
110
|
if (!globalScope) return [3 /*break*/, 2];
|
|
110
|
-
|
|
111
|
-
|
|
111
|
+
try {
|
|
112
|
+
sessionStorage = new analytics_core_1.BrowserStorage(globalScope.sessionStorage);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
/* istanbul ignore next */
|
|
116
|
+
loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.debug('sessionStorage is not available in this environment.');
|
|
117
|
+
}
|
|
118
|
+
return [4 /*yield*/, (sessionStorage === null || sessionStorage === void 0 ? void 0 : sessionStorage.isEnabled())];
|
|
112
119
|
case 1:
|
|
113
|
-
isStorageEnabled = _a.sent();
|
|
120
|
+
isStorageEnabled = (_a = (_b.sent())) !== null && _a !== void 0 ? _a : false;
|
|
114
121
|
globalScope.addEventListener('popstate', saveUrlInfoWrapper);
|
|
115
122
|
if (!isProxied) {
|
|
116
123
|
/* istanbul ignore next */
|
|
@@ -139,7 +146,7 @@ var pageUrlEnrichmentPlugin = function (_a) {
|
|
|
139
146
|
});
|
|
140
147
|
isProxied = true;
|
|
141
148
|
}
|
|
142
|
-
|
|
149
|
+
_b.label = 2;
|
|
143
150
|
case 2: return [2 /*return*/];
|
|
144
151
|
}
|
|
145
152
|
});
|
|
@@ -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 type PageUrlEnrichmentOptions,\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 internal domains - exact domain matches or when current and previous page are both internal domains\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 = ({ internalDomains = [] }: PageUrlEnrichmentOptions = {}): 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 if (!previousPageDomain) {\n return PreviousPageType.Direct;\n }\n\n const isCurrentInternal = internalDomains.some((domain) => currentDomain.indexOf(domain) !== -1);\n const isPrevInternal = internalDomains.some((domain) => previousPageDomain.indexOf(domain) !== -1);\n\n if (currentDomain === previousPageDomain || (isPrevInternal && isCurrentInternal)) {\n return PreviousPageType.Internal;\n }\n\n return PreviousPageType.External;\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: string | undefined;\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
|
+
{"version":3,"file":"page-url-enrichment.js","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":";;;;AAAA,4DAamC;AAEtB,QAAA,wBAAwB,GAAG,kBAAkB,CAAC;AAC9C,QAAA,yBAAyB,GAAG,mBAAmB,CAAC;AAChD,QAAA,oBAAoB,GAAG,cAAc,CAAC;AAOnD,IAAK,gBAIJ;AAJD,WAAK,gBAAgB;IACnB,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;IACrB,yCAAqB,CAAA;AACvB,CAAC,EAJI,gBAAgB,KAAhB,gBAAgB,QAIpB;AAEY,QAAA,4BAA4B,GAAG,IAAI,GAAG,CAAS;IAC1D,iCAAgB,CAAC,QAAQ;IACzB,iCAAgB,CAAC,cAAc;IAC/B,iCAAgB,CAAC,OAAO;CACzB,CAAC,CAAC;AAEI,IAAM,0BAA0B,GAAG,UAAC,MAAe;IACxD,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;QAC/B,OAAO,MAAM,CAAC;KACf;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,mBAAmB,IAAI,MAAM,EAAE;QAClF,OAAO,OAAO,CAAE,MAA0C,CAAC,iBAAiB,CAAC,CAAC;KAC/E;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC;AAEK,IAAM,uBAAuB,GAAG,UAAC,EAAuD;QAAvD,qBAAqD,EAAE,KAAA,EAArD,uBAAoB,EAApB,eAAe,mBAAG,EAAE,KAAA;IAC5D,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;IACrC,IAAI,cAAc,GAAwC,SAAS,CAAC;IACpE,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,cAAc,GAAwB,SAAS,CAAC;IAEpD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAM,WAAW,GAAG,UAAC,GAAW;QAC9B,IAAI,QAA4B,CAAC;QAEjC,IAAI;YACF,IAAM,UAAU,GAAG,IAAA,6BAAY,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACrD,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;SACzC;QAAC,OAAO,CAAC,EAAE;YACV,0BAA0B;YAC1B,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;SACnD;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,IAAM,eAAe,GAAG,UAAC,YAAoB;QAC3C,IAAM,aAAa,GAAG,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnF,IAAM,kBAAkB,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,gBAAgB,CAAC,MAAM,CAAC;SAChC;QAED,IAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAApC,CAAoC,CAAC,CAAC;QACjG,IAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC;QAEnG,IAAI,aAAa,KAAK,kBAAkB,IAAI,CAAC,cAAc,IAAI,iBAAiB,CAAC,EAAE;YACjF,OAAO,gBAAgB,CAAC,QAAQ,CAAC;SAClC;QAED,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG;;;;;;yBACd,CAAA,cAAc,IAAI,gBAAgB,CAAA,EAAlC,wBAAkC;oBACpB,qBAAM,cAAc,CAAC,GAAG,CAAC,4BAAoB,CAAC,EAAA;;oBAAxD,OAAO,GAAG,SAA8C;oBACxD,UAAU,GAAG,IAAA,6BAAY,EAAC,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpF,gBAAgB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,gCAAwB,CAAC,KAAI,EAAE,CAAC;oBAE/D,WAAW,SAAoB,CAAC;oBACpC,IAAI,UAAU,KAAK,gBAAgB,EAAE;wBACnC,WAAW,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,iCAAyB,CAAC,KAAI,EAAE,CAAC;qBAC1D;yBAAM,IAAI,gBAAgB,EAAE;wBAC3B,WAAW,GAAG,gBAAgB,CAAC;qBAChC;yBAAM;wBACL,WAAW,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;qBACvC;oBAED,qBAAM,cAAc,CAAC,GAAG,CAAC,4BAAoB;4BAC3C,GAAC,gCAAwB,IAAG,UAAU;4BACtC,GAAC,iCAAyB,IAAG,WAAW;gCACxC,EAAA;;oBAHF,SAGE,CAAC;;;;;SAEN,CAAC;IAEF,IAAM,kBAAkB,GAAG;QACzB,KAAK,WAAW,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,IAAM,MAAM,GAAqB;QAC/B,IAAI,EAAE,+CAA+C;QACrD,IAAI,EAAE,YAAY;QAElB,KAAK,EAAE,UAAO,MAAqB,EAAE,CAAgB;;;;;wBACnD,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;wBACvC,cAAc,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;wBAE/E,UAAU,GAAG,IAAI,CAAC;6BAEd,WAAW,EAAX,wBAAW;wBACb,IAAI;4BACF,cAAc,GAAG,IAAI,+BAAc,CAAU,WAAW,CAAC,cAAc,CAAC,CAAC;yBAC1E;wBAAC,OAAO,KAAK,EAAE;4BACd,0BAA0B;4BAC1B,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAC,sDAAsD,CAAC,CAAC;yBAC/E;wBACmB,qBAAM,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,EAAE,CAAA,EAAA;;wBAArD,gBAAgB,GAAG,MAAA,CAAC,SAAiC,CAAC,mCAAI,KAAK,CAAC;wBAEhE,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;wBAE7D,IAAI,CAAC,SAAS,EAAE;4BACd,0BAA0B;4BAC1B,yEAAyE;4BACzE,iDAAiD;4BACjD,uCAAuC;4BACvC,6DAA6D;4BAC7D,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE;gCACvE,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,EAAoB;wCAApB,KAAA,qBAAoB,EAAnB,KAAK,QAAA,EAAE,MAAM,QAAA,EAAE,GAAG,QAAA;oCAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;oCAC5C,IAAI,UAAU,EAAE;wCACd,kBAAkB,EAAE,CAAC;qCACtB;gCACH,CAAC;6BACF,CAAC,CAAC;4BAEH,6DAA6D;4BAC7D,WAAW,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE;gCAC7E,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,EAAoB;wCAApB,KAAA,qBAAoB,EAAnB,KAAK,QAAA,EAAE,MAAM,QAAA,EAAE,GAAG,QAAA;oCAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;oCAC5C,IAAI,UAAU,EAAE;wCACd,kBAAkB,EAAE,CAAC;qCACtB;gCACH,CAAC;6BACF,CAAC,CAAC;4BAEH,SAAS,GAAG,IAAI,CAAC;yBAClB;;;;;aAEJ;QACD,OAAO,EAAE,UAAO,KAAY;;;;;;wBACpB,YAAY,GAAG,IAAA,6BAAY,EAAC,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;6BAExF,CAAA,cAAc,IAAI,gBAAgB,CAAA,EAAlC,wBAAkC;wBACpB,qBAAM,cAAc,CAAC,GAAG,CAAC,4BAAoB,CAAC,EAAA;;wBAAxD,OAAO,GAAG,SAA8C;6BAC1D,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,gCAAwB,CAAC,CAAA,EAApC,wBAAoC;wBACtC,qBAAM,cAAc,CAAC,GAAG,CAAC,4BAAoB;gCAC3C,GAAC,gCAAwB,IAAG,YAAY;gCACxC,GAAC,iCAAyB,IAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE;oCACpD,EAAA;;wBAHF,SAGE,CAAC;;4BAGkB,qBAAM,cAAc,CAAC,GAAG,CAAC,4BAAoB,CAAC,EAAA;;wBAA/D,cAAc,GAAG,SAA8C;wBACjE,YAAY,GAAG,EAAE,CAAC;wBACtB,IAAI,cAAc,EAAE;4BAClB,YAAY,GAAG,cAAc,CAAC,iCAAyB,CAAC,IAAI,EAAE,CAAC;yBAChE;wBAED,gHAAgH;wBAChH,IAAI,oCAA4B,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;4BACtD,sBAAO,KAAK,EAAC;yBACd;wBAED,KAAK,CAAC,gBAAgB,yCACjB,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,KACjC,yBAAyB,EAAE,aAAa,CACtC,KAAK,EACL,yBAAyB,EACzB,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAC7D,EACD,2BAA2B,EAAE,aAAa,CAAC,KAAK,EAAE,2BAA2B,EAAE,YAAY,CAAC,EAC5F,uBAAuB,EAAE,aAAa,CACpC,KAAK,EACL,uBAAuB,EACvB,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,IAAA,6BAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAC3E,EACD,wBAAwB,EAAE,aAAa,CACrC,KAAK,EACL,wBAAwB,EACxB,IAAA,6BAAY,EAAC,uCAAsB,CAAC,CACrC,EACD,sBAAsB,EAAE,aAAa,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAChG,oCAAoC,EAAE,YAAY,EAClD,gCAAgC,EAAE,eAAe,CAAC,YAAY,CAAC,GAChE,CAAC;;4BAGJ,sBAAO,KAAK,EAAC;;;aACd;QACD,QAAQ,EAAE;;;;wBACR,IAAI,WAAW,EAAE;4BACf,WAAW,CAAC,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;4BAEhE,UAAU,GAAG,KAAK,CAAC;yBACpB;6BAEG,CAAA,cAAc,IAAI,gBAAgB,CAAA,EAAlC,wBAAkC;wBACpC,qBAAM,cAAc,CAAC,GAAG,CAAC,4BAAoB,EAAE,EAAE,CAAC,EAAA;;wBAAlD,SAAkD,CAAC;;;;;aAEtD;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AApLW,QAAA,uBAAuB,2BAoLlC;AAEF,SAAS,aAAa,CAAC,KAAY,EAAE,GAAW,EAAE,KAAa;IAC7D,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;QAC3B,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC7B;IAED,IAAK,KAAK,CAAC,gBAA2C,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QACzE,OAAO,KAAK,CAAC;KACd;IAED,OAAQ,KAAK,CAAC,gBAA2C,CAAC,GAAG,CAAW,CAAC;AAC3E,CAAC","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 type PageUrlEnrichmentOptions,\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 internal domains - exact domain matches or when current and previous page are both internal domains\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 = ({ internalDomains = [] }: PageUrlEnrichmentOptions = {}): 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 if (!previousPageDomain) {\n return PreviousPageType.Direct;\n }\n\n const isCurrentInternal = internalDomains.some((domain) => currentDomain.indexOf(domain) !== -1);\n const isPrevInternal = internalDomains.some((domain) => previousPageDomain.indexOf(domain) !== -1);\n\n if (currentDomain === previousPageDomain || (isPrevInternal && isCurrentInternal)) {\n return PreviousPageType.Internal;\n }\n\n return PreviousPageType.External;\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: string | undefined;\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 try {\n sessionStorage = new BrowserStorage<URLInfo>(globalScope.sessionStorage);\n } catch (error) {\n /* istanbul ignore next */\n loggerProvider?.debug('sessionStorage is not available in this environment.');\n }\n isStorageEnabled = (await sessionStorage?.isEnabled()) ?? false;\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,EAMrB,KAAK,wBAAwB,EAG9B,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,yBAA8B,wBAAwB,KAAQ,
|
|
1
|
+
{"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAMrB,KAAK,wBAAwB,EAG9B,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,yBAA8B,wBAAwB,KAAQ,gBAoLjG,CAAC"}
|
|
@@ -96,17 +96,24 @@ export var pageUrlEnrichmentPlugin = function (_a) {
|
|
|
96
96
|
name: '@amplitude/plugin-page-url-enrichment-browser',
|
|
97
97
|
type: 'enrichment',
|
|
98
98
|
setup: function (config, _) { return __awaiter(void 0, void 0, void 0, function () {
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
var _a;
|
|
100
|
+
return __generator(this, function (_b) {
|
|
101
|
+
switch (_b.label) {
|
|
101
102
|
case 0:
|
|
102
103
|
loggerProvider = config.loggerProvider;
|
|
103
104
|
loggerProvider.log('Installing @amplitude/plugin-page-url-enrichment-browser');
|
|
104
105
|
isTracking = true;
|
|
105
106
|
if (!globalScope) return [3 /*break*/, 2];
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
try {
|
|
108
|
+
sessionStorage = new BrowserStorage(globalScope.sessionStorage);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
/* istanbul ignore next */
|
|
112
|
+
loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.debug('sessionStorage is not available in this environment.');
|
|
113
|
+
}
|
|
114
|
+
return [4 /*yield*/, (sessionStorage === null || sessionStorage === void 0 ? void 0 : sessionStorage.isEnabled())];
|
|
108
115
|
case 1:
|
|
109
|
-
isStorageEnabled = _a.sent();
|
|
116
|
+
isStorageEnabled = (_a = (_b.sent())) !== null && _a !== void 0 ? _a : false;
|
|
110
117
|
globalScope.addEventListener('popstate', saveUrlInfoWrapper);
|
|
111
118
|
if (!isProxied) {
|
|
112
119
|
/* istanbul ignore next */
|
|
@@ -135,7 +142,7 @@ export var pageUrlEnrichmentPlugin = function (_a) {
|
|
|
135
142
|
});
|
|
136
143
|
isProxied = true;
|
|
137
144
|
}
|
|
138
|
-
|
|
145
|
+
_b.label = 2;
|
|
139
146
|
case 2: return [2 /*return*/];
|
|
140
147
|
}
|
|
141
148
|
});
|
|
@@ -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 type PageUrlEnrichmentOptions,\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 internal domains - exact domain matches or when current and previous page are both internal domains\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 = ({ internalDomains = [] }: PageUrlEnrichmentOptions = {}): 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 if (!previousPageDomain) {\n return PreviousPageType.Direct;\n }\n\n const isCurrentInternal = internalDomains.some((domain) => currentDomain.indexOf(domain) !== -1);\n const isPrevInternal = internalDomains.some((domain) => previousPageDomain.indexOf(domain) !== -1);\n\n if (currentDomain === previousPageDomain || (isPrevInternal && isCurrentInternal)) {\n return PreviousPageType.Internal;\n }\n\n return PreviousPageType.External;\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: string | undefined;\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
|
+
{"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 type PageUrlEnrichmentOptions,\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 internal domains - exact domain matches or when current and previous page are both internal domains\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 = ({ internalDomains = [] }: PageUrlEnrichmentOptions = {}): 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 if (!previousPageDomain) {\n return PreviousPageType.Direct;\n }\n\n const isCurrentInternal = internalDomains.some((domain) => currentDomain.indexOf(domain) !== -1);\n const isPrevInternal = internalDomains.some((domain) => previousPageDomain.indexOf(domain) !== -1);\n\n if (currentDomain === previousPageDomain || (isPrevInternal && isCurrentInternal)) {\n return PreviousPageType.Internal;\n }\n\n return PreviousPageType.External;\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: string | undefined;\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 try {\n sessionStorage = new BrowserStorage<URLInfo>(globalScope.sessionStorage);\n } catch (error) {\n /* istanbul ignore next */\n loggerProvider?.debug('sessionStorage is not available in this environment.');\n }\n isStorageEnabled = (await sessionStorage?.isEnabled()) ?? false;\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(e){var t,n=(void 0===e?{}:e).internalDomains,s=void 0===n?[]:n,f=(t="ampIntegrationContext","undefined"!=typeof globalThis&&void 0!==globalThis[t]?globalThis[t]:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0),d=void 0,p=!1,E=void 0,w=!1,S=!1,A=function(e){var t="undefined"!=typeof location&&location.hostname||"",n=e?function(e){var t;try{var n=l(e,E);t=new URL(n).hostname}catch(e){null==E||E.error("Could not parse URL: ",e)}return t}(e):void 0;if(!n)return u.Direct;var r=s.some(function(e){return-1!==t.indexOf(e)}),o=s.some(function(e){return-1!==n.indexOf(e)});return t===n||o&&r?u.Internal:u.External},_=function(){o(void 0,void 0,void 0,function(){var e,t,n,r,o;return i(this,function(i){switch(i.label){case 0:return d&&p?[4,d.get(m)]:[3,3];case 1:return e=i.sent(),t=l("undefined"!=typeof location&&location.href||""),n=(null==e?void 0:e[y])||"",r=void 0,r=t===n?(null==e?void 0:e[g])||"":n||document.referrer||"",[4,d.set(m,(o={},o[y]=t,o[g]=r,o))];case 2:i.sent(),i.label=3;case 3:return[2]}})})},R={name:"@amplitude/plugin-page-url-enrichment-browser",type:"enrichment",setup:function(e,t){return o(void 0,void 0,void 0,function(){return i(this,function(
|
|
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(e){var t,n=(void 0===e?{}:e).internalDomains,s=void 0===n?[]:n,f=(t="ampIntegrationContext","undefined"!=typeof globalThis&&void 0!==globalThis[t]?globalThis[t]:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0),d=void 0,p=!1,E=void 0,w=!1,S=!1,A=function(e){var t="undefined"!=typeof location&&location.hostname||"",n=e?function(e){var t;try{var n=l(e,E);t=new URL(n).hostname}catch(e){null==E||E.error("Could not parse URL: ",e)}return t}(e):void 0;if(!n)return u.Direct;var r=s.some(function(e){return-1!==t.indexOf(e)}),o=s.some(function(e){return-1!==n.indexOf(e)});return t===n||o&&r?u.Internal:u.External},_=function(){o(void 0,void 0,void 0,function(){var e,t,n,r,o;return i(this,function(i){switch(i.label){case 0:return d&&p?[4,d.get(m)]:[3,3];case 1:return e=i.sent(),t=l("undefined"!=typeof location&&location.href||""),n=(null==e?void 0:e[y])||"",r=void 0,r=t===n?(null==e?void 0:e[g])||"":n||document.referrer||"",[4,d.set(m,(o={},o[y]=t,o[g]=r,o))];case 2:i.sent(),i.label=3;case 3:return[2]}})})},R={name:"@amplitude/plugin-page-url-enrichment-browser",type:"enrichment",setup:function(e,t){return o(void 0,void 0,void 0,function(){var t;return i(this,function(n){switch(n.label){case 0:if((E=e.loggerProvider).log("Installing @amplitude/plugin-page-url-enrichment-browser"),S=!0,!f)return[3,2];try{d=new c(f.sessionStorage)}catch(e){null==E||E.debug("sessionStorage is not available in this environment.")}return[4,null==d?void 0:d.isEnabled()];case 1:p=null!==(t=n.sent())&&void 0!==t&&t,f.addEventListener("popstate",_),w||(f.history.pushState=new Proxy(f.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]),S&&_()}}),f.history.replaceState=new Proxy(f.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]),S&&_()}}),w=!0),n.label=2;case 2:return[2]}})})},execute:function(e){return o(void 0,void 0,void 0,function(){var t,n,o,a,u;return i(this,function(i){switch(i.label){case 0:return t=l("undefined"!=typeof location&&location.href||""),d&&p?[4,d.get(m)]:[3,5];case 1:return(null==(n=i.sent())?void 0:n[y])?[3,3]:[4,d.set(m,(u={},u[y]=t,u[g]=document.referrer||"",u))];case 2:i.sent(),i.label=3;case 3:return[4,d.get(m)];case 4:if(o=i.sent(),a="",o&&(a=o[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":a,"[Amplitude] Previous Page Type":A(a)}),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 f&&(f.removeEventListener("popstate",_),S=!1),d&&p?[4,d.set(m,{})]:[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}})})}};return R};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,EAMrB,KAAK,wBAAwB,EAG9B,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,GAAI,QAAQ,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,sBAA0B,wBAA6B,KAAG,
|
|
1
|
+
{"version":3,"file":"page-url-enrichment.d.ts","sourceRoot":"","sources":["../../src/page-url-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAMrB,KAAK,wBAAwB,EAG9B,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,GAAI,QAAQ,OAAO,KAAG,OAQ5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,sBAA0B,wBAA6B,KAAG,gBAoLjG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amplitude/plugin-page-url-enrichment-browser",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Amplitude Inc",
|
|
6
6
|
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"tslib": "^2.4.1",
|
|
25
|
-
"@amplitude/analytics-core": "2.
|
|
25
|
+
"@amplitude/analytics-core": "2.44.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@rollup/plugin-commonjs": "^23.0.4",
|