@posthog/core 1.1.0 → 1.2.1

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.
Files changed (128) hide show
  1. package/dist/error-tracking/chunk-ids.js +1 -1
  2. package/dist/error-tracking/chunk-ids.mjs +1 -1
  3. package/dist/error-tracking/coercers/error-event-coercer.js +4 -5
  4. package/dist/error-tracking/coercers/error-event-coercer.mjs +4 -5
  5. package/dist/error-tracking/coercers/event-coercer.js +1 -2
  6. package/dist/error-tracking/coercers/event-coercer.mjs +1 -2
  7. package/dist/error-tracking/coercers/object-coercer.js +1 -2
  8. package/dist/error-tracking/coercers/object-coercer.mjs +1 -2
  9. package/dist/error-tracking/coercers/primitive-coercer.js +1 -2
  10. package/dist/error-tracking/coercers/primitive-coercer.mjs +1 -2
  11. package/dist/error-tracking/coercers/promise-rejection-event.js +4 -5
  12. package/dist/error-tracking/coercers/promise-rejection-event.mjs +4 -5
  13. package/dist/error-tracking/coercers/string-coercer.js +3 -4
  14. package/dist/error-tracking/coercers/string-coercer.mjs +3 -4
  15. package/dist/error-tracking/coercers/utils.js +2 -4
  16. package/dist/error-tracking/coercers/utils.mjs +2 -4
  17. package/dist/error-tracking/error-properties-builder.d.ts +6 -6
  18. package/dist/error-tracking/error-properties-builder.d.ts.map +1 -1
  19. package/dist/error-tracking/error-properties-builder.js +17 -27
  20. package/dist/error-tracking/error-properties-builder.mjs +16 -26
  21. package/dist/error-tracking/parsers/index.js +2 -4
  22. package/dist/error-tracking/parsers/index.mjs +2 -4
  23. package/dist/error-tracking/parsers/node.js +3 -5
  24. package/dist/error-tracking/parsers/node.mjs +3 -5
  25. package/dist/error-tracking/utils.js +4 -4
  26. package/dist/error-tracking/utils.mjs +4 -4
  27. package/dist/eventemitter.js +4 -4
  28. package/dist/eventemitter.mjs +4 -4
  29. package/dist/featureFlagUtils.js +20 -45
  30. package/dist/featureFlagUtils.mjs +20 -45
  31. package/dist/gzip.js +1 -2
  32. package/dist/gzip.mjs +1 -2
  33. package/dist/index.d.ts +4 -366
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +54 -1225
  36. package/dist/index.mjs +5 -1190
  37. package/dist/posthog-core-stateless.d.ts +204 -0
  38. package/dist/posthog-core-stateless.d.ts.map +1 -0
  39. package/dist/posthog-core-stateless.js +675 -0
  40. package/dist/posthog-core-stateless.mjs +632 -0
  41. package/dist/posthog-core.d.ts +171 -0
  42. package/dist/posthog-core.d.ts.map +1 -0
  43. package/dist/posthog-core.js +554 -0
  44. package/dist/posthog-core.mjs +520 -0
  45. package/dist/testing/PostHogCoreTestClient.d.ts +2 -1
  46. package/dist/testing/PostHogCoreTestClient.d.ts.map +1 -1
  47. package/dist/testing/PostHogCoreTestClient.js +9 -11
  48. package/dist/testing/PostHogCoreTestClient.mjs +8 -10
  49. package/dist/testing/test-utils.js +1 -1
  50. package/dist/testing/test-utils.mjs +1 -1
  51. package/dist/utils/bucketed-rate-limiter.js +8 -12
  52. package/dist/utils/bucketed-rate-limiter.mjs +8 -12
  53. package/dist/utils/index.js +3 -3
  54. package/dist/utils/index.mjs +3 -3
  55. package/dist/utils/type-utils.js +1 -1
  56. package/dist/utils/type-utils.mjs +1 -1
  57. package/dist/vendor/uuidv7.js +12 -16
  58. package/dist/vendor/uuidv7.mjs +12 -16
  59. package/package.json +3 -2
  60. package/src/__tests__/featureFlagUtils.spec.ts +427 -0
  61. package/src/__tests__/gzip.spec.ts +69 -0
  62. package/src/__tests__/posthog.ai.spec.ts +110 -0
  63. package/src/__tests__/posthog.capture.spec.ts +91 -0
  64. package/src/__tests__/posthog.core.spec.ts +135 -0
  65. package/src/__tests__/posthog.debug.spec.ts +36 -0
  66. package/src/__tests__/posthog.enqueue.spec.ts +93 -0
  67. package/src/__tests__/posthog.featureflags.spec.ts +1106 -0
  68. package/src/__tests__/posthog.featureflags.v1.spec.ts +922 -0
  69. package/src/__tests__/posthog.flush.spec.ts +237 -0
  70. package/src/__tests__/posthog.gdpr.spec.ts +50 -0
  71. package/src/__tests__/posthog.groups.spec.ts +96 -0
  72. package/src/__tests__/posthog.identify.spec.ts +194 -0
  73. package/src/__tests__/posthog.init.spec.ts +110 -0
  74. package/src/__tests__/posthog.listeners.spec.ts +51 -0
  75. package/src/__tests__/posthog.register.spec.ts +47 -0
  76. package/src/__tests__/posthog.reset.spec.ts +76 -0
  77. package/src/__tests__/posthog.sessions.spec.ts +63 -0
  78. package/src/__tests__/posthog.setProperties.spec.ts +102 -0
  79. package/src/__tests__/posthog.shutdown.spec.ts +88 -0
  80. package/src/__tests__/utils.spec.ts +36 -0
  81. package/src/error-tracking/chunk-ids.ts +58 -0
  82. package/src/error-tracking/coercers/dom-exception-coercer.ts +38 -0
  83. package/src/error-tracking/coercers/error-coercer.ts +36 -0
  84. package/src/error-tracking/coercers/error-event-coercer.ts +24 -0
  85. package/src/error-tracking/coercers/event-coercer.ts +19 -0
  86. package/src/error-tracking/coercers/index.ts +8 -0
  87. package/src/error-tracking/coercers/object-coercer.ts +76 -0
  88. package/src/error-tracking/coercers/primitive-coercer.ts +19 -0
  89. package/src/error-tracking/coercers/promise-rejection-event.spec.ts +77 -0
  90. package/src/error-tracking/coercers/promise-rejection-event.ts +53 -0
  91. package/src/error-tracking/coercers/string-coercer.spec.ts +26 -0
  92. package/src/error-tracking/coercers/string-coercer.ts +31 -0
  93. package/src/error-tracking/coercers/utils.ts +33 -0
  94. package/src/error-tracking/error-properties-builder.coerce.spec.ts +202 -0
  95. package/src/error-tracking/error-properties-builder.parse.spec.ts +30 -0
  96. package/src/error-tracking/error-properties-builder.ts +167 -0
  97. package/src/error-tracking/index.ts +5 -0
  98. package/src/error-tracking/parsers/base.ts +29 -0
  99. package/src/error-tracking/parsers/chrome.ts +53 -0
  100. package/src/error-tracking/parsers/gecko.ts +38 -0
  101. package/src/error-tracking/parsers/index.ts +104 -0
  102. package/src/error-tracking/parsers/node.ts +111 -0
  103. package/src/error-tracking/parsers/opera.ts +18 -0
  104. package/src/error-tracking/parsers/react-native.ts +0 -0
  105. package/src/error-tracking/parsers/safari.ts +33 -0
  106. package/src/error-tracking/parsers/winjs.ts +12 -0
  107. package/src/error-tracking/types.ts +107 -0
  108. package/src/error-tracking/utils.ts +39 -0
  109. package/src/eventemitter.ts +27 -0
  110. package/src/featureFlagUtils.ts +192 -0
  111. package/src/gzip.ts +29 -0
  112. package/src/index.ts +8 -0
  113. package/src/posthog-core-stateless.ts +1226 -0
  114. package/src/posthog-core.ts +958 -0
  115. package/src/testing/PostHogCoreTestClient.ts +91 -0
  116. package/src/testing/index.ts +2 -0
  117. package/src/testing/test-utils.ts +47 -0
  118. package/src/types.ts +544 -0
  119. package/src/utils/bucketed-rate-limiter.spec.ts +33 -0
  120. package/src/utils/bucketed-rate-limiter.ts +85 -0
  121. package/src/utils/index.ts +98 -0
  122. package/src/utils/number-utils.spec.ts +89 -0
  123. package/src/utils/number-utils.ts +30 -0
  124. package/src/utils/promise-queue.spec.ts +55 -0
  125. package/src/utils/promise-queue.ts +30 -0
  126. package/src/utils/string-utils.ts +23 -0
  127. package/src/utils/type-utils.ts +134 -0
  128. package/src/vendor/uuidv7.ts +479 -0
