@posthog/core 1.25.3 → 1.27.0

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.
@@ -0,0 +1,38 @@
1
+ export declare const EXCEPTION_STEP_INTERNAL_FIELDS: {
2
+ readonly MESSAGE: "$message";
3
+ readonly TIMESTAMP: "$timestamp";
4
+ };
5
+ export type ExceptionStep = {
6
+ [EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE]: string;
7
+ [EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP]: string | number;
8
+ [key: string]: unknown;
9
+ };
10
+ /** NOTE: This type is also defined in `@posthog/types` (posthog-config.ts). Keep both in sync. */
11
+ export type ExceptionStepsConfig = {
12
+ enabled?: boolean;
13
+ max_bytes?: number;
14
+ };
15
+ export type ResolvedExceptionStepsConfig = {
16
+ enabled: boolean;
17
+ max_bytes: number;
18
+ };
19
+ export declare const DEFAULT_EXCEPTION_STEPS_CONFIG: ResolvedExceptionStepsConfig;
20
+ export declare function resolveExceptionStepsConfig(config?: ExceptionStepsConfig | null): ResolvedExceptionStepsConfig;
21
+ export declare function stripReservedExceptionStepFields(properties?: Record<string, unknown> | null): {
22
+ sanitizedProperties: Record<string, unknown>;
23
+ droppedKeys: string[];
24
+ };
25
+ export declare class ExceptionStepsBuffer {
26
+ private _entries;
27
+ private _totalBytes;
28
+ private _config;
29
+ constructor(config?: ExceptionStepsConfig | null);
30
+ setConfig(config?: ExceptionStepsConfig | null): void;
31
+ add(step: ExceptionStep): void;
32
+ getAttachable(): ExceptionStep[];
33
+ clear(): void;
34
+ size(): number;
35
+ private _trimToMaxBytes;
36
+ }
37
+ export declare function getUtf8ByteLength(value: string): number;
38
+ //# sourceMappingURL=exception-steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception-steps.d.ts","sourceRoot":"","sources":["../../src/error-tracking/exception-steps.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8BAA8B;;;CAGjC,CAAA;AAOV,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,8BAA8B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChD,CAAC,8BAA8B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,kGAAkG;AAClG,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,4BAG5C,CAAA;AAED,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,IAAI,GAAG,4BAA4B,CAS9G;AAED,wBAAgB,gCAAgC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG;IAC7F,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB,CAmBA;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,OAAO,CAA8B;gBAEjC,MAAM,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAIzC,SAAS,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAKrD,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAgB9B,aAAa,IAAI,aAAa,EAAE;IAIhC,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,MAAM;IAIrB,OAAO,CAAC,eAAe;CAQxB;AAuFD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBvD"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ stripReservedExceptionStepFields: ()=>stripReservedExceptionStepFields,
28
+ ExceptionStepsBuffer: ()=>ExceptionStepsBuffer,
29
+ EXCEPTION_STEP_INTERNAL_FIELDS: ()=>EXCEPTION_STEP_INTERNAL_FIELDS,
30
+ resolveExceptionStepsConfig: ()=>resolveExceptionStepsConfig,
31
+ getUtf8ByteLength: ()=>getUtf8ByteLength,
32
+ DEFAULT_EXCEPTION_STEPS_CONFIG: ()=>DEFAULT_EXCEPTION_STEPS_CONFIG
33
+ });
34
+ const index_js_namespaceObject = require("../utils/index.js");
35
+ const EXCEPTION_STEP_INTERNAL_FIELDS = {
36
+ MESSAGE: '$message',
37
+ TIMESTAMP: '$timestamp'
38
+ };
39
+ const RESERVED_EXCEPTION_STEP_KEYS = new Set([
40
+ EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE,
41
+ EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP
42
+ ]);
43
+ const DEFAULT_EXCEPTION_STEPS_CONFIG = {
44
+ enabled: true,
45
+ max_bytes: 32768
46
+ };
47
+ function resolveExceptionStepsConfig(config) {
48
+ if (!config) return {
49
+ ...DEFAULT_EXCEPTION_STEPS_CONFIG
50
+ };
51
+ return {
52
+ enabled: config.enabled ?? DEFAULT_EXCEPTION_STEPS_CONFIG.enabled,
53
+ max_bytes: normalizePositiveInteger(config.max_bytes, DEFAULT_EXCEPTION_STEPS_CONFIG.max_bytes)
54
+ };
55
+ }
56
+ function stripReservedExceptionStepFields(properties) {
57
+ if (!properties) return {
58
+ sanitizedProperties: {},
59
+ droppedKeys: []
60
+ };
61
+ const droppedKeys = [];
62
+ const sanitizedProperties = Object.keys(properties).reduce((acc, key)=>{
63
+ if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {
64
+ droppedKeys.push(key);
65
+ return acc;
66
+ }
67
+ acc[key] = properties[key];
68
+ return acc;
69
+ }, {});
70
+ return {
71
+ sanitizedProperties,
72
+ droppedKeys
73
+ };
74
+ }
75
+ class ExceptionStepsBuffer {
76
+ constructor(config){
77
+ this._entries = [];
78
+ this._totalBytes = 0;
79
+ this._config = resolveExceptionStepsConfig(config);
80
+ }
81
+ setConfig(config) {
82
+ this._config = resolveExceptionStepsConfig(config);
83
+ this._trimToMaxBytes();
84
+ }
85
+ add(step) {
86
+ const serialized = normalizeAndSerializeStep(step);
87
+ if (!serialized) return;
88
+ const bytes = getUtf8ByteLength(serialized.json);
89
+ if (bytes > this._config.max_bytes) return;
90
+ this._entries.push({
91
+ step: serialized.step,
92
+ bytes
93
+ });
94
+ this._totalBytes += bytes;
95
+ this._trimToMaxBytes();
96
+ }
97
+ getAttachable() {
98
+ return this._entries.map((e)=>e.step);
99
+ }
100
+ clear() {
101
+ this._entries = [];
102
+ this._totalBytes = 0;
103
+ }
104
+ size() {
105
+ return this._entries.length;
106
+ }
107
+ _trimToMaxBytes() {
108
+ while(this._totalBytes > this._config.max_bytes && this._entries.length > 0){
109
+ const evicted = this._entries.shift();
110
+ if (evicted) this._totalBytes -= evicted.bytes;
111
+ }
112
+ }
113
+ }
114
+ function normalizePositiveInteger(input, fallback) {
115
+ if (!(0, index_js_namespaceObject.isNumber)(input) || input === 1 / 0 || input === -1 / 0) return fallback;
116
+ const normalized = Math.floor(input);
117
+ if (normalized < 0) return fallback;
118
+ return normalized;
119
+ }
120
+ function normalizeAndSerializeStep(step) {
121
+ const json = safeStringify(step);
122
+ if (!json) return;
123
+ try {
124
+ const parsed = JSON.parse(json);
125
+ if (!(0, index_js_namespaceObject.isObject)(parsed)) return;
126
+ const parsedStep = parsed;
127
+ const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];
128
+ const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];
129
+ if (!(0, index_js_namespaceObject.isString)(message) || 0 === message.trim().length) return;
130
+ if (!(0, index_js_namespaceObject.isString)(timestamp) && !(0, index_js_namespaceObject.isNumber)(timestamp)) return;
131
+ return {
132
+ step: parsedStep,
133
+ json
134
+ };
135
+ } catch {
136
+ return;
137
+ }
138
+ }
139
+ function safeStringify(value) {
140
+ const seen = new WeakSet();
141
+ try {
142
+ return JSON.stringify(value, (_key, replacementValue)=>{
143
+ if ('bigint' == typeof replacementValue) return replacementValue.toString();
144
+ if ('function' == typeof replacementValue || 'symbol' == typeof replacementValue) return;
145
+ if (replacementValue instanceof Date) return replacementValue.toISOString();
146
+ if (replacementValue instanceof Error) return {
147
+ name: replacementValue.name,
148
+ message: replacementValue.message,
149
+ stack: replacementValue.stack
150
+ };
151
+ if (replacementValue && 'object' == typeof replacementValue) {
152
+ if (seen.has(replacementValue)) return '[Circular]';
153
+ seen.add(replacementValue);
154
+ }
155
+ return replacementValue;
156
+ });
157
+ } catch {
158
+ return;
159
+ }
160
+ }
161
+ function getUtf8ByteLength(value) {
162
+ if ('undefined' != typeof TextEncoder) return new TextEncoder().encode(value).length;
163
+ const encoded = encodeURIComponent(value);
164
+ let byteLength = 0;
165
+ for(let i = 0; i < encoded.length; i++)if ('%' === encoded[i]) {
166
+ byteLength += 1;
167
+ i += 2;
168
+ } else byteLength += 1;
169
+ return byteLength;
170
+ }
171
+ exports.DEFAULT_EXCEPTION_STEPS_CONFIG = __webpack_exports__.DEFAULT_EXCEPTION_STEPS_CONFIG;
172
+ exports.EXCEPTION_STEP_INTERNAL_FIELDS = __webpack_exports__.EXCEPTION_STEP_INTERNAL_FIELDS;
173
+ exports.ExceptionStepsBuffer = __webpack_exports__.ExceptionStepsBuffer;
174
+ exports.getUtf8ByteLength = __webpack_exports__.getUtf8ByteLength;
175
+ exports.resolveExceptionStepsConfig = __webpack_exports__.resolveExceptionStepsConfig;
176
+ exports.stripReservedExceptionStepFields = __webpack_exports__.stripReservedExceptionStepFields;
177
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
178
+ "DEFAULT_EXCEPTION_STEPS_CONFIG",
179
+ "EXCEPTION_STEP_INTERNAL_FIELDS",
180
+ "ExceptionStepsBuffer",
181
+ "getUtf8ByteLength",
182
+ "resolveExceptionStepsConfig",
183
+ "stripReservedExceptionStepFields"
184
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
185
+ Object.defineProperty(exports, '__esModule', {
186
+ value: true
187
+ });
@@ -0,0 +1,138 @@
1
+ import { isNumber, isObject, isString } from "../utils/index.mjs";
2
+ const EXCEPTION_STEP_INTERNAL_FIELDS = {
3
+ MESSAGE: '$message',
4
+ TIMESTAMP: '$timestamp'
5
+ };
6
+ const RESERVED_EXCEPTION_STEP_KEYS = new Set([
7
+ EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE,
8
+ EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP
9
+ ]);
10
+ const DEFAULT_EXCEPTION_STEPS_CONFIG = {
11
+ enabled: true,
12
+ max_bytes: 32768
13
+ };
14
+ function resolveExceptionStepsConfig(config) {
15
+ if (!config) return {
16
+ ...DEFAULT_EXCEPTION_STEPS_CONFIG
17
+ };
18
+ return {
19
+ enabled: config.enabled ?? DEFAULT_EXCEPTION_STEPS_CONFIG.enabled,
20
+ max_bytes: normalizePositiveInteger(config.max_bytes, DEFAULT_EXCEPTION_STEPS_CONFIG.max_bytes)
21
+ };
22
+ }
23
+ function stripReservedExceptionStepFields(properties) {
24
+ if (!properties) return {
25
+ sanitizedProperties: {},
26
+ droppedKeys: []
27
+ };
28
+ const droppedKeys = [];
29
+ const sanitizedProperties = Object.keys(properties).reduce((acc, key)=>{
30
+ if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {
31
+ droppedKeys.push(key);
32
+ return acc;
33
+ }
34
+ acc[key] = properties[key];
35
+ return acc;
36
+ }, {});
37
+ return {
38
+ sanitizedProperties,
39
+ droppedKeys
40
+ };
41
+ }
42
+ class ExceptionStepsBuffer {
43
+ constructor(config){
44
+ this._entries = [];
45
+ this._totalBytes = 0;
46
+ this._config = resolveExceptionStepsConfig(config);
47
+ }
48
+ setConfig(config) {
49
+ this._config = resolveExceptionStepsConfig(config);
50
+ this._trimToMaxBytes();
51
+ }
52
+ add(step) {
53
+ const serialized = normalizeAndSerializeStep(step);
54
+ if (!serialized) return;
55
+ const bytes = getUtf8ByteLength(serialized.json);
56
+ if (bytes > this._config.max_bytes) return;
57
+ this._entries.push({
58
+ step: serialized.step,
59
+ bytes
60
+ });
61
+ this._totalBytes += bytes;
62
+ this._trimToMaxBytes();
63
+ }
64
+ getAttachable() {
65
+ return this._entries.map((e)=>e.step);
66
+ }
67
+ clear() {
68
+ this._entries = [];
69
+ this._totalBytes = 0;
70
+ }
71
+ size() {
72
+ return this._entries.length;
73
+ }
74
+ _trimToMaxBytes() {
75
+ while(this._totalBytes > this._config.max_bytes && this._entries.length > 0){
76
+ const evicted = this._entries.shift();
77
+ if (evicted) this._totalBytes -= evicted.bytes;
78
+ }
79
+ }
80
+ }
81
+ function normalizePositiveInteger(input, fallback) {
82
+ if (!isNumber(input) || input === 1 / 0 || input === -1 / 0) return fallback;
83
+ const normalized = Math.floor(input);
84
+ if (normalized < 0) return fallback;
85
+ return normalized;
86
+ }
87
+ function normalizeAndSerializeStep(step) {
88
+ const json = safeStringify(step);
89
+ if (!json) return;
90
+ try {
91
+ const parsed = JSON.parse(json);
92
+ if (!isObject(parsed)) return;
93
+ const parsedStep = parsed;
94
+ const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];
95
+ const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];
96
+ if (!isString(message) || 0 === message.trim().length) return;
97
+ if (!isString(timestamp) && !isNumber(timestamp)) return;
98
+ return {
99
+ step: parsedStep,
100
+ json
101
+ };
102
+ } catch {
103
+ return;
104
+ }
105
+ }
106
+ function safeStringify(value) {
107
+ const seen = new WeakSet();
108
+ try {
109
+ return JSON.stringify(value, (_key, replacementValue)=>{
110
+ if ('bigint' == typeof replacementValue) return replacementValue.toString();
111
+ if ('function' == typeof replacementValue || 'symbol' == typeof replacementValue) return;
112
+ if (replacementValue instanceof Date) return replacementValue.toISOString();
113
+ if (replacementValue instanceof Error) return {
114
+ name: replacementValue.name,
115
+ message: replacementValue.message,
116
+ stack: replacementValue.stack
117
+ };
118
+ if (replacementValue && 'object' == typeof replacementValue) {
119
+ if (seen.has(replacementValue)) return '[Circular]';
120
+ seen.add(replacementValue);
121
+ }
122
+ return replacementValue;
123
+ });
124
+ } catch {
125
+ return;
126
+ }
127
+ }
128
+ function getUtf8ByteLength(value) {
129
+ if ('undefined' != typeof TextEncoder) return new TextEncoder().encode(value).length;
130
+ const encoded = encodeURIComponent(value);
131
+ let byteLength = 0;
132
+ for(let i = 0; i < encoded.length; i++)if ('%' === encoded[i]) {
133
+ byteLength += 1;
134
+ i += 2;
135
+ } else byteLength += 1;
136
+ return byteLength;
137
+ }
138
+ export { DEFAULT_EXCEPTION_STEPS_CONFIG, EXCEPTION_STEP_INTERNAL_FIELDS, ExceptionStepsBuffer, getUtf8ByteLength, resolveExceptionStepsConfig, stripReservedExceptionStepFields };
@@ -3,4 +3,5 @@ export type * from './types';
3
3
  export * from './parsers';
