posthog-js 1.149.0 → 1.149.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "posthog-js",
3
- "version": "1.149.0",
3
+ "version": "1.149.2",
4
4
  "description": "Posthog-js allows you to automatically capture usage and send events to PostHog.",
5
5
  "repository": "https://github.com/PostHog/posthog-js",
6
6
  "author": "hey@posthog.com",
package/lib/src/decide.js CHANGED
@@ -73,7 +73,7 @@ var Decide = /** @class */ (function () {
73
73
  assignableWindow["__$$ph_site_app_".concat(id)] = this_1.instance;
74
74
  this_1.instance.requestRouter.loadScript(scriptUrl, function (err) {
75
75
  if (err) {
76
- logger.error("Error while initializing PostHog app with config id ".concat(id), err);
76
+ return logger.error("Error while initializing PostHog app with config id ".concat(id), err);
77
77
  }
78
78
  });
79
79
  };
@@ -1 +1 @@
1
- {"version":3,"file":"decide.js","sourceRoot":"","sources":["../../src/decide.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostHog } from './posthog-core'\nimport { Compression, DecideResponse } from './types'\nimport { STORED_GROUP_PROPERTIES_KEY, STORED_PERSON_PROPERTIES_KEY } from './constants'\n\nimport { logger } from './utils/logger'\nimport { document, assignableWindow } from './utils/globals'\n\nexport class Decide {\n constructor(private readonly instance: PostHog) {\n // don't need to wait for `decide` to return if flags were provided on initialisation\n this.instance.decideEndpointWasHit = this.instance._hasBootstrappedFeatureFlags()\n }\n\n call(): void {\n /*\n Calls /decide endpoint to fetch options for autocapture, session recording, feature flags & compression.\n */\n const data = {\n token: this.instance.config.token,\n distinct_id: this.instance.get_distinct_id(),\n groups: this.instance.getGroups(),\n person_properties: this.instance.get_property(STORED_PERSON_PROPERTIES_KEY),\n group_properties: this.instance.get_property(STORED_GROUP_PROPERTIES_KEY),\n disable_flags:\n this.instance.config.advanced_disable_feature_flags ||\n this.instance.config.advanced_disable_feature_flags_on_first_load ||\n undefined,\n }\n\n this.instance._send_request({\n method: 'POST',\n url: this.instance.requestRouter.endpointFor('api', '/decide/?v=3'),\n data,\n compression: this.instance.config.disable_compression ? undefined : Compression.Base64,\n timeout: this.instance.config.feature_flag_request_timeout_ms,\n callback: (response) => this.parseDecideResponse(response.json as DecideResponse | undefined),\n })\n }\n\n parseDecideResponse(response?: DecideResponse): void {\n this.instance.featureFlags.setReloadingPaused(false)\n // :TRICKY: Reload - start another request if queued!\n this.instance.featureFlags._startReloadTimer()\n\n const errorsLoading = !response\n\n if (\n !this.instance.config.advanced_disable_feature_flags_on_first_load &&\n !this.instance.config.advanced_disable_feature_flags\n ) {\n this.instance.featureFlags.receivedFeatureFlags(response ?? {}, errorsLoading)\n }\n\n if (errorsLoading) {\n logger.error('Failed to fetch feature flags from PostHog.')\n return\n }\n if (!(document && document.body)) {\n logger.info('document not ready yet, trying again in 500 milliseconds...')\n setTimeout(() => {\n this.parseDecideResponse(response)\n }, 500)\n return\n }\n\n this.instance._afterDecideResponse(response)\n\n if (response['siteApps']) {\n if (this.instance.config.opt_in_site_apps) {\n for (const { id, url } of response['siteApps']) {\n const scriptUrl = this.instance.requestRouter.endpointFor('api', url)\n\n assignableWindow[`__$$ph_site_app_${id}`] = this.instance\n\n this.instance.requestRouter.loadScript(scriptUrl, (err) => {\n if (err) {\n logger.error(`Error while initializing PostHog app with config id ${id}`, err)\n }\n })\n }\n } else if (response['siteApps'].length > 0) {\n logger.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"decide.js","sourceRoot":"","sources":["../../src/decide.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostHog } from './posthog-core'\nimport { Compression, DecideResponse } from './types'\nimport { STORED_GROUP_PROPERTIES_KEY, STORED_PERSON_PROPERTIES_KEY } from './constants'\n\nimport { logger } from './utils/logger'\nimport { document, assignableWindow } from './utils/globals'\n\nexport class Decide {\n constructor(private readonly instance: PostHog) {\n // don't need to wait for `decide` to return if flags were provided on initialisation\n this.instance.decideEndpointWasHit = this.instance._hasBootstrappedFeatureFlags()\n }\n\n call(): void {\n /*\n Calls /decide endpoint to fetch options for autocapture, session recording, feature flags & compression.\n */\n const data = {\n token: this.instance.config.token,\n distinct_id: this.instance.get_distinct_id(),\n groups: this.instance.getGroups(),\n person_properties: this.instance.get_property(STORED_PERSON_PROPERTIES_KEY),\n group_properties: this.instance.get_property(STORED_GROUP_PROPERTIES_KEY),\n disable_flags:\n this.instance.config.advanced_disable_feature_flags ||\n this.instance.config.advanced_disable_feature_flags_on_first_load ||\n undefined,\n }\n\n this.instance._send_request({\n method: 'POST',\n url: this.instance.requestRouter.endpointFor('api', '/decide/?v=3'),\n data,\n compression: this.instance.config.disable_compression ? undefined : Compression.Base64,\n timeout: this.instance.config.feature_flag_request_timeout_ms,\n callback: (response) => this.parseDecideResponse(response.json as DecideResponse | undefined),\n })\n }\n\n parseDecideResponse(response?: DecideResponse): void {\n this.instance.featureFlags.setReloadingPaused(false)\n // :TRICKY: Reload - start another request if queued!\n this.instance.featureFlags._startReloadTimer()\n\n const errorsLoading = !response\n\n if (\n !this.instance.config.advanced_disable_feature_flags_on_first_load &&\n !this.instance.config.advanced_disable_feature_flags\n ) {\n this.instance.featureFlags.receivedFeatureFlags(response ?? {}, errorsLoading)\n }\n\n if (errorsLoading) {\n logger.error('Failed to fetch feature flags from PostHog.')\n return\n }\n if (!(document && document.body)) {\n logger.info('document not ready yet, trying again in 500 milliseconds...')\n setTimeout(() => {\n this.parseDecideResponse(response)\n }, 500)\n return\n }\n\n this.instance._afterDecideResponse(response)\n\n if (response['siteApps']) {\n if (this.instance.config.opt_in_site_apps) {\n for (const { id, url } of response['siteApps']) {\n const scriptUrl = this.instance.requestRouter.endpointFor('api', url)\n\n assignableWindow[`__$$ph_site_app_${id}`] = this.instance\n\n this.instance.requestRouter.loadScript(scriptUrl, (err) => {\n if (err) {\n return logger.error(`Error while initializing PostHog app with config id ${id}`, err)\n }\n })\n }\n } else if (response['siteApps'].length > 0) {\n logger.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')\n }\n }\n }\n}\n"]}
@@ -80,7 +80,7 @@ var ExceptionObserver = /** @class */ (function () {
80
80
  }
81
81
  this.instance.requestRouter.loadScript(this.instance.requestRouter.endpointFor('assets', "/static/exception-autocapture.js?v=".concat(Config.LIB_VERSION)), function (err) {
82
82
  if (err) {
83
- logger.error(LOGGER_PREFIX + ' failed to load script', err);
83
+ return logger.error(LOGGER_PREFIX + ' failed to load script', err);
84
84
  }
85
85
  cb();
86
86
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/exception-autocapture/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { window } from '../../utils/globals'\nimport { PostHog } from '../../posthog-core'\nimport { DecideResponse, Properties } from '../../types'\n\nimport { isObject } from '../../utils/type-utils'\nimport { logger } from '../../utils/logger'\nimport { EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE, EXCEPTION_CAPTURE_ENDPOINT } from '../../constants'\nimport Config from '../../config'\n\n// TODO: move this to /x/ as default\nexport const BASE_ERROR_ENDPOINT = '/e/'\nconst LOGGER_PREFIX = '[Exception Capture]'\n\nexport class ExceptionObserver {\n private _endpoint: string\n instance: PostHog\n remoteEnabled: boolean | undefined\n private originalOnUnhandledRejectionHandler: Window['onunhandledrejection'] | null | undefined = undefined\n private unwrapOnError: (() => void) | undefined\n private unwrapUnhandledRejection: (() => void) | undefined\n\n constructor(instance: PostHog) {\n this.instance = instance\n this.remoteEnabled = !!this.instance.persistence?.props[EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]\n\n // TODO: once BASE_ERROR_ENDPOINT is no longer /e/ this can be removed\n this._endpoint = this.instance.persistence?.props[EXCEPTION_CAPTURE_ENDPOINT] || BASE_ERROR_ENDPOINT\n\n this.startIfEnabled()\n }\n\n get endpoint() {\n return this._endpoint\n }\n\n get isEnabled() {\n return this.remoteEnabled ?? false\n }\n\n get isCapturing() {\n return !!(window?.onerror as any)?.__POSTHOG_INSTRUMENTED__\n }\n\n get hasHandlers() {\n return this.originalOnUnhandledRejectionHandler || this.unwrapOnError\n }\n\n startIfEnabled(): void {\n if (this.isEnabled && !this.isCapturing) {\n logger.info(LOGGER_PREFIX + ' enabled, starting...')\n this.loadScript(this.startCapturing)\n }\n }\n\n private loadScript(cb: () => void): void {\n if (this.hasHandlers) {\n // already loaded\n cb()\n }\n\n this.instance.requestRouter.loadScript(\n this.instance.requestRouter.endpointFor(\n 'assets',\n `/static/exception-autocapture.js?v=${Config.LIB_VERSION}`\n ),\n (err) => {\n if (err) {\n logger.error(LOGGER_PREFIX + ' failed to load script', err)\n }\n cb()\n }\n )\n }\n\n private startCapturing = () => {\n if (!window || !this.isEnabled || this.hasHandlers || (window.onerror as any)?.__POSTHOG_INSTRUMENTED__) {\n return\n }\n\n const wrapOnError = (window as any).posthogErrorWrappingFunctions.wrapOnError\n const wrapUnhandledRejection = (window as any).posthogErrorWrappingFunctions.wrapUnhandledRejection\n\n if (!wrapOnError || !wrapUnhandledRejection) {\n logger.error(LOGGER_PREFIX + ' failed to load error wrapping functions - cannot start')\n return\n }\n\n try {\n this.unwrapOnError = wrapOnError(this.captureException.bind(this))\n this.unwrapUnhandledRejection = wrapUnhandledRejection(this.captureException.bind(this))\n } catch (e) {\n logger.error(LOGGER_PREFIX + ' failed to start', e)\n this.stopCapturing()\n }\n }\n\n private stopCapturing() {\n this.unwrapOnError?.()\n this.unwrapUnhandledRejection?.()\n }\n\n afterDecideResponse(response: DecideResponse) {\n const autocaptureExceptionsResponse = response.autocaptureExceptions\n\n // store this in-memory in case persistence is disabled\n this.remoteEnabled = !!autocaptureExceptionsResponse || false\n this._endpoint = isObject(autocaptureExceptionsResponse)\n ? autocaptureExceptionsResponse.endpoint || BASE_ERROR_ENDPOINT\n : BASE_ERROR_ENDPOINT\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]: this.remoteEnabled,\n })\n // when we come to moving the endpoint to not /e/\n // we'll want that to persist between startup and decide response\n // TODO: once BASE_ENDPOINT is no longer /e/ this can be removed\n this.instance.persistence.register({\n [EXCEPTION_CAPTURE_ENDPOINT]: this._endpoint,\n })\n }\n\n this.startIfEnabled()\n }\n\n captureException(errorProperties: Properties) {\n const posthogHost = this.instance.requestRouter.endpointFor('ui')\n\n errorProperties.$exception_personURL = `${posthogHost}/project/${\n this.instance.config.token\n }/person/${this.instance.get_distinct_id()}`\n\n this.sendExceptionEvent(errorProperties)\n }\n\n /**\n * :TRICKY: Make sure we batch these requests\n */\n sendExceptionEvent(properties: { [key: string]: any }) {\n this.instance.capture('$exception', properties, {\n _noTruncate: true,\n _batchKey: 'exceptionEvent',\n _url: this.endpoint,\n })\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/exception-autocapture/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { window } from '../../utils/globals'\nimport { PostHog } from '../../posthog-core'\nimport { DecideResponse, Properties } from '../../types'\n\nimport { isObject } from '../../utils/type-utils'\nimport { logger } from '../../utils/logger'\nimport { EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE, EXCEPTION_CAPTURE_ENDPOINT } from '../../constants'\nimport Config from '../../config'\n\n// TODO: move this to /x/ as default\nexport const BASE_ERROR_ENDPOINT = '/e/'\nconst LOGGER_PREFIX = '[Exception Capture]'\n\nexport class ExceptionObserver {\n private _endpoint: string\n instance: PostHog\n remoteEnabled: boolean | undefined\n private originalOnUnhandledRejectionHandler: Window['onunhandledrejection'] | null | undefined = undefined\n private unwrapOnError: (() => void) | undefined\n private unwrapUnhandledRejection: (() => void) | undefined\n\n constructor(instance: PostHog) {\n this.instance = instance\n this.remoteEnabled = !!this.instance.persistence?.props[EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]\n\n // TODO: once BASE_ERROR_ENDPOINT is no longer /e/ this can be removed\n this._endpoint = this.instance.persistence?.props[EXCEPTION_CAPTURE_ENDPOINT] || BASE_ERROR_ENDPOINT\n\n this.startIfEnabled()\n }\n\n get endpoint() {\n return this._endpoint\n }\n\n get isEnabled() {\n return this.remoteEnabled ?? false\n }\n\n get isCapturing() {\n return !!(window?.onerror as any)?.__POSTHOG_INSTRUMENTED__\n }\n\n get hasHandlers() {\n return this.originalOnUnhandledRejectionHandler || this.unwrapOnError\n }\n\n startIfEnabled(): void {\n if (this.isEnabled && !this.isCapturing) {\n logger.info(LOGGER_PREFIX + ' enabled, starting...')\n this.loadScript(this.startCapturing)\n }\n }\n\n private loadScript(cb: () => void): void {\n if (this.hasHandlers) {\n // already loaded\n cb()\n }\n\n this.instance.requestRouter.loadScript(\n this.instance.requestRouter.endpointFor(\n 'assets',\n `/static/exception-autocapture.js?v=${Config.LIB_VERSION}`\n ),\n (err) => {\n if (err) {\n return logger.error(LOGGER_PREFIX + ' failed to load script', err)\n }\n cb()\n }\n )\n }\n\n private startCapturing = () => {\n if (!window || !this.isEnabled || this.hasHandlers || (window.onerror as any)?.__POSTHOG_INSTRUMENTED__) {\n return\n }\n\n const wrapOnError = (window as any).posthogErrorWrappingFunctions.wrapOnError\n const wrapUnhandledRejection = (window as any).posthogErrorWrappingFunctions.wrapUnhandledRejection\n\n if (!wrapOnError || !wrapUnhandledRejection) {\n logger.error(LOGGER_PREFIX + ' failed to load error wrapping functions - cannot start')\n return\n }\n\n try {\n this.unwrapOnError = wrapOnError(this.captureException.bind(this))\n this.unwrapUnhandledRejection = wrapUnhandledRejection(this.captureException.bind(this))\n } catch (e) {\n logger.error(LOGGER_PREFIX + ' failed to start', e)\n this.stopCapturing()\n }\n }\n\n private stopCapturing() {\n this.unwrapOnError?.()\n this.unwrapUnhandledRejection?.()\n }\n\n afterDecideResponse(response: DecideResponse) {\n const autocaptureExceptionsResponse = response.autocaptureExceptions\n\n // store this in-memory in case persistence is disabled\n this.remoteEnabled = !!autocaptureExceptionsResponse || false\n this._endpoint = isObject(autocaptureExceptionsResponse)\n ? autocaptureExceptionsResponse.endpoint || BASE_ERROR_ENDPOINT\n : BASE_ERROR_ENDPOINT\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]: this.remoteEnabled,\n })\n // when we come to moving the endpoint to not /e/\n // we'll want that to persist between startup and decide response\n // TODO: once BASE_ENDPOINT is no longer /e/ this can be removed\n this.instance.persistence.register({\n [EXCEPTION_CAPTURE_ENDPOINT]: this._endpoint,\n })\n }\n\n this.startIfEnabled()\n }\n\n captureException(errorProperties: Properties) {\n const posthogHost = this.instance.requestRouter.endpointFor('ui')\n\n errorProperties.$exception_personURL = `${posthogHost}/project/${\n this.instance.config.token\n }/person/${this.instance.get_distinct_id()}`\n\n this.sendExceptionEvent(errorProperties)\n }\n\n /**\n * :TRICKY: Make sure we batch these requests\n */\n sendExceptionEvent(properties: { [key: string]: any }) {\n this.instance.capture('$exception', properties, {\n _noTruncate: true,\n _batchKey: 'exceptionEvent',\n _url: this.endpoint,\n })\n }\n}\n"]}
@@ -26,7 +26,7 @@ var TracingHeaders = /** @class */ (function () {
26
26
  }
27
27
  this.instance.requestRouter.loadScript("/static/tracing-headers.js?v=".concat(Config.LIB_VERSION), function (err) {
28
28
  if (err) {
29
- logger.error(LOGGER_PREFIX + ' failed to load script', err);
29
+ return logger.error(LOGGER_PREFIX + ' failed to load script', err);
30
30
  }
31
31
  cb();
32
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tracing-headers.js","sourceRoot":"","sources":["../../../src/extensions/tracing-headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,IAAM,aAAa,GAAG,mBAAmB,CAAA;AAEzC;IAII,wBAA6B,QAAiB;QAA9C,iBAAkD;QAArB,aAAQ,GAAR,QAAQ,CAAS;QAHtC,qBAAgB,GAA6B,SAAS,CAAA;QACtD,uBAAkB,GAA6B,SAAS,CAAA;QA6BxD,oBAAe,GAAG;YACtB,oFAAoF;YACpF,IAAI,WAAW,CAAC,KAAI,CAAC,gBAAgB,CAAC,EAAE;gBACpC,gBAAgB,CAAC,6BAA6B,CAAC,SAAS,CAAC,KAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,CAAA;aAC1F;YACD,IAAI,WAAW,CAAC,KAAI,CAAC,kBAAkB,CAAC,EAAE;gBACtC,gBAAgB,CAAC,6BAA6B,CAAC,WAAW,CAAC,KAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,CAAA;aAC5F;QACL,CAAC,CAAA;IAnCgD,CAAC;IAE1C,oCAAW,GAAnB,UAAoB,EAAc;QAC9B,IAAI,gBAAgB,CAAC,6BAA6B,EAAE;YAChD,iBAAiB;YACjB,EAAE,EAAE,CAAA;SACP;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,uCAAgC,MAAM,CAAC,WAAW,CAAE,EAAE,UAAC,GAAG;YAC7F,IAAI,GAAG,EAAE;gBACL,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,wBAAwB,EAAE,GAAG,CAAC,CAAA;aAC9D;YACD,EAAE,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;IACN,CAAC;IACM,6CAAoB,GAA3B;;QACI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;SACzC;aAAM;YACH,MAAA,IAAI,CAAC,gBAAgB,oDAAI,CAAA;YACzB,MAAA,IAAI,CAAC,kBAAkB,oDAAI,CAAA;YAC3B,qDAAqD;YACrD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAA;YACjC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;SACtC;IACL,CAAC;IAWL,qBAAC;AAAD,CAAC,AAxCD,IAwCC","sourcesContent":["import { PostHog } from '../posthog-core'\nimport { assignableWindow } from '../utils/globals'\nimport { logger } from '../utils/logger'\nimport Config from '../config'\nimport { isUndefined } from '../utils/type-utils'\n\nconst LOGGER_PREFIX = '[TRACING-HEADERS]'\n\nexport class TracingHeaders {\n private _restoreXHRPatch: (() => void) | undefined = undefined\n private _restoreFetchPatch: (() => void) | undefined = undefined\n\n constructor(private readonly instance: PostHog) {}\n\n private _loadScript(cb: () => void): void {\n if (assignableWindow.postHogTracingHeadersPatchFns) {\n // already loaded\n cb()\n }\n\n this.instance.requestRouter.loadScript(`/static/tracing-headers.js?v=${Config.LIB_VERSION}`, (err) => {\n if (err) {\n logger.error(LOGGER_PREFIX + ' failed to load script', err)\n }\n cb()\n })\n }\n public startIfEnabledOrStop() {\n if (this.instance.config.__add_tracing_headers) {\n this._loadScript(this._startCapturing)\n } else {\n this._restoreXHRPatch?.()\n this._restoreFetchPatch?.()\n // we don't want to call these twice so we reset them\n this._restoreXHRPatch = undefined\n this._restoreFetchPatch = undefined\n }\n }\n\n private _startCapturing = () => {\n // NB: we can assert sessionManager is present only because we've checked previously\n if (isUndefined(this._restoreXHRPatch)) {\n assignableWindow.postHogTracingHeadersPatchFns._patchXHR(this.instance.sessionManager!)\n }\n if (isUndefined(this._restoreFetchPatch)) {\n assignableWindow.postHogTracingHeadersPatchFns._patchFetch(this.instance.sessionManager!)\n }\n }\n}\n"]}
1
+ {"version":3,"file":"tracing-headers.js","sourceRoot":"","sources":["../../../src/extensions/tracing-headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,IAAM,aAAa,GAAG,mBAAmB,CAAA;AAEzC;IAII,wBAA6B,QAAiB;QAA9C,iBAAkD;QAArB,aAAQ,GAAR,QAAQ,CAAS;QAHtC,qBAAgB,GAA6B,SAAS,CAAA;QACtD,uBAAkB,GAA6B,SAAS,CAAA;QA6BxD,oBAAe,GAAG;YACtB,oFAAoF;YACpF,IAAI,WAAW,CAAC,KAAI,CAAC,gBAAgB,CAAC,EAAE;gBACpC,gBAAgB,CAAC,6BAA6B,CAAC,SAAS,CAAC,KAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,CAAA;aAC1F;YACD,IAAI,WAAW,CAAC,KAAI,CAAC,kBAAkB,CAAC,EAAE;gBACtC,gBAAgB,CAAC,6BAA6B,CAAC,WAAW,CAAC,KAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,CAAA;aAC5F;QACL,CAAC,CAAA;IAnCgD,CAAC;IAE1C,oCAAW,GAAnB,UAAoB,EAAc;QAC9B,IAAI,gBAAgB,CAAC,6BAA6B,EAAE;YAChD,iBAAiB;YACjB,EAAE,EAAE,CAAA;SACP;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,uCAAgC,MAAM,CAAC,WAAW,CAAE,EAAE,UAAC,GAAG;YAC7F,IAAI,GAAG,EAAE;gBACL,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,wBAAwB,EAAE,GAAG,CAAC,CAAA;aACrE;YACD,EAAE,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;IACN,CAAC;IACM,6CAAoB,GAA3B;;QACI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;SACzC;aAAM;YACH,MAAA,IAAI,CAAC,gBAAgB,oDAAI,CAAA;YACzB,MAAA,IAAI,CAAC,kBAAkB,oDAAI,CAAA;YAC3B,qDAAqD;YACrD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAA;YACjC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;SACtC;IACL,CAAC;IAWL,qBAAC;AAAD,CAAC,AAxCD,IAwCC","sourcesContent":["import { PostHog } from '../posthog-core'\nimport { assignableWindow } from '../utils/globals'\nimport { logger } from '../utils/logger'\nimport Config from '../config'\nimport { isUndefined } from '../utils/type-utils'\n\nconst LOGGER_PREFIX = '[TRACING-HEADERS]'\n\nexport class TracingHeaders {\n private _restoreXHRPatch: (() => void) | undefined = undefined\n private _restoreFetchPatch: (() => void) | undefined = undefined\n\n constructor(private readonly instance: PostHog) {}\n\n private _loadScript(cb: () => void): void {\n if (assignableWindow.postHogTracingHeadersPatchFns) {\n // already loaded\n cb()\n }\n\n this.instance.requestRouter.loadScript(`/static/tracing-headers.js?v=${Config.LIB_VERSION}`, (err) => {\n if (err) {\n return logger.error(LOGGER_PREFIX + ' failed to load script', err)\n }\n cb()\n })\n }\n public startIfEnabledOrStop() {\n if (this.instance.config.__add_tracing_headers) {\n this._loadScript(this._startCapturing)\n } else {\n this._restoreXHRPatch?.()\n this._restoreFetchPatch?.()\n // we don't want to call these twice so we reset them\n this._restoreXHRPatch = undefined\n this._restoreFetchPatch = undefined\n }\n }\n\n private _startCapturing = () => {\n // NB: we can assert sessionManager is present only because we've checked previously\n if (isUndefined(this._restoreXHRPatch)) {\n assignableWindow.postHogTracingHeadersPatchFns._patchXHR(this.instance.sessionManager!)\n }\n if (isUndefined(this._restoreFetchPatch)) {\n assignableWindow.postHogTracingHeadersPatchFns._patchFetch(this.instance.sessionManager!)\n }\n }\n}\n"]}
@@ -145,6 +145,7 @@ var WebVitalsAutocapture = /** @class */ (function () {
145
145
  this.instance.requestRouter.loadScript(this.instance.requestRouter.endpointFor('assets', "/static/web-vitals.js?v=".concat(Config.LIB_VERSION)), function (err) {
146
146
  if (err) {
147
147
  logger.error(LOGGER_PREFIX + ' failed to load script', err);
148
+ return;
148
149
  }
149
150
  cb();
150
151
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/web-vitals/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostHog } from '../../posthog-core'\nimport { DecideResponse } from '../../types'\nimport { logger } from '../../utils/logger'\nimport { isBoolean, isNullish, isNumber, isObject, isUndefined } from '../../utils/type-utils'\nimport { WEB_VITALS_ENABLED_SERVER_SIDE } from '../../constants'\nimport { assignableWindow, window } from '../../utils/globals'\nimport Config from '../../config'\n\nexport const FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS = 8000\nconst ONE_MINUTE_IN_MILLIS = 60 * 1000\nexport const FIFTEEN_MINUTES_IN_MILLIS = 15 * ONE_MINUTE_IN_MILLIS\n\nconst LOGGER_PREFIX = '[Web Vitals]'\ntype WebVitalsEventBuffer = { url: string | undefined; metrics: any[]; firstMetricTimestamp: number | undefined }\n\nexport class WebVitalsAutocapture {\n private _enabledServerSide: boolean = false\n private _initialized = false\n\n private buffer: WebVitalsEventBuffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n private _delayedFlushTimer: number | undefined\n\n constructor(private readonly instance: PostHog) {\n this._enabledServerSide = !!this.instance.persistence?.props[WEB_VITALS_ENABLED_SERVER_SIDE]\n this.startIfEnabled()\n }\n\n public get _maxAllowedValue(): number {\n const configured =\n isObject(this.instance.config.capture_performance) &&\n isNumber(this.instance.config.capture_performance.__web_vitals_max_value)\n ? this.instance.config.capture_performance.__web_vitals_max_value\n : FIFTEEN_MINUTES_IN_MILLIS\n // you can set to 0 to disable the check or any value over ten seconds\n // 1 milli to 1 minute will be set to 15 minutes, cos that would be a silly low maximum\n return 0 < configured && configured <= ONE_MINUTE_IN_MILLIS ? FIFTEEN_MINUTES_IN_MILLIS : configured\n }\n\n public get isEnabled(): boolean {\n const clientConfig = isObject(this.instance.config.capture_performance)\n ? this.instance.config.capture_performance.web_vitals\n : undefined\n return isBoolean(clientConfig) ? clientConfig : this._enabledServerSide\n }\n\n public startIfEnabled(): void {\n if (this.isEnabled && !this._initialized) {\n logger.info(LOGGER_PREFIX + ' enabled, starting...')\n this.loadScript(this._startCapturing)\n }\n }\n\n public afterDecideResponse(response: DecideResponse) {\n const webVitalsOptIn = isObject(response.capturePerformance) && !!response.capturePerformance.web_vitals\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [WEB_VITALS_ENABLED_SERVER_SIDE]: webVitalsOptIn,\n })\n }\n // store this in-memory in case persistence is disabled\n this._enabledServerSide = webVitalsOptIn\n\n this.startIfEnabled()\n }\n\n private loadScript(cb: () => void): void {\n if ((window as any).postHogWebVitalsCallbacks) {\n // already loaded\n cb()\n }\n\n this.instance.requestRouter.loadScript(\n this.instance.requestRouter.endpointFor('assets', `/static/web-vitals.js?v=${Config.LIB_VERSION}`),\n (err) => {\n if (err) {\n logger.error(LOGGER_PREFIX + ' failed to load script', err)\n }\n cb()\n }\n )\n }\n\n private _currentURL(): string | undefined {\n // TODO you should be able to mask the URL here\n const href = window ? window.location.href : undefined\n if (!href) {\n logger.error(LOGGER_PREFIX + 'Could not determine current URL')\n }\n return href\n }\n\n private _flushToCapture = () => {\n clearTimeout(this._delayedFlushTimer)\n if (this.buffer.metrics.length === 0) {\n return\n }\n\n this.instance.capture(\n '$web_vitals',\n this.buffer.metrics.reduce(\n (acc, metric) => ({\n ...acc,\n // the entire event so we can use it in the future e.g. includes google's rating\n [`$web_vitals_${metric.name}_event`]: { ...metric },\n [`$web_vitals_${metric.name}_value`]: metric.value,\n }),\n {}\n )\n )\n this.buffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n }\n\n private _addToBuffer = (metric: any) => {\n const sessionIds = this.instance.sessionManager?.checkAndGetSessionAndWindowId(true)\n if (isUndefined(sessionIds)) {\n logger.error(LOGGER_PREFIX + 'Could not read session ID. Dropping metrics!')\n return\n }\n\n this.buffer = this.buffer || {}\n\n const $currentUrl = this._currentURL()\n if (isUndefined($currentUrl)) {\n return\n }\n\n if (isNullish(metric?.name) || isNullish(metric?.value)) {\n logger.error(LOGGER_PREFIX + 'Invalid metric received', metric)\n return\n }\n\n // we observe some very large values sometimes, we'll ignore them\n // since the likelihood of LCP > 1 hour being correct is very low\n if (this._maxAllowedValue && metric.value >= this._maxAllowedValue) {\n logger.error(LOGGER_PREFIX + 'Ignoring metric with value >= ' + this._maxAllowedValue, metric)\n return\n }\n\n const urlHasChanged = this.buffer.url !== $currentUrl\n\n if (urlHasChanged) {\n // we need to send what we have\n this._flushToCapture()\n // poor performance is >4s, we wait twice that time to send\n // this is in case we haven't received all metrics\n // we'll at least gather some\n this._delayedFlushTimer = setTimeout(this._flushToCapture, FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS)\n }\n\n if (isUndefined(this.buffer.url)) {\n this.buffer.url = $currentUrl\n }\n\n this.buffer.firstMetricTimestamp = isUndefined(this.buffer.firstMetricTimestamp)\n ? Date.now()\n : this.buffer.firstMetricTimestamp\n\n this.buffer.metrics.push({\n ...metric,\n $current_url: $currentUrl,\n $session_id: sessionIds.sessionId,\n $window_id: sessionIds.windowId,\n timestamp: Date.now(),\n })\n\n if (this.buffer.metrics.length === 4) {\n // we have all 4 metrics\n this._flushToCapture()\n }\n }\n\n private _startCapturing = () => {\n const { onLCP, onCLS, onFCP, onINP } = assignableWindow.postHogWebVitalsCallbacks\n\n if (!onLCP || !onCLS || !onFCP || !onINP) {\n logger.error(LOGGER_PREFIX + 'web vitals callbacks not loaded - not starting')\n return\n }\n\n // register performance observers\n onLCP(this._addToBuffer)\n onCLS(this._addToBuffer)\n onFCP(this._addToBuffer)\n onINP(this._addToBuffer)\n\n this._initialized = true\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/web-vitals/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostHog } from '../../posthog-core'\nimport { DecideResponse } from '../../types'\nimport { logger } from '../../utils/logger'\nimport { isBoolean, isNullish, isNumber, isObject, isUndefined } from '../../utils/type-utils'\nimport { WEB_VITALS_ENABLED_SERVER_SIDE } from '../../constants'\nimport { assignableWindow, window } from '../../utils/globals'\nimport Config from '../../config'\n\nexport const FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS = 8000\nconst ONE_MINUTE_IN_MILLIS = 60 * 1000\nexport const FIFTEEN_MINUTES_IN_MILLIS = 15 * ONE_MINUTE_IN_MILLIS\n\nconst LOGGER_PREFIX = '[Web Vitals]'\ntype WebVitalsEventBuffer = { url: string | undefined; metrics: any[]; firstMetricTimestamp: number | undefined }\n\nexport class WebVitalsAutocapture {\n private _enabledServerSide: boolean = false\n private _initialized = false\n\n private buffer: WebVitalsEventBuffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n private _delayedFlushTimer: number | undefined\n\n constructor(private readonly instance: PostHog) {\n this._enabledServerSide = !!this.instance.persistence?.props[WEB_VITALS_ENABLED_SERVER_SIDE]\n this.startIfEnabled()\n }\n\n public get _maxAllowedValue(): number {\n const configured =\n isObject(this.instance.config.capture_performance) &&\n isNumber(this.instance.config.capture_performance.__web_vitals_max_value)\n ? this.instance.config.capture_performance.__web_vitals_max_value\n : FIFTEEN_MINUTES_IN_MILLIS\n // you can set to 0 to disable the check or any value over ten seconds\n // 1 milli to 1 minute will be set to 15 minutes, cos that would be a silly low maximum\n return 0 < configured && configured <= ONE_MINUTE_IN_MILLIS ? FIFTEEN_MINUTES_IN_MILLIS : configured\n }\n\n public get isEnabled(): boolean {\n const clientConfig = isObject(this.instance.config.capture_performance)\n ? this.instance.config.capture_performance.web_vitals\n : undefined\n return isBoolean(clientConfig) ? clientConfig : this._enabledServerSide\n }\n\n public startIfEnabled(): void {\n if (this.isEnabled && !this._initialized) {\n logger.info(LOGGER_PREFIX + ' enabled, starting...')\n this.loadScript(this._startCapturing)\n }\n }\n\n public afterDecideResponse(response: DecideResponse) {\n const webVitalsOptIn = isObject(response.capturePerformance) && !!response.capturePerformance.web_vitals\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [WEB_VITALS_ENABLED_SERVER_SIDE]: webVitalsOptIn,\n })\n }\n // store this in-memory in case persistence is disabled\n this._enabledServerSide = webVitalsOptIn\n\n this.startIfEnabled()\n }\n\n private loadScript(cb: () => void): void {\n if ((window as any).postHogWebVitalsCallbacks) {\n // already loaded\n cb()\n }\n\n this.instance.requestRouter.loadScript(\n this.instance.requestRouter.endpointFor('assets', `/static/web-vitals.js?v=${Config.LIB_VERSION}`),\n (err) => {\n if (err) {\n logger.error(LOGGER_PREFIX + ' failed to load script', err)\n return\n }\n cb()\n }\n )\n }\n\n private _currentURL(): string | undefined {\n // TODO you should be able to mask the URL here\n const href = window ? window.location.href : undefined\n if (!href) {\n logger.error(LOGGER_PREFIX + 'Could not determine current URL')\n }\n return href\n }\n\n private _flushToCapture = () => {\n clearTimeout(this._delayedFlushTimer)\n if (this.buffer.metrics.length === 0) {\n return\n }\n\n this.instance.capture(\n '$web_vitals',\n this.buffer.metrics.reduce(\n (acc, metric) => ({\n ...acc,\n // the entire event so we can use it in the future e.g. includes google's rating\n [`$web_vitals_${metric.name}_event`]: { ...metric },\n [`$web_vitals_${metric.name}_value`]: metric.value,\n }),\n {}\n )\n )\n this.buffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n }\n\n private _addToBuffer = (metric: any) => {\n const sessionIds = this.instance.sessionManager?.checkAndGetSessionAndWindowId(true)\n if (isUndefined(sessionIds)) {\n logger.error(LOGGER_PREFIX + 'Could not read session ID. Dropping metrics!')\n return\n }\n\n this.buffer = this.buffer || {}\n\n const $currentUrl = this._currentURL()\n if (isUndefined($currentUrl)) {\n return\n }\n\n if (isNullish(metric?.name) || isNullish(metric?.value)) {\n logger.error(LOGGER_PREFIX + 'Invalid metric received', metric)\n return\n }\n\n // we observe some very large values sometimes, we'll ignore them\n // since the likelihood of LCP > 1 hour being correct is very low\n if (this._maxAllowedValue && metric.value >= this._maxAllowedValue) {\n logger.error(LOGGER_PREFIX + 'Ignoring metric with value >= ' + this._maxAllowedValue, metric)\n return\n }\n\n const urlHasChanged = this.buffer.url !== $currentUrl\n\n if (urlHasChanged) {\n // we need to send what we have\n this._flushToCapture()\n // poor performance is >4s, we wait twice that time to send\n // this is in case we haven't received all metrics\n // we'll at least gather some\n this._delayedFlushTimer = setTimeout(this._flushToCapture, FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS)\n }\n\n if (isUndefined(this.buffer.url)) {\n this.buffer.url = $currentUrl\n }\n\n this.buffer.firstMetricTimestamp = isUndefined(this.buffer.firstMetricTimestamp)\n ? Date.now()\n : this.buffer.firstMetricTimestamp\n\n this.buffer.metrics.push({\n ...metric,\n $current_url: $currentUrl,\n $session_id: sessionIds.sessionId,\n $window_id: sessionIds.windowId,\n timestamp: Date.now(),\n })\n\n if (this.buffer.metrics.length === 4) {\n // we have all 4 metrics\n this._flushToCapture()\n }\n }\n\n private _startCapturing = () => {\n const { onLCP, onCLS, onFCP, onINP } = assignableWindow.postHogWebVitalsCallbacks\n\n if (!onLCP || !onCLS || !onFCP || !onINP) {\n logger.error(LOGGER_PREFIX + 'web vitals callbacks not loaded - not starting')\n return\n }\n\n // register performance observers\n onLCP(this._addToBuffer)\n onCLS(this._addToBuffer)\n onFCP(this._addToBuffer)\n onINP(this._addToBuffer)\n\n this._initialized = true\n }\n}\n"]}
@@ -331,6 +331,10 @@ var PostHog = /** @class */ (function () {
331
331
  // if any instance on the page has debug = true, we set the
332
332
  // global debug to be true
333
333
  Config.DEBUG = Config.DEBUG || this.config.debug;
334
+ if (Config.DEBUG) {
335
+ // eslint-disable-next-line no-console
336
+ console.log('[PostHog.js] Starting in debug mode', this);
337
+ }
334
338
  this._sync_opt_out_with_persistence();
335
339
  // isUndefined doesn't provide typehint here so wouldn't reduce bundle as we'd need to assign
336
340
  // eslint-disable-next-line posthog-js/no-direct-undefined-check