@posthog/core 1.37.2 → 1.38.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/featureFlagUtils.d.ts +2 -1
- package/dist/featureFlagUtils.d.ts.map +1 -1
- package/dist/featureFlagUtils.js +13 -0
- package/dist/featureFlagUtils.mjs +11 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -6
- package/dist/index.mjs +2 -2
- package/dist/posthog-core.d.ts +6 -0
- package/dist/posthog-core.d.ts.map +1 -1
- package/dist/posthog-core.js +13 -4
- package/dist/posthog-core.mjs +14 -5
- package/package.json +1 -1
- package/src/featureFlagUtils.ts +14 -0
- package/src/index.ts +7 -1
- package/src/posthog-core.ts +21 -11
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FeatureFlagDetail, FeatureFlagValue, PostHogFlagsResponse, PostHogV1FlagsResponse, PostHogV2FlagsResponse, PartialWithRequired, PostHogFeatureFlagsResponse } from './types';
|
|
1
|
+
import { FeatureFlagDetail, FeatureFlagResult, FeatureFlagValue, PostHogFlagsResponse, PostHogV1FlagsResponse, PostHogV2FlagsResponse, PartialWithRequired, PostHogFeatureFlagsResponse } from './types';
|
|
2
2
|
export declare const normalizeFlagsResponse: (flagsResponse: PartialWithRequired<PostHogV2FlagsResponse, "flags"> | PartialWithRequired<PostHogV1FlagsResponse, "featureFlags" | "featureFlagPayloads">) => PostHogFeatureFlagsResponse;
|
|
3
3
|
/**
|
|
4
4
|
* Get the flag values from the flags v4 response.
|
|
@@ -28,4 +28,5 @@ export declare const createFlagsResponseFromFlagsAndPayloads: (featureFlags: Pos
|
|
|
28
28
|
export declare const updateFlagValue: (flag: FeatureFlagDetail, value: FeatureFlagValue) => FeatureFlagDetail;
|
|
29
29
|
export declare function getEnabledFromValue(value: FeatureFlagValue): boolean;
|
|
30
30
|
export declare function getVariantFromValue(value: FeatureFlagValue): string | undefined;
|
|
31
|
+
export declare const flagDetailsToResults: (flagDetails: Record<string, FeatureFlagDetail>) => FeatureFlagResult[];
|
|
31
32
|
//# sourceMappingURL=featureFlagUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureFlagUtils.d.ts","sourceRoot":"","sources":["../src/featureFlagUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAEhB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EAEtB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,sBAAsB,GACjC,eACI,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,GACpD,mBAAmB,CAAC,sBAAsB,EAAE,cAAc,GAAG,qBAAqB,CAAC,KACtF,2BAgCF,CAAA;AAqBD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,oBAAoB,CAAC,OAAO,CAAC,KAAG,oBAAoB,CAAC,cAAc,CAMhH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,oBAAoB,CAAC,OAAO,CAAC,KACnC,oBAAoB,CAAC,qBAAqB,CAa5C,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,iBAAiB,GAAG,SAAS,KAAG,gBAAgB,GAAG,SAE9F,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,GAAG,KAAG,GAU5C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uCAAuC,GAClD,cAAc,sBAAsB,CAAC,cAAc,CAAC,EACpD,qBAAqB,sBAAsB,CAAC,qBAAqB,CAAC,KACjE,2BAaF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,iBAAiB,EAAE,OAAO,gBAAgB,KAAG,iBAMlF,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAE/E"}
|
|
1
|
+
{"version":3,"file":"featureFlagUtils.d.ts","sourceRoot":"","sources":["../src/featureFlagUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAEhB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EAEtB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,sBAAsB,GACjC,eACI,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,GACpD,mBAAmB,CAAC,sBAAsB,EAAE,cAAc,GAAG,qBAAqB,CAAC,KACtF,2BAgCF,CAAA;AAqBD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,oBAAoB,CAAC,OAAO,CAAC,KAAG,oBAAoB,CAAC,cAAc,CAMhH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,oBAAoB,CAAC,OAAO,CAAC,KACnC,oBAAoB,CAAC,qBAAqB,CAa5C,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,iBAAiB,GAAG,SAAS,KAAG,gBAAgB,GAAG,SAE9F,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,GAAG,KAAG,GAU5C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uCAAuC,GAClD,cAAc,sBAAsB,CAAC,cAAc,CAAC,EACpD,qBAAqB,sBAAsB,CAAC,qBAAqB,CAAC,KACjE,2BAaF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,iBAAiB,EAAE,OAAO,gBAAgB,KAAG,iBAMlF,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED,eAAO,MAAM,oBAAoB,GAAI,aAAa,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAG,iBAAiB,EAWtG,CAAA"}
|
package/dist/featureFlagUtils.js
CHANGED
|
@@ -25,6 +25,7 @@ var __webpack_exports__ = {};
|
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
createFlagsResponseFromFlagsAndPayloads: ()=>createFlagsResponseFromFlagsAndPayloads,
|
|
28
|
+
flagDetailsToResults: ()=>flagDetailsToResults,
|
|
28
29
|
getEnabledFromValue: ()=>getEnabledFromValue,
|
|
29
30
|
getFeatureFlagValue: ()=>getFeatureFlagValue,
|
|
30
31
|
getFlagValuesFromFlags: ()=>getFlagValuesFromFlags,
|
|
@@ -127,7 +128,18 @@ function getEnabledFromValue(value) {
|
|
|
127
128
|
function getVariantFromValue(value) {
|
|
128
129
|
return 'string' == typeof value ? value : void 0;
|
|
129
130
|
}
|
|
131
|
+
const flagDetailsToResults = (flagDetails)=>Object.values(flagDetails).map((detail)=>{
|
|
132
|
+
const value = detail.variant ?? detail.enabled;
|
|
133
|
+
const rawPayload = detail.metadata?.payload;
|
|
134
|
+
return {
|
|
135
|
+
key: detail.key,
|
|
136
|
+
enabled: getEnabledFromValue(value),
|
|
137
|
+
variant: getVariantFromValue(value),
|
|
138
|
+
payload: void 0 !== rawPayload ? parsePayload(rawPayload) : null
|
|
139
|
+
};
|
|
140
|
+
});
|
|
130
141
|
exports.createFlagsResponseFromFlagsAndPayloads = __webpack_exports__.createFlagsResponseFromFlagsAndPayloads;
|
|
142
|
+
exports.flagDetailsToResults = __webpack_exports__.flagDetailsToResults;
|
|
131
143
|
exports.getEnabledFromValue = __webpack_exports__.getEnabledFromValue;
|
|
132
144
|
exports.getFeatureFlagValue = __webpack_exports__.getFeatureFlagValue;
|
|
133
145
|
exports.getFlagValuesFromFlags = __webpack_exports__.getFlagValuesFromFlags;
|
|
@@ -138,6 +150,7 @@ exports.parsePayload = __webpack_exports__.parsePayload;
|
|
|
138
150
|
exports.updateFlagValue = __webpack_exports__.updateFlagValue;
|
|
139
151
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
140
152
|
"createFlagsResponseFromFlagsAndPayloads",
|
|
153
|
+
"flagDetailsToResults",
|
|
141
154
|
"getEnabledFromValue",
|
|
142
155
|
"getFeatureFlagValue",
|
|
143
156
|
"getFlagValuesFromFlags",
|
|
@@ -91,4 +91,14 @@ function getEnabledFromValue(value) {
|
|
|
91
91
|
function getVariantFromValue(value) {
|
|
92
92
|
return 'string' == typeof value ? value : void 0;
|
|
93
93
|
}
|
|
94
|
-
|
|
94
|
+
const flagDetailsToResults = (flagDetails)=>Object.values(flagDetails).map((detail)=>{
|
|
95
|
+
const value = detail.variant ?? detail.enabled;
|
|
96
|
+
const rawPayload = detail.metadata?.payload;
|
|
97
|
+
return {
|
|
98
|
+
key: detail.key,
|
|
99
|
+
enabled: getEnabledFromValue(value),
|
|
100
|
+
variant: getVariantFromValue(value),
|
|
101
|
+
payload: void 0 !== rawPayload ? parsePayload(rawPayload) : null
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
export { createFlagsResponseFromFlagsAndPayloads, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, normalizeFlagsResponse, parsePayload, updateFlagValue };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { getFeatureFlagValue, getEnabledFromValue, getVariantFromValue, parsePayload } from './featureFlagUtils';
|
|
1
|
+
export { getFeatureFlagValue, getEnabledFromValue, getVariantFromValue, parsePayload, flagDetailsToResults, } from './featureFlagUtils';
|
|
2
2
|
export { gzipCompress, isGzipData, isGzipRequest, isGzipSupported, isNativeAsyncGzipError, isNativeAsyncGzipReadError, } from './gzip';
|
|
3
3
|
export * from './utils';
|
|
4
4
|
export * as ErrorTracking from './error-tracking';
|
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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,QAAQ,CAAA;AACf,cAAc,SAAS,CAAA;AACvB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,cAAc,CAAA;AAIrB,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACzG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,cAAc,UAAU,CAAA;AACxB,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
|
@@ -89,6 +89,7 @@ var __webpack_exports__ = {};
|
|
|
89
89
|
buildOtlpLogRecord: ()=>_logs_logs_utils__WEBPACK_IMPORTED_MODULE_4__.buildOtlpLogRecord,
|
|
90
90
|
buildOtlpLogsPayload: ()=>_logs_logs_utils__WEBPACK_IMPORTED_MODULE_4__.buildOtlpLogsPayload,
|
|
91
91
|
buildResourceAttributes: ()=>_logs_logs_utils__WEBPACK_IMPORTED_MODULE_4__.buildResourceAttributes,
|
|
92
|
+
flagDetailsToResults: ()=>_featureFlagUtils__WEBPACK_IMPORTED_MODULE_0__.flagDetailsToResults,
|
|
92
93
|
getEnabledFromValue: ()=>_featureFlagUtils__WEBPACK_IMPORTED_MODULE_0__.getEnabledFromValue,
|
|
93
94
|
getFeatureFlagValue: ()=>_featureFlagUtils__WEBPACK_IMPORTED_MODULE_0__.getFeatureFlagValue,
|
|
94
95
|
getLengthFromRules: ()=>_surveys_validation__WEBPACK_IMPORTED_MODULE_12__.getLengthFromRules,
|
|
@@ -113,6 +114,7 @@ var __webpack_exports__ = {};
|
|
|
113
114
|
var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./utils?637c");
|
|
114
115
|
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
115
116
|
for(var __WEBPACK_IMPORT_KEY__ in _utils__WEBPACK_IMPORTED_MODULE_2__)if ([
|
|
117
|
+
"toOtlpAnyValue",
|
|
116
118
|
"toOtlpKeyValueList",
|
|
117
119
|
"getLengthFromRules",
|
|
118
120
|
"PostHogLogs",
|
|
@@ -136,7 +138,7 @@ var __webpack_exports__ = {};
|
|
|
136
138
|
"isGzipSupported",
|
|
137
139
|
"buildOtlpLogsPayload",
|
|
138
140
|
"buildOtlpLogRecord",
|
|
139
|
-
"
|
|
141
|
+
"flagDetailsToResults"
|
|
140
142
|
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
141
143
|
return _utils__WEBPACK_IMPORTED_MODULE_2__[key];
|
|
142
144
|
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
@@ -148,6 +150,7 @@ var __webpack_exports__ = {};
|
|
|
148
150
|
var _cookie__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./cookie");
|
|
149
151
|
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
150
152
|
for(var __WEBPACK_IMPORT_KEY__ in _cookie__WEBPACK_IMPORTED_MODULE_7__)if ([
|
|
153
|
+
"toOtlpAnyValue",
|
|
151
154
|
"toOtlpKeyValueList",
|
|
152
155
|
"getLengthFromRules",
|
|
153
156
|
"PostHogLogs",
|
|
@@ -171,7 +174,7 @@ var __webpack_exports__ = {};
|
|
|
171
174
|
"isGzipSupported",
|
|
172
175
|
"buildOtlpLogsPayload",
|
|
173
176
|
"buildOtlpLogRecord",
|
|
174
|
-
"
|
|
177
|
+
"flagDetailsToResults"
|
|
175
178
|
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
176
179
|
return _cookie__WEBPACK_IMPORTED_MODULE_7__[key];
|
|
177
180
|
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
@@ -179,6 +182,7 @@ var __webpack_exports__ = {};
|
|
|
179
182
|
var _posthog_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("./posthog-core");
|
|
180
183
|
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
181
184
|
for(var __WEBPACK_IMPORT_KEY__ in _posthog_core__WEBPACK_IMPORTED_MODULE_8__)if ([
|
|
185
|
+
"toOtlpAnyValue",
|
|
182
186
|
"toOtlpKeyValueList",
|
|
183
187
|
"getLengthFromRules",
|
|
184
188
|
"PostHogLogs",
|
|
@@ -202,7 +206,7 @@ var __webpack_exports__ = {};
|
|
|
202
206
|
"isGzipSupported",
|
|
203
207
|
"buildOtlpLogsPayload",
|
|
204
208
|
"buildOtlpLogRecord",
|
|
205
|
-
"
|
|
209
|
+
"flagDetailsToResults"
|
|
206
210
|
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
207
211
|
return _posthog_core__WEBPACK_IMPORTED_MODULE_8__[key];
|
|
208
212
|
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
@@ -210,6 +214,7 @@ var __webpack_exports__ = {};
|
|
|
210
214
|
var _posthog_core_stateless__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("./posthog-core-stateless");
|
|
211
215
|
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
212
216
|
for(var __WEBPACK_IMPORT_KEY__ in _posthog_core_stateless__WEBPACK_IMPORTED_MODULE_9__)if ([
|
|
217
|
+
"toOtlpAnyValue",
|
|
213
218
|
"toOtlpKeyValueList",
|
|
214
219
|
"getLengthFromRules",
|
|
215
220
|
"PostHogLogs",
|
|
@@ -233,7 +238,7 @@ var __webpack_exports__ = {};
|
|
|
233
238
|
"isGzipSupported",
|
|
234
239
|
"buildOtlpLogsPayload",
|
|
235
240
|
"buildOtlpLogRecord",
|
|
236
|
-
"
|
|
241
|
+
"flagDetailsToResults"
|
|
237
242
|
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
238
243
|
return _posthog_core_stateless__WEBPACK_IMPORTED_MODULE_9__[key];
|
|
239
244
|
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
@@ -241,6 +246,7 @@ var __webpack_exports__ = {};
|
|
|
241
246
|
var _tracing_headers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("./tracing-headers");
|
|
242
247
|
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
243
248
|
for(var __WEBPACK_IMPORT_KEY__ in _tracing_headers__WEBPACK_IMPORTED_MODULE_10__)if ([
|
|
249
|
+
"toOtlpAnyValue",
|
|
244
250
|
"toOtlpKeyValueList",
|
|
245
251
|
"getLengthFromRules",
|
|
246
252
|
"PostHogLogs",
|
|
@@ -264,7 +270,7 @@ var __webpack_exports__ = {};
|
|
|
264
270
|
"isGzipSupported",
|
|
265
271
|
"buildOtlpLogsPayload",
|
|
266
272
|
"buildOtlpLogRecord",
|
|
267
|
-
"
|
|
273
|
+
"flagDetailsToResults"
|
|
268
274
|
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
269
275
|
return _tracing_headers__WEBPACK_IMPORTED_MODULE_10__[key];
|
|
270
276
|
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
@@ -272,6 +278,7 @@ var __webpack_exports__ = {};
|
|
|
272
278
|
var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("./types");
|
|
273
279
|
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
274
280
|
for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_11__)if ([
|
|
281
|
+
"toOtlpAnyValue",
|
|
275
282
|
"toOtlpKeyValueList",
|
|
276
283
|
"getLengthFromRules",
|
|
277
284
|
"PostHogLogs",
|
|
@@ -295,7 +302,7 @@ var __webpack_exports__ = {};
|
|
|
295
302
|
"isGzipSupported",
|
|
296
303
|
"buildOtlpLogsPayload",
|
|
297
304
|
"buildOtlpLogRecord",
|
|
298
|
-
"
|
|
305
|
+
"flagDetailsToResults"
|
|
299
306
|
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
300
307
|
return _types__WEBPACK_IMPORTED_MODULE_11__[key];
|
|
301
308
|
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
@@ -307,6 +314,7 @@ exports.PostHogLogs = __webpack_exports__.PostHogLogs;
|
|
|
307
314
|
exports.buildOtlpLogRecord = __webpack_exports__.buildOtlpLogRecord;
|
|
308
315
|
exports.buildOtlpLogsPayload = __webpack_exports__.buildOtlpLogsPayload;
|
|
309
316
|
exports.buildResourceAttributes = __webpack_exports__.buildResourceAttributes;
|
|
317
|
+
exports.flagDetailsToResults = __webpack_exports__.flagDetailsToResults;
|
|
310
318
|
exports.getEnabledFromValue = __webpack_exports__.getEnabledFromValue;
|
|
311
319
|
exports.getFeatureFlagValue = __webpack_exports__.getFeatureFlagValue;
|
|
312
320
|
exports.getLengthFromRules = __webpack_exports__.getLengthFromRules;
|
|
@@ -331,6 +339,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
331
339
|
"buildOtlpLogRecord",
|
|
332
340
|
"buildOtlpLogsPayload",
|
|
333
341
|
"buildResourceAttributes",
|
|
342
|
+
"flagDetailsToResults",
|
|
334
343
|
"getEnabledFromValue",
|
|
335
344
|
"getFeatureFlagValue",
|
|
336
345
|
"getLengthFromRules",
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getEnabledFromValue, getFeatureFlagValue, getVariantFromValue, parsePayload } from "./featureFlagUtils.mjs";
|
|
1
|
+
import { flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getVariantFromValue, parsePayload } from "./featureFlagUtils.mjs";
|
|
2
2
|
import { gzipCompress, isGzipData, isGzipRequest, isGzipSupported, isNativeAsyncGzipError, isNativeAsyncGzipReadError } from "./gzip.mjs";
|
|
3
3
|
import { buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, getOtlpSeverityNumber, getOtlpSeverityText, toOtlpAnyValue, toOtlpKeyValueList } from "./logs/logs-utils.mjs";
|
|
4
4
|
import { PostHogLogs } from "./logs/index.mjs";
|
|
@@ -11,4 +11,4 @@ export * from "./posthog-core-stateless.mjs";
|
|
|
11
11
|
export * from "./tracing-headers.mjs";
|
|
12
12
|
export * from "./types.mjs";
|
|
13
13
|
import * as __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ from "./error-tracking/index.mjs";
|
|
14
|
-
export { __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ as ErrorTracking, PostHogLogs, buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, getEnabledFromValue, getFeatureFlagValue, getLengthFromRules, getOtlpSeverityNumber, getOtlpSeverityText, getRequirementsHint, getValidationError, getVariantFromValue, gzipCompress, isGzipData, isGzipRequest, isGzipSupported, isNativeAsyncGzipError, isNativeAsyncGzipReadError, parsePayload, toOtlpAnyValue, toOtlpKeyValueList, uuidv7 };
|
|
14
|
+
export { __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ as ErrorTracking, PostHogLogs, buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getLengthFromRules, getOtlpSeverityNumber, getOtlpSeverityText, getRequirementsHint, getValidationError, getVariantFromValue, gzipCompress, isGzipData, isGzipRequest, isGzipSupported, isNativeAsyncGzipError, isNativeAsyncGzipReadError, parsePayload, toOtlpAnyValue, toOtlpKeyValueList, uuidv7 };
|
package/dist/posthog-core.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export declare abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
34
34
|
* @param propertiesToKeep - Optional array of persisted properties to preserve during reset.
|
|
35
35
|
*/
|
|
36
36
|
reset(propertiesToKeep?: PostHogPersistedProperty[]): void;
|
|
37
|
+
_shutdown(shutdownTimeoutMs?: number): Promise<void>;
|
|
37
38
|
protected getCommonEventProperties(): PostHogEventProperties;
|
|
38
39
|
private enrichProperties;
|
|
39
40
|
/**
|
|
@@ -134,6 +135,11 @@ export declare abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
134
135
|
private getBootstrappedFeatureFlags;
|
|
135
136
|
private getBootstrappedFeatureFlagPayloads;
|
|
136
137
|
getFeatureFlagResult(key: string, options?: FeatureFlagResultOptions): FeatureFlagResult | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Returns all currently cached feature flags as `FeatureFlagResult`s. This is a synchronous read of
|
|
140
|
+
* the flags from the last load (no network request) and does not send a `$feature_flag_called` event.
|
|
141
|
+
*/
|
|
142
|
+
getAllFeatureFlags(): FeatureFlagResult[];
|
|
137
143
|
protected _getFeatureFlagResult(key: string, options?: {
|
|
138
144
|
/** Whether to send an event that the flag was evaluated. This defaults to true,
|
|
139
145
|
* but will respect the instance-level sendFeatureFlagEvent setting.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EAGxB,yBAAyB,EAKzB,sBAAsB,EAGvB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"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"}
|
package/dist/posthog-core.js
CHANGED
|
@@ -105,6 +105,13 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
105
105
|
} else this.reloadFeatureFlags();
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
|
+
async _shutdown(shutdownTimeoutMs = 30000) {
|
|
109
|
+
try {
|
|
110
|
+
return await super._shutdown(shutdownTimeoutMs);
|
|
111
|
+
} finally{
|
|
112
|
+
this.flagCallReported = {};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
108
115
|
getCommonEventProperties() {
|
|
109
116
|
const featureFlags = this.getFeatureFlags();
|
|
110
117
|
const featureVariantProperties = {};
|
|
@@ -445,7 +452,6 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
445
452
|
this.maybeNotifyRemoteConfig(triggerOnRemoteConfig, res);
|
|
446
453
|
return res;
|
|
447
454
|
}
|
|
448
|
-
if (this.sendFeatureFlagEvent) this.flagCallReported = {};
|
|
449
455
|
let newFeatureFlagDetails = res;
|
|
450
456
|
if (res.errorsWhileComputingFlags) {
|
|
451
457
|
const currentFlagDetails = this.getKnownFeatureFlagDetails();
|
|
@@ -532,13 +538,16 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
532
538
|
getFeatureFlagResult(key, options) {
|
|
533
539
|
return this._getFeatureFlagResult(key, options);
|
|
534
540
|
}
|
|
541
|
+
getAllFeatureFlags() {
|
|
542
|
+
return (0, external_featureFlagUtils_js_namespaceObject.flagDetailsToResults)(this.getFeatureFlagDetails()?.flags ?? {});
|
|
543
|
+
}
|
|
535
544
|
_getFeatureFlagResult(key, options = {}) {
|
|
536
545
|
const storedDetails = this.getStoredFlagDetails();
|
|
537
546
|
const details = this.getFeatureFlagDetails();
|
|
538
547
|
const isQuotaLimited = storedDetails?.quotaLimited?.includes(external_posthog_core_stateless_js_namespaceObject.QuotaLimitedFeature.FeatureFlags);
|
|
539
548
|
const featureFlag = details?.flags[key];
|
|
540
|
-
const sendEvent = (options.sendEvent ?? this.sendFeatureFlagEvent) && !this.flagCallReported[key];
|
|
541
549
|
const flagValue = (0, external_featureFlagUtils_js_namespaceObject.getFeatureFlagValue)(featureFlag);
|
|
550
|
+
const sendEvent = (options.sendEvent ?? this.sendFeatureFlagEvent) && !this.flagCallReported[key]?.has(flagValue);
|
|
542
551
|
if (sendEvent) {
|
|
543
552
|
const errors = [];
|
|
544
553
|
if (storedDetails?.requestError) {
|
|
@@ -555,7 +564,8 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
555
564
|
const bootstrappedResponse = this.getBootstrappedFeatureFlags()?.[key];
|
|
556
565
|
const bootstrappedPayload = this.getBootstrappedFeatureFlagPayloads()?.[key];
|
|
557
566
|
const featureFlagError = errors.length > 0 ? errors.join(',') : void 0;
|
|
558
|
-
this.flagCallReported[key] =
|
|
567
|
+
this.flagCallReported[key] = this.flagCallReported[key] ?? new Set();
|
|
568
|
+
this.flagCallReported[key].add(flagValue);
|
|
559
569
|
const properties = {
|
|
560
570
|
$feature_flag: key,
|
|
561
571
|
$feature_flag_response: flagValue,
|
|
@@ -728,7 +738,6 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
728
738
|
}
|
|
729
739
|
};
|
|
730
740
|
}
|
|
731
|
-
if (this.sendFeatureFlagEvent) this.flagCallReported = {};
|
|
732
741
|
this.setKnownFeatureFlagDetails({
|
|
733
742
|
flags: flagDetails
|
|
734
743
|
});
|
package/dist/posthog-core.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createFlagsResponseFromFlagsAndPayloads, getEnabledFromValue, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, normalizeFlagsResponse, parsePayload, updateFlagValue } from "./featureFlagUtils.mjs";
|
|
1
|
+
import { createFlagsResponseFromFlagsAndPayloads, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, normalizeFlagsResponse, parsePayload, updateFlagValue } from "./featureFlagUtils.mjs";
|
|
2
2
|
import { Compression, FeatureFlagError, PostHogPersistedProperty } from "./types.mjs";
|
|
3
3
|
import { PostHogCoreStateless, QuotaLimitedFeature, maybeAdd } from "./posthog-core-stateless.mjs";
|
|
4
4
|
import { uuidv7 } from "./vendor/uuidv7.mjs";
|
|
@@ -77,6 +77,13 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
77
77
|
} else this.reloadFeatureFlags();
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
|
+
async _shutdown(shutdownTimeoutMs = 30000) {
|
|
81
|
+
try {
|
|
82
|
+
return await super._shutdown(shutdownTimeoutMs);
|
|
83
|
+
} finally{
|
|
84
|
+
this.flagCallReported = {};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
80
87
|
getCommonEventProperties() {
|
|
81
88
|
const featureFlags = this.getFeatureFlags();
|
|
82
89
|
const featureVariantProperties = {};
|
|
@@ -417,7 +424,6 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
417
424
|
this.maybeNotifyRemoteConfig(triggerOnRemoteConfig, res);
|
|
418
425
|
return res;
|
|
419
426
|
}
|
|
420
|
-
if (this.sendFeatureFlagEvent) this.flagCallReported = {};
|
|
421
427
|
let newFeatureFlagDetails = res;
|
|
422
428
|
if (res.errorsWhileComputingFlags) {
|
|
423
429
|
const currentFlagDetails = this.getKnownFeatureFlagDetails();
|
|
@@ -504,13 +510,16 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
504
510
|
getFeatureFlagResult(key, options) {
|
|
505
511
|
return this._getFeatureFlagResult(key, options);
|
|
506
512
|
}
|
|
513
|
+
getAllFeatureFlags() {
|
|
514
|
+
return flagDetailsToResults(this.getFeatureFlagDetails()?.flags ?? {});
|
|
515
|
+
}
|
|
507
516
|
_getFeatureFlagResult(key, options = {}) {
|
|
508
517
|
const storedDetails = this.getStoredFlagDetails();
|
|
509
518
|
const details = this.getFeatureFlagDetails();
|
|
510
519
|
const isQuotaLimited = storedDetails?.quotaLimited?.includes(QuotaLimitedFeature.FeatureFlags);
|
|
511
520
|
const featureFlag = details?.flags[key];
|
|
512
|
-
const sendEvent = (options.sendEvent ?? this.sendFeatureFlagEvent) && !this.flagCallReported[key];
|
|
513
521
|
const flagValue = getFeatureFlagValue(featureFlag);
|
|
522
|
+
const sendEvent = (options.sendEvent ?? this.sendFeatureFlagEvent) && !this.flagCallReported[key]?.has(flagValue);
|
|
514
523
|
if (sendEvent) {
|
|
515
524
|
const errors = [];
|
|
516
525
|
if (storedDetails?.requestError) {
|
|
@@ -527,7 +536,8 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
527
536
|
const bootstrappedResponse = this.getBootstrappedFeatureFlags()?.[key];
|
|
528
537
|
const bootstrappedPayload = this.getBootstrappedFeatureFlagPayloads()?.[key];
|
|
529
538
|
const featureFlagError = errors.length > 0 ? errors.join(',') : void 0;
|
|
530
|
-
this.flagCallReported[key] =
|
|
539
|
+
this.flagCallReported[key] = this.flagCallReported[key] ?? new Set();
|
|
540
|
+
this.flagCallReported[key].add(flagValue);
|
|
531
541
|
const properties = {
|
|
532
542
|
$feature_flag: key,
|
|
533
543
|
$feature_flag_response: flagValue,
|
|
@@ -700,7 +710,6 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
700
710
|
}
|
|
701
711
|
};
|
|
702
712
|
}
|
|
703
|
-
if (this.sendFeatureFlagEvent) this.flagCallReported = {};
|
|
704
713
|
this.setKnownFeatureFlagDetails({
|
|
705
714
|
flags: flagDetails
|
|
706
715
|
});
|
package/package.json
CHANGED
package/src/featureFlagUtils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FeatureFlagDetail,
|
|
3
|
+
FeatureFlagResult,
|
|
3
4
|
FeatureFlagValue,
|
|
4
5
|
JsonType,
|
|
5
6
|
PostHogFlagsResponse,
|
|
@@ -161,3 +162,16 @@ export function getEnabledFromValue(value: FeatureFlagValue): boolean {
|
|
|
161
162
|
export function getVariantFromValue(value: FeatureFlagValue): string | undefined {
|
|
162
163
|
return typeof value === 'string' ? value : undefined
|
|
163
164
|
}
|
|
165
|
+
|
|
166
|
+
export const flagDetailsToResults = (flagDetails: Record<string, FeatureFlagDetail>): FeatureFlagResult[] => {
|
|
167
|
+
return Object.values(flagDetails).map((detail) => {
|
|
168
|
+
const value = detail.variant ?? detail.enabled
|
|
169
|
+
const rawPayload = detail.metadata?.payload
|
|
170
|
+
return {
|
|
171
|
+
key: detail.key,
|
|
172
|
+
enabled: getEnabledFromValue(value),
|
|
173
|
+
variant: getVariantFromValue(value),
|
|
174
|
+
payload: rawPayload !== undefined ? parsePayload(rawPayload) : null,
|
|
175
|
+
}
|
|
176
|
+
})
|
|
177
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {
|
|
2
|
+
getFeatureFlagValue,
|
|
3
|
+
getEnabledFromValue,
|
|
4
|
+
getVariantFromValue,
|
|
5
|
+
parsePayload,
|
|
6
|
+
flagDetailsToResults,
|
|
7
|
+
} from './featureFlagUtils'
|
|
2
8
|
export {
|
|
3
9
|
gzipCompress,
|
|
4
10
|
isGzipData,
|
package/src/posthog-core.ts
CHANGED
|
@@ -23,6 +23,7 @@ import type {
|
|
|
23
23
|
} from './types'
|
|
24
24
|
import {
|
|
25
25
|
createFlagsResponseFromFlagsAndPayloads,
|
|
26
|
+
flagDetailsToResults,
|
|
26
27
|
getEnabledFromValue,
|
|
27
28
|
getFeatureFlagValue,
|
|
28
29
|
getFlagValuesFromFlags,
|
|
@@ -54,7 +55,7 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
54
55
|
// options
|
|
55
56
|
private sendFeatureFlagEvent: boolean
|
|
56
57
|
private disableRemoteFeatureFlags: boolean
|
|
57
|
-
private flagCallReported: { [key: string]:
|
|
58
|
+
private flagCallReported: { [key: string]: Set<FeatureFlagValue | undefined> } = {}
|
|
58
59
|
private _beforeSend?: BeforeSendFn | BeforeSendFn[]
|
|
59
60
|
|
|
60
61
|
// internal
|
|
@@ -194,6 +195,14 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
194
195
|
})
|
|
195
196
|
}
|
|
196
197
|
|
|
198
|
+
async _shutdown(shutdownTimeoutMs: number = 30000): Promise<void> {
|
|
199
|
+
try {
|
|
200
|
+
return await super._shutdown(shutdownTimeoutMs)
|
|
201
|
+
} finally {
|
|
202
|
+
this.flagCallReported = {}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
197
206
|
protected getCommonEventProperties(): PostHogEventProperties {
|
|
198
207
|
const featureFlags = this.getFeatureFlags()
|
|
199
208
|
|
|
@@ -808,11 +817,6 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
808
817
|
return res
|
|
809
818
|
}
|
|
810
819
|
|
|
811
|
-
// clear flag call reported if we have new flags since they might have changed
|
|
812
|
-
if (this.sendFeatureFlagEvent) {
|
|
813
|
-
this.flagCallReported = {}
|
|
814
|
-
}
|
|
815
|
-
|
|
816
820
|
let newFeatureFlagDetails = res
|
|
817
821
|
if (res.errorsWhileComputingFlags) {
|
|
818
822
|
// if not all flags were computed, we upsert flags instead of replacing them
|
|
@@ -949,6 +953,14 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
949
953
|
return this._getFeatureFlagResult(key, options)
|
|
950
954
|
}
|
|
951
955
|
|
|
956
|
+
/**
|
|
957
|
+
* Returns all currently cached feature flags as `FeatureFlagResult`s. This is a synchronous read of
|
|
958
|
+
* the flags from the last load (no network request) and does not send a `$feature_flag_called` event.
|
|
959
|
+
*/
|
|
960
|
+
getAllFeatureFlags(): FeatureFlagResult[] {
|
|
961
|
+
return flagDetailsToResults(this.getFeatureFlagDetails()?.flags ?? {})
|
|
962
|
+
}
|
|
963
|
+
|
|
952
964
|
protected _getFeatureFlagResult(
|
|
953
965
|
key: string,
|
|
954
966
|
options: {
|
|
@@ -970,8 +982,8 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
970
982
|
const details = this.getFeatureFlagDetails()
|
|
971
983
|
const isQuotaLimited = storedDetails?.quotaLimited?.includes(QuotaLimitedFeature.FeatureFlags)
|
|
972
984
|
const featureFlag = details?.flags[key]
|
|
973
|
-
const sendEvent = (options.sendEvent ?? this.sendFeatureFlagEvent) && !this.flagCallReported[key]
|
|
974
985
|
const flagValue: FeatureFlagValue | undefined = getFeatureFlagValue(featureFlag)
|
|
986
|
+
const sendEvent = (options.sendEvent ?? this.sendFeatureFlagEvent) && !this.flagCallReported[key]?.has(flagValue)
|
|
975
987
|
|
|
976
988
|
if (sendEvent) {
|
|
977
989
|
const errors: string[] = []
|
|
@@ -1003,7 +1015,8 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
1003
1015
|
const bootstrappedPayload = this.getBootstrappedFeatureFlagPayloads()?.[key]
|
|
1004
1016
|
const featureFlagError = errors.length > 0 ? errors.join(',') : undefined
|
|
1005
1017
|
|
|
1006
|
-
this.flagCallReported[key] =
|
|
1018
|
+
this.flagCallReported[key] = this.flagCallReported[key] ?? new Set()
|
|
1019
|
+
this.flagCallReported[key].add(flagValue)
|
|
1007
1020
|
|
|
1008
1021
|
const properties: Record<string, any> = {
|
|
1009
1022
|
$feature_flag: key,
|
|
@@ -1245,9 +1258,6 @@ export abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
1245
1258
|
}
|
|
1246
1259
|
}
|
|
1247
1260
|
|
|
1248
|
-
if (this.sendFeatureFlagEvent) {
|
|
1249
|
-
this.flagCallReported = {}
|
|
1250
|
-
}
|
|
1251
1261
|
this.setKnownFeatureFlagDetails({ flags: flagDetails })
|
|
1252
1262
|
})
|
|
1253
1263
|
}
|