4
4
  export * from './coercers';
5
5
  export * from './utils';
6
+ export * from './exception-steps';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error-tracking/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,mBAAmB,SAAS,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error-tracking/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,mBAAmB,SAAS,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,mBAAmB,CAAA"}
@@ -6,6 +6,9 @@ var __webpack_modules__ = {
6
6
  "./error-properties-builder": function(module) {
7
7
  module.exports = require("./error-properties-builder.js");
8
8
  },
9
+ "./exception-steps": function(module) {
10
+ module.exports = require("./exception-steps.js");
11
+ },
9
12
  "./parsers": function(module) {
10
13
  module.exports = require("./parsers/index.js");
11
14
  },
@@ -80,6 +83,12 @@ var __webpack_exports__ = {};
80
83
  return _utils__WEBPACK_IMPORTED_MODULE_3__[key];
81
84
  }).bind(0, __WEBPACK_IMPORT_KEY__);
82
85
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
86
+ var _exception_steps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./exception-steps");
87
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
88
+ for(var __WEBPACK_IMPORT_KEY__ in _exception_steps__WEBPACK_IMPORTED_MODULE_4__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
89
+ return _exception_steps__WEBPACK_IMPORTED_MODULE_4__[key];
90
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
91
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
83
92
  })();
84
93
  for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
