posthog-node 5.14.0 → 5.15.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/client.d.ts +44 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +23 -3
- package/dist/client.mjs +24 -4
- package/dist/entrypoints/index.edge.d.ts +1 -0
- package/dist/entrypoints/index.edge.d.ts.map +1 -1
- package/dist/entrypoints/index.edge.js +1 -0
- package/dist/entrypoints/index.edge.mjs +1 -0
- package/dist/entrypoints/index.node.d.ts +2 -0
- package/dist/entrypoints/index.node.d.ts.map +1 -1
- package/dist/entrypoints/index.node.js +7 -0
- package/dist/entrypoints/index.node.mjs +4 -0
- package/dist/extensions/context/context.d.ts +8 -0
- package/dist/extensions/context/context.d.ts.map +1 -0
- package/dist/extensions/context/context.js +60 -0
- package/dist/extensions/context/context.mjs +26 -0
- package/dist/extensions/context/types.d.ts +18 -0
- package/dist/extensions/context/types.d.ts.map +1 -0
- package/dist/extensions/context/types.js +18 -0
- package/dist/extensions/context/types.mjs +0 -0
- package/dist/extensions/error-tracking/autocapture.js +2 -2
- package/dist/extensions/error-tracking/autocapture.mjs +2 -2
- package/dist/extensions/express.d.ts +3 -3
- package/dist/extensions/express.d.ts.map +1 -1
- package/dist/extensions/express.js +21 -7
- package/dist/extensions/express.mjs +21 -7
- package/dist/extensions/feature-flags/feature-flags.d.ts +0 -1
- package/dist/extensions/feature-flags/feature-flags.d.ts.map +1 -1
- package/dist/extensions/feature-flags/feature-flags.js +6 -13
- package/dist/extensions/feature-flags/feature-flags.mjs +6 -13
- package/dist/types.d.ts +23 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +4 -3
- package/src/client.ts +86 -6
- package/src/entrypoints/index.edge.ts +4 -0
- package/src/entrypoints/index.node.ts +5 -0
- package/src/extensions/context/context.ts +33 -0
- package/src/extensions/context/types.ts +19 -0
- package/src/extensions/error-tracking/autocapture.ts +2 -2
- package/src/extensions/express.ts +28 -12
- package/src/extensions/feature-flags/feature-flags.ts +10 -15
- package/src/types.ts +21 -4
- package/src/version.ts +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ import { EventMessage, GroupIdentifyMessage, IdentifyMessage, IPostHog, PostHogO
|
|
|
3
3
|
import { FeatureFlagValue } from '@posthog/core';
|
|
4
4
|
import ErrorTracking from './extensions/error-tracking';
|
|
5
5
|
import { PostHogEventProperties } from '@posthog/core';
|
|
6
|
+
import { ContextData, ContextOptions, IPostHogContext } from './extensions/context/types';
|
|
6
7
|
export declare abstract class PostHogBackendClient extends PostHogCoreStateless implements IPostHog {
|
|
7
8
|
private _memoryStorage;
|
|
8
9
|
private featureFlagsPoller?;
|
|
9
10
|
protected errorTracking: ErrorTracking;
|
|
10
11
|
private maxCacheSize;
|
|
11
12
|
readonly options: PostHogOptions;
|
|
13
|
+
protected readonly context?: IPostHogContext;
|
|
12
14
|
distinctIdHasSentFlagCalls: Record<string, string[]>;
|
|
13
15
|
/**
|
|
14
16
|
* Initialize a new PostHog client instance.
|
|
@@ -683,6 +685,48 @@ export declare abstract class PostHogBackendClient extends PostHogCoreStateless
|
|
|
683
685
|
* @returns Promise that resolves when flags are reloaded
|
|
684
686
|
*/
|
|
685
687
|
reloadFeatureFlags(): Promise<void>;
|
|
688
|
+
protected abstract initializeContext(): IPostHogContext | undefined;
|
|
689
|
+
/**
|
|
690
|
+
* Run a function with specific context that will be applied to all events captured within that context.
|
|
691
|
+
* It propagates the context to all subsequent calls down the call stack.
|
|
692
|
+
* Context properties like tags and sessionId will be automatically attached to all events.
|
|
693
|
+
*
|
|
694
|
+
* @example
|
|
695
|
+
* ```ts
|
|
696
|
+
* posthog.withContext(
|
|
697
|
+
* { distinctId: 'user_123' },
|
|
698
|
+
* () => {
|
|
699
|
+
* posthog.capture({ event: 'button clicked' })
|
|
700
|
+
* },
|
|
701
|
+
* { fresh: false }
|
|
702
|
+
* )
|
|
703
|
+
* ```
|
|
704
|
+
*
|
|
705
|
+
* {@label Context}
|
|
706
|
+
*
|
|
707
|
+
* @param data - Context data to apply (sessionId, distinctId, properties, enableExceptionAutocapture)
|
|
708
|
+
* @param fn - Function to run with the context
|
|
709
|
+
* @param options - Context options (fresh)
|
|
710
|
+
* @returns The return value of the function
|
|
711
|
+
*/
|
|
712
|
+
withContext<T>(data: Partial<ContextData>, fn: () => T, options?: ContextOptions): T;
|
|
713
|
+
/**
|
|
714
|
+
* Get the current context data.
|
|
715
|
+
*
|
|
716
|
+
* @example
|
|
717
|
+
* ```ts
|
|
718
|
+
* // Get current context within a withContext block
|
|
719
|
+
* posthog.withContext({ distinctId: 'user_123' }, () => {
|
|
720
|
+
* const context = posthog.getContext()
|
|
721
|
+
* console.log(context?.distinctId) // 'user_123'
|
|
722
|
+
* })
|
|
723
|
+
* ```
|
|
724
|
+
*
|
|
725
|
+
* {@label Context}
|
|
726
|
+
*
|
|
727
|
+
* @returns The current context data, or undefined if no context is set
|
|
728
|
+
*/
|
|
729
|
+
getContext(): ContextData | undefined;
|
|
686
730
|
/**
|
|
687
731
|
* Shutdown the PostHog client gracefully.
|
|
688
732
|
*
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,oBAAoB,EAEpB,mBAAmB,EACnB,oBAAoB,EACpB,+BAA+B,EAC/B,wBAAwB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -48,6 +48,7 @@ class PostHogBackendClient extends core_namespaceObject.PostHogCoreStateless {
|
|
|
48
48
|
constructor(apiKey, options = {}){
|
|
49
49
|
super(apiKey, options), this._memoryStorage = new external_storage_memory_js_namespaceObject.PostHogMemoryStorage();
|
|
50
50
|
this.options = options;
|
|
51
|
+
this.context = this.initializeContext();
|
|
51
52
|
this.options.featureFlagsPollingInterval = 'number' == typeof options.featureFlagsPollingInterval ? Math.max(options.featureFlagsPollingInterval, MINIMUM_POLLING_INTERVAL) : THIRTY_SECONDS;
|
|
52
53
|
if (options.personalApiKey) {
|
|
53
54
|
if (options.personalApiKey.includes('phc_')) throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');
|
|
@@ -299,6 +300,13 @@ class PostHogBackendClient extends core_namespaceObject.PostHogCoreStateless {
|
|
|
299
300
|
async reloadFeatureFlags() {
|
|
300
301
|
await this.featureFlagsPoller?.loadFeatureFlags(true);
|
|
301
302
|
}
|
|
303
|
+
withContext(data, fn, options) {
|
|
304
|
+
if (!this.context) return fn();
|
|
305
|
+
return this.context.run(data, fn, options);
|
|
306
|
+
}
|
|
307
|
+
getContext() {
|
|
308
|
+
return this.context?.get();
|
|
309
|
+
}
|
|
302
310
|
async _shutdown(shutdownTimeoutMs) {
|
|
303
311
|
this.featureFlagsPoller?.stopPoller(shutdownTimeoutMs);
|
|
304
312
|
this.errorTracking.shutdown();
|
|
@@ -410,10 +418,21 @@ class PostHogBackendClient extends core_namespaceObject.PostHogCoreStateless {
|
|
|
410
418
|
}
|
|
411
419
|
async prepareEventMessage(props) {
|
|
412
420
|
const { distinctId, event, properties, groups, sendFeatureFlags, timestamp, disableGeoip, uuid } = props;
|
|
421
|
+
const contextData = this.context?.get();
|
|
422
|
+
let mergedDistinctId = distinctId || contextData?.distinctId;
|
|
423
|
+
const mergedProperties = {
|
|
424
|
+
...contextData?.properties || {},
|
|
425
|
+
...properties || {}
|
|
426
|
+
};
|
|
427
|
+
if (!mergedDistinctId) {
|
|
428
|
+
mergedDistinctId = (0, core_namespaceObject.uuidv7)();
|
|
429
|
+
mergedProperties.$process_person_profile = false;
|
|
430
|
+
}
|
|
431
|
+
if (contextData?.sessionId && !mergedProperties.$session_id) mergedProperties.$session_id = contextData.sessionId;
|
|
413
432
|
const eventMessage = this._runBeforeSend({
|
|
414
|
-
distinctId,
|
|
433
|
+
distinctId: mergedDistinctId,
|
|
415
434
|
event,
|
|
416
|
-
properties,
|
|
435
|
+
properties: mergedProperties,
|
|
417
436
|
groups,
|
|
418
437
|
sendFeatureFlags,
|
|
419
438
|
timestamp,
|
|
@@ -424,8 +443,9 @@ class PostHogBackendClient extends core_namespaceObject.PostHogCoreStateless {
|
|
|
424
443
|
const eventProperties = await Promise.resolve().then(async ()=>{
|
|
425
444
|
if (sendFeatureFlags) {
|
|
426
445
|
const sendFeatureFlagsOptions = 'object' == typeof sendFeatureFlags ? sendFeatureFlags : void 0;
|
|
427
|
-
return await this.getFeatureFlagsForEvent(distinctId, groups, disableGeoip, sendFeatureFlagsOptions);
|
|
446
|
+
return await this.getFeatureFlagsForEvent(eventMessage.distinctId, groups, disableGeoip, sendFeatureFlagsOptions);
|
|
428
447
|
}
|
|
448
|
+
eventMessage.event;
|
|
429
449
|
return {};
|
|
430
450
|
}).then((flags)=>{
|
|
431
451
|
const additionalProperties = {};
|
package/dist/client.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { version } from "./version.mjs";
|
|
2
|
-
import { PostHogCoreStateless, getFeatureFlagValue, isBlockedUA, isPlainObject, safeSetTimeout } from "@posthog/core";
|
|
2
|
+
import { PostHogCoreStateless, getFeatureFlagValue, isBlockedUA, isPlainObject, safeSetTimeout, uuidv7 } from "@posthog/core";
|
|
3
3
|
import { FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation } from "./extensions/feature-flags/feature-flags.mjs";
|
|
4
4
|
import error_tracking from "./extensions/error-tracking/index.mjs";
|
|
5
5
|
import { PostHogMemoryStorage } from "./storage-memory.mjs";
|
|
@@ -10,6 +10,7 @@ class PostHogBackendClient extends PostHogCoreStateless {
|
|
|
10
10
|
constructor(apiKey, options = {}){
|
|
11
11
|
super(apiKey, options), this._memoryStorage = new PostHogMemoryStorage();
|
|
12
12
|
this.options = options;
|
|
13
|
+
this.context = this.initializeContext();
|
|
13
14
|
this.options.featureFlagsPollingInterval = 'number' == typeof options.featureFlagsPollingInterval ? Math.max(options.featureFlagsPollingInterval, MINIMUM_POLLING_INTERVAL) : THIRTY_SECONDS;
|
|
14
15
|
if (options.personalApiKey) {
|
|
15
16
|
if (options.personalApiKey.includes('phc_')) throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');
|
|
@@ -261,6 +262,13 @@ class PostHogBackendClient extends PostHogCoreStateless {
|
|
|
261
262
|
async reloadFeatureFlags() {
|
|
262
263
|
await this.featureFlagsPoller?.loadFeatureFlags(true);
|
|
263
264
|
}
|
|
265
|
+
withContext(data, fn, options) {
|
|
266
|
+
if (!this.context) return fn();
|
|
267
|
+
return this.context.run(data, fn, options);
|
|
268
|
+
}
|
|
269
|
+
getContext() {
|
|
270
|
+
return this.context?.get();
|
|
271
|
+
}
|
|
264
272
|
async _shutdown(shutdownTimeoutMs) {
|
|
265
273
|
this.featureFlagsPoller?.stopPoller(shutdownTimeoutMs);
|
|
266
274
|
this.errorTracking.shutdown();
|
|
@@ -372,10 +380,21 @@ class PostHogBackendClient extends PostHogCoreStateless {
|
|
|
372
380
|
}
|
|
373
381
|
async prepareEventMessage(props) {
|
|
374
382
|
const { distinctId, event, properties, groups, sendFeatureFlags, timestamp, disableGeoip, uuid } = props;
|
|
383
|
+
const contextData = this.context?.get();
|
|
384
|
+
let mergedDistinctId = distinctId || contextData?.distinctId;
|
|
385
|
+
const mergedProperties = {
|
|
386
|
+
...contextData?.properties || {},
|
|
387
|
+
...properties || {}
|
|
388
|
+
};
|
|
389
|
+
if (!mergedDistinctId) {
|
|
390
|
+
mergedDistinctId = uuidv7();
|
|
391
|
+
mergedProperties.$process_person_profile = false;
|
|
392
|
+
}
|
|
393
|
+
if (contextData?.sessionId && !mergedProperties.$session_id) mergedProperties.$session_id = contextData.sessionId;
|
|
375
394
|
const eventMessage = this._runBeforeSend({
|
|
376
|
-
distinctId,
|
|
395
|
+
distinctId: mergedDistinctId,
|
|
377
396
|
event,
|
|
378
|
-
properties,
|
|
397
|
+
properties: mergedProperties,
|
|
379
398
|
groups,
|
|
380
399
|
sendFeatureFlags,
|
|
381
400
|
timestamp,
|
|
@@ -386,8 +405,9 @@ class PostHogBackendClient extends PostHogCoreStateless {
|
|
|
386
405
|
const eventProperties = await Promise.resolve().then(async ()=>{
|
|
387
406
|
if (sendFeatureFlags) {
|
|
388
407
|
const sendFeatureFlagsOptions = 'object' == typeof sendFeatureFlags ? sendFeatureFlags : void 0;
|
|
389
|
-
return await this.getFeatureFlagsForEvent(distinctId, groups, disableGeoip, sendFeatureFlagsOptions);
|
|
408
|
+
return await this.getFeatureFlagsForEvent(eventMessage.distinctId, groups, disableGeoip, sendFeatureFlagsOptions);
|
|
390
409
|
}
|
|
410
|
+
eventMessage.event;
|
|
391
411
|
return {};
|
|
392
412
|
}).then((flags)=>{
|
|
393
413
|
const additionalProperties = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.edge.d.ts","sourceRoot":"","sources":["../../src/entrypoints/index.edge.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAchD,qBAAa,OAAQ,SAAQ,oBAAoB;IAC/C,YAAY,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"index.edge.d.ts","sourceRoot":"","sources":["../../src/entrypoints/index.edge.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAchD,qBAAa,OAAQ,SAAQ,oBAAoB;IAC/C,YAAY,IAAI,MAAM;IAItB,SAAS,CAAC,iBAAiB,IAAI,SAAS;CAGzC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from '../exports';
|
|
2
2
|
import { PostHogBackendClient } from '../client';
|
|
3
|
+
import { PostHogContext } from '../extensions/context/context';
|
|
3
4
|
export declare class PostHog extends PostHogBackendClient {
|
|
4
5
|
getLibraryId(): string;
|
|
6
|
+
protected initializeContext(): PostHogContext;
|
|
5
7
|
}
|
|
6
8
|
//# sourceMappingURL=index.node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../../src/entrypoints/index.node.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAM1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../../src/entrypoints/index.node.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAM1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAc9D,qBAAa,OAAQ,SAAQ,oBAAoB;IAC/C,YAAY,IAAI,MAAM;IAItB,SAAS,CAAC,iBAAiB,IAAI,cAAc;CAG9C"}
|
|
@@ -6,6 +6,9 @@ var __webpack_modules__ = {
|
|
|
6
6
|
"../exports": function(module) {
|
|
7
7
|
module.exports = require("../exports.js");
|
|
8
8
|
},
|
|
9
|
+
"../extensions/context/context": function(module) {
|
|
10
|
+
module.exports = require("../extensions/context/context.js");
|
|
11
|
+
},
|
|
9
12
|
"../extensions/error-tracking": function(module) {
|
|
10
13
|
module.exports = require("../extensions/error-tracking/index.js");
|
|
11
14
|
},
|
|
@@ -80,6 +83,7 @@ var __webpack_exports__ = {};
|
|
|
80
83
|
var _extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/ __webpack_require__.n(_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3__);
|
|
81
84
|
var _client__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../client");
|
|
82
85
|
var _posthog_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("@posthog/core");
|
|
86
|
+
var _extensions_context_context__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../extensions/context/context");
|
|
83
87
|
_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3___default().errorPropertiesBuilder = new _posthog_core__WEBPACK_IMPORTED_MODULE_5__.ErrorTracking.ErrorPropertiesBuilder([
|
|
84
88
|
new _posthog_core__WEBPACK_IMPORTED_MODULE_5__.ErrorTracking.EventCoercer(),
|
|
85
89
|
new _posthog_core__WEBPACK_IMPORTED_MODULE_5__.ErrorTracking.ErrorCoercer(),
|
|
@@ -94,6 +98,9 @@ var __webpack_exports__ = {};
|
|
|
94
98
|
getLibraryId() {
|
|
95
99
|
return 'posthog-node';
|
|
96
100
|
}
|
|
101
|
+
initializeContext() {
|
|
102
|
+
return new _extensions_context_context__WEBPACK_IMPORTED_MODULE_6__.PostHogContext();
|
|
103
|
+
}
|
|
97
104
|
}
|
|
98
105
|
})();
|
|
99
106
|
exports.PostHog = __webpack_exports__.PostHog;
|
|
@@ -3,6 +3,7 @@ import { addSourceContext } from "../extensions/error-tracking/modifiers/context
|
|
|
3
3
|
import error_tracking from "../extensions/error-tracking/index.mjs";
|
|
4
4
|
import { PostHogBackendClient } from "../client.mjs";
|
|
5
5
|
import { ErrorTracking } from "@posthog/core";
|
|
6
|
+
import { PostHogContext } from "../extensions/context/context.mjs";
|
|
6
7
|
export * from "../exports.mjs";
|
|
7
8
|
error_tracking.errorPropertiesBuilder = new ErrorTracking.ErrorPropertiesBuilder([
|
|
8
9
|
new ErrorTracking.EventCoercer(),
|
|
@@ -18,5 +19,8 @@ class PostHog extends PostHogBackendClient {
|
|
|
18
19
|
getLibraryId() {
|
|
19
20
|
return 'posthog-node';
|
|
20
21
|
}
|
|
22
|
+
initializeContext() {
|
|
23
|
+
return new PostHogContext();
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
export { PostHog };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ContextData, ContextOptions, IPostHogContext } from './types';
|
|
2
|
+
export declare class PostHogContext implements IPostHogContext {
|
|
3
|
+
private storage;
|
|
4
|
+
constructor();
|
|
5
|
+
get(): ContextData | undefined;
|
|
6
|
+
run<T>(context: ContextData, fn: () => T, options?: ContextOptions): T;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/extensions/context/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEtE,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,OAAO,CAAgC;;IAM/C,GAAG,IAAI,WAAW,GAAG,SAAS;IAI9B,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC;CAkBvE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
PostHogContext: ()=>PostHogContext
|
|
28
|
+
});
|
|
29
|
+
const external_node_async_hooks_namespaceObject = require("node:async_hooks");
|
|
30
|
+
class PostHogContext {
|
|
31
|
+
constructor(){
|
|
32
|
+
this.storage = new external_node_async_hooks_namespaceObject.AsyncLocalStorage();
|
|
33
|
+
}
|
|
34
|
+
get() {
|
|
35
|
+
return this.storage.getStore();
|
|
36
|
+
}
|
|
37
|
+
run(context, fn, options) {
|
|
38
|
+
const fresh = options?.fresh !== false;
|
|
39
|
+
if (fresh) return this.storage.run(context, fn);
|
|
40
|
+
{
|
|
41
|
+
const currentContext = this.get() || {};
|
|
42
|
+
const mergedContext = {
|
|
43
|
+
distinctId: context.distinctId ?? currentContext.distinctId,
|
|
44
|
+
sessionId: context.sessionId ?? currentContext.sessionId,
|
|
45
|
+
properties: {
|
|
46
|
+
...currentContext.properties || {},
|
|
47
|
+
...context.properties || {}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return this.storage.run(mergedContext, fn);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.PostHogContext = __webpack_exports__.PostHogContext;
|
|
55
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
56
|
+
"PostHogContext"
|
|
57
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
58
|
+
Object.defineProperty(exports, '__esModule', {
|
|
59
|
+
value: true
|
|
60
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
class PostHogContext {
|
|
3
|
+
constructor(){
|
|
4
|
+
this.storage = new AsyncLocalStorage();
|
|
5
|
+
}
|
|
6
|
+
get() {
|
|
7
|
+
return this.storage.getStore();
|
|
8
|
+
}
|
|
9
|
+
run(context, fn, options) {
|
|
10
|
+
const fresh = options?.fresh !== false;
|
|
11
|
+
if (fresh) return this.storage.run(context, fn);
|
|
12
|
+
{
|
|
13
|
+
const currentContext = this.get() || {};
|
|
14
|
+
const mergedContext = {
|
|
15
|
+
distinctId: context.distinctId ?? currentContext.distinctId,
|
|
16
|
+
sessionId: context.sessionId ?? currentContext.sessionId,
|
|
17
|
+
properties: {
|
|
18
|
+
...currentContext.properties || {},
|
|
19
|
+
...context.properties || {}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
return this.storage.run(mergedContext, fn);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export { PostHogContext };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ContextData {
|
|
2
|
+
distinctId?: string;
|
|
3
|
+
sessionId?: string;
|
|
4
|
+
properties?: Record<string, any>;
|
|
5
|
+
}
|
|
6
|
+
export interface ContextOptions {
|
|
7
|
+
/**
|
|
8
|
+
* If true, replaces the current context entirely.
|
|
9
|
+
* If false, merges with the existing context (new values override existing ones).
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
fresh?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface IPostHogContext {
|
|
15
|
+
get(): ContextData | undefined;
|
|
16
|
+
run<T>(context: ContextData, fn: () => T, options?: ContextOptions): T;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/extensions/context/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,IAAI,WAAW,GAAG,SAAS,CAAA;IAC9B,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC,CAAA;CACvE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.r = (exports1)=>{
|
|
5
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
6
|
+
value: 'Module'
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
})();
|
|
13
|
+
var __webpack_exports__ = {};
|
|
14
|
+
__webpack_require__.r(__webpack_exports__);
|
|
15
|
+
for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
16
|
+
Object.defineProperty(exports, '__esModule', {
|
|
17
|
+
value: true
|
|
18
|
+
});
|
|
File without changes
|
|
@@ -47,10 +47,10 @@ function makeUncaughtExceptionHandler(captureFn, onFatalFn) {
|
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
function addUncaughtExceptionListener(captureFn, onFatalFn) {
|
|
50
|
-
|
|
50
|
+
globalThis.process?.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));
|
|
51
51
|
}
|
|
52
52
|
function addUnhandledRejectionListener(captureFn) {
|
|
53
|
-
|
|
53
|
+
globalThis.process?.on('unhandledRejection', (reason)=>captureFn(reason, {
|
|
54
54
|
mechanism: {
|
|
55
55
|
type: 'onunhandledrejection',
|
|
56
56
|
handled: false
|
|
@@ -18,10 +18,10 @@ function makeUncaughtExceptionHandler(captureFn, onFatalFn) {
|
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
function addUncaughtExceptionListener(captureFn, onFatalFn) {
|
|
21
|
-
|
|
21
|
+
globalThis.process?.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));
|
|
22
22
|
}
|
|
23
23
|
function addUnhandledRejectionListener(captureFn) {
|
|
24
|
-
|
|
24
|
+
globalThis.process?.on('unhandledRejection', (reason)=>captureFn(reason, {
|
|
25
25
|
mechanism: {
|
|
26
26
|
type: 'onunhandledrejection',
|
|
27
27
|
handled: false
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type * as http from 'node:http';
|
|
2
1
|
import { PostHogBackendClient } from '../client';
|
|
3
|
-
type
|
|
4
|
-
type
|
|
2
|
+
import type { Request, Response } from 'express';
|
|
3
|
+
type ExpressMiddleware = (req: Request, res: Response, next: () => void) => void;
|
|
4
|
+
type ExpressErrorMiddleware = (error: MiddlewareError, req: Request, res: Response, next: (error: MiddlewareError) => void) => void;
|
|
5
5
|
interface MiddlewareError extends Error {
|
|
6
6
|
status?: number | string;
|
|
7
7
|
statusCode?: number | string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/extensions/express.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/extensions/express.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEhD,KAAK,iBAAiB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAEhF,KAAK,sBAAsB,GAAG,CAC5B,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,KACnC,IAAI,CAAA;AAET,UAAU,eAAgB,SAAQ,KAAK;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7B,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAC7B,CAAA;CACF;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,EAAE;IACH,GAAG,EAAE,CAAC,UAAU,EAAE,iBAAiB,GAAG,sBAAsB,KAAK,OAAO,CAAA;CACzE,GACA,IAAI,CAEN"}
|
|
@@ -35,22 +35,36 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
35
35
|
__webpack_require__.d(__webpack_exports__, {
|
|
36
36
|
setupExpressErrorHandler: ()=>setupExpressErrorHandler
|
|
37
37
|
});
|
|
38
|
-
const core_namespaceObject = require("@posthog/core");
|
|
39
38
|
const index_js_namespaceObject = require("./error-tracking/index.js");
|
|
40
39
|
var index_js_default = /*#__PURE__*/ __webpack_require__.n(index_js_namespaceObject);
|
|
41
40
|
function setupExpressErrorHandler(_posthog, app) {
|
|
42
|
-
app.use((
|
|
41
|
+
app.use(posthogErrorHandler(_posthog));
|
|
42
|
+
}
|
|
43
|
+
function posthogErrorHandler(posthog) {
|
|
44
|
+
return (error, req, res, next)=>{
|
|
45
|
+
const sessionId = req.headers['x-posthog-session-id'];
|
|
46
|
+
const distinctId = req.headers['x-posthog-distinct-id'];
|
|
47
|
+
const syntheticException = new Error('Synthetic exception');
|
|
43
48
|
const hint = {
|
|
44
49
|
mechanism: {
|
|
45
50
|
type: 'middleware',
|
|
46
51
|
handled: false
|
|
47
|
-
}
|
|
52
|
+
},
|
|
53
|
+
syntheticException
|
|
48
54
|
};
|
|
49
|
-
index_js_default().buildEventMessage(error, hint,
|
|
50
|
-
$
|
|
51
|
-
|
|
55
|
+
posthog.addPendingPromise(index_js_default().buildEventMessage(error, hint, distinctId, {
|
|
56
|
+
$session_id: sessionId,
|
|
57
|
+
$current_url: req.url,
|
|
58
|
+
$request_method: req.method,
|
|
59
|
+
$request_path: req.path,
|
|
60
|
+
$user_agent: req.headers['user-agent'],
|
|
61
|
+
$response_status_code: res.statusCode,
|
|
62
|
+
$ip: req.headers['x-forwarded-for'] || req?.socket?.remoteAddress
|
|
63
|
+
}).then((msg)=>{
|
|
64
|
+
posthog.capture(msg);
|
|
65
|
+
}));
|
|
52
66
|
next(error);
|
|
53
|
-
}
|
|
67
|
+
};
|
|
54
68
|
}
|
|
55
69
|
exports.setupExpressErrorHandler = __webpack_exports__.setupExpressErrorHandler;
|
|
56
70
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
@@ -1,17 +1,31 @@
|
|
|
1
|
-
import { uuidv7 } from "@posthog/core";
|
|
2
1
|
import error_tracking from "./error-tracking/index.mjs";
|
|
3
2
|
function setupExpressErrorHandler(_posthog, app) {
|
|
4
|
-
app.use((
|
|
3
|
+
app.use(posthogErrorHandler(_posthog));
|
|
4
|
+
}
|
|
5
|
+
function posthogErrorHandler(posthog) {
|
|
6
|
+
return (error, req, res, next)=>{
|
|
7
|
+
const sessionId = req.headers['x-posthog-session-id'];
|
|
8
|
+
const distinctId = req.headers['x-posthog-distinct-id'];
|
|
9
|
+
const syntheticException = new Error('Synthetic exception');
|
|
5
10
|
const hint = {
|
|
6
11
|
mechanism: {
|
|
7
12
|
type: 'middleware',
|
|
8
13
|
handled: false
|
|
9
|
-
}
|
|
14
|
+
},
|
|
15
|
+
syntheticException
|
|
10
16
|
};
|
|
11
|
-
error_tracking.buildEventMessage(error, hint,
|
|
12
|
-
$
|
|
13
|
-
|
|
17
|
+
posthog.addPendingPromise(error_tracking.buildEventMessage(error, hint, distinctId, {
|
|
18
|
+
$session_id: sessionId,
|
|
19
|
+
$current_url: req.url,
|
|
20
|
+
$request_method: req.method,
|
|
21
|
+
$request_path: req.path,
|
|
22
|
+
$user_agent: req.headers['user-agent'],
|
|
23
|
+
$response_status_code: res.statusCode,
|
|
24
|
+
$ip: req.headers['x-forwarded-for'] || req?.socket?.remoteAddress
|
|
25
|
+
}).then((msg)=>{
|
|
26
|
+
posthog.capture(msg);
|
|
27
|
+
}));
|
|
14
28
|
next(error);
|
|
15
|
-
}
|
|
29
|
+
};
|
|
16
30
|
}
|
|
17
31
|
export { setupExpressErrorHandler };
|
|
@@ -46,7 +46,6 @@ declare class FeatureFlagsPoller {
|
|
|
46
46
|
backOffCount: number;
|
|
47
47
|
onLoad?: (count: number) => void;
|
|
48
48
|
private cacheProvider?;
|
|
49
|
-
private hasAttemptedCacheLoad;
|
|
50
49
|
private loadingPromise?;
|
|
51
50
|
constructor({ pollingInterval, personalApiKey, projectApiKey, timeout, host, customHeaders, ...options }: FeatureFlagsPollerOptions);
|
|
52
51
|
debug(enabled?: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmC,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACtH,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAG1G,OAAO,EAAE,2BAA2B,EAA2B,MAAM,SAAS,CAAA;AAQ9E,cAAM,WAAY,SAAQ,KAAK;gBACjB,OAAO,EAAE,MAAM;CAO5B;AAED,cAAM,sBAAuB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAS5B;AAED,cAAM,wBAAyB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAS5B;AAED,KAAK,yBAAyB,GAAG;IAC/B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACpF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACzC,aAAa,CAAC,EAAE,2BAA2B,CAAA;CAC5C,CAAA;AAED,cAAM,kBAAkB;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACtC,sBAAsB,EAAE,OAAO,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IACvB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACnF,SAAS,EAAE,OAAO,CAAQ;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACzC,6BAA6B,EAAE,OAAO,CAAQ;IAC9C,YAAY,EAAE,MAAM,CAAI;IACxB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,aAAa,CAAC,CAA6B;IACnD,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/feature-flags.ts"],"names":[],"mappings":"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"}
|