@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.
- package/dist/error-tracking/exception-steps.d.ts +38 -0
- package/dist/error-tracking/exception-steps.d.ts.map +1 -0
- package/dist/error-tracking/exception-steps.js +187 -0
- package/dist/error-tracking/exception-steps.mjs +138 -0
- package/dist/error-tracking/index.d.ts +1 -0
- package/dist/error-tracking/index.d.ts.map +1 -1
- package/dist/error-tracking/index.js +9 -0
- package/dist/error-tracking/index.mjs +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -7
- package/dist/index.mjs +1 -0
- package/dist/tracing-headers.d.ts +23 -0
- package/dist/tracing-headers.d.ts.map +1 -0
- package/dist/tracing-headers.js +85 -0
- package/dist/tracing-headers.mjs +51 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/error-tracking/exception-steps.spec.ts +90 -0
- package/src/error-tracking/exception-steps.ts +225 -0
- package/src/error-tracking/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/tracing-headers.ts +105 -0
- package/src/types.ts +13 -0
|
@@ -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 };
|
|
@@ -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', {
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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: ()=>
|
|
78
|
-
getRequirementsHint: ()=>
|
|
79
|
-
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
|
|
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
|
|
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
|
|
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
|
|
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",
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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
|
@@ -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
|
+
}
|
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 {
|