85
94
  Object.defineProperty(exports, '__esModule', {
@@ -2,3 +2,4 @@ export * from "./error-properties-builder.mjs";
2
2
  export * from "./parsers/index.mjs";
3
3
  export * from "./coercers/index.mjs";
4
4
  export * from "./utils.mjs";
5
+ export * from "./exception-steps.mjs";
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * as ErrorTracking from './error-tracking';
5
5
  export { uuidv7 } from './vendor/uuidv7';
6
6
  export * from './posthog-core';
7
7
  export * from './posthog-core-stateless';
8
+ export * from './tracing-headers';
8
9
  export * from './types';
9
10
  export { getValidationError, getLengthFromRules, getRequirementsHint } from './surveys/validation';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAA;AACjE,cAAc,SAAS,CAAA;AACvB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAA;AACjE,cAAc,SAAS,CAAA;AACvB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA"}
package/dist/index.js CHANGED
@@ -18,6 +18,9 @@ var __webpack_modules__ = {
18
18
  "./surveys/validation": function(module) {
19
19
  module.exports = require("./surveys/validation.js");
20
20
  },
21
+ "./tracing-headers": function(module) {
22
+ module.exports = require("./tracing-headers.js");
23
+ },
21
24
  "./types": function(module) {
22
25
  module.exports = require("./types.js");
23
26
  },
@@ -74,9 +77,9 @@ var __webpack_exports__ = {};
74
77
  __webpack_require__.d(__webpack_exports__, {
75
78
  ErrorTracking: ()=>_error_tracking__WEBPACK_IMPORTED_MODULE_3__,
76
79
  getFeatureFlagValue: ()=>_featureFlagUtils__WEBPACK_IMPORTED_MODULE_0__.getFeatureFlagValue,
77
- getLengthFromRules: ()=>_surveys_validation__WEBPACK_IMPORTED_MODULE_8__.getLengthFromRules,
78
- getRequirementsHint: ()=>_surveys_validation__WEBPACK_IMPORTED_MODULE_8__.getRequirementsHint,
79
- getValidationError: ()=>_surveys_validation__WEBPACK_IMPORTED_MODULE_8__.getValidationError,
80
+ getLengthFromRules: ()=>_surveys_validation__WEBPACK_IMPORTED_MODULE_9__.getLengthFromRules,
81
+ getRequirementsHint: ()=>_surveys_validation__WEBPACK_IMPORTED_MODULE_9__.getRequirementsHint,
82
+ getValidationError: ()=>_surveys_validation__WEBPACK_IMPORTED_MODULE_9__.getValidationError,
80
83
  gzipCompress: ()=>_gzip__WEBPACK_IMPORTED_MODULE_1__.gzipCompress,
81
84
  isNativeAsyncGzipReadError: ()=>_gzip__WEBPACK_IMPORTED_MODULE_1__.isNativeAsyncGzipReadError,
82
85
  uuidv7: ()=>_vendor_uuidv7__WEBPACK_IMPORTED_MODULE_4__.uuidv7
@@ -133,9 +136,25 @@ var __webpack_exports__ = {};
133
136
  return _posthog_core_stateless__WEBPACK_IMPORTED_MODULE_6__[key];
134
137
  }).bind(0, __WEBPACK_IMPORT_KEY__);
135
138
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
136
- var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./types");
139
+ var _tracing_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./tracing-headers");
140
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
141
+ for(var __WEBPACK_IMPORT_KEY__ in _tracing_headers__WEBPACK_IMPORTED_MODULE_7__)if ([
142
+ "ErrorTracking",
143
+ "gzipCompress",
144
+ "default",
145
+ "getRequirementsHint",
146
+ "isNativeAsyncGzipReadError",
147
+ "getLengthFromRules",
148
+ "getFeatureFlagValue",
149
+ "uuidv7",
150
+ "getValidationError"
151
+ ].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
152
+ return _tracing_headers__WEBPACK_IMPORTED_MODULE_7__[key];
153
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
154
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
155
+ var _types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("./types");
137
156
  var __WEBPACK_REEXPORT_OBJECT__ = {};
138
- for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_7__)if ([
157
+ for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_8__)if ([
139
158
  "ErrorTracking",
140
159
  "gzipCompress",
141
160
  "default",
@@ -146,10 +165,10 @@ var __webpack_exports__ = {};
146
165
  "uuidv7",
147
166
  "getValidationError"
148
167
  ].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
149
- return _types__WEBPACK_IMPORTED_MODULE_7__[key];
168
+ return _types__WEBPACK_IMPORTED_MODULE_8__[key];
150
169
  }).bind(0, __WEBPACK_IMPORT_KEY__);
151
170
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
152
- var _surveys_validation__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("./surveys/validation");
171
+ var _surveys_validation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("./surveys/validation");
153
172
  })();
154
173
  exports.ErrorTracking = __webpack_exports__.ErrorTracking;
155
174
  exports.getFeatureFlagValue = __webpack_exports__.getFeatureFlagValue;
package/dist/index.mjs CHANGED
@@ -5,6 +5,7 @@ import { getLengthFromRules, getRequirementsHint, getValidationError } from "./s
5
5
  export * from "./utils/index.mjs";
6
6
  export * from "./posthog-core.mjs";
7
7
  export * from "./posthog-core-stateless.mjs";
8
+ export * from "./tracing-headers.mjs";
8
9
  export * from "./types.mjs";
9
10
  import * as __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ from "./error-tracking/index.mjs";
10
11
  export { __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ as ErrorTracking, getFeatureFlagValue, getLengthFromRules, getRequirementsHint, getValidationError, gzipCompress, isNativeAsyncGzipReadError, uuidv7 };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Minimal contract the tracing-headers patch needs from a PostHog client:
3
+ * something that can report the current distinct and session ids.
4
+ */
5
+ export interface TracingHeadersClient {
6
+ getDistinctId(): string;
7
+ getSessionId(): string;
8
+ }
9
+ /**
10
+ * Patches `globalThis.fetch` to inject `X-POSTHOG-DISTINCT-ID` and
11
+ * `X-POSTHOG-SESSION-ID` headers on requests whose hostname matches `hostnames`.
12
+ *
13
+ * Used by SDKs that run in environments with a WHATWG `fetch` (posthog-react-native,
14
+ * posthog-web) to link outgoing requests to the PostHog session — e.g. to link LLM
15
+ * traces captured by a backend to a frontend session replay.
16
+ *
17
+ * The wrapped fetch is tagged with a non-enumerable marker so that calling this
18
+ * again (on HMR, tests, or a second PostHog instance) unwraps the previous patch
19
+ * before rewrapping — preventing patches from stacking. Returns a function that
20
+ * restores the original fetch when called.
21
+ */
22
+ export declare const patchFetchForTracingHeaders: (client: TracingHeadersClient, hostnames: string[]) => (() => void);
23
+ //# sourceMappingURL=tracing-headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing-headers.d.ts","sourceRoot":"","sources":["../src/tracing-headers.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,IAAI,MAAM,CAAA;IACvB,YAAY,IAAI,MAAM,CAAA;CACvB;AAKD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,oBAAoB,EAAE,WAAW,MAAM,EAAE,KAAG,CAAC,MAAM,IAAI,CAyD1G,CAAA"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ patchFetchForTracingHeaders: ()=>patchFetchForTracingHeaders
28
+ });
29
+ const type_utils_js_namespaceObject = require("./utils/type-utils.js");
30
+ const DISTINCT_ID_HEADER = 'X-POSTHOG-DISTINCT-ID';
31
+ const SESSION_ID_HEADER = 'X-POSTHOG-SESSION-ID';
32
+ const PATCH_MARKER = '__posthog_tracing_headers_patched__';
33
+ const parseHostname = (url)=>{
34
+ try {
35
+ return new URL(url).hostname;
36
+ } catch {
37
+ return;
38
+ }
39
+ };
40
+ const shouldAddHeaders = (url, hostnames)=>{
41
+ const hostname = parseHostname(url);
42
+ if (!hostname) return false;
43
+ return hostnames.includes(hostname);
44
+ };
45
+ const patchFetchForTracingHeaders = (client, hostnames)=>{
46
+ const globalAny = globalThis;
47
+ const currentFetch = globalAny.fetch;
48
+ if (!(0, type_utils_js_namespaceObject.isFunction)(currentFetch)) return ()=>{};
49
+ const originalFetch = currentFetch[PATCH_MARKER]?.original ?? currentFetch;
50
+ const wrappedFetch = async function(input, init) {
51
+ try {
52
+ const urlString = 'string' == typeof input ? input : input instanceof URL ? input.toString() : input instanceof Request ? input.url : void 0;
53
+ if (urlString && shouldAddHeaders(urlString, hostnames)) {
54
+ const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : void 0));
55
+ const distinctId = client.getDistinctId();
56
+ const sessionId = client.getSessionId();
57
+ if (distinctId) headers.set(DISTINCT_ID_HEADER, distinctId);
58
+ if (sessionId) headers.set(SESSION_ID_HEADER, sessionId);
59
+ const initWithHeaders = {
60
+ ...init ?? {},
61
+ headers
62
+ };
63
+ return originalFetch.call(globalAny, input, initWithHeaders);
64
+ }
65
+ } catch {}
66
+ return originalFetch.call(globalAny, input, init);
67
+ };
68
+ Object.defineProperty(wrappedFetch, PATCH_MARKER, {
69
+ value: {
70
+ original: originalFetch
71
+ },
72
+ enumerable: false
73
+ });
74
+ globalAny.fetch = wrappedFetch;
75
+ return ()=>{
76
+ if (globalAny.fetch === wrappedFetch) globalAny.fetch = originalFetch;
77
+ };
78
+ };
79
+ exports.patchFetchForTracingHeaders = __webpack_exports__.patchFetchForTracingHeaders;
80
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
81
+ "patchFetchForTracingHeaders"
82
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
83
+ Object.defineProperty(exports, '__esModule', {
84
+ value: true
85
+ });
@@ -0,0 +1,51 @@
1
+ import { isFunction } from "./utils/type-utils.mjs";
2
+ const DISTINCT_ID_HEADER = 'X-POSTHOG-DISTINCT-ID';
3
+ const SESSION_ID_HEADER = 'X-POSTHOG-SESSION-ID';
4
+ const PATCH_MARKER = '__posthog_tracing_headers_patched__';
5
+ const parseHostname = (url)=>{
6
+ try {
7
+ return new URL(url).hostname;
8
+ } catch {
9
+ return;
10
+ }
11
+ };
12
+ const shouldAddHeaders = (url, hostnames)=>{
13
+ const hostname = parseHostname(url);
14
+ if (!hostname) return false;
15
+ return hostnames.includes(hostname);
16
+ };
17
+ const patchFetchForTracingHeaders = (client, hostnames)=>{
18
+ const globalAny = globalThis;
19
+ const currentFetch = globalAny.fetch;
20
+ if (!isFunction(currentFetch)) return ()=>{};
21
+ const originalFetch = currentFetch[PATCH_MARKER]?.original ?? currentFetch;
22
+ const wrappedFetch = async function(input, init) {
23
+ try {
24
+ const urlString = 'string' == typeof input ? input : input instanceof URL ? input.toString() : input instanceof Request ? input.url : void 0;
25
+ if (urlString && shouldAddHeaders(urlString, hostnames)) {
26
+ const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : void 0));
27
+ const distinctId = client.getDistinctId();
28
+ const sessionId = client.getSessionId();
29
+ if (distinctId) headers.set(DISTINCT_ID_HEADER, distinctId);
30
+ if (sessionId) headers.set(SESSION_ID_HEADER, sessionId);
31
+ const initWithHeaders = {
32
+ ...init ?? {},
33
+ headers
34
+ };
35
+ return originalFetch.call(globalAny, input, initWithHeaders);
36
+ }
37
+ } catch {}
38
+ return originalFetch.call(globalAny, input, init);
39
+ };
40
+ Object.defineProperty(wrappedFetch, PATCH_MARKER, {
41
+ value: {
42
+ original: originalFetch
43
+ },
44
+ enumerable: false
45
+ });
46
+ globalAny.fetch = wrappedFetch;
47
+ return ()=>{
48
+ if (globalAny.fetch === wrappedFetch) globalAny.fetch = originalFetch;
49
+ };
50
+ };
51
+ export { patchFetchForTracingHeaders };
package/dist/types.d.ts CHANGED
@@ -189,6 +189,18 @@ export type PostHogCoreOptions = {
189
189
  * If a function returns null, the event will be dropped.
190
190
  */
191
191
  before_send?: BeforeSendFn | BeforeSendFn[];
192
+ /**
193
+ * A list of hostnames for which to inject PostHog tracing headers
194
+ * (X-POSTHOG-DISTINCT-ID, X-POSTHOG-SESSION-ID) on outgoing `fetch` requests.
195
+ *
196
+ * Use this to link requests made from your app to session replays and LLM traces
197
+ * in PostHog. When set, the global `fetch` is patched on initialization and the
198
+ * headers are added to requests whose hostname matches one of the entries.
199
+ *
200
+ * Requires the SDK to wire up `patchFetchForTracingHeaders` against this option
201
+ * (currently supported in posthog-react-native).
202
+ */
203
+ addTracingHeaders?: string[];
192
204
  };