@@ -1,4 +1,8 @@
1
1
  class SimpleEventEmitter {
2
+ constructor(){
3
+ this.events = {};
4
+ this.events = {};
5
+ }
2
6
  on(event, listener) {
3
7
  if (!this.events[event]) this.events[event] = [];
4
8
  this.events[event].push(listener);
@@ -10,9 +14,5 @@ class SimpleEventEmitter {
10
14
  for (const listener of this.events[event] || [])listener(payload);
11
15
  for (const listener of this.events['*'] || [])listener(event, payload);
12
16
  }
13
- constructor(){
14
- this.events = {};
15
- this.events = {};
16
- }
17
17
  }
18
18
  export { SimpleEventEmitter };
@@ -44,22 +44,15 @@ const normalizeFlagsResponse = (flagsResponse)=>{
44
44
  };
45
45
  }
46
46
  {
47
- var _flagsResponse_featureFlags;
48
- const featureFlags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
49
- const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map((param)=>{
50
- let [k, v] = param;
51
- return [
47
+ const featureFlags = flagsResponse.featureFlags ?? {};
48
+ const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[
52
49
  k,
53
50
  parsePayload(v)
54
- ];
55
- }));
56
- const flags = Object.fromEntries(Object.entries(featureFlags).map((param)=>{
57
- let [key, value] = param;
58
- return [
51
+ ]));
52
+ const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[
59
53
  key,
60
54
  getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])
61
- ];
62
- }));
55
+ ]));
63
56
  return {
64
57
  ...flagsResponse,
65
58
  featureFlags,
@@ -82,24 +75,17 @@ function getFlagDetailFromFlagAndPayload(key, value, payload) {
82
75
  }
83
76
  };
