posthog-js 1.104.2 → 1.104.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/dist/array.full.js +1 -1
- package/dist/array.full.js.map +1 -1
- package/dist/array.js +1 -1
- package/dist/array.js.map +1 -1
- package/dist/es.js +1 -1
- package/dist/es.js.map +1 -1
- package/dist/exception-autocapture.js +1 -1
- package/dist/exception-autocapture.js.map +1 -1
- package/dist/lib/src/utils/globals.d.ts +12 -1
- package/dist/lib/src/utils/request-utils.d.ts +0 -1
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/recorder-v2.js +1 -1
- package/dist/recorder-v2.js.map +1 -1
- package/dist/recorder.js +1 -1
- package/dist/recorder.js.map +1 -1
- package/dist/surveys.js +1 -1
- package/dist/surveys.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/src/send-request.js +4 -5
- package/lib/src/send-request.js.map +1 -1
- package/lib/src/session-props.js +2 -2
- package/lib/src/session-props.js.map +1 -1
- package/lib/src/utils/event-utils.js +4 -4
- package/lib/src/utils/event-utils.js.map +1 -1
- package/lib/src/utils/globals.d.ts +12 -1
- package/lib/src/utils/globals.js +15 -5
- package/lib/src/utils/globals.js.map +1 -1
- package/lib/src/utils/request-utils.d.ts +0 -1
- package/lib/src/utils/request-utils.js +5 -5
- package/lib/src/utils/request-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-request.js","sourceRoot":"","sources":["../../src/send-request.ts"],"names":[],"mappings":"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","sourcesContent":["import { _each } from './utils'\nimport Config from './config'\nimport { PostData, XHROptions, RequestData, MinimalHTTPResponse } from './types'\nimport { SUPPORTS_FETCH, _HTTPBuildQuery } from './utils/request-utils'\n\nimport { _isArray, _isFunction, _isNumber, _isUint8Array, _isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window } from './utils/globals'\n\nexport const addParamsToURL = (\n url: string,\n urlQueryArgs: Record<string, any> | undefined,\n parameterOptions: { ip?: boolean }\n): string => {\n const args = urlQueryArgs || {}\n args['ip'] = parameterOptions['ip'] ? 1 : 0\n args['_'] = new Date().getTime().toString()\n args['ver'] = Config.LIB_VERSION\n\n const halves = url.split('?')\n if (halves.length > 1) {\n const params = halves[1].split('&')\n for (const p of params) {\n const key = p.split('=')[0]\n if (!_isUndefined(args[key])) {\n delete args[key]\n }\n }\n }\n\n const argSeparator = url.indexOf('?') > -1 ? '&' : '?'\n return url + argSeparator + _HTTPBuildQuery(args)\n}\n\nexport const encodePostData = (data: PostData | Uint8Array, options: Partial<XHROptions>): string | BlobPart | null => {\n if (options.blob && data.buffer) {\n return new Blob([_isUint8Array(data) ? data : data.buffer], { type: 'text/plain' })\n }\n\n if (options.sendBeacon || options.blob) {\n const body = encodePostData(data, { method: 'POST' }) as BlobPart\n return new Blob([body], { type: 'application/x-www-form-urlencoded' })\n }\n\n if (options.method !== 'POST') {\n return null\n }\n\n let body_data\n\n if (_isArray(data) || _isUint8Array(data)) {\n // TODO: eh? passing an Array here?\n body_data = 'data=' + encodeURIComponent(data as any)\n } else {\n body_data = 'data=' + encodeURIComponent(data.data as string)\n }\n\n if ('compression' in data && data.compression) {\n body_data += '&compression=' + data.compression\n }\n\n return body_data\n}\n\nexport const request = (params: RequestData) => {\n // NOTE: Until we are confident with it, we only use fetch if explicitly told so\n if (window && SUPPORTS_FETCH && params.options.transport === 'fetch') {\n const body = encodePostData(params.data, params.options)\n\n const headers = new Headers()\n _each(headers, function (headerValue, headerName) {\n headers.append(headerName, headerValue)\n })\n\n if (params.options.method === 'POST' && !params.options.blob) {\n headers.append('Content-Type', 'application/x-www-form-urlencoded')\n }\n\n let url = params.url\n\n if (_isNumber(params.retriesPerformedSoFar) && params.retriesPerformedSoFar > 0) {\n url = addParamsToURL(url, { retry_count: params.retriesPerformedSoFar }, {})\n }\n\n window\n .fetch(url, {\n method: params.options?.method || 'GET',\n headers,\n keepalive: params.options.method === 'POST',\n body,\n })\n .then((response) => {\n const statusCode = response.status\n // Report to the callback handlers\n return response.text().then((responseText) => {\n params.onResponse?.({\n statusCode,\n responseText,\n })\n\n if (statusCode === 200) {\n try {\n params.callback?.(JSON.parse(responseText))\n } catch (e) {\n logger.error(e)\n }\n return\n }\n\n if (_isFunction(params.onError)) {\n params.onError({\n statusCode,\n responseText,\n })\n }\n\n // don't retry errors between 400 and 500 inclusive\n if (statusCode < 400 || statusCode > 500) {\n params.retryQueue.enqueue({\n ...params,\n headers,\n retriesPerformedSoFar: (params.retriesPerformedSoFar || 0) + 1,\n })\n }\n params.callback?.({ status: 0 })\n })\n })\n .catch((error) => {\n logger.error(error)\n params.callback?.({ status: 0 })\n })\n\n return\n }\n\n return xhr(params)\n}\n\nconst xhr = ({\n url,\n data,\n headers,\n options,\n callback,\n retriesPerformedSoFar,\n retryQueue,\n onError,\n timeout = 60000,\n onResponse,\n}: RequestData) => {\n if (_isNumber(retriesPerformedSoFar) && retriesPerformedSoFar > 0) {\n url = addParamsToURL(url, { retry_count: retriesPerformedSoFar }, {})\n }\n\n const req = new XMLHttpRequest()\n req.open(options.method || 'GET', url, true)\n\n const body = encodePostData(data, options)\n\n _each(headers, function (headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue)\n })\n\n if (options.method === 'POST' && !options.blob) {\n req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')\n }\n\n req.timeout = timeout\n // send the ph_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true\n req.onreadystatechange = () => {\n // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.readyState === 4) {\n const minimalResponseSummary: MinimalHTTPResponse = {\n statusCode: req.status,\n responseText: req.responseText,\n }\n onResponse?.(minimalResponseSummary)\n if (req.status === 200) {\n if (callback) {\n let response\n try {\n response = JSON.parse(req.responseText)\n } catch (e) {\n logger.error(e)\n return\n }\n callback(response)\n }\n } else {\n if (_isFunction(onError)) {\n onError(minimalResponseSummary)\n }\n\n // don't retry errors between 400 and 500 inclusive\n if (req.status < 400 || req.status > 500) {\n retryQueue.enqueue({\n url,\n data,\n options,\n headers,\n retriesPerformedSoFar: (retriesPerformedSoFar || 0) + 1,\n callback,\n })\n }\n\n callback?.({ status: 0 })\n }\n }\n }\n req.send(body)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"send-request.js","sourceRoot":"","sources":["../../src/send-request.ts"],"names":[],"mappings":"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","sourcesContent":["import { _each } from './utils'\nimport Config from './config'\nimport { PostData, XHROptions, RequestData, MinimalHTTPResponse } from './types'\nimport { _HTTPBuildQuery } from './utils/request-utils'\n\nimport { _isArray, _isFunction, _isNumber, _isUint8Array, _isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { fetch } from './utils/globals'\n\nexport const addParamsToURL = (\n url: string,\n urlQueryArgs: Record<string, any> | undefined,\n parameterOptions: { ip?: boolean }\n): string => {\n const args = urlQueryArgs || {}\n args['ip'] = parameterOptions['ip'] ? 1 : 0\n args['_'] = new Date().getTime().toString()\n args['ver'] = Config.LIB_VERSION\n\n const halves = url.split('?')\n if (halves.length > 1) {\n const params = halves[1].split('&')\n for (const p of params) {\n const key = p.split('=')[0]\n if (!_isUndefined(args[key])) {\n delete args[key]\n }\n }\n }\n\n const argSeparator = url.indexOf('?') > -1 ? '&' : '?'\n return url + argSeparator + _HTTPBuildQuery(args)\n}\n\nexport const encodePostData = (data: PostData | Uint8Array, options: Partial<XHROptions>): string | BlobPart | null => {\n if (options.blob && data.buffer) {\n return new Blob([_isUint8Array(data) ? data : data.buffer], { type: 'text/plain' })\n }\n\n if (options.sendBeacon || options.blob) {\n const body = encodePostData(data, { method: 'POST' }) as BlobPart\n return new Blob([body], { type: 'application/x-www-form-urlencoded' })\n }\n\n if (options.method !== 'POST') {\n return null\n }\n\n let body_data\n\n if (_isArray(data) || _isUint8Array(data)) {\n // TODO: eh? passing an Array here?\n body_data = 'data=' + encodeURIComponent(data as any)\n } else {\n body_data = 'data=' + encodeURIComponent(data.data as string)\n }\n\n if ('compression' in data && data.compression) {\n body_data += '&compression=' + data.compression\n }\n\n return body_data\n}\n\nexport const request = (params: RequestData) => {\n // NOTE: Until we are confident with it, we only use fetch if explicitly told so\n if (fetch && params.options.transport === 'fetch') {\n const body = encodePostData(params.data, params.options)\n\n const headers = new Headers()\n _each(headers, function (headerValue, headerName) {\n headers.append(headerName, headerValue)\n })\n\n if (params.options.method === 'POST' && !params.options.blob) {\n headers.append('Content-Type', 'application/x-www-form-urlencoded')\n }\n\n let url = params.url\n\n if (_isNumber(params.retriesPerformedSoFar) && params.retriesPerformedSoFar > 0) {\n url = addParamsToURL(url, { retry_count: params.retriesPerformedSoFar }, {})\n }\n\n fetch(url, {\n method: params.options?.method || 'GET',\n headers,\n keepalive: params.options.method === 'POST',\n body,\n })\n .then((response) => {\n const statusCode = response.status\n // Report to the callback handlers\n return response.text().then((responseText) => {\n params.onResponse?.({\n statusCode,\n responseText,\n })\n\n if (statusCode === 200) {\n try {\n params.callback?.(JSON.parse(responseText))\n } catch (e) {\n logger.error(e)\n }\n return\n }\n\n if (_isFunction(params.onError)) {\n params.onError({\n statusCode,\n responseText,\n })\n }\n\n // don't retry errors between 400 and 500 inclusive\n if (statusCode < 400 || statusCode > 500) {\n params.retryQueue.enqueue({\n ...params,\n headers,\n retriesPerformedSoFar: (params.retriesPerformedSoFar || 0) + 1,\n })\n }\n params.callback?.({ status: 0 })\n })\n })\n .catch((error) => {\n logger.error(error)\n params.callback?.({ status: 0 })\n })\n\n return\n }\n\n return xhr(params)\n}\n\nconst xhr = ({\n url,\n data,\n headers,\n options,\n callback,\n retriesPerformedSoFar,\n retryQueue,\n onError,\n timeout = 60000,\n onResponse,\n}: RequestData) => {\n if (_isNumber(retriesPerformedSoFar) && retriesPerformedSoFar > 0) {\n url = addParamsToURL(url, { retry_count: retriesPerformedSoFar }, {})\n }\n\n const req = new XMLHttpRequest()\n req.open(options.method || 'GET', url, true)\n\n const body = encodePostData(data, options)\n\n _each(headers, function (headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue)\n })\n\n if (options.method === 'POST' && !options.blob) {\n req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')\n }\n\n req.timeout = timeout\n // send the ph_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true\n req.onreadystatechange = () => {\n // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.readyState === 4) {\n const minimalResponseSummary: MinimalHTTPResponse = {\n statusCode: req.status,\n responseText: req.responseText,\n }\n onResponse?.(minimalResponseSummary)\n if (req.status === 200) {\n if (callback) {\n let response\n try {\n response = JSON.parse(req.responseText)\n } catch (e) {\n logger.error(e)\n return\n }\n callback(response)\n }\n } else {\n if (_isFunction(onError)) {\n onError(minimalResponseSummary)\n }\n\n // don't retry errors between 400 and 500 inclusive\n if (req.status < 400 || req.status > 500) {\n retryQueue.enqueue({\n url,\n data,\n options,\n headers,\n retriesPerformedSoFar: (retriesPerformedSoFar || 0) + 1,\n callback,\n })\n }\n\n callback?.({ status: 0 })\n }\n }\n }\n req.send(body)\n}\n"]}
|
package/lib/src/session-props.js
CHANGED
|
@@ -17,11 +17,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
17
17
|
*
|
|
18
18
|
* These have the same lifespan as a session_id
|
|
19
19
|
*/
|
|
20
|
-
import {
|
|
20
|
+
import { location } from './utils/globals';
|
|
21
21
|
import { _info } from './utils/event-utils';
|
|
22
22
|
import { CLIENT_SESSION_PROPS } from './constants';
|
|
23
23
|
var generateSessionSourceParams = function () {
|
|
24
|
-
return __assign({ initialPathName: (
|
|
24
|
+
return __assign({ initialPathName: (location === null || location === void 0 ? void 0 : location.pathname) || '', referringDomain: _info.referringDomain() }, _info.campaignParams());
|
|
25
25
|
};
|
|
26
26
|
var SessionPropsManager = /** @class */ (function () {
|
|
27
27
|
function SessionPropsManager(sessionIdManager, persistence, sessionSourceParamGenerator) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-props.js","sourceRoot":"","sources":["../../src/session-props.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session-props.js","sourceRoot":"","sources":["../../src/session-props.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAiBlD,IAAM,2BAA2B,GAAG;IAChC,kBACI,eAAe,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,KAAI,EAAE,EACzC,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,IACrC,KAAK,CAAC,cAAc,EAAE,EAC5B;AACL,CAAC,CAAA;AAED;IAKI,6BACI,gBAAkC,EAClC,WAA+B,EAC/B,2BAAsD;QAH1D,iBAUC;QAMD,yBAAoB,GAAG,UAAC,SAAiB;;YACrC,IAAM,MAAM,GAAG,KAAI,CAAC,eAAe,EAAE,CAAA;YACrC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;gBAC1C,OAAM;aACT;YAED,IAAM,QAAQ,GAA6B;gBACvC,SAAS,WAAA;gBACT,KAAK,EAAE,KAAI,CAAC,4BAA4B,EAAE;aAC7C,CAAA;YACD,KAAI,CAAC,YAAY,CAAC,QAAQ,WAAG,GAAC,oBAAoB,IAAG,QAAQ,MAAG,CAAA;QACpE,CAAC,CAAA;QAtBG,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAA;QACzC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;QAC/B,IAAI,CAAC,4BAA4B,GAAG,2BAA2B,IAAI,2BAA2B,CAAA;QAE9F,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACjE,CAAC;IAED,6CAAe,GAAf;QACI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACxD,CAAC;IAeD,6CAAe,GAAf;;QACI,IAAM,CAAC,GAAG,MAAA,IAAI,CAAC,eAAe,EAAE,0CAAE,KAAK,CAAA;QACvC,IAAI,CAAC,CAAC,EAAE;YACJ,OAAO,EAAE,CAAA;SACZ;QAED,OAAO;YACH,sCAAsC,EAAE,CAAC,CAAC,eAAe;YACzD,gCAAgC,EAAE,CAAC,CAAC,eAAe;YACnD,kCAAkC,EAAE,CAAC,CAAC,UAAU;YAChD,oCAAoC,EAAE,CAAC,CAAC,YAAY;YACpD,kCAAkC,EAAE,CAAC,CAAC,UAAU;YAChD,mCAAmC,EAAE,CAAC,CAAC,WAAW;YAClD,gCAAgC,EAAE,CAAC,CAAC,QAAQ;SAC/C,CAAA;IACL,CAAC;IACL,0BAAC;AAAD,CAAC,AAlDD,IAkDC","sourcesContent":["/* Client-side session parameters. These are primarily used by web analytics,\n * which relies on these for session analytics without the plugin server being\n * available for the person level set-once properties. Obviously not consistent\n * between client-side events and server-side events but this is acceptable\n * as web analytics only uses client-side.\n *\n * These have the same lifespan as a session_id\n */\nimport { location } from './utils/globals'\nimport { _info } from './utils/event-utils'\nimport { SessionIdManager } from './sessionid'\nimport { PostHogPersistence } from './posthog-persistence'\nimport { CLIENT_SESSION_PROPS } from './constants'\n\ninterface SessionSourceProps {\n initialPathName: string\n referringDomain: string // Is actually host, but named domain for internal consistency. Should contain a port if there is one.\n utm_medium?: string\n utm_source?: string\n utm_campaign?: string\n utm_content?: string\n utm_term?: string\n}\n\ninterface StoredSessionSourceProps {\n sessionId: string\n props: SessionSourceProps\n}\n\nconst generateSessionSourceParams = (): SessionSourceProps => {\n return {\n initialPathName: location?.pathname || '',\n referringDomain: _info.referringDomain(),\n ..._info.campaignParams(),\n }\n}\n\nexport class SessionPropsManager {\n private readonly _sessionIdManager: SessionIdManager\n private readonly _persistence: PostHogPersistence\n private readonly _sessionSourceParamGenerator: () => SessionSourceProps\n\n constructor(\n sessionIdManager: SessionIdManager,\n persistence: PostHogPersistence,\n sessionSourceParamGenerator?: () => SessionSourceProps\n ) {\n this._sessionIdManager = sessionIdManager\n this._persistence = persistence\n this._sessionSourceParamGenerator = sessionSourceParamGenerator || generateSessionSourceParams\n\n this._sessionIdManager.onSessionId(this._onSessionIdCallback)\n }\n\n _getStoredProps(): StoredSessionSourceProps | undefined {\n return this._persistence.props[CLIENT_SESSION_PROPS]\n }\n\n _onSessionIdCallback = (sessionId: string) => {\n const stored = this._getStoredProps()\n if (stored && stored.sessionId === sessionId) {\n return\n }\n\n const newProps: StoredSessionSourceProps = {\n sessionId,\n props: this._sessionSourceParamGenerator(),\n }\n this._persistence.register({ [CLIENT_SESSION_PROPS]: newProps })\n }\n\n getSessionProps() {\n const p = this._getStoredProps()?.props\n if (!p) {\n return {}\n }\n\n return {\n $client_session_initial_referring_host: p.referringDomain,\n $client_session_initial_pathname: p.initialPathName,\n $client_session_initial_utm_source: p.utm_source,\n $client_session_initial_utm_campaign: p.utm_campaign,\n $client_session_initial_utm_medium: p.utm_medium,\n $client_session_initial_utm_content: p.utm_content,\n $client_session_initial_utm_term: p.utm_term,\n }\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { _getQueryParam, convertToURL } from './request-utils';
|
|
|
2
2
|
import { _isNull, _isUndefined } from './type-utils';
|
|
3
3
|
import Config from '../config';
|
|
4
4
|
import { _each, _extend, _includes, _strip_empty_properties, _timestamp } from './index';
|
|
5
|
-
import { document, window, userAgent, assignableWindow } from './globals';
|
|
5
|
+
import { document, window, location, userAgent, assignableWindow } from './globals';
|
|
6
6
|
/**
|
|
7
7
|
* Safari detection turns out to be complicted. For e.g. https://stackoverflow.com/a/29696509
|
|
8
8
|
* We can be slightly loose because some options have been ruled out (e.g. firefox on iOS)
|
|
@@ -290,9 +290,9 @@ export var _info = {
|
|
|
290
290
|
$device: _info.device(userAgent),
|
|
291
291
|
$device_type: _info.deviceType(userAgent),
|
|
292
292
|
}), {
|
|
293
|
-
$current_url:
|
|
294
|
-
$host:
|
|
295
|
-
$pathname:
|
|
293
|
+
$current_url: location === null || location === void 0 ? void 0 : location.href,
|
|
294
|
+
$host: location === null || location === void 0 ? void 0 : location.host,
|
|
295
|
+
$pathname: location === null || location === void 0 ? void 0 : location.pathname,
|
|
296
296
|
$raw_user_agent: userAgent.length > 1000 ? userAgent.substring(0, 997) + '...' : userAgent,
|
|
297
297
|
$browser_version: _info.browserVersion(userAgent, navigator.vendor, assignableWindow.opera),
|
|
298
298
|
$browser_language: _info.browserLanguage(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-utils.js","sourceRoot":"","sources":["../../../src/utils/event-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { _getQueryParam, convertToURL } from './request-utils'\nimport { _isNull, _isUndefined } from './type-utils'\nimport { Properties } from '../types'\nimport Config from '../config'\nimport { _each, _extend, _includes, _strip_empty_properties, _timestamp } from './index'\nimport { document, window, userAgent, assignableWindow } from './globals'\n\n/**\n * Safari detection turns out to be complicted. For e.g. https://stackoverflow.com/a/29696509\n * We can be slightly loose because some options have been ruled out (e.g. firefox on iOS)\n * before this check is made\n */\nfunction isSafari(userAgent: string): boolean {\n return _includes(userAgent, 'Safari') && !_includes(userAgent, 'Chrome') && !_includes(userAgent, 'Android')\n}\n\nexport const _info = {\n campaignParams: function (customParams?: string[]): Record<string, any> {\n // Should be kept in sync with https://github.com/PostHog/posthog/blob/master/plugin-server/src/utils/db/utils.ts#L60\n const campaign_keywords = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gclid',\n 'gad_source',\n 'gbraid',\n 'wbraid',\n 'fbclid',\n 'msclkid',\n ].concat(customParams || [])\n\n const params: Record<string, any> = {}\n _each(campaign_keywords, function (kwkey) {\n const kw = document ? _getQueryParam(document.URL, kwkey) : ''\n if (kw.length) {\n params[kwkey] = kw\n }\n })\n\n return params\n },\n\n searchEngine: function (): string | null {\n const referrer = document?.referrer\n if (!referrer) {\n return null\n } else if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google'\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing'\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo'\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo'\n } else {\n return null\n }\n },\n\n searchInfo: function (): Record<string, any> {\n const search = _info.searchEngine(),\n param = search != 'yahoo' ? 'q' : 'p',\n ret: Record<string, any> = {}\n\n if (!_isNull(search)) {\n ret['$search_engine'] = search\n\n const keyword = document ? _getQueryParam(document.referrer, param) : ''\n if (keyword.length) {\n ret['ph_keyword'] = keyword\n }\n }\n\n return ret\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function (user_agent: string, vendor: string | undefined, opera?: any): string {\n vendor = vendor || '' // vendor is undefined for at least IE9\n if (opera || _includes(user_agent, ' OPR/')) {\n if (_includes(user_agent, 'Mini')) {\n return 'Opera Mini'\n }\n return 'Opera'\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry'\n } else if (_includes(user_agent, 'IEMobile') || _includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile'\n } else if (_includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet'\n } else if (_includes(user_agent, 'Edge') || _includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge'\n } else if (_includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile'\n } else if (_includes(user_agent, 'Chrome')) {\n return 'Chrome'\n } else if (_includes(user_agent, 'CriOS')) {\n return 'Chrome iOS'\n } else if (_includes(user_agent, 'UCWEB') || _includes(user_agent, 'UCBrowser')) {\n return 'UC Browser'\n } else if (_includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS'\n } else if (_includes(vendor, 'Apple') || isSafari(user_agent)) {\n if (_includes(user_agent, 'Mobile')) {\n return 'Mobile Safari'\n }\n return 'Safari'\n } else if (_includes(user_agent, 'Android')) {\n return 'Android Mobile'\n } else if (_includes(user_agent, 'Konqueror') || _includes(user_agent, 'konqueror')) {\n return 'Konqueror'\n } else if (_includes(user_agent, 'Firefox')) {\n return 'Firefox'\n } else if (_includes(user_agent, 'MSIE') || _includes(user_agent, 'Trident/')) {\n return 'Internet Explorer'\n } else if (_includes(user_agent, 'Gecko')) {\n return 'Mozilla'\n } else {\n return ''\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n *\n * `navigator.vendor` is passed in and used to help with detecting certain browsers\n * NB `navigator.vendor` is deprecated and not present in every browser\n */\n browserVersion: function (userAgent: string, vendor: string | undefined, opera: string): number | null {\n const browser = _info.browser(userAgent, vendor, opera)\n const versionRegexes: Record<string, RegExp[]> = {\n 'Internet Explorer Mobile': [/rv:(\\d+(\\.\\d+)?)/],\n 'Microsoft Edge': [/Edge?\\/(\\d+(\\.\\d+)?)/],\n Chrome: [/Chrome\\/(\\d+(\\.\\d+)?)/],\n 'Chrome iOS': [/CriOS\\/(\\d+(\\.\\d+)?)/],\n 'UC Browser': [/(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/],\n Safari: [/Version\\/(\\d+(\\.\\d+)?)/],\n 'Mobile Safari': [/Version\\/(\\d+(\\.\\d+)?)/],\n Opera: [/(Opera|OPR)\\/(\\d+(\\.\\d+)?)/],\n Firefox: [/Firefox\\/(\\d+(\\.\\d+)?)/],\n 'Firefox iOS': [/FxiOS\\/(\\d+(\\.\\d+)?)/],\n Konqueror: [/Konqueror[:/]?(\\d+(\\.\\d+)?)/i],\n // not every blackberry user agent has the version after the name\n BlackBerry: [/BlackBerry (\\d+(\\.\\d+)?)/, /Version\\/(\\d+(\\.\\d+)?)/],\n 'Android Mobile': [/android\\s(\\d+(\\.\\d+)?)/],\n 'Samsung Internet': [/SamsungBrowser\\/(\\d+(\\.\\d+)?)/],\n 'Internet Explorer': [/(rv:|MSIE )(\\d+(\\.\\d+)?)/],\n Mozilla: [/rv:(\\d+(\\.\\d+)?)/],\n }\n const regexes: RegExp[] | undefined = versionRegexes[browser as keyof typeof versionRegexes]\n if (_isUndefined(regexes)) {\n return null\n }\n\n for (let i = 0; i < regexes.length; i++) {\n const regex = regexes[i]\n const matches = userAgent.match(regex)\n if (matches) {\n return parseFloat(matches[matches.length - 2])\n }\n }\n return null\n },\n\n browserLanguage: function (): string {\n return (\n navigator.language || // Any modern browser\n (navigator as Record<string, any>).userLanguage // IE11\n )\n },\n\n os: function (user_agent: string): { os_name: string; os_version: string } {\n if (/Windows/i.test(user_agent)) {\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return { os_name: 'Windows Phone', os_version: '' }\n }\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent)\n if (match && match[1]) {\n const version = match[1]\n return { os_name: 'Windows', os_version: version }\n }\n return { os_name: 'Windows', os_version: '' }\n } else if (/(iPhone|iPad|iPod)/.test(user_agent)) {\n const match = /OS (\\d+)_(\\d+)_?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'iOS', os_version: versionParts.join('.') }\n }\n return { os_name: 'iOS', os_version: '' }\n } else if (/Android/.test(user_agent)) {\n const match = /Android (\\d+)\\.(\\d+)\\.?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Android', os_version: versionParts.join('.') }\n }\n return { os_name: 'Android', os_version: '' }\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return { os_name: 'BlackBerry', os_version: '' }\n } else if (/Mac/i.test(user_agent)) {\n const match = /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Mac OS X', os_version: versionParts.join('.') }\n }\n return { os_name: 'Mac OS X', os_version: '' }\n } else if (/Linux/.test(user_agent)) {\n return { os_name: 'Linux', os_version: '' }\n } else if (/CrOS/.test(user_agent)) {\n return { os_name: 'Chrome OS', os_version: '' }\n } else {\n return { os_name: '', os_version: '' }\n }\n },\n\n device: function (user_agent: string): string {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone'\n } else if (/iPad/.test(user_agent)) {\n return 'iPad'\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch'\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone'\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry'\n } else if (/Android/.test(user_agent) && !/Mobile/.test(user_agent)) {\n return 'Android Tablet'\n } else if (/Android/.test(user_agent)) {\n return 'Android'\n } else {\n return ''\n }\n },\n\n deviceType: function (user_agent: string): string {\n const device = this.device(user_agent)\n if (device === 'iPad' || device === 'Android Tablet') {\n return 'Tablet'\n } else if (device) {\n return 'Mobile'\n } else {\n return 'Desktop'\n }\n },\n\n referrer: function (): string {\n return document?.referrer || '$direct'\n },\n\n referringDomain: function (): string {\n if (!document?.referrer) {\n return '$direct'\n }\n return convertToURL(document.referrer)?.host || '$direct'\n },\n\n properties: function (): Properties {\n if (!userAgent) {\n return {}\n }\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, assignableWindow.opera),\n $device: _info.device(userAgent),\n $device_type: _info.deviceType(userAgent),\n }),\n {\n $current_url: window?.location.href,\n $host: window?.location.host,\n $pathname: window?.location.pathname,\n $raw_user_agent: userAgent.length > 1000 ? userAgent.substring(0, 997) + '...' : userAgent,\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, assignableWindow.opera),\n $browser_language: _info.browserLanguage(),\n $screen_height: window?.screen.height,\n $screen_width: window?.screen.width,\n $viewport_height: window?.innerHeight,\n $viewport_width: window?.innerWidth,\n $lib: 'web',\n $lib_version: Config.LIB_VERSION,\n $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n $time: _timestamp() / 1000, // epoch time in seconds\n }\n )\n },\n\n people_properties: function (): Properties {\n if (!userAgent) {\n return {}\n }\n\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, assignableWindow.opera),\n }),\n {\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, assignableWindow.opera),\n }\n )\n },\n}\n"]}
|
|
1
|
+
{"version":3,"file":"event-utils.js","sourceRoot":"","sources":["../../../src/utils/event-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { _getQueryParam, convertToURL } from './request-utils'\nimport { _isNull, _isUndefined } from './type-utils'\nimport { Properties } from '../types'\nimport Config from '../config'\nimport { _each, _extend, _includes, _strip_empty_properties, _timestamp } from './index'\nimport { document, window, location, userAgent, assignableWindow } from './globals'\n\n/**\n * Safari detection turns out to be complicted. For e.g. https://stackoverflow.com/a/29696509\n * We can be slightly loose because some options have been ruled out (e.g. firefox on iOS)\n * before this check is made\n */\nfunction isSafari(userAgent: string): boolean {\n return _includes(userAgent, 'Safari') && !_includes(userAgent, 'Chrome') && !_includes(userAgent, 'Android')\n}\n\nexport const _info = {\n campaignParams: function (customParams?: string[]): Record<string, any> {\n // Should be kept in sync with https://github.com/PostHog/posthog/blob/master/plugin-server/src/utils/db/utils.ts#L60\n const campaign_keywords = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gclid',\n 'gad_source',\n 'gbraid',\n 'wbraid',\n 'fbclid',\n 'msclkid',\n ].concat(customParams || [])\n\n const params: Record<string, any> = {}\n _each(campaign_keywords, function (kwkey) {\n const kw = document ? _getQueryParam(document.URL, kwkey) : ''\n if (kw.length) {\n params[kwkey] = kw\n }\n })\n\n return params\n },\n\n searchEngine: function (): string | null {\n const referrer = document?.referrer\n if (!referrer) {\n return null\n } else if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google'\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing'\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo'\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo'\n } else {\n return null\n }\n },\n\n searchInfo: function (): Record<string, any> {\n const search = _info.searchEngine(),\n param = search != 'yahoo' ? 'q' : 'p',\n ret: Record<string, any> = {}\n\n if (!_isNull(search)) {\n ret['$search_engine'] = search\n\n const keyword = document ? _getQueryParam(document.referrer, param) : ''\n if (keyword.length) {\n ret['ph_keyword'] = keyword\n }\n }\n\n return ret\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function (user_agent: string, vendor: string | undefined, opera?: any): string {\n vendor = vendor || '' // vendor is undefined for at least IE9\n if (opera || _includes(user_agent, ' OPR/')) {\n if (_includes(user_agent, 'Mini')) {\n return 'Opera Mini'\n }\n return 'Opera'\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry'\n } else if (_includes(user_agent, 'IEMobile') || _includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile'\n } else if (_includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet'\n } else if (_includes(user_agent, 'Edge') || _includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge'\n } else if (_includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile'\n } else if (_includes(user_agent, 'Chrome')) {\n return 'Chrome'\n } else if (_includes(user_agent, 'CriOS')) {\n return 'Chrome iOS'\n } else if (_includes(user_agent, 'UCWEB') || _includes(user_agent, 'UCBrowser')) {\n return 'UC Browser'\n } else if (_includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS'\n } else if (_includes(vendor, 'Apple') || isSafari(user_agent)) {\n if (_includes(user_agent, 'Mobile')) {\n return 'Mobile Safari'\n }\n return 'Safari'\n } else if (_includes(user_agent, 'Android')) {\n return 'Android Mobile'\n } else if (_includes(user_agent, 'Konqueror') || _includes(user_agent, 'konqueror')) {\n return 'Konqueror'\n } else if (_includes(user_agent, 'Firefox')) {\n return 'Firefox'\n } else if (_includes(user_agent, 'MSIE') || _includes(user_agent, 'Trident/')) {\n return 'Internet Explorer'\n } else if (_includes(user_agent, 'Gecko')) {\n return 'Mozilla'\n } else {\n return ''\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n *\n * `navigator.vendor` is passed in and used to help with detecting certain browsers\n * NB `navigator.vendor` is deprecated and not present in every browser\n */\n browserVersion: function (userAgent: string, vendor: string | undefined, opera: string): number | null {\n const browser = _info.browser(userAgent, vendor, opera)\n const versionRegexes: Record<string, RegExp[]> = {\n 'Internet Explorer Mobile': [/rv:(\\d+(\\.\\d+)?)/],\n 'Microsoft Edge': [/Edge?\\/(\\d+(\\.\\d+)?)/],\n Chrome: [/Chrome\\/(\\d+(\\.\\d+)?)/],\n 'Chrome iOS': [/CriOS\\/(\\d+(\\.\\d+)?)/],\n 'UC Browser': [/(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/],\n Safari: [/Version\\/(\\d+(\\.\\d+)?)/],\n 'Mobile Safari': [/Version\\/(\\d+(\\.\\d+)?)/],\n Opera: [/(Opera|OPR)\\/(\\d+(\\.\\d+)?)/],\n Firefox: [/Firefox\\/(\\d+(\\.\\d+)?)/],\n 'Firefox iOS': [/FxiOS\\/(\\d+(\\.\\d+)?)/],\n Konqueror: [/Konqueror[:/]?(\\d+(\\.\\d+)?)/i],\n // not every blackberry user agent has the version after the name\n BlackBerry: [/BlackBerry (\\d+(\\.\\d+)?)/, /Version\\/(\\d+(\\.\\d+)?)/],\n 'Android Mobile': [/android\\s(\\d+(\\.\\d+)?)/],\n 'Samsung Internet': [/SamsungBrowser\\/(\\d+(\\.\\d+)?)/],\n 'Internet Explorer': [/(rv:|MSIE )(\\d+(\\.\\d+)?)/],\n Mozilla: [/rv:(\\d+(\\.\\d+)?)/],\n }\n const regexes: RegExp[] | undefined = versionRegexes[browser as keyof typeof versionRegexes]\n if (_isUndefined(regexes)) {\n return null\n }\n\n for (let i = 0; i < regexes.length; i++) {\n const regex = regexes[i]\n const matches = userAgent.match(regex)\n if (matches) {\n return parseFloat(matches[matches.length - 2])\n }\n }\n return null\n },\n\n browserLanguage: function (): string {\n return (\n navigator.language || // Any modern browser\n (navigator as Record<string, any>).userLanguage // IE11\n )\n },\n\n os: function (user_agent: string): { os_name: string; os_version: string } {\n if (/Windows/i.test(user_agent)) {\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return { os_name: 'Windows Phone', os_version: '' }\n }\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent)\n if (match && match[1]) {\n const version = match[1]\n return { os_name: 'Windows', os_version: version }\n }\n return { os_name: 'Windows', os_version: '' }\n } else if (/(iPhone|iPad|iPod)/.test(user_agent)) {\n const match = /OS (\\d+)_(\\d+)_?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'iOS', os_version: versionParts.join('.') }\n }\n return { os_name: 'iOS', os_version: '' }\n } else if (/Android/.test(user_agent)) {\n const match = /Android (\\d+)\\.(\\d+)\\.?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Android', os_version: versionParts.join('.') }\n }\n return { os_name: 'Android', os_version: '' }\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return { os_name: 'BlackBerry', os_version: '' }\n } else if (/Mac/i.test(user_agent)) {\n const match = /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Mac OS X', os_version: versionParts.join('.') }\n }\n return { os_name: 'Mac OS X', os_version: '' }\n } else if (/Linux/.test(user_agent)) {\n return { os_name: 'Linux', os_version: '' }\n } else if (/CrOS/.test(user_agent)) {\n return { os_name: 'Chrome OS', os_version: '' }\n } else {\n return { os_name: '', os_version: '' }\n }\n },\n\n device: function (user_agent: string): string {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone'\n } else if (/iPad/.test(user_agent)) {\n return 'iPad'\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch'\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone'\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry'\n } else if (/Android/.test(user_agent) && !/Mobile/.test(user_agent)) {\n return 'Android Tablet'\n } else if (/Android/.test(user_agent)) {\n return 'Android'\n } else {\n return ''\n }\n },\n\n deviceType: function (user_agent: string): string {\n const device = this.device(user_agent)\n if (device === 'iPad' || device === 'Android Tablet') {\n return 'Tablet'\n } else if (device) {\n return 'Mobile'\n } else {\n return 'Desktop'\n }\n },\n\n referrer: function (): string {\n return document?.referrer || '$direct'\n },\n\n referringDomain: function (): string {\n if (!document?.referrer) {\n return '$direct'\n }\n return convertToURL(document.referrer)?.host || '$direct'\n },\n\n properties: function (): Properties {\n if (!userAgent) {\n return {}\n }\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, assignableWindow.opera),\n $device: _info.device(userAgent),\n $device_type: _info.deviceType(userAgent),\n }),\n {\n $current_url: location?.href,\n $host: location?.host,\n $pathname: location?.pathname,\n $raw_user_agent: userAgent.length > 1000 ? userAgent.substring(0, 997) + '...' : userAgent,\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, assignableWindow.opera),\n $browser_language: _info.browserLanguage(),\n $screen_height: window?.screen.height,\n $screen_width: window?.screen.width,\n $viewport_height: window?.innerHeight,\n $viewport_width: window?.innerWidth,\n $lib: 'web',\n $lib_version: Config.LIB_VERSION,\n $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n $time: _timestamp() / 1000, // epoch time in seconds\n }\n )\n },\n\n people_properties: function (): Properties {\n if (!userAgent) {\n return {}\n }\n\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, assignableWindow.opera),\n }),\n {\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, assignableWindow.opera),\n }\n )\n },\n}\n"]}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
declare const win: (Window & typeof globalThis) | undefined;
|
|
1
2
|
export declare const ArrayProto: any[];
|
|
2
3
|
export declare const nativeForEach: (callbackfn: (value: any, index: number, array: any[]) => void, thisArg?: any) => void;
|
|
3
4
|
export declare const nativeIndexOf: (searchElement: any, fromIndex?: number | undefined) => number;
|
|
4
|
-
export declare const win: (Window & typeof globalThis) | undefined;
|
|
5
5
|
export declare const document: Document | undefined;
|
|
6
|
+
export declare const location: Location | undefined;
|
|
7
|
+
export declare const fetch: typeof globalThis.fetch | undefined;
|
|
8
|
+
export declare const XMLHttpRequest: {
|
|
9
|
+
new (): XMLHttpRequest;
|
|
10
|
+
prototype: XMLHttpRequest;
|
|
11
|
+
readonly DONE: number;
|
|
12
|
+
readonly HEADERS_RECEIVED: number;
|
|
13
|
+
readonly LOADING: number;
|
|
14
|
+
readonly OPENED: number;
|
|
15
|
+
readonly UNSENT: number;
|
|
16
|
+
} | undefined;
|
|
6
17
|
export declare const userAgent: string | undefined;
|
|
7
18
|
export declare const assignableWindow: Window & typeof globalThis & Record<string, any>;
|
|
8
19
|
export { win as window };
|
package/lib/src/utils/globals.js
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
/*
|
|
2
|
-
*
|
|
2
|
+
* Global helpers to protect access to browser globals in a way that is safer for different targets
|
|
3
|
+
* like DOM, SSR, Web workers etc.
|
|
4
|
+
*
|
|
5
|
+
* NOTE: Typically we want the "window" but globalThis works for both the typical browser context as
|
|
6
|
+
* well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.
|
|
7
|
+
* If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced
|
|
8
|
+
* to handle the case where the global is not available.
|
|
3
9
|
*/
|
|
10
|
+
// eslint-disable-next-line no-restricted-globals
|
|
11
|
+
var win = typeof window !== 'undefined' ? window : undefined;
|
|
12
|
+
var global = typeof globalThis !== 'undefined' ? globalThis : win;
|
|
4
13
|
export var ArrayProto = Array.prototype;
|
|
5
14
|
export var nativeForEach = ArrayProto.forEach;
|
|
6
15
|
export var nativeIndexOf = ArrayProto.indexOf;
|
|
7
|
-
|
|
8
|
-
export var
|
|
9
|
-
var
|
|
10
|
-
export var
|
|
16
|
+
var navigator = global === null || global === void 0 ? void 0 : global.navigator;
|
|
17
|
+
export var document = global === null || global === void 0 ? void 0 : global.document;
|
|
18
|
+
export var location = global === null || global === void 0 ? void 0 : global.location;
|
|
19
|
+
export var fetch = global === null || global === void 0 ? void 0 : global.fetch;
|
|
20
|
+
export var XMLHttpRequest = global === null || global === void 0 ? void 0 : global.XMLHttpRequest;
|
|
11
21
|
export var userAgent = navigator === null || navigator === void 0 ? void 0 : navigator.userAgent;
|
|
12
22
|
export var assignableWindow = win !== null && win !== void 0 ? win : {};
|
|
13
23
|
export { win as window };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../../src/utils/globals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../../src/utils/globals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iDAAiD;AACjD,IAAM,GAAG,GAA6C,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AAExG,IAAM,MAAM,GAAkC,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAA;AAElG,MAAM,CAAC,IAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAA;AACzC,MAAM,CAAC,IAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAA;AAC/C,MAAM,CAAC,IAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAA;AAE/C,IAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;AACnC,MAAM,CAAC,IAAM,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA;AACxC,MAAM,CAAC,IAAM,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA;AACxC,MAAM,CAAC,IAAM,KAAK,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAA;AAClC,MAAM,CAAC,IAAM,cAAc,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,CAAA;AACpD,MAAM,CAAC,IAAM,SAAS,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAA;AAC7C,MAAM,CAAC,IAAM,gBAAgB,GAAqD,GAAG,aAAH,GAAG,cAAH,GAAG,GAAK,EAAU,CAAA;AAEpG,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,CAAA","sourcesContent":["/*\n * Global helpers to protect access to browser globals in a way that is safer for different targets\n * like DOM, SSR, Web workers etc.\n *\n * NOTE: Typically we want the \"window\" but globalThis works for both the typical browser context as\n * well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.\n * If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced\n * to handle the case where the global is not available.\n */\n\n// eslint-disable-next-line no-restricted-globals\nconst win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\n\nconst global: typeof globalThis | undefined = typeof globalThis !== 'undefined' ? globalThis : win\n\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n\nconst navigator = global?.navigator\nexport const document = global?.document\nexport const location = global?.location\nexport const fetch = global?.fetch\nexport const XMLHttpRequest = global?.XMLHttpRequest\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: Window & typeof globalThis & Record<string, any> = win ?? ({} as any)\n\nexport { win as window }\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { _each, _isValidRegex } from './';
|
|
2
|
-
import { _isArray,
|
|
2
|
+
import { _isArray, _isUndefined } from './type-utils';
|
|
3
3
|
import { logger } from './logger';
|
|
4
|
-
import { document,
|
|
4
|
+
import { document, fetch, XMLHttpRequest } from './globals';
|
|
5
5
|
var localDomains = ['localhost', '127.0.0.1'];
|
|
6
|
-
export var SUPPORTS_XHR = !!(
|
|
7
|
-
|
|
8
|
-
export var SUPPORTS_REQUEST = SUPPORTS_XHR ||
|
|
6
|
+
export var SUPPORTS_XHR = !!(XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());
|
|
7
|
+
// eslint-disable-next-line compat/compat
|
|
8
|
+
export var SUPPORTS_REQUEST = SUPPORTS_XHR || !!fetch;
|
|
9
9
|
/**
|
|
10
10
|
* IE11 doesn't support `new URL`
|
|
11
11
|
* so we can create an anchor element and use that to parse the URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-utils.js","sourceRoot":"","sources":["../../../src/utils/request-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"request-utils.js","sourceRoot":"","sources":["../../../src/utils/request-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { _each, _isValidRegex } from './'\n\nimport { _isArray, _isUndefined } from './type-utils'\nimport { logger } from './logger'\nimport { document, fetch, XMLHttpRequest } from './globals'\n\nconst localDomains = ['localhost', '127.0.0.1']\n\nexport const SUPPORTS_XHR = !!(XMLHttpRequest && 'withCredentials' in new XMLHttpRequest())\n// eslint-disable-next-line compat/compat\nexport const SUPPORTS_REQUEST = SUPPORTS_XHR || !!fetch\n\n/**\n * IE11 doesn't support `new URL`\n * so we can create an anchor element and use that to parse the URL\n * there's a lot of overlap between HTMLHyperlinkElementUtils and URL\n * meaning useful properties like `pathname` are available on both\n */\nexport const convertToURL = (url: string): HTMLAnchorElement | null => {\n const location = document?.createElement('a')\n if (_isUndefined(location)) {\n return null\n }\n\n location.href = url\n return location\n}\n\nexport const _isUrlMatchingRegex = function (url: string, pattern: string): boolean {\n if (!_isValidRegex(pattern)) return false\n return new RegExp(pattern).test(url)\n}\n\nexport const _HTTPBuildQuery = function (formdata: Record<string, any>, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n _each(formdata, function (val, key) {\n // the key might be literally the string undefined for e.g. if {undefined: 'something'}\n if (_isUndefined(val) || _isUndefined(key) || key === 'undefined') {\n return\n }\n\n use_val = encodeURIComponent(val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\nexport const _getQueryParam = function (url: string, param: string): string {\n const withoutHash: string = url.split('#')[0] || ''\n const queryParams: string = withoutHash.split('?')[1] || ''\n\n const queryParts = queryParams.split('&')\n let keyValuePair\n\n for (let i = 0; i < queryParts.length; i++) {\n const parts = queryParts[i].split('=')\n if (parts[0] === param) {\n keyValuePair = parts\n break\n }\n }\n\n if (!_isArray(keyValuePair) || keyValuePair.length < 2) {\n return ''\n } else {\n let result = keyValuePair[1]\n try {\n result = decodeURIComponent(result)\n } catch (err) {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n"]}
|
package/package.json
CHANGED