193
205
  export declare enum PostHogPersistedProperty {
194
206
  AnonymousId = "anonymous_id",
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,8EAA8E;IAC9E,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;QAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;KAC/C,CAAA;IACD;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,iBAAiB,GAAG,OAAO,CAAA;IAEvD;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;CAC5C,CAAA;AAED,oBAAY,wBAAwB;IAClC,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,KAAK,UAAU;IACf,sBAAsB,6BAA6B;IACnD,UAAU,gBAAgB,CAAE,6BAA6B;IACzD,kBAAkB,yBAAyB;IAC3C,YAAY,kBAAkB;IAC9B,mBAAmB,0BAA0B;IAC7C,2BAA2B,mCAAmC;IAC9D,qBAAqB,4BAA4B;IACjD,4BAA4B,oCAAoC;IAChE,oBAAoB,2BAA2B;IAC/C,KAAK,UAAU;IACf,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,qBAAqB,4BAA4B;IACjD,oBAAoB,sBAAsB;IAC1C,gBAAgB,sBAAsB;IACtC,eAAe,qBAAqB;IACpC,iBAAiB,wBAAwB,CAAE,oCAAoC;IAC/E,mBAAmB,0BAA0B,CAAE,oCAAoC;IACnF,aAAa,mBAAmB,CAAE,oCAAoC;IACtE,kBAAkB,0BAA0B,CAAE,oCAAoC;IAClF,WAAW,iBAAiB,CAAE,oCAAoC;IAClE,OAAO,YAAY,CAAE,oCAAoC;IACzD,YAAY,kBAAkB;IAC9B,mBAAmB,2BAA2B,CAAE,oCAAoC;IACpF,QAAQ,cAAc;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAA;IACxC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,qBAAqB,GAAG;IAClC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KACjC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,GAAG,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,sBAAsB,CAAA;AAG1B,oBAAY,WAAW;IACrB,MAAM,YAAY;IAClB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,CAAC,EACb,OAAO,GACP;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KACxB,CAAA;IAEL;;OAEG;IACH,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAA;IAEpC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAA;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB;;;;OAIG;IACH,aAAa,CAAC,EACV,OAAO,GACP;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KACxB,CAAA;IAEL;;;;OAIG;IACH,kBAAkB,CAAC,EACf,OAAO,GACP;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KACxB,CAAA;CACN,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAA;AAE/C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,GAAG;IAChF,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAChC,CAAA;IACD,mBAAmB,EAAE;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KACxB,CAAA;IACD,KAAK,EAAE;QACL,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;KACjC,CAAA;IACD,yBAAyB,EAAE,OAAO,CAAA;IAClC,gBAAgB,CAAC,EACb,OAAO,GACP;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KACxB,CAAA;IACL,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,CAC3D,oBAAoB,EACpB,OAAO,GAAG,cAAc,GAAG,qBAAqB,GAAG,WAAW,CAC/D,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;KACrD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACf,GAAG;KACD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAClC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,CACzD,oBAAoB,EACpB,OAAO,GAAG,cAAc,GAAG,qBAAqB,GAAG,WAAW,CAC/D,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;AAExE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,qBAAqB,CAAC,CAAA;AAEvG;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAC9E,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC,GAAG;IACjE,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE,uBAAuB,CAAA;CACvC,CAAA;AAEH;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG,OAAO,CACnD,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,qBAAqB,CAAC,CACnE,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAA;AAEpH,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAEpG;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB;;;;;;;gCAOR,MAAM,KAAG,MAAM;CAC1B,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAC5B,CAAC,OAAO,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,OAAO,gBAAgB,EAAE,UAAU,CAAC,CAAC,GAC7E,UAAU,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAC5C,MAAM,CAAA;AAEV;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,SAAS,GAAG,kBAAkB,GAAG,WAAW,GAAG,eAAe,CAAA;IACpE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,2BAA2B,CAAA;CAAE,GACxD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAEtD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACpC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,CAAA;IACzC,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAE/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,qCAAqC,CAAC,EAAE,oCAAoC,CAAA;IAC5E,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEhC,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,oBAAY,cAAc;IACxB,OAAO,aAAa;IACpB,SAAS,eAAe;IACxB,QAAQ,cAAc;IACtB,UAAU,gBAAgB;IAC1B,YAAY,kBAAkB;IAC9B,WAAW,iBAAiB;IAC5B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,QAAQ,aAAa;CACtB;AAED,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,cAAc,oBAAoB;CACnC;AAED,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,sBAAsB,CAAA;AAErH,oBAAY,oCAAoC;IAC9C,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAGD,oBAAY,oBAAoB;IAC9B,SAAS,eAAe;IACxB,SAAS,eAAe;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sBAAsB,CAAC,EAAE,oCAAoC,CAAA;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,qBAAqB,GAAG,YAAY,GAAG,sBAAsB,GAAG,yBAAyB,CAAA;IACrG,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAA;IAC/B,OAAO,EAAE,mBAAmB,CAAA;IAC5B,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,IAAI,EAAE,kBAAkB,CAAC,YAAY,GAAG,kBAAkB,CAAC,cAAc,CAAA;IACzE,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,oBAAY,kBAAkB;IAC5B,IAAI,SAAS;IACb,cAAc,oBAAoB;IAClC,YAAY,kBAAkB;IAC9B,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,oBAAY,2BAA2B;IACrC,YAAY,kBAAkB;IAC9B,GAAG,QAAQ;IACX,aAAa,mBAAmB;IAChC,gBAAgB,sBAAsB;CACvC;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,2BAA2B,CAAC,YAAY,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,2BAA2B,CAAC,GAAG,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,2BAA2B,CAAC,aAAa,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,2BAA2B,CAAC,gBAAgB,CAAA;IAClD,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;AAExD,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,QAAQ,cAAc;IACtB,KAAK,UAAU;IACf,KAAK,WAAW;IAChB,SAAS,cAAc;IACvB,YAAY,kBAAkB;CAC/B;AAED,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AACD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IAEnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,iBAAiB,CAAC,EAAE;QAClB,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,0BAA0B,CAAC,EAAE,MAAM,CAAA;QACnC,YAAY,CAAC,EAAE,eAAe,CAAA;QAC9B,MAAM,CAAC,EAAE;YACP,kBAAkB,CAAC,EAAE,OAAO,CAAA;YAC5B,MAAM,CAAC,EAAE;gBACP,IAAI,EAAE,MAAM,CAAA;aACb,EAAE,CAAA;SACJ,CAAA;QACD,OAAO,CAAC,EAAE;YACR,MAAM,EAAE,gBAAgB,EAAE,CAAA;SAC3B,CAAA;QACD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;QACtB,oBAAoB,CAAC,EAAE,eAAe,CAAA;QACtC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;CACzB,CAAA;AAED,2CAA2C;AAC3C,oBAAY,wBAAwB;IAClC,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,aAAa,CAAC,EAAE,wBAAwB,CAAA;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,aAAa,CAAC,EAAE,wBAAwB,CAAA;IACxC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,YAAY,CAAC,EAAE,wBAAwB,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC9B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC9B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC/B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAClC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,wBAAwB,6QAe3B,CAAA;AAEV;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEhF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,0GAA0G;IAC1G,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,kEAAkE;IAClE,IAAI,CAAC,EAAE,sBAAsB,CAAA;IAC7B,oFAAoF;IACpF,SAAS,CAAC,EAAE,sBAAsB,CAAA;IAClC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,KAAK,YAAY,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posthog/core",
3
- "version": "1.25.3",
3
+ "version": "1.27.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -0,0 +1,90 @@
1
+ import {
2
+ EXCEPTION_STEP_INTERNAL_FIELDS,
3
+ ExceptionStep,
4
+ ExceptionStepsBuffer,
5
+ getUtf8ByteLength,
6
+ resolveExceptionStepsConfig,
7
+ stripReservedExceptionStepFields,
8
+ } from './exception-steps'
9
+
10
+ describe('exception steps', () => {
11
+ describe('resolveExceptionStepsConfig', () => {
12
+ it('uses defaults when no config is passed', () => {
13
+ expect(resolveExceptionStepsConfig()).toEqual({
14
+ enabled: true,
15
+ max_bytes: 32768,
16
+ })
17
+ })
18
+
19
+ it('falls back to defaults for invalid values', () => {
20
+ expect(resolveExceptionStepsConfig({ max_bytes: Number.NaN })).toEqual({
21
+ enabled: true,
22
+ max_bytes: 32768,
23
+ })
24
+ })
25
+ })
26
+
27
+ describe('stripReservedExceptionStepFields', () => {
28
+ it('strips reserved fields and keeps custom properties', () => {
29
+ const result = stripReservedExceptionStepFields({
30
+ [EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE]: 'should-strip',
31
+ [EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP]: 'should-strip',
32
+ custom: true,
33
+ })
34
+
35
+ expect(result).toEqual({
36
+ sanitizedProperties: { custom: true },
37
+ droppedKeys: [EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE, EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP],
38
+ })
39
+ })
40
+ })
41
+
42
+ describe('ExceptionStepsBuffer', () => {
43
+ const makeStep = (message: string): ExceptionStep => ({
44
+ [EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE]: message,
45
+ [EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP]: '2026-01-01T00:00:00.000Z',
46
+ })
47
+
48
+ const bytesOf = (step: ExceptionStep) => getUtf8ByteLength(JSON.stringify(step))
49
+
50
+ it.each([
51
+ {
52
+ desc: 'evicts oldest steps when max bytes are exceeded',
53
+ config: { max_bytes: bytesOf(makeStep('two')) + bytesOf(makeStep('three')) },
54
+ steps: [makeStep('one'), makeStep('two'), makeStep('three')],
55
+ expected: ['two', 'three'],
56
+ },
57
+ {
58
+ desc: 'keeps the most recent step when budget fits only one',
59
+ config: { max_bytes: bytesOf(makeStep('one')) },
60
+ steps: [makeStep('one'), makeStep('two')],
61
+ expected: ['two'],
62
+ },
63
+ {
64
+ desc: 'skips malformed steps that cannot be normalized',
65
+ config: { max_bytes: 10000 },
66
+ steps: [{ $message: '', $timestamp: '2026-01-01T00:00:00.000Z' } as ExceptionStep, makeStep('valid')],
67
+ expected: ['valid'],
68
+ },
69
+ {
70
+ desc: 'drops a step that exceeds the entire budget on its own',
71
+ config: { max_bytes: 10 },
72
+ steps: [makeStep('this message is way too long for the tiny budget')],
73
+ expected: [],
74
+ },
75
+ ])('$desc', ({ config, steps, expected }) => {
76
+ const buffer = new ExceptionStepsBuffer(config)
77
+ for (const step of steps) {
78
+ buffer.add(step)
79
+ }
80
+ expect(buffer.getAttachable().map((s) => s.$message)).toEqual(expected)
81
+ })
82
+
83
+ it('clears all steps', () => {
84
+ const buffer = new ExceptionStepsBuffer({ max_bytes: 10000 })
85
+ buffer.add(makeStep('one'))
86
+ buffer.clear()
87
+ expect(buffer.size()).toBe(0)
88
+ })
89
+ })
90
+ })
@@ -0,0 +1,225 @@
1
+ import { isArray, isNumber, isObject, isString } from '@/utils'
2
+
3
+ export const EXCEPTION_STEP_INTERNAL_FIELDS = {
4
+ MESSAGE: '$message',
5
+ TIMESTAMP: '$timestamp',
6
+ } as const
7
+
8
+ const RESERVED_EXCEPTION_STEP_KEYS = new Set<string>([
9
+ EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE,
10
+ EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP,
11
+ ])
12
+
13
+ export type ExceptionStep = {
14
+ [EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE]: string
15
+ [EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP]: string | number
16
+ [key: string]: unknown
17
+ }
18
+
19
+ /** NOTE: This type is also defined in `@posthog/types` (posthog-config.ts). Keep both in sync. */
20
+ export type ExceptionStepsConfig = {
21
+ enabled?: boolean
22
+ max_bytes?: number
23
+ }
24
+
25
+ export type ResolvedExceptionStepsConfig = {
26
+ enabled: boolean
27
+ max_bytes: number
28
+ }
29
+
30
+ export const DEFAULT_EXCEPTION_STEPS_CONFIG: ResolvedExceptionStepsConfig = {
31
+ enabled: true,
32
+ max_bytes: 32768, // ~32KB
33
+ }
34
+
35
+ export function resolveExceptionStepsConfig(config?: ExceptionStepsConfig | null): ResolvedExceptionStepsConfig {
36
+ if (!config) {
37
+ return { ...DEFAULT_EXCEPTION_STEPS_CONFIG }
38
+ }
39
+
40
+ return {
41
+ enabled: config.enabled ?? DEFAULT_EXCEPTION_STEPS_CONFIG.enabled,
42
+ max_bytes: normalizePositiveInteger(config.max_bytes, DEFAULT_EXCEPTION_STEPS_CONFIG.max_bytes),
43
+ }
44
+ }
45
+
46
+ export function stripReservedExceptionStepFields(properties?: Record<string, unknown> | null): {
47
+ sanitizedProperties: Record<string, unknown>
48
+ droppedKeys: string[]
49
+ } {
50
+ if (!properties) {
51
+ return { sanitizedProperties: {}, droppedKeys: [] }
52
+ }
53
+
54
+ const droppedKeys: string[] = []
55
+ const sanitizedProperties = Object.keys(properties).reduce<Record<string, unknown>>((acc, key) => {
56
+ if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {
57
+ droppedKeys.push(key)
58
+ return acc
59
+ }
60
+ acc[key] = properties[key]
61
+ return acc
62
+ }, {})
63
+
64
+ return {
65
+ sanitizedProperties,
66
+ droppedKeys,
67
+ }
68
+ }
69
+
70
+ export class ExceptionStepsBuffer {
71
+ private _entries: { step: ExceptionStep; bytes: number }[] = []
72
+ private _totalBytes: number = 0
73
+ private _config: ResolvedExceptionStepsConfig
74
+
75
+ constructor(config?: ExceptionStepsConfig | null) {
76
+ this._config = resolveExceptionStepsConfig(config)
77
+ }
78
+
79
+ public setConfig(config?: ExceptionStepsConfig | null): void {
80
+ this._config = resolveExceptionStepsConfig(config)
81
+ this._trimToMaxBytes()
82
+ }
83
+
84
+ public add(step: ExceptionStep): void {
85
+ const serialized = normalizeAndSerializeStep(step)
86
+ if (!serialized) {
87
+ return
88
+ }
89
+
90
+ const bytes = getUtf8ByteLength(serialized.json)
91
+ if (bytes > this._config.max_bytes) {
92
+ return
93
+ }
94
+
95
+ this._entries.push({ step: serialized.step, bytes })
96
+ this._totalBytes += bytes
97
+ this._trimToMaxBytes()
98
+ }
99
+
100
+ public getAttachable(): ExceptionStep[] {
101
+ return this._entries.map((e) => e.step)
102
+ }
103
+
104
+ public clear(): void {
105
+ this._entries = []
106
+ this._totalBytes = 0
107
+ }
108
+
109
+ public size(): number {
110
+ return this._entries.length
111
+ }
112
+
113
+ private _trimToMaxBytes(): void {
114
+ while (this._totalBytes > this._config.max_bytes && this._entries.length > 0) {
115
+ const evicted = this._entries.shift()
116
+ if (evicted) {
117
+ this._totalBytes -= evicted.bytes
118
+ }
119
+ }
120
+ }
121
+ }
122
+
123
+ function normalizePositiveInteger(input: number | undefined, fallback: number): number {
124
+ if (!isNumber(input) || input === Infinity || input === -Infinity) {
125
+ return fallback
126
+ }
127
+
128
+ const normalized = Math.floor(input)
129
+ if (normalized < 0) {
130
+ return fallback
131
+ }
132
+
133
+ return normalized
134
+ }
135
+
136
+ function normalizeAndSerializeStep(step: ExceptionStep): { step: ExceptionStep; json: string } | undefined {
137
+ const json = safeStringify(step)
138
+ if (!json) {
139
+ return undefined
140
+ }
141
+
142
+ try {
143
+ const parsed = JSON.parse(json)
144
+ if (!isObject(parsed)) {
145
+ return undefined
146
+ }
147
+
148
+ const parsedStep = parsed as Record<string, unknown>
149
+ const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE]
150
+ const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP]
151
+
152
+ if (!isString(message) || message.trim().length === 0) {
153
+ return undefined
154
+ }
155
+
156
+ if (!isString(timestamp) && !isNumber(timestamp)) {
157
+ return undefined
158
+ }
159
+
160
+ return {
161
+ step: parsedStep as ExceptionStep,
162
+ json,
163
+ }
164
+ } catch {
165
+ return undefined
166
+ }
167
+ }
168
+
169
+ function safeStringify(value: unknown): string | undefined {
170
+ const seen = new WeakSet<object>()
171
+
172
+ try {
173
+ return JSON.stringify(value, (_key, replacementValue: unknown) => {
174
+ if (typeof replacementValue === 'bigint') {
175
+ return replacementValue.toString()
176
+ }
177
+
178
+ if (typeof replacementValue === 'function' || typeof replacementValue === 'symbol') {
179
+ return undefined
180
+ }
181
+
182
+ if (replacementValue instanceof Date) {
183
+ return replacementValue.toISOString()
184
+ }
185
+
186
+ if (replacementValue instanceof Error) {
187
+ return {
188
+ name: replacementValue.name,
189
+ message: replacementValue.message,
190
+ stack: replacementValue.stack,
191
+ }
192
+ }
193
+
194
+ if (replacementValue && typeof replacementValue === 'object') {
195
+ if (seen.has(replacementValue)) {
196
+ return '[Circular]'
197
+ }
198
+ seen.add(replacementValue)
199
+ }
200
+
201
+ return replacementValue
202
+ })
203
+ } catch {
204
+ return undefined
205
+ }
206
+ }
207
+
208
+ export function getUtf8ByteLength(value: string): number {
209
+ if (typeof TextEncoder !== 'undefined') {
210
+ return new TextEncoder().encode(value).length
211
+ }
212
+
213
+ const encoded = encodeURIComponent(value)
214
+ let byteLength = 0
215
+ for (let i = 0; i < encoded.length; i++) {
216
+ if (encoded[i] === '%') {
217
+ byteLength += 1
218
+ i += 2
219
+ } else {
220
+ byteLength += 1
221
+ }
222
+ }
223
+
224
+ return byteLength
225
+ }
@@ -3,3 +3,4 @@ export type * from './types'
3
3
  export * from './parsers'