84
77
  }
85
- const getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(null != flags ? flags : {}).map((param)=>{
86
- let [key, detail] = param;
87
- return [
78
+ const getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[
88
79
  key,
89
80
  getFeatureFlagValue(detail)
90
- ];
91
- }).filter((param)=>{
92
- let [, value] = param;
93
- return void 0 !== value;
94
- }));
81
+ ]).filter(([, value])=>void 0 !== value));
95
82
  const getPayloadsFromFlags = (flags)=>{
96
- const safeFlags = null != flags ? flags : {};
83
+ const safeFlags = flags ?? {};
97
84
  return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{
98
85
  const details = safeFlags[flag];
99
86
  return details.enabled && details.metadata && void 0 !== details.metadata.payload;
100
87
  }).map((flag)=>{
101
- var _safeFlags_flag_metadata;
102
- const payload = null == (_safeFlags_flag_metadata = safeFlags[flag].metadata) ? void 0 : _safeFlags_flag_metadata.payload;
88
+ const payload = safeFlags[flag].metadata?.payload;
103
89
  return [
104
90
  flag,
105
91
  payload ? parsePayload(payload) : void 0
@@ -107,13 +93,9 @@ const getPayloadsFromFlags = (flags)=>{
107
93
  }));
108
94
  };
109
95
  const getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{
110
- var _flagsResponse_featureFlags;
111
- const flags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
112
- var _flagsResponse_featureFlagPayloads;
113
- const payloads = null != (_flagsResponse_featureFlagPayloads = flagsResponse.featureFlagPayloads) ? _flagsResponse_featureFlagPayloads : {};
114
- return Object.fromEntries(Object.entries(flags).map((param)=>{
115
- let [key, value] = param;
116
- return [
96
+ const flags = flagsResponse.featureFlags ?? {};
97
+ const payloads = flagsResponse.featureFlagPayloads ?? {};
98
+ return Object.fromEntries(Object.entries(flags).map(([key, value])=>[
117
99
  key,
118
100
  {
119
101
  key: key,
@@ -123,39 +105,32 @@ const getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{
123
105
  metadata: {
124
106
  id: void 0,
125
107
  version: void 0,
126
- payload: (null == payloads ? void 0 : payloads[key]) ? JSON.stringify(payloads[key]) : void 0,
108
+ payload: payloads?.[key] ? JSON.stringify(payloads[key]) : void 0,
127
109
  description: void 0
128
110
  }
129
111
  }
130
- ];
131
- }));
132
- };
133
- const getFeatureFlagValue = (detail)=>{
134
- var _detail_variant;
135
- return void 0 === detail ? void 0 : null != (_detail_variant = detail.variant) ? _detail_variant : detail.enabled;
112
+ ]));
136
113
  };
114
+ const getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;
137
115
  const parsePayload = (response)=>{
138
116
  if ('string' != typeof response) return response;
139
117
  try {
140
118
  return JSON.parse(response);
141
- } catch (e) {
119
+ } catch {
142
120
  return response;
143
121
  }
144
122
  };
145
123
  const createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{
146
124
  const allKeys = [
147
125
  ...new Set([
148
- ...Object.keys(null != featureFlags ? featureFlags : {}),
149
- ...Object.keys(null != featureFlagPayloads ? featureFlagPayloads : {})
126
+ ...Object.keys(featureFlags ?? {}),
127
+ ...Object.keys(featureFlagPayloads ?? {})
150
128
  ])
151
129
  ];
152
- const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>{
153
- var _featureFlags_key;
154
- return res[key] = null != (_featureFlags_key = featureFlags[key]) ? _featureFlags_key : true, res;
155
- }, {});
130
+ const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});
156
131
  const flagDetails = {
157
132
  featureFlags: enabledFlags,
158
- featureFlagPayloads: null != featureFlagPayloads ? featureFlagPayloads : {}
133
+ featureFlagPayloads: featureFlagPayloads ?? {}
159
134
  };
