posthog-js 1.396.7 → 1.396.8
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/all-external-dependencies.js +1 -1
- package/dist/all-external-dependencies.js.map +1 -1
- package/dist/array.full.es5.js +1 -1
- package/dist/array.full.js +1 -1
- package/dist/array.full.js.map +1 -1
- package/dist/array.full.no-external.js +1 -1
- package/dist/array.full.no-external.js.map +1 -1
- package/dist/array.js +1 -1
- package/dist/array.no-external.js +1 -1
- package/dist/customizations.full.js +1 -1
- package/dist/default-extensions.js +1 -1
- package/dist/extension-bundles.js +1 -1
- package/dist/lazy-recorder.js +1 -1
- package/dist/logs.js +1 -1
- package/dist/logs.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/module.full.js +1 -1
- package/dist/module.full.js.map +1 -1
- package/dist/module.full.no-external.js +1 -1
- package/dist/module.full.no-external.js.map +1 -1
- package/dist/module.js +1 -1
- package/dist/module.no-external.js +1 -1
- package/dist/module.slim.js +1 -1
- package/dist/module.slim.no-external.js +1 -1
- package/dist/posthog-recorder.js +1 -1
- package/lib/package.json +1 -1
- package/lib/src/entrypoints/logs.js +24 -2
- package/lib/src/entrypoints/logs.js.map +1 -1
- package/package.json +3 -3
package/lib/package.json
CHANGED
|
@@ -308,12 +308,23 @@ var LEVEL_MAP = {
|
|
|
308
308
|
error: 'error',
|
|
309
309
|
info: 'info',
|
|
310
310
|
};
|
|
311
|
+
var originalConsoleMethod = function (method) {
|
|
312
|
+
while (method === null || method === void 0 ? void 0 : method.__rrweb_original__) {
|
|
313
|
+
method = method.__rrweb_original__;
|
|
314
|
+
}
|
|
315
|
+
return method;
|
|
316
|
+
};
|
|
311
317
|
var initializeLogs = function (posthog) {
|
|
312
318
|
var e_1, _a;
|
|
313
319
|
// `host` is carried here because the core SDK context has no equivalent. Session
|
|
314
320
|
// attributes (window.id, sessionStartTimestamp, lastActivityTimestamp) are added
|
|
315
321
|
// downstream by the core pipeline from the SDK context, alongside sessionId.
|
|
316
322
|
var attributes = { host: globals_1.assignableWindow.location.host };
|
|
323
|
+
// Re-entrancy guard: the capture path itself logs — `_captureConsoleLog` calls into
|
|
324
|
+
// session management, which emits internal debug lines through PostHog's own logger,
|
|
325
|
+
// which in turn writes to the (now wrapped) console. Without this flag that would
|
|
326
|
+
// re-enter capture and recurse until the stack overflows.
|
|
327
|
+
var isCapturingLog = false;
|
|
317
328
|
var _loop_1 = function (level) {
|
|
318
329
|
var logWrapper = function (originalConsoleLog) {
|
|
319
330
|
return function () {
|
|
@@ -322,8 +333,14 @@ var initializeLogs = function (posthog) {
|
|
|
322
333
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
323
334
|
args[_i] = arguments[_i];
|
|
324
335
|
}
|
|
336
|
+
// Tracks whether *this* invocation acquired the re-entrancy guard, so that a
|
|
337
|
+
// nested console call which skips capture doesn't release the guard early and
|
|
338
|
+
// reopen the capture path while the outer invocation is still running.
|
|
339
|
+
var acquiredGuard = false;
|
|
325
340
|
try {
|
|
326
|
-
if (args.length > 0 && posthog.is_capturing()) {
|
|
341
|
+
if (args.length > 0 && !isCapturingLog && posthog.is_capturing()) {
|
|
342
|
+
isCapturingLog = true;
|
|
343
|
+
acquiredGuard = true;
|
|
327
344
|
var _b = stringifyArgsSafely(args, LOG_BODY_SIZE_LIMIT), body = _b.body, truncated = _b.truncated, flattenedAttributes = _b.attributes;
|
|
328
345
|
var logAttributes = __assign(__assign({}, attributes), (truncated ? { body_truncated: 'true' } : {}));
|
|
329
346
|
// The core pipeline adds posthogDistinctId and url.full from the SDK context.
|
|
@@ -339,12 +356,17 @@ var initializeLogs = function (posthog) {
|
|
|
339
356
|
// real console call below always runs even if capture throws.
|
|
340
357
|
}
|
|
341
358
|
finally {
|
|
359
|
+
if (acquiredGuard) {
|
|
360
|
+
isCapturingLog = false;
|
|
361
|
+
}
|
|
342
362
|
originalConsoleLog.apply(globals_1.assignableWindow.console, args);
|
|
343
363
|
}
|
|
344
364
|
};
|
|
345
365
|
};
|
|
346
366
|
var originalConsoleLog = globals_1.assignableWindow.console[level];
|
|
347
|
-
|
|
367
|
+
var wrapped = logWrapper(originalConsoleLog);
|
|
368
|
+
wrapped.__rrweb_original__ = originalConsoleMethod(originalConsoleLog);
|
|
369
|
+
globals_1.assignableWindow.console[level] = wrapped;
|
|
348
370
|
};
|
|
349
371
|
try {
|
|
350
372
|
for (var _b = __values(Object.keys(LEVEL_MAP)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/entrypoints/logs.ts"],"names":[],"mappings":"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","sourcesContent":["import { assignableWindow } from '../utils/globals'\nimport { PostHog } from '../posthog-core'\nimport { isArray, isBoolean, isFunction, isNull, isNumber, isObject } from '@posthog/core'\nimport type { LogSeverityLevel } from '@posthog/types'\n\nconst LOG_BODY_SIZE_LIMIT = 10000\nconst LOG_ATTRIBUTES_LIMIT = 50\n\ntype StringifyBudget = {\n remaining: number\n truncated: boolean\n}\n\ntype AttributeCollector = {\n result: Record<string, any>\n keysRemaining: number\n sizeRemaining: number\n truncated: boolean\n seen: WeakSet<object>\n}\n\nconst appendWithLimit = (parts: string[], text: string, budget: StringifyBudget): boolean => {\n if (budget.remaining <= 0) {\n budget.truncated = true\n return false\n }\n\n if (text.length <= budget.remaining) {\n parts.push(text)\n budget.remaining -= text.length\n return true\n }\n\n parts.push(text.slice(0, budget.remaining))\n budget.remaining = 0\n budget.truncated = true\n return false\n}\n\nconst stringifyStringWithLimit = (value: string, parts: string[], budget: StringifyBudget): boolean => {\n const serialized = JSON.stringify(value)\n if (serialized.length <= budget.remaining) {\n return appendWithLimit(parts, serialized, budget)\n }\n\n budget.truncated = true\n if (budget.remaining < 2) {\n return false\n }\n\n let low = 0\n let high = Math.min(value.length, budget.remaining - 2)\n while (low < high) {\n const mid = Math.ceil((low + high) / 2)\n if (JSON.stringify(value.slice(0, mid)).length <= budget.remaining) {\n low = mid\n } else {\n high = mid - 1\n }\n }\n\n return appendWithLimit(parts, JSON.stringify(value.slice(0, low)), budget)\n}\n\nconst isJSONSerializablePrimitive = (value: any): boolean =>\n typeof value !== 'undefined' &&\n typeof value !== 'function' &&\n typeof value !== 'symbol' &&\n typeof value !== 'bigint'\n\nconst isNumberOrBoolean = (value: any): boolean => {\n try {\n return isNumber(value) || isBoolean(value)\n } catch {\n return false\n }\n}\n\nconst collectAttributeValue = (key: string, value: any, collector: AttributeCollector): void => {\n if (collector.truncated) {\n return\n }\n\n collector.keysRemaining -= 1\n collector.sizeRemaining -= String(value).length + key.length\n if (collector.keysRemaining <= 0 || collector.sizeRemaining <= 0) {\n collector.truncated = true\n collector.result['attributes_truncated'] = true\n return\n }\n\n collector.result[key] = value\n}\n\nconst collectFlattenedAttributes = (value: any, key: string, collector: AttributeCollector): void => {\n if (collector.truncated) {\n return\n }\n\n if (isObject(value)) {\n if (collector.seen.has(value)) {\n collectAttributeValue(key || 'circular', '[Circular]', collector)\n return\n }\n collector.seen.add(value)\n\n try {\n for (const childKey in value) {\n try {\n if (!Object.prototype.hasOwnProperty.call(value, childKey)) {\n continue\n }\n const childValue = value[childKey]\n collectFlattenedAttributes(childValue, key ? `${key}.${childKey}` : childKey, collector)\n if (collector.truncated) {\n return\n }\n } catch {\n continue\n }\n }\n } catch {\n // we'll omit this object's properties considering we can't enumerate them\n }\n return\n }\n\n collectAttributeValue(key, value, collector)\n}\n\nconst stringifyValueWithLimit = (\n value: any,\n parts: string[],\n budget: StringifyBudget,\n seen: WeakSet<object>,\n inArray = false,\n attributeCollector?: AttributeCollector\n): boolean => {\n if (!isJSONSerializablePrimitive(value)) {\n return inArray ? appendWithLimit(parts, 'null', budget) : true\n }\n\n if (isNull(value) || isNumberOrBoolean(value)) {\n return appendWithLimit(parts, JSON.stringify(value), budget)\n }\n\n if (typeof value === 'string') {\n return stringifyStringWithLimit(value, parts, budget)\n }\n\n if (!isObject(value) && !isArray(value)) {\n return appendWithLimit(parts, JSON.stringify(value), budget)\n }\n\n if (seen.has(value)) {\n return stringifyStringWithLimit('[Circular]', parts, budget)\n }\n seen.add(value)\n\n try {\n const toJSON = (value as any).toJSON\n if (isFunction(toJSON)) {\n return stringifyValueWithLimit(toJSON.call(value), parts, budget, seen, inArray)\n }\n } catch {\n // If toJSON can't be read or throws, fall through to safe property enumeration.\n }\n\n try {\n const objectTag = Object.prototype.toString.call(value)\n if (objectTag === '[object String]') {\n return stringifyStringWithLimit(String(value.valueOf()), parts, budget)\n }\n\n if (objectTag === '[object Number]' || objectTag === '[object Boolean]') {\n return appendWithLimit(parts, JSON.stringify(value.valueOf()), budget)\n }\n } catch {\n // If Object.prototype.toString or valueOf throws, fall through to safe property enumeration.\n }\n\n if (value instanceof Error) {\n const errorObject: Record<string, any> = {}\n try {\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n errorObject[key] = value[key as keyof Error]\n }\n }\n } catch {}\n try {\n errorObject.name = value.name\n } catch {}\n try {\n errorObject.message = value.message\n } catch {}\n try {\n errorObject.stack = value.stack\n } catch {}\n return stringifyValueWithLimit(errorObject, parts, budget, seen, inArray, attributeCollector)\n }\n\n if (isArray(value)) {\n if (!appendWithLimit(parts, '[', budget)) {\n return false\n }\n for (let i = 0; i < value.length; i++) {\n if (i > 0 && !appendWithLimit(parts, ',', budget)) {\n return false\n }\n let item\n try {\n item = value[i]\n } catch {\n item = undefined\n }\n if (!stringifyValueWithLimit(item, parts, budget, seen, true)) {\n return false\n }\n }\n return appendWithLimit(parts, ']', budget)\n }\n\n if (!appendWithLimit(parts, '{', budget)) {\n return false\n }\n let isFirst = true\n try {\n for (const key in value) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue\n }\n if (budget.remaining <= 0) {\n budget.truncated = true\n return false\n }\n\n let propertyValue\n try {\n propertyValue = value[key]\n } catch {\n continue\n }\n if (attributeCollector) {\n try {\n collectFlattenedAttributes(propertyValue, key, attributeCollector)\n } catch {\n // we'll omit this object's attributes considering we can't read them safely\n }\n }\n\n if (!isJSONSerializablePrimitive(propertyValue)) {\n continue\n }\n\n const propertyPrefix = `${isFirst ? '' : ','}${JSON.stringify(key)}:`\n if (propertyPrefix.length >= budget.remaining) {\n budget.truncated = true\n return false\n }\n\n const partsBeforeProperty = parts.length\n const remainingBeforeProperty = budget.remaining\n const truncatedBeforeProperty = budget.truncated\n if (!appendWithLimit(parts, propertyPrefix, budget)) {\n return false\n }\n\n const partsBeforeValue = parts.length\n const serialized = stringifyValueWithLimit(propertyValue, parts, budget, seen, false)\n const truncatedAfterValue = budget.truncated\n if (parts.length === partsBeforeValue) {\n parts.length = partsBeforeProperty\n budget.remaining = remainingBeforeProperty\n budget.truncated = serialized ? truncatedBeforeProperty : truncatedAfterValue\n if (!serialized) {\n return false\n }\n continue\n }\n\n isFirst = false\n if (!serialized) {\n return false\n }\n }\n } catch {\n // we'll omit this object's properties considering we can't enumerate them\n }\n return appendWithLimit(parts, '}', budget)\n}\n\nconst stringifyArgsSafely = (\n args: any[],\n sizeLimit: number\n): { body: string; truncated: boolean; attributes: Record<string, any> } => {\n const parts: string[] = []\n const budget = { remaining: sizeLimit, truncated: false }\n const attributeCollector = isObject(args[0])\n ? {\n result: {} as Record<string, any>,\n keysRemaining: LOG_ATTRIBUTES_LIMIT,\n sizeRemaining: LOG_BODY_SIZE_LIMIT,\n truncated: false,\n seen: new WeakSet<object>([args[0]]),\n }\n : undefined\n\n for (let i = 0; i < args.length; i++) {\n if (i > 0 && !appendWithLimit(parts, ' ', budget)) {\n break\n }\n if (\n !stringifyValueWithLimit(\n args[i],\n parts,\n budget,\n new WeakSet<object>(),\n false,\n i === 0 ? attributeCollector : undefined\n )\n ) {\n break\n }\n }\n\n return {\n body: parts.join('') + (budget.truncated ? '...' : ''),\n truncated: budget.truncated,\n attributes: attributeCollector?.result || {},\n }\n}\n\ntype ConsoleLevel = 'debug' | 'log' | 'warn' | 'error' | 'info'\n\n// Console method → OTLP severity level. `log` and `info` both map to `info`;\n// the originating method is preserved separately via the `log.source` attribute.\nconst LEVEL_MAP: Record<ConsoleLevel, LogSeverityLevel> = {\n debug: 'debug',\n log: 'info',\n warn: 'warn',\n error: 'error',\n info: 'info',\n}\n\nconst initializeLogs = (posthog: PostHog) => {\n // `host` is carried here because the core SDK context has no equivalent. Session\n // attributes (window.id, sessionStartTimestamp, lastActivityTimestamp) are added\n // downstream by the core pipeline from the SDK context, alongside sessionId.\n const attributes: Record<string, string> = { host: assignableWindow.location.host }\n\n for (const level of Object.keys(LEVEL_MAP) as ConsoleLevel[]) {\n const logWrapper =\n (originalConsoleLog: any) =>\n (...args: any[]) => {\n try {\n if (args.length > 0 && posthog.is_capturing()) {\n const {\n body,\n truncated,\n attributes: flattenedAttributes,\n } = stringifyArgsSafely(args, LOG_BODY_SIZE_LIMIT)\n const logAttributes = {\n ...attributes,\n ...(truncated ? { body_truncated: 'true' } : {}),\n }\n // The core pipeline adds posthogDistinctId and url.full from the SDK context.\n posthog.logs?._captureConsoleLog({\n level: LEVEL_MAP[level],\n body,\n attributes: {\n 'log.source': `console.${level}`,\n ...logAttributes,\n ...flattenedAttributes,\n },\n })\n }\n } catch {\n // Capture must never break the page's own console output, so the\n // real console call below always runs even if capture throws.\n } finally {\n originalConsoleLog.apply(assignableWindow.console, args)\n }\n }\n\n const originalConsoleLog = assignableWindow.console[level]\n assignableWindow.console[level] = logWrapper(originalConsoleLog)\n }\n}\n\nassignableWindow.__PosthogExtensions__ = assignableWindow.__PosthogExtensions__ || {}\nassignableWindow.__PosthogExtensions__.logs = { initializeLogs }\n"]}
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/entrypoints/logs.ts"],"names":[],"mappings":"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","sourcesContent":["import { assignableWindow } from '../utils/globals'\nimport { PostHog } from '../posthog-core'\nimport { isArray, isBoolean, isFunction, isNull, isNumber, isObject } from '@posthog/core'\nimport type { LogSeverityLevel } from '@posthog/types'\n\nconst LOG_BODY_SIZE_LIMIT = 10000\nconst LOG_ATTRIBUTES_LIMIT = 50\n\ntype StringifyBudget = {\n remaining: number\n truncated: boolean\n}\n\ntype AttributeCollector = {\n result: Record<string, any>\n keysRemaining: number\n sizeRemaining: number\n truncated: boolean\n seen: WeakSet<object>\n}\n\nconst appendWithLimit = (parts: string[], text: string, budget: StringifyBudget): boolean => {\n if (budget.remaining <= 0) {\n budget.truncated = true\n return false\n }\n\n if (text.length <= budget.remaining) {\n parts.push(text)\n budget.remaining -= text.length\n return true\n }\n\n parts.push(text.slice(0, budget.remaining))\n budget.remaining = 0\n budget.truncated = true\n return false\n}\n\nconst stringifyStringWithLimit = (value: string, parts: string[], budget: StringifyBudget): boolean => {\n const serialized = JSON.stringify(value)\n if (serialized.length <= budget.remaining) {\n return appendWithLimit(parts, serialized, budget)\n }\n\n budget.truncated = true\n if (budget.remaining < 2) {\n return false\n }\n\n let low = 0\n let high = Math.min(value.length, budget.remaining - 2)\n while (low < high) {\n const mid = Math.ceil((low + high) / 2)\n if (JSON.stringify(value.slice(0, mid)).length <= budget.remaining) {\n low = mid\n } else {\n high = mid - 1\n }\n }\n\n return appendWithLimit(parts, JSON.stringify(value.slice(0, low)), budget)\n}\n\nconst isJSONSerializablePrimitive = (value: any): boolean =>\n typeof value !== 'undefined' &&\n typeof value !== 'function' &&\n typeof value !== 'symbol' &&\n typeof value !== 'bigint'\n\nconst isNumberOrBoolean = (value: any): boolean => {\n try {\n return isNumber(value) || isBoolean(value)\n } catch {\n return false\n }\n}\n\nconst collectAttributeValue = (key: string, value: any, collector: AttributeCollector): void => {\n if (collector.truncated) {\n return\n }\n\n collector.keysRemaining -= 1\n collector.sizeRemaining -= String(value).length + key.length\n if (collector.keysRemaining <= 0 || collector.sizeRemaining <= 0) {\n collector.truncated = true\n collector.result['attributes_truncated'] = true\n return\n }\n\n collector.result[key] = value\n}\n\nconst collectFlattenedAttributes = (value: any, key: string, collector: AttributeCollector): void => {\n if (collector.truncated) {\n return\n }\n\n if (isObject(value)) {\n if (collector.seen.has(value)) {\n collectAttributeValue(key || 'circular', '[Circular]', collector)\n return\n }\n collector.seen.add(value)\n\n try {\n for (const childKey in value) {\n try {\n if (!Object.prototype.hasOwnProperty.call(value, childKey)) {\n continue\n }\n const childValue = value[childKey]\n collectFlattenedAttributes(childValue, key ? `${key}.${childKey}` : childKey, collector)\n if (collector.truncated) {\n return\n }\n } catch {\n continue\n }\n }\n } catch {\n // we'll omit this object's properties considering we can't enumerate them\n }\n return\n }\n\n collectAttributeValue(key, value, collector)\n}\n\nconst stringifyValueWithLimit = (\n value: any,\n parts: string[],\n budget: StringifyBudget,\n seen: WeakSet<object>,\n inArray = false,\n attributeCollector?: AttributeCollector\n): boolean => {\n if (!isJSONSerializablePrimitive(value)) {\n return inArray ? appendWithLimit(parts, 'null', budget) : true\n }\n\n if (isNull(value) || isNumberOrBoolean(value)) {\n return appendWithLimit(parts, JSON.stringify(value), budget)\n }\n\n if (typeof value === 'string') {\n return stringifyStringWithLimit(value, parts, budget)\n }\n\n if (!isObject(value) && !isArray(value)) {\n return appendWithLimit(parts, JSON.stringify(value), budget)\n }\n\n if (seen.has(value)) {\n return stringifyStringWithLimit('[Circular]', parts, budget)\n }\n seen.add(value)\n\n try {\n const toJSON = (value as any).toJSON\n if (isFunction(toJSON)) {\n return stringifyValueWithLimit(toJSON.call(value), parts, budget, seen, inArray)\n }\n } catch {\n // If toJSON can't be read or throws, fall through to safe property enumeration.\n }\n\n try {\n const objectTag = Object.prototype.toString.call(value)\n if (objectTag === '[object String]') {\n return stringifyStringWithLimit(String(value.valueOf()), parts, budget)\n }\n\n if (objectTag === '[object Number]' || objectTag === '[object Boolean]') {\n return appendWithLimit(parts, JSON.stringify(value.valueOf()), budget)\n }\n } catch {\n // If Object.prototype.toString or valueOf throws, fall through to safe property enumeration.\n }\n\n if (value instanceof Error) {\n const errorObject: Record<string, any> = {}\n try {\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n errorObject[key] = value[key as keyof Error]\n }\n }\n } catch {}\n try {\n errorObject.name = value.name\n } catch {}\n try {\n errorObject.message = value.message\n } catch {}\n try {\n errorObject.stack = value.stack\n } catch {}\n return stringifyValueWithLimit(errorObject, parts, budget, seen, inArray, attributeCollector)\n }\n\n if (isArray(value)) {\n if (!appendWithLimit(parts, '[', budget)) {\n return false\n }\n for (let i = 0; i < value.length; i++) {\n if (i > 0 && !appendWithLimit(parts, ',', budget)) {\n return false\n }\n let item\n try {\n item = value[i]\n } catch {\n item = undefined\n }\n if (!stringifyValueWithLimit(item, parts, budget, seen, true)) {\n return false\n }\n }\n return appendWithLimit(parts, ']', budget)\n }\n\n if (!appendWithLimit(parts, '{', budget)) {\n return false\n }\n let isFirst = true\n try {\n for (const key in value) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue\n }\n if (budget.remaining <= 0) {\n budget.truncated = true\n return false\n }\n\n let propertyValue\n try {\n propertyValue = value[key]\n } catch {\n continue\n }\n if (attributeCollector) {\n try {\n collectFlattenedAttributes(propertyValue, key, attributeCollector)\n } catch {\n // we'll omit this object's attributes considering we can't read them safely\n }\n }\n\n if (!isJSONSerializablePrimitive(propertyValue)) {\n continue\n }\n\n const propertyPrefix = `${isFirst ? '' : ','}${JSON.stringify(key)}:`\n if (propertyPrefix.length >= budget.remaining) {\n budget.truncated = true\n return false\n }\n\n const partsBeforeProperty = parts.length\n const remainingBeforeProperty = budget.remaining\n const truncatedBeforeProperty = budget.truncated\n if (!appendWithLimit(parts, propertyPrefix, budget)) {\n return false\n }\n\n const partsBeforeValue = parts.length\n const serialized = stringifyValueWithLimit(propertyValue, parts, budget, seen, false)\n const truncatedAfterValue = budget.truncated\n if (parts.length === partsBeforeValue) {\n parts.length = partsBeforeProperty\n budget.remaining = remainingBeforeProperty\n budget.truncated = serialized ? truncatedBeforeProperty : truncatedAfterValue\n if (!serialized) {\n return false\n }\n continue\n }\n\n isFirst = false\n if (!serialized) {\n return false\n }\n }\n } catch {\n // we'll omit this object's properties considering we can't enumerate them\n }\n return appendWithLimit(parts, '}', budget)\n}\n\nconst stringifyArgsSafely = (\n args: any[],\n sizeLimit: number\n): { body: string; truncated: boolean; attributes: Record<string, any> } => {\n const parts: string[] = []\n const budget = { remaining: sizeLimit, truncated: false }\n const attributeCollector = isObject(args[0])\n ? {\n result: {} as Record<string, any>,\n keysRemaining: LOG_ATTRIBUTES_LIMIT,\n sizeRemaining: LOG_BODY_SIZE_LIMIT,\n truncated: false,\n seen: new WeakSet<object>([args[0]]),\n }\n : undefined\n\n for (let i = 0; i < args.length; i++) {\n if (i > 0 && !appendWithLimit(parts, ' ', budget)) {\n break\n }\n if (\n !stringifyValueWithLimit(\n args[i],\n parts,\n budget,\n new WeakSet<object>(),\n false,\n i === 0 ? attributeCollector : undefined\n )\n ) {\n break\n }\n }\n\n return {\n body: parts.join('') + (budget.truncated ? '...' : ''),\n truncated: budget.truncated,\n attributes: attributeCollector?.result || {},\n }\n}\n\ntype ConsoleLevel = 'debug' | 'log' | 'warn' | 'error' | 'info'\n\n// Console method → OTLP severity level. `log` and `info` both map to `info`;\n// the originating method is preserved separately via the `log.source` attribute.\nconst LEVEL_MAP: Record<ConsoleLevel, LogSeverityLevel> = {\n debug: 'debug',\n log: 'info',\n warn: 'warn',\n error: 'error',\n info: 'info',\n}\n\nconst originalConsoleMethod = (method: any): any => {\n while (method?.__rrweb_original__) {\n method = method.__rrweb_original__\n }\n return method\n}\n\nconst initializeLogs = (posthog: PostHog) => {\n // `host` is carried here because the core SDK context has no equivalent. Session\n // attributes (window.id, sessionStartTimestamp, lastActivityTimestamp) are added\n // downstream by the core pipeline from the SDK context, alongside sessionId.\n const attributes: Record<string, string> = { host: assignableWindow.location.host }\n\n // Re-entrancy guard: the capture path itself logs — `_captureConsoleLog` calls into\n // session management, which emits internal debug lines through PostHog's own logger,\n // which in turn writes to the (now wrapped) console. Without this flag that would\n // re-enter capture and recurse until the stack overflows.\n let isCapturingLog = false\n\n for (const level of Object.keys(LEVEL_MAP) as ConsoleLevel[]) {\n const logWrapper =\n (originalConsoleLog: any) =>\n (...args: any[]) => {\n // Tracks whether *this* invocation acquired the re-entrancy guard, so that a\n // nested console call which skips capture doesn't release the guard early and\n // reopen the capture path while the outer invocation is still running.\n let acquiredGuard = false\n try {\n if (args.length > 0 && !isCapturingLog && posthog.is_capturing()) {\n isCapturingLog = true\n acquiredGuard = true\n const {\n body,\n truncated,\n attributes: flattenedAttributes,\n } = stringifyArgsSafely(args, LOG_BODY_SIZE_LIMIT)\n const logAttributes = {\n ...attributes,\n ...(truncated ? { body_truncated: 'true' } : {}),\n }\n // The core pipeline adds posthogDistinctId and url.full from the SDK context.\n posthog.logs?._captureConsoleLog({\n level: LEVEL_MAP[level],\n body,\n attributes: {\n 'log.source': `console.${level}`,\n ...logAttributes,\n ...flattenedAttributes,\n },\n })\n }\n } catch {\n // Capture must never break the page's own console output, so the\n // real console call below always runs even if capture throws.\n } finally {\n if (acquiredGuard) {\n isCapturingLog = false\n }\n originalConsoleLog.apply(assignableWindow.console, args)\n }\n }\n\n const originalConsoleLog = assignableWindow.console[level]\n const wrapped = logWrapper(originalConsoleLog)\n // Expose the original console method the same way rrweb's console plugin does, so\n // PostHog's internal logger (utils/logger.ts) writes to the real console instead of\n // re-entering this wrapper when it emits debug lines from inside the capture path.\n // Flatten an existing marker if another console plugin already wrapped this method.\n ;(wrapped as any).__rrweb_original__ = originalConsoleMethod(originalConsoleLog)\n assignableWindow.console[level] = wrapped\n }\n}\n\nassignableWindow.__PosthogExtensions__ = assignableWindow.__PosthogExtensions__ || {}\nassignableWindow.__PosthogExtensions__.logs = { initializeLogs }\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "posthog-js",
|
|
3
|
-
"version": "1.396.
|
|
3
|
+
"version": "1.396.8",
|
|
4
4
|
"bugs": {
|
|
5
5
|
"url": "https://github.com/PostHog/posthog-js/issues"
|
|
6
6
|
},
|
|
@@ -101,8 +101,8 @@
|
|
|
101
101
|
"@posthog-tooling/rollup-utils": "1.1.1",
|
|
102
102
|
"@posthog/rrweb": "0.0.75",
|
|
103
103
|
"@posthog/rrweb-record": "0.0.75",
|
|
104
|
-
"@posthog/rrweb-
|
|
105
|
-
"@posthog/rrweb-
|
|
104
|
+
"@posthog/rrweb-types": "0.0.62",
|
|
105
|
+
"@posthog/rrweb-plugin-console-record": "0.0.75"
|
|
106
106
|
},
|
|
107
107
|
"browserslist": [
|
|
108
108
|
"> 0.5%, last 2 versions, Firefox ESR, not dead"
|