4
4
  export * from './coercers'
5
5
  export * from './utils'
6
+ export * from './exception-steps'
package/src/index.ts CHANGED
@@ -5,5 +5,6 @@ export * as ErrorTracking from './error-tracking'
5
5
  export { uuidv7 } from './vendor/uuidv7'
6
6
  export * from './posthog-core'
7
7
  export * from './posthog-core-stateless'
8
+ export * from './tracing-headers'
8
9
  export * from './types'
9
10
  export { getValidationError, getLengthFromRules, getRequirementsHint } from './surveys/validation'
@@ -0,0 +1,105 @@
1
+ import { isFunction } from './utils/type-utils'
2
+
3
+ const DISTINCT_ID_HEADER = 'X-POSTHOG-DISTINCT-ID'
4
+ const SESSION_ID_HEADER = 'X-POSTHOG-SESSION-ID'
5
+ const PATCH_MARKER = '__posthog_tracing_headers_patched__'
6
+
7
+ const parseHostname = (url: string): string | undefined => {
8
+ try {
9
+ return new URL(url).hostname
10
+ } catch {
11
+ return undefined
12
+ }
13
+ }
14
+
15
+ const shouldAddHeaders = (url: string, hostnames: string[]): boolean => {
16
+ const hostname = parseHostname(url)
17
+ if (!hostname) {
18
+ return false
19
+ }
20
+ return hostnames.includes(hostname)
21
+ }
22
+
23
+ /**
24
+ * Minimal contract the tracing-headers patch needs from a PostHog client:
25
+ * something that can report the current distinct and session ids.
26
+ */
27
+ export interface TracingHeadersClient {
28
+ getDistinctId(): string
29
+ getSessionId(): string
30
+ }
31
+
32
+ type FetchFn = typeof fetch
33
+ type PatchedFetch = FetchFn & { [PATCH_MARKER]?: { original: FetchFn } }
34
+
35
+ /**
36
+ * Patches `globalThis.fetch` to inject `X-POSTHOG-DISTINCT-ID` and
37
+ * `X-POSTHOG-SESSION-ID` headers on requests whose hostname matches `hostnames`.
38
+ *
39
+ * Used by SDKs that run in environments with a WHATWG `fetch` (posthog-react-native,
40
+ * posthog-web) to link outgoing requests to the PostHog session — e.g. to link LLM
41
+ * traces captured by a backend to a frontend session replay.
42
+ *
43
+ * The wrapped fetch is tagged with a non-enumerable marker so that calling this
44
+ * again (on HMR, tests, or a second PostHog instance) unwraps the previous patch
45
+ * before rewrapping — preventing patches from stacking. Returns a function that
46
+ * restores the original fetch when called.
47
+ */
48
+ export const patchFetchForTracingHeaders = (client: TracingHeadersClient, hostnames: string[]): (() => void) => {
49
+ const globalAny = globalThis as unknown as { fetch?: PatchedFetch }
50
+ const currentFetch = globalAny.fetch
51
+ if (!isFunction(currentFetch)) {
52
+ return () => {}
53
+ }
54
+
55
+ // If we already patched fetch ourselves, unwrap so the latest client's hostname list
56
+ // and session/distinct ids take effect without stacking patches.
57
+ //
58
+ // Limitation: we only unwrap our own immediate predecessor. If another library wraps fetch
59
+ // between two patch calls, their wrapper has no PATCH_MARKER, so we treat it as the original —
60
+ // meaning the earlier patch stays live underneath and headers could be written twice.
61
+ // This is considered out of scope; we rely on PostHog being initialised once per app.
62
+ const originalFetch: FetchFn = currentFetch[PATCH_MARKER]?.original ?? currentFetch
63
+
64
+ const wrappedFetch: PatchedFetch = async function (input, init) {
65
+ try {
66
+ const urlString =
67
+ typeof input === 'string'
68
+ ? input
69
+ : input instanceof URL
70
+ ? input.toString()
71
+ : input instanceof Request
72
+ ? input.url
73
+ : undefined
74
+ if (urlString && shouldAddHeaders(urlString, hostnames)) {
75
+ const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : undefined))
76
+ const distinctId = client.getDistinctId()
77
+ const sessionId = client.getSessionId()
78
+ if (distinctId) {
79
+ headers.set(DISTINCT_ID_HEADER, distinctId)
80
+ }
81
+ if (sessionId) {
82
+ headers.set(SESSION_ID_HEADER, sessionId)
83
+ }
84
+ const initWithHeaders = { ...(init ?? {}), headers }
85
+ return originalFetch.call(globalAny, input, initWithHeaders)
86
+ }
87
+ } catch {
88
+ // If anything goes wrong, fall through to the original fetch without tracing headers.
89
+ }
90
+ return originalFetch.call(globalAny, input, init)
91
+ }
92
+
93
+ Object.defineProperty(wrappedFetch, PATCH_MARKER, {
94
+ value: { original: originalFetch },
95
+ enumerable: false,
96
+ })
97
+
98
+ globalAny.fetch = wrappedFetch
99
+
100
+ return () => {
101
+ if (globalAny.fetch === wrappedFetch) {
102
+ globalAny.fetch = originalFetch
103
+ }
104
+ }
105
+ }
package/src/types.ts CHANGED
@@ -191,6 +191,19 @@ export type PostHogCoreOptions = {
191
191
  * If a function returns null, the event will be dropped.
192
192
  */
193
193
  before_send?: BeforeSendFn | BeforeSendFn[]
194
+
195
+ /**
196
+ * A list of hostnames for which to inject PostHog tracing headers
197
+ * (X-POSTHOG-DISTINCT-ID, X-POSTHOG-SESSION-ID) on outgoing `fetch` requests.
198
+ *
199
+ * Use this to link requests made from your app to session replays and LLM traces
200
+ * in PostHog. When set, the global `fetch` is patched on initialization and the
201
+ * headers are added to requests whose hostname matches one of the entries.
202
+ *
203
+ * Requires the SDK to wire up `patchFetchForTracingHeaders` against this option
204
+ * (currently supported in posthog-react-native).
205
+ */
206
+ addTracingHeaders?: string[]
194
207
  }
195
208
 
196
209
  export enum PostHogPersistedProperty {