160
135
  return normalizeFlagsResponse(flagDetails);
161
136
  };
@@ -9,22 +9,15 @@ const normalizeFlagsResponse = (flagsResponse)=>{
9
9
  };
10
10
  }
11
11
  {
12
- var _flagsResponse_featureFlags;
13
- const featureFlags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
14
- const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map((param)=>{
15
- let [k, v] = param;
16
- return [
12
+ const featureFlags = flagsResponse.featureFlags ?? {};
13
+ const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[
17
14
  k,
18
15
  parsePayload(v)
19
- ];
20
- }));
21
- const flags = Object.fromEntries(Object.entries(featureFlags).map((param)=>{
22
- let [key, value] = param;
23
- return [
16
+ ]));
17
+ const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[
24
18
  key,
25
19
  getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])
26
- ];
27
- }));
20
+ ]));
28
21
  return {
29
22
  ...flagsResponse,
30
23
  featureFlags,
@@ -47,24 +40,17 @@ function getFlagDetailFromFlagAndPayload(key, value, payload) {
47
40
  }
48
41
  };
49
42
  }
50
- const getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(null != flags ? flags : {}).map((param)=>{
51
- let [key, detail] = param;
52
- return [
43
+ const getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[
53
44
  key,
54
45
  getFeatureFlagValue(detail)
55
- ];
56
- }).filter((param)=>{
57
- let [, value] = param;
58
- return void 0 !== value;
59
- }));
46
+ ]).filter(([, value])=>void 0 !== value));
60
47
  const getPayloadsFromFlags = (flags)=>{
61
- const safeFlags = null != flags ? flags : {};
48
+ const safeFlags = flags ?? {};
62
49
  return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{
63
50
  const details = safeFlags[flag];
64
51
  return details.enabled && details.metadata && void 0 !== details.metadata.payload;
65
52
  }).map((flag)=>{
66
- var _safeFlags_flag_metadata;
67
- const payload = null == (_safeFlags_flag_metadata = safeFlags[flag].metadata) ? void 0 : _safeFlags_flag_metadata.payload;
53
+ const payload = safeFlags[flag].metadata?.payload;
68
54
  return [
69
55
  flag,
70
56
  payload ? parsePayload(payload) : void 0
@@ -72,13 +58,9 @@ const getPayloadsFromFlags = (flags)=>{
72
58
  }));
73
59
  };
74
60
  const getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{
75
- var _flagsResponse_featureFlags;
76
- const flags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
77
- var _flagsResponse_featureFlagPayloads;
78
- const payloads = null != (_flagsResponse_featureFlagPayloads = flagsResponse.featureFlagPayloads) ? _flagsResponse_featureFlagPayloads : {};
79
- return Object.fromEntries(Object.entries(flags).map((param)=>{
80
- let [key, value] = param;
81
- return [
61
+ const flags = flagsResponse.featureFlags ?? {};
62
+ const payloads = flagsResponse.featureFlagPayloads ?? {};
63
+ return Object.fromEntries(Object.entries(flags).map(([key, value])=>[
82
64
  key,
83
65
  {
84
66
  key: key,
@@ -88,39 +70,32 @@ const getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{
88
70
  metadata: {
89
71
  id: void 0,
90
72
  version: void 0,
91
- payload: (null == payloads ? void 0 : payloads[key]) ? JSON.stringify(payloads[key]) : void 0,
73
+ payload: payloads?.[key] ? JSON.stringify(payloads[key]) : void 0,
92
74
  description: void 0
93
75
  }
94
76
  }
95
- ];
96
- }));
97
- };
98
- const getFeatureFlagValue = (detail)=>{
99
- var _detail_variant;
100
- return void 0 === detail ? void 0 : null != (_detail_variant = detail.variant) ? _detail_variant : detail.enabled;
77
+ ]));
101
78
  };
79
+ const getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;
102
80
  const parsePayload = (response)=>{
103
81
  if ('string' != typeof response) return response;
104
82
  try {
105
83
  return JSON.parse(response);
106
- } catch (e) {
84
+ } catch {
107
85
  return response;
108
86
  }
109
87
  };
110
88
  const createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{
111
89
  const allKeys = [
112
90
  ...new Set([
113
- ...Object.keys(null != featureFlags ? featureFlags : {}),
114
- ...Object.keys(null != featureFlagPayloads ? featureFlagPayloads : {})
91
+ ...Object.keys(featureFlags ?? {}),
92
+ ...Object.keys(featureFlagPayloads ?? {})
115
93
  ])
116
94
  ];
117
- const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>{
118
- var _featureFlags_key;
119
- return res[key] = null != (_featureFlags_key = featureFlags[key]) ? _featureFlags_key : true, res;
120
- }, {});
95
+ const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});
121
96
  const flagDetails = {
122
97
  featureFlags: enabledFlags,
123
- featureFlagPayloads: null != featureFlagPayloads ? featureFlagPayloads : {}
98
+ featureFlagPayloads: featureFlagPayloads ?? {}
124
99
  };
