posthog-js 1.92.0 → 1.92.1
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/module.d.ts +21 -23
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/recorder-v2.js +2 -2
- package/dist/recorder-v2.js.map +1 -1
- package/dist/surveys.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/src/decide.js +4 -5
- package/lib/src/decide.js.map +1 -1
- package/lib/src/extensions/replay/config.d.ts +2 -2
- package/lib/src/extensions/replay/config.js +73 -6
- package/lib/src/extensions/replay/config.js.map +1 -1
- package/lib/src/extensions/replay/sessionrecording.d.ts +1 -0
- package/lib/src/extensions/replay/sessionrecording.js +14 -2
- package/lib/src/extensions/replay/sessionrecording.js.map +1 -1
- package/lib/src/loader-recorder-v2.d.ts +2 -2
- package/lib/src/loader-recorder-v2.js +101 -49
- package/lib/src/loader-recorder-v2.js.map +1 -1
- package/lib/src/posthog-core.d.ts +7 -2
- package/lib/src/posthog-core.js +18 -3
- package/lib/src/posthog-core.js.map +1 -1
- package/lib/src/types.d.ts +13 -2
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/event-utils.js +3 -4
- package/lib/src/utils/event-utils.js.map +1 -1
- package/lib/src/utils/request-utils.d.ts +7 -0
- package/lib/src/utils/request-utils.js +15 -0
- package/lib/src/utils/request-utils.js.map +1 -1
- package/lib/src/utils/type-utils.js +2 -7
- package/lib/src/utils/type-utils.js.map +1 -1
- package/package.json +1 -1
- package/lib/src/extensions/replay/web-performance.d.ts +0 -20
- package/lib/src/extensions/replay/web-performance.js +0 -248
- package/lib/src/extensions/replay/web-performance.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-recorder-v2.js","sourceRoot":"","sources":["../../src/loader-recorder-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { version } from 'rrweb/package.json'\n\n// Same as loader-globals.ts except includes rrweb2 scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb/es/rrweb/packages/rrweb/src/plugins/console/record'\n\n// rrweb/network@1 code starts\n// most of what is below here will be removed when rrweb release their code for this\n// see https://github.com/rrweb-io/rrweb/pull/1105\n\n/// <reference lib=\"dom\" />\n\n// NB adopted from https://github.com/rrweb-io/rrweb/pull/1105 which looks like it will be accepted into rrweb\n// however, in the PR, it throws when the performance observer data is not available\n// and assumes it is running in a browser with the Request API (i.e. not IE11)\n// copying here so that we can use it before rrweb adopt it\n\nimport type { IWindow, listenerHandler, RecordPlugin } from '@rrweb/types'\nimport { InitiatorType, NetworkRecordOptions, NetworkRequest, Headers } from './types'\nimport { _isBoolean, _isFunction, _isArray, _isUndefined, _isNull } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window } from './utils/globals'\nimport { defaultNetworkOptions } from './extensions/replay/config'\n\nexport type NetworkData = {\n requests: NetworkRequest[]\n isInitial?: boolean\n}\n\ntype networkCallback = (data: NetworkData) => void\n\nconst isNavigationTiming = (entry: PerformanceEntry): entry is PerformanceNavigationTiming =>\n entry.entryType === 'navigation'\nconst isResourceTiming = (entry: PerformanceEntry): entry is PerformanceResourceTiming => entry.entryType === 'resource'\n\ntype ObservedPerformanceEntry = (PerformanceNavigationTiming | PerformanceResourceTiming) & {\n responseStatus?: number\n}\n\n// import { patch } from 'rrweb/typings/utils'\n// copied from https://github.com/rrweb-io/rrweb/blob/8aea5b00a4dfe5a6f59bd2ae72bb624f45e51e81/packages/rrweb/src/utils.ts#L129\n// which was copied from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nexport function patch(\n source: { [key: string]: any },\n name: string,\n replacement: (...args: unknown[]) => unknown\n): () => void {\n try {\n if (!(name in source)) {\n return () => {\n //\n }\n }\n\n const original = source[name] as () => unknown\n const wrapped = replacement(original)\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (_isFunction(wrapped)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n wrapped.prototype = wrapped.prototype || {}\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n })\n }\n\n source[name] = wrapped\n\n return () => {\n source[name] = original\n }\n } catch {\n return () => {\n //\n }\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n}\n\nexport function findLast<T>(array: Array<T>, predicate: (value: T) => boolean): T | undefined {\n const length = array.length\n for (let i = length - 1; i >= 0; i -= 1) {\n if (predicate(array[i])) {\n return array[i]\n }\n }\n return undefined\n}\n\nfunction initPerformanceObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>) {\n if (options.recordInitialRequests) {\n const initialPerformanceEntries = win.performance\n .getEntries()\n .filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) && options.initiatorTypes.includes(entry.initiatorType as InitiatorType))\n )\n cb({\n requests: initialPerformanceEntries.map((entry) => ({\n url: entry.name,\n initiatorType: entry.initiatorType as InitiatorType,\n status: 'responseStatus' in entry ? entry.responseStatus : undefined,\n startTime: Math.round(entry.startTime),\n endTime: Math.round(entry.responseEnd),\n })),\n isInitial: true,\n })\n }\n const observer = new win.PerformanceObserver((entries) => {\n const performanceEntries = entries\n .getEntries()\n .filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) &&\n options.initiatorTypes.includes(entry.initiatorType as InitiatorType) &&\n entry.initiatorType !== 'xmlhttprequest' &&\n entry.initiatorType !== 'fetch')\n )\n cb({\n requests: performanceEntries.map((entry) => ({\n url: entry.name,\n initiatorType: entry.initiatorType as InitiatorType,\n status: 'responseStatus' in entry ? entry.responseStatus : undefined,\n startTime: Math.round(entry.startTime),\n endTime: Math.round(entry.responseEnd),\n })),\n })\n })\n observer.observe({ entryTypes: ['navigation', 'resource'] })\n return () => {\n observer.disconnect()\n }\n}\n\nfunction shouldRecordHeaders(type: 'request' | 'response', recordHeaders: NetworkRecordOptions['recordHeaders']) {\n return !!recordHeaders && (_isBoolean(recordHeaders) || recordHeaders[type])\n}\n\nfunction shouldRecordBody(\n type: 'request' | 'response',\n recordBody: NetworkRecordOptions['recordBody'],\n headers: Headers\n) {\n function matchesContentType(contentTypes: string[]) {\n const contentTypeHeader = Object.keys(headers).find((key) => key.toLowerCase() === 'content-type')\n const contentType = contentTypeHeader && headers[contentTypeHeader]\n return contentTypes.some((ct) => contentType?.includes(ct))\n }\n if (!recordBody) return false\n if (_isBoolean(recordBody)) return true\n if (_isArray(recordBody)) return matchesContentType(recordBody)\n const recordBodyType = recordBody[type]\n if (_isBoolean(recordBodyType)) return recordBodyType\n return matchesContentType(recordBodyType)\n}\n\nasync function getRequestPerformanceEntry(\n win: IWindow,\n initiatorType: string,\n url: string,\n after?: number,\n before?: number,\n attempt = 0\n): Promise<PerformanceResourceTiming | null> {\n if (attempt > 10) {\n logger.warn('Failed to get performance entry for request', { url, initiatorType })\n return null\n }\n const urlPerformanceEntries = win.performance.getEntriesByName(url) as PerformanceResourceTiming[]\n const performanceEntry = findLast(\n urlPerformanceEntries,\n (entry) =>\n isResourceTiming(entry) &&\n entry.initiatorType === initiatorType &&\n (!after || entry.startTime >= after) &&\n (!before || entry.startTime <= before)\n )\n if (!performanceEntry) {\n await new Promise((resolve) => setTimeout(resolve, 50 * attempt))\n return getRequestPerformanceEntry(win, initiatorType, url, after, before, attempt + 1)\n }\n return performanceEntry\n}\n\nfunction initXhrObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>): listenerHandler {\n if (!options.initiatorTypes.includes('xmlhttprequest')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n const restorePatch = patch(\n win.XMLHttpRequest.prototype,\n 'open',\n // TODO how should this be typed?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (originalOpen: typeof XMLHttpRequest.prototype.open) => {\n return function (\n method: string,\n url: string | URL,\n async = true,\n username?: string | null,\n password?: string | null\n ) {\n // because this function is returned in its actual context `this` _is_ an XMLHttpRequest\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const xhr = this as XMLHttpRequest\n\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url)\n const networkRequest: Partial<NetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n const requestHeaders: Headers = {}\n const originalSetRequestHeader = xhr.setRequestHeader.bind(xhr)\n xhr.setRequestHeader = (header: string, value: string) => {\n requestHeaders[header] = value\n return originalSetRequestHeader(header, value)\n }\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n const originalSend = xhr.send.bind(xhr)\n xhr.send = (body) => {\n if (shouldRecordBody('request', options.recordBody, requestHeaders)) {\n if (_isUndefined(body) || _isNull(body)) {\n networkRequest.requestBody = null\n } else {\n networkRequest.requestBody = body\n }\n }\n after = win.performance.now()\n return originalSend(body)\n }\n xhr.addEventListener('readystatechange', () => {\n if (xhr.readyState !== xhr.DONE) {\n return\n }\n before = win.performance.now()\n const responseHeaders: Headers = {}\n const rawHeaders = xhr.getAllResponseHeaders()\n const headers = rawHeaders.trim().split(/[\\r\\n]+/)\n headers.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift()\n const value = parts.join(': ')\n if (header) {\n responseHeaders[header] = value\n }\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (shouldRecordBody('response', options.recordBody, responseHeaders)) {\n if (_isUndefined(xhr.response) || _isNull(xhr.response)) {\n networkRequest.responseBody = null\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n networkRequest.responseBody = xhr.response\n }\n }\n getRequestPerformanceEntry(win, 'xmlhttprequest', req.url, after, before)\n .then((entry) => {\n if (_isNull(entry)) {\n return\n }\n const request: NetworkRequest = {\n url: entry.name,\n method: req.method,\n initiatorType: entry.initiatorType as InitiatorType,\n status: xhr.status,\n startTime: Math.round(entry.startTime),\n endTime: Math.round(entry.responseEnd),\n requestHeaders: networkRequest.requestHeaders,\n requestBody: networkRequest.requestBody,\n responseHeaders: networkRequest.responseHeaders,\n responseBody: networkRequest.responseBody,\n }\n cb({ requests: [request] })\n })\n .catch(() => {\n //\n })\n })\n originalOpen.call(xhr, method, url, async, username, password)\n }\n }\n )\n return () => {\n restorePatch()\n }\n}\n\nfunction initFetchObserver(\n cb: networkCallback,\n win: IWindow,\n options: Required<NetworkRecordOptions>\n): listenerHandler {\n if (!options.initiatorTypes.includes('fetch')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n // TODO how should this be typed?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const restorePatch = patch(win, 'fetch', (originalFetch: typeof fetch) => {\n return async function (url: URL | RequestInfo, init?: RequestInit | undefined) {\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url, init)\n let res: Response | undefined\n const networkRequest: Partial<NetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n try {\n const requestHeaders: Headers = {}\n req.headers.forEach((value, header) => {\n requestHeaders[header] = value\n })\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n if (shouldRecordBody('request', options.recordBody, requestHeaders)) {\n if (_isUndefined(req.body) || _isNull(req.body)) {\n networkRequest.requestBody = null\n } else {\n networkRequest.requestBody = req.body\n }\n }\n after = win.performance.now()\n res = await originalFetch(req)\n before = win.performance.now()\n const responseHeaders: Headers = {}\n res.headers.forEach((value, header) => {\n responseHeaders[header] = value\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (shouldRecordBody('response', options.recordBody, responseHeaders)) {\n let body: string | undefined\n try {\n body = await res.clone().text()\n } catch {\n //\n }\n if (_isUndefined(res.body) || _isNull(res.body)) {\n networkRequest.responseBody = null\n } else {\n networkRequest.responseBody = body\n }\n }\n return res\n } finally {\n getRequestPerformanceEntry(win, 'fetch', req.url, after, before)\n .then((entry) => {\n if (_isNull(entry)) {\n return\n }\n const request: NetworkRequest = {\n url: entry.name,\n method: req.method,\n initiatorType: entry.initiatorType as InitiatorType,\n status: res?.status,\n startTime: Math.round(entry.startTime),\n endTime: Math.round(entry.responseEnd),\n requestHeaders: networkRequest.requestHeaders,\n requestBody: networkRequest.requestBody,\n responseHeaders: networkRequest.responseHeaders,\n responseBody: networkRequest.responseBody,\n }\n cb({ requests: [request] })\n })\n .catch(() => {\n //\n })\n }\n }\n })\n return () => {\n restorePatch()\n }\n}\n\nfunction initNetworkObserver(\n callback: networkCallback,\n win: IWindow, // top window or in an iframe\n options: NetworkRecordOptions\n): listenerHandler {\n if (!('performance' in win)) {\n return () => {\n //\n }\n }\n const networkOptions = (\n options ? Object.assign({}, defaultNetworkOptions, options) : defaultNetworkOptions\n ) as Required<NetworkRecordOptions>\n\n const cb: networkCallback = (data) => {\n const requests: NetworkRequest[] = []\n data.requests.forEach((request) => {\n const maskedRequest = networkOptions.maskRequestFn(request)\n if (maskedRequest) {\n requests.push(maskedRequest)\n }\n })\n\n if (requests.length > 0 || data.isInitial) {\n callback({ ...data, requests })\n }\n }\n const performanceObserver = initPerformanceObserver(cb, win, networkOptions)\n const xhrObserver = initXhrObserver(cb, win, networkOptions)\n const fetchObserver = initFetchObserver(cb, win, networkOptions)\n return () => {\n performanceObserver()\n xhrObserver()\n fetchObserver()\n }\n}\n\n// use the plugin name so that when this functionality is adopted into rrweb\n// we can remove this plugin and use the core functionality with the same data\nexport const NETWORK_PLUGIN_NAME = 'rrweb/network@1'\n\n// TODO how should this be typed?\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const getRecordNetworkPlugin: (options?: NetworkRecordOptions) => RecordPlugin = (options) => {\n return {\n name: NETWORK_PLUGIN_NAME,\n observer: initNetworkObserver,\n options: options,\n }\n}\n\n// rrweb/networ@1 ends\n\nif (window) {\n ;(window as any).rrweb = { record: rrwebRecord, version: 'v2', rrwebVersion: version }\n ;(window as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n ;(window as any).getRecordNetworkPlugin = getRecordNetworkPlugin\n}\n\nexport default rrwebRecord\n"]}
|
|
1
|
+
{"version":3,"file":"loader-recorder-v2.js","sourceRoot":"","sources":["../../src/loader-recorder-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { version } from 'rrweb/package.json'\n\n// Same as loader-globals.ts except includes rrweb2 scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb/es/rrweb/packages/rrweb/src/plugins/console/record'\n\n// rrweb/network@1 code starts\n// most of what is below here will be removed when rrweb release their code for this\n// see https://github.com/rrweb-io/rrweb/pull/1105\n/// <reference lib=\"dom\" />\n// NB adopted from https://github.com/rrweb-io/rrweb/pull/1105 which looks like it will be accepted into rrweb\n// however, in the PR, it throws when the performance observer data is not available\n// and assumes it is running in a browser with the Request API (i.e. not IE11)\n// copying here so that we can use it before rrweb adopt it\nimport type { IWindow, listenerHandler, RecordPlugin } from '@rrweb/types'\nimport { CapturedNetworkRequest, Headers, InitiatorType, NetworkRecordOptions } from './types'\nimport { _isArray, _isBoolean, _isFunction, _isNull, _isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window } from './utils/globals'\nimport { defaultNetworkOptions } from './extensions/replay/config'\n\nexport type NetworkData = {\n requests: CapturedNetworkRequest[]\n isInitial?: boolean\n}\n\ntype networkCallback = (data: NetworkData) => void\n\nconst isNavigationTiming = (entry: PerformanceEntry): entry is PerformanceNavigationTiming =>\n entry.entryType === 'navigation'\nconst isResourceTiming = (entry: PerformanceEntry): entry is PerformanceResourceTiming => entry.entryType === 'resource'\n\ntype ObservedPerformanceEntry = (PerformanceNavigationTiming | PerformanceResourceTiming) & {\n responseStatus?: number\n}\n\n// import { patch } from 'rrweb/typings/utils'\n// copied from https://github.com/rrweb-io/rrweb/blob/8aea5b00a4dfe5a6f59bd2ae72bb624f45e51e81/packages/rrweb/src/utils.ts#L129\n// which was copied from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nexport function patch(\n source: { [key: string]: any },\n name: string,\n replacement: (...args: unknown[]) => unknown\n): () => void {\n try {\n if (!(name in source)) {\n return () => {\n //\n }\n }\n\n const original = source[name] as () => unknown\n const wrapped = replacement(original)\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (_isFunction(wrapped)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n wrapped.prototype = wrapped.prototype || {}\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n })\n }\n\n source[name] = wrapped\n\n return () => {\n source[name] = original\n }\n } catch {\n return () => {\n //\n }\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n}\n\nexport function findLast<T>(array: Array<T>, predicate: (value: T) => boolean): T | undefined {\n const length = array.length\n for (let i = length - 1; i >= 0; i -= 1) {\n if (predicate(array[i])) {\n return array[i]\n }\n }\n return undefined\n}\n\nfunction initPerformanceObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>) {\n // if we are only observing timings then we could have a single observer for all types, with buffer true,\n // but we are going to filter by initiatorType _if we are wrapping fetch and xhr as the wrapped functions\n // will deal with those.\n // so we have a block which captures requests from before fetch/xhr is wrapped\n // these are marked `isInitial` so playback can display them differently if needed\n // they will never have method/status/headers/body because they are pre-wrapping that provides that\n if (options.recordInitialRequests) {\n const initialPerformanceEntries = win.performance\n .getEntries()\n .filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) && options.initiatorTypes.includes(entry.initiatorType as InitiatorType))\n )\n cb({\n requests: initialPerformanceEntries.flatMap((entry) =>\n prepareRequest(entry, undefined, undefined, {}, true)\n ),\n isInitial: true,\n })\n }\n const observer = new win.PerformanceObserver((entries) => {\n // if recordBody or recordHeaders is true then we don't want to record fetch or xhr here\n // as the wrapped functions will do that. Otherwise, this filter becomes a noop\n // because we do want to record them here\n const wrappedInitiatorFilter = (entry: ObservedPerformanceEntry) =>\n options.recordBody || options.recordHeaders\n ? entry.initiatorType !== 'xmlhttprequest' && entry.initiatorType !== 'fetch'\n : true\n\n const performanceEntries = entries.getEntries().filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) &&\n options.initiatorTypes.includes(entry.initiatorType as InitiatorType) &&\n // TODO if we are _only_ capturing timing we don't want to filter initiator here\n wrappedInitiatorFilter(entry))\n )\n\n cb({\n requests: performanceEntries.flatMap((entry) => prepareRequest(entry, undefined, undefined, {})),\n })\n })\n // compat checked earlier\n // eslint-disable-next-line compat/compat\n const entryTypes = PerformanceObserver.supportedEntryTypes.filter((x) =>\n options.performanceEntryTypeToObserve.includes(x)\n )\n // initial records are gathered above, so we don't need to observe and buffer each type separately\n observer.observe({ entryTypes })\n return () => {\n observer.disconnect()\n }\n}\n\nfunction shouldRecordHeaders(type: 'request' | 'response', recordHeaders: NetworkRecordOptions['recordHeaders']) {\n return !!recordHeaders && (_isBoolean(recordHeaders) || recordHeaders[type])\n}\n\nfunction shouldRecordBody(\n type: 'request' | 'response',\n recordBody: NetworkRecordOptions['recordBody'],\n headers: Headers\n) {\n function matchesContentType(contentTypes: string[]) {\n const contentTypeHeader = Object.keys(headers).find((key) => key.toLowerCase() === 'content-type')\n const contentType = contentTypeHeader && headers[contentTypeHeader]\n return contentTypes.some((ct) => contentType?.includes(ct))\n }\n if (!recordBody) return false\n if (_isBoolean(recordBody)) return true\n if (_isArray(recordBody)) return matchesContentType(recordBody)\n const recordBodyType = recordBody[type]\n if (_isBoolean(recordBodyType)) return recordBodyType\n return matchesContentType(recordBodyType)\n}\n\nasync function getRequestPerformanceEntry(\n win: IWindow,\n initiatorType: string,\n url: string,\n after?: number,\n before?: number,\n attempt = 0\n): Promise<PerformanceResourceTiming | null> {\n if (attempt > 10) {\n logger.warn('Failed to get performance entry for request', { url, initiatorType })\n return null\n }\n const urlPerformanceEntries = win.performance.getEntriesByName(url) as PerformanceResourceTiming[]\n const performanceEntry = findLast(\n urlPerformanceEntries,\n (entry) =>\n isResourceTiming(entry) &&\n entry.initiatorType === initiatorType &&\n (!after || entry.startTime >= after) &&\n (!before || entry.startTime <= before)\n )\n if (!performanceEntry) {\n await new Promise((resolve) => setTimeout(resolve, 50 * attempt))\n return getRequestPerformanceEntry(win, initiatorType, url, after, before, attempt + 1)\n }\n return performanceEntry\n}\n\nfunction initXhrObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>): listenerHandler {\n if (!options.initiatorTypes.includes('xmlhttprequest')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n const restorePatch = patch(\n win.XMLHttpRequest.prototype,\n 'open',\n // TODO how should this be typed?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (originalOpen: typeof XMLHttpRequest.prototype.open) => {\n return function (\n method: string,\n url: string | URL,\n async = true,\n username?: string | null,\n password?: string | null\n ) {\n // because this function is returned in its actual context `this` _is_ an XMLHttpRequest\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const xhr = this as XMLHttpRequest\n\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url)\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n const requestHeaders: Headers = {}\n const originalSetRequestHeader = xhr.setRequestHeader.bind(xhr)\n xhr.setRequestHeader = (header: string, value: string) => {\n requestHeaders[header] = value\n return originalSetRequestHeader(header, value)\n }\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n const originalSend = xhr.send.bind(xhr)\n xhr.send = (body) => {\n if (shouldRecordBody('request', options.recordBody, requestHeaders)) {\n if (_isUndefined(body) || _isNull(body)) {\n networkRequest.requestBody = null\n } else {\n networkRequest.requestBody = body\n }\n }\n after = win.performance.now()\n return originalSend(body)\n }\n xhr.addEventListener('readystatechange', () => {\n if (xhr.readyState !== xhr.DONE) {\n return\n }\n before = win.performance.now()\n const responseHeaders: Headers = {}\n const rawHeaders = xhr.getAllResponseHeaders()\n const headers = rawHeaders.trim().split(/[\\r\\n]+/)\n headers.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift()\n const value = parts.join(': ')\n if (header) {\n responseHeaders[header] = value\n }\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (shouldRecordBody('response', options.recordBody, responseHeaders)) {\n if (_isUndefined(xhr.response) || _isNull(xhr.response)) {\n networkRequest.responseBody = null\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n networkRequest.responseBody = xhr.response\n }\n }\n getRequestPerformanceEntry(win, 'xmlhttprequest', req.url, after, before)\n .then((entry) => {\n if (_isNull(entry)) {\n return\n }\n const requests = prepareRequest(entry, req.method, xhr?.status, networkRequest)\n cb({ requests })\n })\n .catch(() => {\n //\n })\n })\n originalOpen.call(xhr, method, url, async, username, password)\n }\n }\n )\n return () => {\n restorePatch()\n }\n}\n\n/**\n * Check if this PerformanceEntry is either a PerformanceResourceTiming or a PerformanceNavigationTiming\n * NB PerformanceNavigationTiming extends PerformanceResourceTiming\n * Here we don't care which interface it implements as both expose `serverTimings`\n */\nconst exposesServerTiming = (event: PerformanceEntry): event is PerformanceResourceTiming =>\n event.entryType === 'navigation' || event.entryType === 'resource'\n\nfunction prepareRequest(\n entry: PerformanceResourceTiming,\n method: string | undefined,\n status: number | undefined,\n networkRequest: Partial<CapturedNetworkRequest>,\n isInitial?: boolean\n): CapturedNetworkRequest[] {\n // kudos to sentry javascript sdk for excellent background on why to use Date.now() here\n // https://github.com/getsentry/sentry-javascript/blob/e856e40b6e71a73252e788cd42b5260f81c9c88e/packages/utils/src/time.ts#L70\n // can't start observer if performance.now() is not available\n // eslint-disable-next-line compat/compat\n const timeOrigin = Math.floor(Date.now() - performance.now())\n // clickhouse can't ingest timestamps that are floats\n // (in this case representing fractions of a millisecond we don't care about anyway)\n const timestamp = Math.floor(timeOrigin + entry.startTime)\n\n const requests: CapturedNetworkRequest[] = [\n {\n ...entry.toJSON(),\n startTime: Math.round(entry.startTime),\n endTime: Math.round(entry.responseEnd),\n timeOrigin,\n timestamp,\n method: method,\n initiatorType: entry.initiatorType as InitiatorType,\n status,\n requestHeaders: networkRequest.requestHeaders,\n requestBody: networkRequest.requestBody,\n responseHeaders: networkRequest.responseHeaders,\n responseBody: networkRequest.responseBody,\n isInitial,\n },\n ]\n\n if (exposesServerTiming(entry)) {\n for (const timing of entry.serverTiming || []) {\n requests.push({\n timeOrigin,\n timestamp,\n startTime: Math.round(entry.startTime),\n name: timing.name,\n duration: timing.duration,\n // the spec has a closed list of possible types\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry/entryType\n // but, we need to know this was a server timing so that we know to\n // match it to the appropriate navigation or resource timing\n // that matching will have to be on timestamp and $current_url\n entryType: 'serverTiming',\n })\n }\n }\n\n return requests\n}\n\nfunction initFetchObserver(\n cb: networkCallback,\n win: IWindow,\n options: Required<NetworkRecordOptions>\n): listenerHandler {\n if (!options.initiatorTypes.includes('fetch')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n // TODO how should this be typed?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const restorePatch = patch(win, 'fetch', (originalFetch: typeof fetch) => {\n return async function (url: URL | RequestInfo, init?: RequestInit | undefined) {\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url, init)\n let res: Response | undefined\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n try {\n const requestHeaders: Headers = {}\n req.headers.forEach((value, header) => {\n requestHeaders[header] = value\n })\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n if (shouldRecordBody('request', options.recordBody, requestHeaders)) {\n if (_isUndefined(req.body) || _isNull(req.body)) {\n networkRequest.requestBody = null\n } else {\n networkRequest.requestBody = req.body\n }\n }\n after = win.performance.now()\n res = await originalFetch(req)\n before = win.performance.now()\n const responseHeaders: Headers = {}\n res.headers.forEach((value, header) => {\n responseHeaders[header] = value\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (shouldRecordBody('response', options.recordBody, responseHeaders)) {\n let body: string | undefined\n try {\n body = await res.clone().text()\n } catch {\n //\n }\n if (_isUndefined(res.body) || _isNull(res.body)) {\n networkRequest.responseBody = null\n } else {\n networkRequest.responseBody = body\n }\n }\n return res\n } finally {\n getRequestPerformanceEntry(win, 'fetch', req.url, after, before)\n .then((entry) => {\n if (_isNull(entry)) {\n return\n }\n const requests = prepareRequest(entry, req.method, res?.status, networkRequest)\n cb({ requests })\n })\n .catch(() => {\n //\n })\n }\n }\n })\n return () => {\n restorePatch()\n }\n}\n\nfunction initNetworkObserver(\n callback: networkCallback,\n win: IWindow, // top window or in an iframe\n options: NetworkRecordOptions\n): listenerHandler {\n if (!('performance' in win)) {\n return () => {\n //\n }\n }\n const networkOptions = (\n options ? Object.assign({}, defaultNetworkOptions, options) : defaultNetworkOptions\n ) as Required<NetworkRecordOptions>\n\n const cb: networkCallback = (data) => {\n const requests: CapturedNetworkRequest[] = []\n data.requests.forEach((request) => {\n const maskedRequest = networkOptions.maskRequestFn(request)\n if (maskedRequest) {\n requests.push(maskedRequest)\n }\n })\n\n if (requests.length > 0 || data.isInitial) {\n callback({ ...data, requests })\n }\n }\n const performanceObserver = initPerformanceObserver(cb, win, networkOptions)\n\n // only wrap fetch and xhr if headers or body are being recorded\n let xhrObserver: listenerHandler = () => {}\n let fetchObserver: listenerHandler = () => {}\n if (networkOptions.recordHeaders || networkOptions.recordBody) {\n xhrObserver = initXhrObserver(cb, win, networkOptions)\n fetchObserver = initFetchObserver(cb, win, networkOptions)\n }\n\n return () => {\n performanceObserver()\n xhrObserver()\n fetchObserver()\n }\n}\n\n// use the plugin name so that when this functionality is adopted into rrweb\n// we can remove this plugin and use the core functionality with the same data\nexport const NETWORK_PLUGIN_NAME = 'rrweb/network@1'\n\n// TODO how should this be typed?\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const getRecordNetworkPlugin: (options?: NetworkRecordOptions) => RecordPlugin = (options) => {\n return {\n name: NETWORK_PLUGIN_NAME,\n observer: initNetworkObserver,\n options: options,\n }\n}\n\n// rrweb/networ@1 ends\n\nif (window) {\n ;(window as any).rrweb = { record: rrwebRecord, version: 'v2', rrwebVersion: version }\n ;(window as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n ;(window as any).getRecordNetworkPlugin = getRecordNetworkPlugin\n}\n\nexport default rrwebRecord\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { PostHogFeatureFlags } from './posthog-featureflags';
|
|
2
2
|
import { PostHogPersistence } from './posthog-persistence';
|
|
3
3
|
import { SessionRecording } from './extensions/replay/sessionrecording';
|
|
4
|
-
import { WebPerformanceObserver } from './extensions/replay/web-performance';
|
|
5
4
|
import { Toolbar } from './extensions/toolbar';
|
|
6
5
|
import { RequestQueue } from './request-queue';
|
|
7
6
|
import { RetryQueue } from './retry-queue';
|
|
@@ -14,6 +13,11 @@ import { RateLimiter } from './rate-limiter';
|
|
|
14
13
|
import { SurveyCallback } from './posthog-surveys-types';
|
|
15
14
|
import { SessionPropsManager } from './session-props';
|
|
16
15
|
export declare const defaultConfig: () => PostHogConfig;
|
|
16
|
+
declare class DeprecatedWebPerformanceObserver {
|
|
17
|
+
get _forceAllowLocalhost(): boolean;
|
|
18
|
+
set _forceAllowLocalhost(value: boolean);
|
|
19
|
+
private __forceAllowLocalhost;
|
|
20
|
+
}
|
|
17
21
|
/**
|
|
18
22
|
* PostHog Library Object
|
|
19
23
|
* @constructor
|
|
@@ -34,7 +38,7 @@ export declare class PostHog {
|
|
|
34
38
|
_requestQueue?: RequestQueue;
|
|
35
39
|
_retryQueue?: RetryQueue;
|
|
36
40
|
sessionRecording?: SessionRecording;
|
|
37
|
-
webPerformance
|
|
41
|
+
webPerformance: DeprecatedWebPerformanceObserver;
|
|
38
42
|
_triggered_notifs: any;
|
|
39
43
|
compression: Partial<Record<Compression, boolean>>;
|
|
40
44
|
_jsc: JSC;
|
|
@@ -699,3 +703,4 @@ export declare class PostHog {
|
|
|
699
703
|
}
|
|
700
704
|
export declare function init_from_snippet(): void;
|
|
701
705
|
export declare function init_as_module(): PostHog;
|
|
706
|
+
export {};
|
package/lib/src/posthog-core.js
CHANGED
|
@@ -53,7 +53,6 @@ import { PostHogFeatureFlags } from './posthog-featureflags';
|
|
|
53
53
|
import { PostHogPersistence } from './posthog-persistence';
|
|
54
54
|
import { ALIAS_ID_KEY, FLAG_CALL_REPORTED, PEOPLE_DISTINCT_ID_KEY } from './constants';
|
|
55
55
|
import { SessionRecording } from './extensions/replay/sessionrecording';
|
|
56
|
-
import { WebPerformanceObserver } from './extensions/replay/web-performance';
|
|
57
56
|
import { Decide } from './decide';
|
|
58
57
|
import { Toolbar } from './extensions/toolbar';
|
|
59
58
|
import { clearOptInOut, hasOptedIn, hasOptedOut, optIn, optOut, userOptedOut } from './gdpr-utils';
|
|
@@ -212,8 +211,6 @@ var create_phlib = function (token, config, name, createComplete) {
|
|
|
212
211
|
instance.toolbar.maybeLoadToolbar();
|
|
213
212
|
instance.sessionRecording = new SessionRecording(instance);
|
|
214
213
|
instance.sessionRecording.startRecordingIfEnabled();
|
|
215
|
-
instance.webPerformance = new WebPerformanceObserver(instance);
|
|
216
|
-
instance.webPerformance.startObservingIfEnabled();
|
|
217
214
|
if (instance.config.__preview_measure_pageview_stats) {
|
|
218
215
|
instance.pageViewManager.startMeasuringScrollPosition();
|
|
219
216
|
}
|
|
@@ -249,6 +246,23 @@ var create_phlib = function (token, config, name, createComplete) {
|
|
|
249
246
|
handleCallback('syncCode')(instance);
|
|
250
247
|
return instance;
|
|
251
248
|
};
|
|
249
|
+
var DeprecatedWebPerformanceObserver = /** @class */ (function () {
|
|
250
|
+
function DeprecatedWebPerformanceObserver() {
|
|
251
|
+
this.__forceAllowLocalhost = false;
|
|
252
|
+
}
|
|
253
|
+
Object.defineProperty(DeprecatedWebPerformanceObserver.prototype, "_forceAllowLocalhost", {
|
|
254
|
+
get: function () {
|
|
255
|
+
return this.__forceAllowLocalhost;
|
|
256
|
+
},
|
|
257
|
+
set: function (value) {
|
|
258
|
+
logger.error('WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`');
|
|
259
|
+
this.__forceAllowLocalhost = value;
|
|
260
|
+
},
|
|
261
|
+
enumerable: false,
|
|
262
|
+
configurable: true
|
|
263
|
+
});
|
|
264
|
+
return DeprecatedWebPerformanceObserver;
|
|
265
|
+
}());
|
|
252
266
|
/**
|
|
253
267
|
* PostHog Library Object
|
|
254
268
|
* @constructor
|
|
@@ -256,6 +270,7 @@ var create_phlib = function (token, config, name, createComplete) {
|
|
|
256
270
|
var PostHog = /** @class */ (function () {
|
|
257
271
|
function PostHog() {
|
|
258
272
|
var _this = this;
|
|
273
|
+
this.webPerformance = new DeprecatedWebPerformanceObserver();
|
|
259
274
|
this.config = defaultConfig();
|
|
260
275
|
this.compression = {};
|
|
261
276
|
this.decideEndpointWasHit = false;
|