125
100
  return normalizeFlagsResponse(flagDetails);
126
101
  };
package/dist/gzip.js CHANGED
@@ -30,8 +30,7 @@ __webpack_require__.d(__webpack_exports__, {
30
30
  function isGzipSupported() {
31
31
  return 'CompressionStream' in globalThis;
32
32
  }
33
- async function gzipCompress(input) {
34
- let isDebug = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
33
+ async function gzipCompress(input, isDebug = true) {
35
34
  try {
36
35
  const dataStream = new Blob([
37
36
  input
package/dist/gzip.mjs CHANGED
@@ -1,8 +1,7 @@
1
1
  function isGzipSupported() {
2
2
  return 'CompressionStream' in globalThis;
3
3
  }
4
- async function gzipCompress(input) {
5
- let isDebug = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
4
+ async function gzipCompress(input, isDebug = true) {
6
5
  try {
7
6
  const dataStream = new Blob([
8
7
  input
package/dist/index.d.ts CHANGED
@@ -1,371 +1,9 @@
1
- import { PostHogFetchOptions, PostHogFetchResponse, PostHogAutocaptureElement, PostHogFlagsResponse, PostHogCoreOptions, PostHogEventProperties, PostHogPersistedProperty, PostHogCaptureOptions, JsonType, PostHogRemoteConfig, FeatureFlagValue, PostHogFeatureFlagDetails, FeatureFlagDetail, SurveyResponse, PostHogGroupProperties } from './types';
2
- import { RetriableOptions } from './utils';
3
- import { SimpleEventEmitter } from './eventemitter';
4
1
  export { getFeatureFlagValue } from './featureFlagUtils';
5
2
  export * from './utils';
6
3
  export * as ErrorTracking from './error-tracking';
7
- export declare const maybeAdd: (key: string, value: JsonType | undefined) => Record<string, JsonType>;
8
- export declare function logFlushError(err: any): Promise<void>;
9
- export declare abstract class PostHogCoreStateless {
10
- readonly apiKey: string;
11
- readonly host: string;
12
- readonly flushAt: number;
13
- readonly preloadFeatureFlags: boolean;
14
- readonly disableSurveys: boolean;
15
- private maxBatchSize;
16
- private maxQueueSize;
17
- private flushInterval;
18
- private flushPromise;
19
- private shutdownPromise;
20
- private requestTimeout;
21
- private featureFlagsRequestTimeoutMs;
22
- private remoteConfigRequestTimeoutMs;
23
- private removeDebugCallback?;
24
- private disableGeoip;
25
- private historicalMigration;
26
- protected disabled: boolean;
27
- protected disableCompression: boolean;
28
- private defaultOptIn;
29
- private promiseQueue;
30
- protected _events: SimpleEventEmitter;
31
- protected _flushTimer?: any;
32
- protected _retryOptions: RetriableOptions;
33
- protected _initPromise: Promise<void>;
34
- protected _isInitialized: boolean;
35
- protected _remoteConfigResponsePromise?: Promise<PostHogRemoteConfig | undefined>;
36
- abstract fetch(url: string, options: PostHogFetchOptions): Promise<PostHogFetchResponse>;
37
- abstract getLibraryId(): string;
38
- abstract getLibraryVersion(): string;
39
- abstract getCustomUserAgent(): string | void;
40
- abstract getPersistedProperty<T>(key: PostHogPersistedProperty): T | undefined;
41
- abstract setPersistedProperty<T>(key: PostHogPersistedProperty, value: T | null): void;
42
- constructor(apiKey: string, options?: PostHogCoreOptions);
43
- protected logMsgIfDebug(fn: () => void): void;
44
- protected wrap(fn: () => void): void;
45
- protected getCommonEventProperties(): PostHogEventProperties;
46
- get optedOut(): boolean;
47
- optIn(): Promise<void>;
48
- optOut(): Promise<void>;
49
- on(event: string, cb: (...args: any[]) => void): () => void;
50
- /**
51
- * Enables or disables debug mode for detailed logging.
52
- *
53
- * @remarks
54
- * Debug mode logs all PostHog calls to the console for troubleshooting.
55
- * This is useful during development to understand what data is being sent.
56
- *
57
- * {@label Initialization}
58
- *
59
- * @example
60
- * ```js
61
- * // enable debug mode
62
- * posthog.debug(true)
63
- * ```
64
- *
65
- * @example
66
- * ```js
67
- * // disable debug mode
68
- * posthog.debug(false)
69
- * ```
70
- *
71
- * @public
72
- *
73
- * @param {boolean} [debug] If true, will enable debug mode.
74
- */
75
- debug(enabled?: boolean): void;
76
- get isDebug(): boolean;
77
- get isDisabled(): boolean;
78
- private buildPayload;
79
- addPendingPromise<T>(promise: Promise<T>): Promise<T>;
80
- /***
81
- *** TRACKING
82
- ***/
83
- protected identifyStateless(distinctId: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
84
- protected identifyStatelessImmediate(distinctId: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): Promise<void>;
85
- protected captureStateless(distinctId: string, event: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
86
- protected captureStatelessImmediate(distinctId: string, event: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): Promise<void>;
87
- protected aliasStateless(alias: string, distinctId: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
88
- protected aliasStatelessImmediate(alias: string, distinctId: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): Promise<void>;
89
- /***
90
- *** GROUPS
91
- ***/
92
- protected groupIdentifyStateless(groupType: string, groupKey: string | number, groupProperties?: PostHogEventProperties, options?: PostHogCaptureOptions, distinctId?: string, eventProperties?: PostHogEventProperties): void;
93
- protected getRemoteConfig(): Promise<PostHogRemoteConfig | undefined>;
94
- /***
95
- *** FEATURE FLAGS
96
- ***/
97
- protected getFlags(distinctId: string, groups?: Record<string, string | number>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, extraPayload?: Record<string, any>): Promise<PostHogFlagsResponse | undefined>;
98
- protected getFeatureFlagStateless(key: string, distinctId: string, groups?: Record<string, string>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, disableGeoip?: boolean): Promise<{
99
- response: FeatureFlagValue | undefined;
100
- requestId: string | undefined;
101
- }>;
102
- protected getFeatureFlagDetailStateless(key: string, distinctId: string, groups?: Record<string, string>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, disableGeoip?: boolean): Promise<{
103
- response: FeatureFlagDetail | undefined;
104
- requestId: string | undefined;
105
- } | undefined>;
106
- protected getFeatureFlagPayloadStateless(key: string, distinctId: string, groups?: Record<string, string>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, disableGeoip?: boolean): Promise<JsonType | undefined>;
107
- protected getFeatureFlagPayloadsStateless(distinctId: string, groups?: Record<string, string>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, disableGeoip?: boolean, flagKeysToEvaluate?: string[]): Promise<PostHogFlagsResponse['featureFlagPayloads'] | undefined>;
108
- protected getFeatureFlagsStateless(distinctId: string, groups?: Record<string, string | number>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, disableGeoip?: boolean, flagKeysToEvaluate?: string[]): Promise<{
109
- flags: PostHogFlagsResponse['featureFlags'] | undefined;
110
- payloads: PostHogFlagsResponse['featureFlagPayloads'] | undefined;
111
- requestId: PostHogFlagsResponse['requestId'] | undefined;
112
- }>;
113
- protected getFeatureFlagsAndPayloadsStateless(distinctId: string, groups?: Record<string, string | number>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, disableGeoip?: boolean, flagKeysToEvaluate?: string[]): Promise<{
114
- flags: PostHogFlagsResponse['featureFlags'] | undefined;
115
- payloads: PostHogFlagsResponse['featureFlagPayloads'] | undefined;
116
- requestId: PostHogFlagsResponse['requestId'] | undefined;
117
- }>;
118
- protected getFeatureFlagDetailsStateless(distinctId: string, groups?: Record<string, string | number>, personProperties?: Record<string, string>, groupProperties?: Record<string, Record<string, string>>, disableGeoip?: boolean, flagKeysToEvaluate?: string[]): Promise<PostHogFeatureFlagDetails | undefined>;
119
- /***
120
- *** SURVEYS
121
- ***/
122
- getSurveysStateless(): Promise<SurveyResponse['surveys']>;
123
- /***
124
- *** SUPER PROPERTIES
125
- ***/
126
- private _props;
127
- protected get props(): PostHogEventProperties;
128
- protected set props(val: PostHogEventProperties | undefined);
129
- register(properties: PostHogEventProperties): Promise<void>;
130
- unregister(property: string): Promise<void>;
131
- /***
132
- *** QUEUEING AND FLUSHING
133
- ***/
134
- protected enqueue(type: string, _message: any, options?: PostHogCaptureOptions): void;
135
- protected sendImmediate(type: string, _message: any, options?: PostHogCaptureOptions): Promise<void>;
136
- private prepareMessage;
137
- private clearFlushTimer;
138
- /**
139
- * Helper for flushing the queue in the background
140
- * Avoids unnecessary promise errors
141
- */
142
- private flushBackground;
143
- /**
144
- * Flushes the queue of pending events.
145
- *
146
- * This function will return a promise that will resolve when the flush is complete,
147
- * or reject if there was an error (for example if the server or network is down).
148
- *
149
- * If there is already a flush in progress, this function will wait for that flush to complete.
150
- *
151
- * It's recommended to do error handling in the callback of the promise.
152
- *
153
- * {@label Initialization}
154
- *
155
- * @example
156
- * ```js
157
- * // flush with error handling
158
- * posthog.flush().then(() => {
159
- * console.log('Flush complete')
160
- * }).catch((err) => {
161
- * console.error('Flush failed', err)
162
- * })
163
- * ```
164
- *
165
- * @public
166
- *
167
- * @throws PostHogFetchHttpError
168
- * @throws PostHogFetchNetworkError
169
- * @throws Error
170
- */
171
- flush(): Promise<void>;
172
- protected getCustomHeaders(): {
173
- [key: string]: string;
174
- };
175
- private _flush;
176
- private fetchWithRetry;
177
- _shutdown(shutdownTimeoutMs?: number): Promise<void>;
178
- /**
179
- * Shuts down the PostHog instance and ensures all events are sent.
180
- *
181
- * Call shutdown() once before the process exits to ensure that all events have been sent and all promises
182
- * have resolved. Do not use this function if you intend to keep using this PostHog instance after calling it.
183
- * Use flush() for per-request cleanup instead.
184
- *
185
- * {@label Initialization}
186
- *
187
- * @example
188
- * ```js
189
- * // shutdown before process exit
190
- * process.on('SIGINT', async () => {
191
- * await posthog.shutdown()
192
- * process.exit(0)
193
- * })
194
- * ```
195
- *
196
- * @public
197
- *
198
- * @param {number} [shutdownTimeoutMs=30000] Maximum time to wait for shutdown in milliseconds
199
- * @returns {Promise<void>} A promise that resolves when shutdown is complete
200
- */
201
- shutdown(shutdownTimeoutMs?: number): Promise<void>;
202
- }
203
- export declare abstract class PostHogCore extends PostHogCoreStateless {
204
- private sendFeatureFlagEvent;
205
- private flagCallReported;
206
- protected _flagsResponsePromise?: Promise<PostHogFlagsResponse | undefined>;
207
- protected _sessionExpirationTimeSeconds: number;
208
- private _sessionMaxLengthSeconds;
209
- protected sessionProps: PostHogEventProperties;
210
- constructor(apiKey: string, options?: PostHogCoreOptions);
211
- protected setupBootstrap(options?: Partial<PostHogCoreOptions>): void;
212
- private clearProps;
213
- on(event: string, cb: (...args: any[]) => void): () => void;
214
- reset(propertiesToKeep?: PostHogPersistedProperty[]): void;
215
- protected getCommonEventProperties(): PostHogEventProperties;
216
- private enrichProperties;
217
- /**
218
- * Returns the current session_id.
219
- *
220
- * @remarks
221
- * This should only be used for informative purposes.
222
- * Any actual internal use case for the session_id should be handled by the sessionManager.
223
- *
224
- * @public
225
- *
226
- * @returns The stored session ID for the current session. This may be an empty string if the client is not yet fully initialized.
227
- */
228
- getSessionId(): string;
229
- resetSessionId(): void;
230
- /**
231
- * Returns the current anonymous ID.
232
- *
233
- * This is the ID assigned to users before they are identified. It's used to track
234
- * anonymous users and link them to identified users when they sign up.
235
- *
236
- * {@label Identification}
237
- *
238
- * @example
239
- * ```js
240
- * // get the anonymous ID
241
- * const anonId = posthog.getAnonymousId()
242
- * console.log('Anonymous ID:', anonId)
243
- * ```
244
- *
245
- * @public
246
- *
247
- * @returns {string} The stored anonymous ID. This may be an empty string if the client is not yet fully initialized.
248
- */
249
- getAnonymousId(): string;
250
- /**
251
- * * @returns {string} The stored distinct ID. This may be an empty string if the client is not yet fully initialized.
252
- */
253
- getDistinctId(): string;
254
- registerForSession(properties: PostHogEventProperties): void;
255
- unregisterForSession(property: string): void;
256
- /***
257
- *** TRACKING
258
- ***/
259
- identify(distinctId?: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
260
- capture(event: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
261
- alias(alias: string): void;
262
- autocapture(eventType: string, elements: PostHogAutocaptureElement[], properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
263
- /***
264
- *** GROUPS
265
- ***/
266
- groups(groups: PostHogGroupProperties): void;
267
- group(groupType: string, groupKey: string | number, groupProperties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
268
- groupIdentify(groupType: string, groupKey: string | number, groupProperties?: PostHogEventProperties, options?: PostHogCaptureOptions): void;
269
- /***
270
- * PROPERTIES
271
- ***/
272
- setPersonPropertiesForFlags(properties: {
273
- [type: string]: string;
274
- }): void;
275
- resetPersonPropertiesForFlags(): void;
276
- setGroupPropertiesForFlags(properties: {
277
- [type: string]: Record<string, string>;
278
- }): void;
279
- resetGroupPropertiesForFlags(): void;
280
- private remoteConfigAsync;
281
- /***
282
- *** FEATURE FLAGS
283
- ***/
284
- private flagsAsync;
285
- private cacheSessionReplay;
286
- private _remoteConfigAsync;
287
- private _flagsAsync;
288
- private setKnownFeatureFlagDetails;
289
- private getKnownFeatureFlagDetails;
290
- protected getKnownFeatureFlags(): PostHogFlagsResponse['featureFlags'] | undefined;
291
- private getKnownFeatureFlagPayloads;
292
- private getBootstrappedFeatureFlagDetails;
293
- private setBootstrappedFeatureFlagDetails;
294
- private getBootstrappedFeatureFlags;
295
- private getBootstrappedFeatureFlagPayloads;
296
- getFeatureFlag(key: string): FeatureFlagValue | undefined;
297
- getFeatureFlagPayload(key: string): JsonType | undefined;
298
- getFeatureFlagPayloads(): PostHogFlagsResponse['featureFlagPayloads'] | undefined;
299
- getFeatureFlags(): PostHogFlagsResponse['featureFlags'] | undefined;
300
- getFeatureFlagDetails(): PostHogFeatureFlagDetails | undefined;
301
- getFeatureFlagsAndPayloads(): {
302
- flags: PostHogFlagsResponse['featureFlags'] | undefined;
303
- payloads: PostHogFlagsResponse['featureFlagPayloads'] | undefined;
304
- };
305
- isFeatureEnabled(key: string): boolean | undefined;
306
- reloadFeatureFlags(options?: {
307
- cb?: (err?: Error, flags?: PostHogFlagsResponse['featureFlags']) => void;
308
- }): void;
309
- reloadRemoteConfigAsync(): Promise<PostHogRemoteConfig | undefined>;
310
- reloadFeatureFlagsAsync(sendAnonDistinctId?: boolean): Promise<PostHogFlagsResponse['featureFlags'] | undefined>;
311
- onFeatureFlags(cb: (flags: PostHogFlagsResponse['featureFlags']) => void): () => void;
312
- onFeatureFlag(key: string, cb: (value: FeatureFlagValue) => void): () => void;
313
- overrideFeatureFlag(flags: PostHogFlagsResponse['featureFlags'] | null): Promise<void>;
314
- /**
315
- * Capture a caught exception manually
316
- *
317
- * {@label Error tracking}
318
- *
319
- * @public
320
- *
321
- * @example
322
- * ```js
323
- * // Capture a caught exception
324
- * try {
325
- * // something that might throw
326
- * } catch (error) {
327
- * posthog.captureException(error)
328
- * }
329
- * ```
330
- *
331
- * @example
332
- * ```js
333
- * // With additional properties
334
- * posthog.captureException(error, {
335
- * customProperty: 'value',
336
- * anotherProperty: ['I', 'can be a list'],
337
- * ...
338
- * })
339
- * ```
340
- *
341
- * @param {Error} error The error to capture
342
- * @param {Object} [additionalProperties] Any additional properties to add to the error event
343
- * @returns {CaptureResult} The result of the capture
344
- */
345
- captureException(error: unknown, additionalProperties?: PostHogEventProperties): void;
346
- /**
347
- * Capture written user feedback for a LLM trace. Numeric values are converted to strings.
348
- *
349
- * {@label LLM analytics}
350
- *
351
- * @public
352
- *
353
- * @param traceId The trace ID to capture feedback for.
354
- * @param userFeedback The feedback to capture.
355
- */
356
- captureTraceFeedback(traceId: string | number, userFeedback: string): void;
357
- /**
358
- * Capture a metric for a LLM trace. Numeric values are converted to strings.
359
- *
360
- * {@label LLM analytics}
361
- *
362
- * @public
363
- *
364
- * @param traceId The trace ID to capture the metric for.
365
- * @param metricName The name of the metric to capture.
366
- * @param metricValue The value of the metric to capture.
367
- */
368
- captureTraceMetric(traceId: string | number, metricName: string, metricValue: string | number | boolean): void;
369
- }
4
+ export { uuidv7 } from './vendor/uuidv7';
5
+ export * as testing from './testing';
6
+ export * from './posthog-core';
7
+ export * from './posthog-core-stateless';
370
8
  export * from './types';
371
9
  //# sourceMappingURL=index.d.ts.map