@zuplo/cli 7.12.5 → 7.12.7
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/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.d.ts +13 -1
- package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.js +112 -34
- package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.mjs +110 -35
- package/node_modules/@posthog/core/dist/index.d.ts +2 -2
- package/node_modules/@posthog/core/dist/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/index.js +17 -7
- package/node_modules/@posthog/core/dist/index.mjs +1 -1
- package/node_modules/@posthog/core/dist/posthog-core.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/posthog-core.js +1 -1
- package/node_modules/@posthog/core/dist/posthog-core.mjs +1 -1
- package/node_modules/@posthog/core/dist/types.d.ts +2 -0
- package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/types.js +1 -0
- package/node_modules/@posthog/core/dist/types.mjs +1 -0
- package/node_modules/@posthog/core/package.json +1 -1
- package/node_modules/@posthog/core/src/featureFlagLocalEvaluation.ts +160 -72
- package/node_modules/@posthog/core/src/index.ts +2 -0
- package/node_modules/@posthog/core/src/posthog-core.ts +3 -1
- package/node_modules/@posthog/core/src/types.ts +2 -0
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/core/zeno.js +4 -4
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/out/esm/{chunk-WTWRZT3M.js → chunk-N2ZQITZD.js} +96 -96
- package/node_modules/@zuplo/runtime/out/esm/chunk-N2ZQITZD.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/types/index.d.ts +10 -14
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/node_modules/body-parser/README.md +17 -13
- package/node_modules/body-parser/lib/read.js +74 -57
- package/node_modules/body-parser/lib/types/json.js +11 -11
- package/node_modules/body-parser/lib/types/urlencoded.js +5 -5
- package/node_modules/body-parser/lib/utils.js +0 -15
- package/node_modules/body-parser/package.json +7 -12
- package/node_modules/on-finished/index.js +14 -2
- package/node_modules/on-finished/package.json +11 -7
- package/package.json +11 -11
- package/node_modules/@zuplo/runtime/out/esm/chunk-WTWRZT3M.js.map +0 -1
- package/node_modules/on-finished/HISTORY.md +0 -98
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-WTWRZT3M.js.LEGAL.txt → chunk-N2ZQITZD.js.LEGAL.txt} +0 -0
|
@@ -21,12 +21,24 @@ export type FeatureFlagVariantLookupEntry = {
|
|
|
21
21
|
valueMax: number;
|
|
22
22
|
key: string;
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* Why local evaluation could not resolve a flag. `experience_continuity` and
|
|
26
|
+
* `unsupported_definition` come from the flag's definition, `missing_context` from the
|
|
27
|
+
* evaluation call, and `unresolved_dependency` from a flag the definition depends on.
|
|
28
|
+
*/
|
|
29
|
+
export type UnresolvedFlagReason = 'experience_continuity' | 'unsupported_definition' | 'missing_context' | 'unresolved_dependency';
|
|
24
30
|
export declare class InconclusiveMatchError extends Error {
|
|
25
|
-
|
|
31
|
+
readonly reason: UnresolvedFlagReason;
|
|
32
|
+
constructor(message: string, reason?: UnresolvedFlagReason);
|
|
26
33
|
}
|
|
27
34
|
type SemverTuple = [number, number, number];
|
|
28
35
|
export declare function parseFeatureFlagSemver(value: string, parsingPolicy?: FeatureFlagSemverParsingPolicy): SemverTuple;
|
|
29
36
|
export declare function relativeDateParseForFeatureFlagMatching(value: string): Date | null;
|
|
37
|
+
/**
|
|
38
|
+
* Throws an unsupported_definition error when local evaluation cannot use the filter, whatever
|
|
39
|
+
* the context holds: an unknown operator, or a filter value that the operator cannot parse.
|
|
40
|
+
*/
|
|
41
|
+
export declare function assertFeatureFlagFilterSupported(property: FeatureFlagProperty, options?: Pick<MatchFeatureFlagPropertyOptions, 'semverParsingPolicy'>): void;
|
|
30
42
|
export declare function matchFeatureFlagProperty(property: FeatureFlagProperty, propertyValues: Record<string, any>, options?: MatchFeatureFlagPropertyOptions): boolean;
|
|
31
43
|
export declare function hashSHA1(text: string): Promise<string>;
|
|
32
44
|
export declare function getFeatureFlagHash(key: string, bucketingValue: string, salt?: string, separator?: string): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureFlagLocalEvaluation.d.ts","sourceRoot":"","sources":["../src/featureFlagLocalEvaluation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEzD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAA;AAE/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,wBAAwB,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,QAAQ,GAAG,mBAAmB,CAAA;AAE3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,mBAAmB,CAAC,EAAE,8BAA8B,CAAA;IACpD,mGAAmG;IACnG,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;
|
|
1
|
+
{"version":3,"file":"featureFlagLocalEvaluation.d.ts","sourceRoot":"","sources":["../src/featureFlagLocalEvaluation.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ var __webpack_exports__ = {};
|
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
InconclusiveMatchError: ()=>InconclusiveMatchError,
|
|
32
|
+
assertFeatureFlagFilterSupported: ()=>assertFeatureFlagFilterSupported,
|
|
32
33
|
getFeatureFlagHash: ()=>getFeatureFlagHash,
|
|
33
34
|
getFeatureFlagVariant: ()=>getFeatureFlagVariant,
|
|
34
35
|
getFeatureFlagVariantLookupTable: ()=>getFeatureFlagVariantLookupTable,
|
|
@@ -41,17 +42,34 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
41
42
|
});
|
|
42
43
|
const external_featureFlagUtils_js_namespaceObject = require("./featureFlagUtils.js");
|
|
43
44
|
const NULL_VALUES_ALLOWED_OPERATORS = [
|
|
45
|
+
'exact',
|
|
44
46
|
'is_not',
|
|
45
|
-
'
|
|
47
|
+
'icontains',
|
|
48
|
+
'not_icontains',
|
|
49
|
+
'starts_with',
|
|
50
|
+
'not_starts_with',
|
|
51
|
+
'ends_with',
|
|
52
|
+
'not_ends_with',
|
|
53
|
+
'regex',
|
|
54
|
+
'not_regex'
|
|
46
55
|
];
|
|
47
56
|
const LONG_SCALE = 0xfffffffffffffff;
|
|
48
57
|
class InconclusiveMatchError extends Error {
|
|
49
|
-
constructor(message){
|
|
58
|
+
constructor(message, reason = 'unsupported_definition'){
|
|
50
59
|
super(message);
|
|
51
60
|
this.name = this.constructor.name;
|
|
61
|
+
this.reason = reason;
|
|
52
62
|
Object.setPrototypeOf(this, InconclusiveMatchError.prototype);
|
|
53
63
|
}
|
|
54
64
|
}
|
|
65
|
+
function readContextValue(read) {
|
|
66
|
+
try {
|
|
67
|
+
return read();
|
|
68
|
+
} catch (e) {
|
|
69
|
+
if (e instanceof InconclusiveMatchError) throw new InconclusiveMatchError(e.message, 'missing_context');
|
|
70
|
+
throw e;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
55
73
|
function isTruthyOrFalsyPropertyValue(value) {
|
|
56
74
|
if ('boolean' == typeof value) return true;
|
|
57
75
|
if ('string' == typeof value) {
|
|
@@ -322,7 +340,69 @@ function relativeDateParseForFeatureFlagMatching(value) {
|
|
|
322
340
|
}
|
|
323
341
|
return parsedDt;
|
|
324
342
|
}
|
|
343
|
+
function parseDateFilter(value) {
|
|
344
|
+
if ('boolean' == typeof value) throw new InconclusiveMatchError('Date operations cannot be performed on boolean values');
|
|
345
|
+
return relativeDateParseForFeatureFlagMatching(String(value)) ?? convertToDateTime(value);
|
|
346
|
+
}
|
|
347
|
+
function assertFeatureFlagFilterSupported(property, options = {}) {
|
|
348
|
+
const value = property.value;
|
|
349
|
+
const parsingPolicy = options.semverParsingPolicy ?? 'strict';
|
|
350
|
+
switch(property.operator || 'exact'){
|
|
351
|
+
case 'exact':
|
|
352
|
+
case 'is_not':
|
|
353
|
+
for (const item of Array.isArray(value) ? value : [
|
|
354
|
+
value
|
|
355
|
+
])exactMatchString(item);
|
|
356
|
+
return;
|
|
357
|
+
case 'is_set':
|
|
358
|
+
case 'is_not_set':
|
|
359
|
+
case 'icontains':
|
|
360
|
+
case 'not_icontains':
|
|
361
|
+
case 'starts_with':
|
|
362
|
+
case 'not_starts_with':
|
|
363
|
+
case 'ends_with':
|
|
364
|
+
case 'not_ends_with':
|
|
365
|
+
case 'regex':
|
|
366
|
+
case 'not_regex':
|
|
367
|
+
case 'gt':
|
|
368
|
+
case 'gte':
|
|
369
|
+
case 'lt':
|
|
370
|
+
case 'lte':
|
|
371
|
+
return;
|
|
372
|
+
case 'is_date_after':
|
|
373
|
+
case 'is_date_before':
|
|
374
|
+
parseDateFilter(value);
|
|
375
|
+
return;
|
|
376
|
+
case 'semver_eq':
|
|
377
|
+
case 'semver_neq':
|
|
378
|
+
case 'semver_gt':
|
|
379
|
+
case 'semver_gte':
|
|
380
|
+
case 'semver_lt':
|
|
381
|
+
case 'semver_lte':
|
|
382
|
+
parseFeatureFlagSemver(String(value), parsingPolicy);
|
|
383
|
+
return;
|
|
384
|
+
case 'semver_tilde':
|
|
385
|
+
computeTildeBounds(String(value), parsingPolicy);
|
|
386
|
+
return;
|
|
387
|
+
case 'semver_caret':
|
|
388
|
+
computeCaretBounds(String(value), parsingPolicy);
|
|
389
|
+
return;
|
|
390
|
+
case 'semver_wildcard':
|
|
391
|
+
computeWildcardBounds(String(value), parsingPolicy);
|
|
392
|
+
return;
|
|
393
|
+
default:
|
|
394
|
+
throw new InconclusiveMatchError(`Unknown operator: ${property.operator}`);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
325
397
|
function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
398
|
+
try {
|
|
399
|
+
return matchPropertyValue(property, propertyValues, options);
|
|
400
|
+
} catch (e) {
|
|
401
|
+
if (e instanceof InconclusiveMatchError && 'missing_context' === e.reason) assertFeatureFlagFilterSupported(property, options);
|
|
402
|
+
throw e;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
function matchPropertyValue(property, propertyValues, options) {
|
|
326
406
|
const key = property.key;
|
|
327
407
|
const value = property.value;
|
|
328
408
|
const operator = property.operator || 'exact';
|
|
@@ -331,30 +411,31 @@ function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
|
331
411
|
if (hasProperty) {
|
|
332
412
|
if ('is_not_set' === operator) return false;
|
|
333
413
|
else if ('is_set' === operator) return true;
|
|
334
|
-
} else throw new InconclusiveMatchError(`Property ${key} not found in propertyValues
|
|
414
|
+
} else throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`, 'missing_context');
|
|
335
415
|
const overrideValue = propertyValues[key];
|
|
336
416
|
if (void 0 === overrideValue) {
|
|
337
417
|
options.warnFunction?.(`Property ${key} cannot have a value of undefined with the ${operator} operator`);
|
|
338
|
-
|
|
418
|
+
throw new InconclusiveMatchError(`Property ${key} is undefined in propertyValues`);
|
|
339
419
|
}
|
|
340
|
-
if (null === overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)
|
|
420
|
+
if (null === overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {
|
|
341
421
|
options.warnFunction?.(`Property ${key} cannot have a value of null with the ${operator} operator`);
|
|
342
422
|
return false;
|
|
343
423
|
}
|
|
344
424
|
const computeExactMatch = (target, actual)=>{
|
|
345
425
|
if (2 !== options.propertyMatchingVersion && isTruthyOrFalsyPropertyValue(target) || Array.isArray(target) && 0 === target.length) {
|
|
346
|
-
assertJsonRepresentable(actual);
|
|
426
|
+
readContextValue(()=>assertJsonRepresentable(actual));
|
|
347
427
|
return isTruthyPropertyValue(target) === isTruthyPropertyValue(actual);
|
|
348
428
|
}
|
|
349
429
|
if (2 === options.propertyMatchingVersion && 'number' == typeof actual && isTruthyOrFalsyPropertyValue(target)) {
|
|
350
|
-
assertJsonRepresentable(actual);
|
|
430
|
+
readContextValue(()=>assertJsonRepresentable(actual));
|
|
351
431
|
return false;
|
|
352
432
|
}
|
|
353
433
|
if (Array.isArray(target)) {
|
|
354
|
-
const actualString = exactMatchString(actual).toLowerCase();
|
|
434
|
+
const actualString = readContextValue(()=>exactMatchString(actual)).toLowerCase();
|
|
355
435
|
return target.some((item)=>exactMatchString(item).toLowerCase() === actualString);
|
|
356
436
|
}
|
|
357
|
-
|
|
437
|
+
const targetString = exactMatchString(target).toLowerCase();
|
|
438
|
+
return targetString === readContextValue(()=>exactMatchString(actual)).toLowerCase();
|
|
358
439
|
};
|
|
359
440
|
const compare = (lhs, rhs, comparisonOperator)=>{
|
|
360
441
|
if ('gt' === comparisonOperator) return lhs > rhs;
|
|
@@ -363,6 +444,15 @@ function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
|
363
444
|
if ('lte' === comparisonOperator) return lhs <= rhs;
|
|
364
445
|
throw new Error(`Invalid operator: ${comparisonOperator}`);
|
|
365
446
|
};
|
|
447
|
+
const parseContextSemver = ()=>readContextValue(()=>parseFeatureFlagSemver(String(overrideValue), parsingPolicy));
|
|
448
|
+
const compareContextSemverToFilter = ()=>{
|
|
449
|
+
const filterParsed = parseFeatureFlagSemver(String(value), parsingPolicy);
|
|
450
|
+
return compareSemverTuples(parseContextSemver(), filterParsed);
|
|
451
|
+
};
|
|
452
|
+
const isContextSemverWithin = ({ lower, upper })=>{
|
|
453
|
+
const overrideParsed = parseContextSemver();
|
|
454
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
455
|
+
};
|
|
366
456
|
switch(operator){
|
|
367
457
|
case 'exact':
|
|
368
458
|
return computeExactMatch(value, overrideValue);
|
|
@@ -399,42 +489,28 @@ function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
|
399
489
|
case 'is_date_after':
|
|
400
490
|
case 'is_date_before':
|
|
401
491
|
{
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
if (null == parsedDate) parsedDate = convertToDateTime(value);
|
|
405
|
-
const overrideDate = convertToDateTime(overrideValue);
|
|
492
|
+
const parsedDate = parseDateFilter(value);
|
|
493
|
+
const overrideDate = readContextValue(()=>convertToDateTime(overrideValue));
|
|
406
494
|
return 'is_date_before' === operator ? overrideDate < parsedDate : overrideDate > parsedDate;
|
|
407
495
|
}
|
|
408
496
|
case 'semver_eq':
|
|
409
|
-
return 0 ===
|
|
497
|
+
return 0 === compareContextSemverToFilter();
|
|
410
498
|
case 'semver_neq':
|
|
411
|
-
return 0 !==
|
|
499
|
+
return 0 !== compareContextSemverToFilter();
|
|
412
500
|
case 'semver_gt':
|
|
413
|
-
return
|
|
501
|
+
return compareContextSemverToFilter() > 0;
|
|
414
502
|
case 'semver_gte':
|
|
415
|
-
return
|
|
503
|
+
return compareContextSemverToFilter() >= 0;
|
|
416
504
|
case 'semver_lt':
|
|
417
|
-
return
|
|
505
|
+
return compareContextSemverToFilter() < 0;
|
|
418
506
|
case 'semver_lte':
|
|
419
|
-
return
|
|
507
|
+
return compareContextSemverToFilter() <= 0;
|
|
420
508
|
case 'semver_tilde':
|
|
421
|
-
|
|
422
|
-
const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
|
|
423
|
-
const { lower, upper } = computeTildeBounds(String(value), parsingPolicy);
|
|
424
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
425
|
-
}
|
|
509
|
+
return isContextSemverWithin(computeTildeBounds(String(value), parsingPolicy));
|
|
426
510
|
case 'semver_caret':
|
|
427
|
-
|
|
428
|
-
const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
|
|
429
|
-
const { lower, upper } = computeCaretBounds(String(value), parsingPolicy);
|
|
430
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
431
|
-
}
|
|
511
|
+
return isContextSemverWithin(computeCaretBounds(String(value), parsingPolicy));
|
|
432
512
|
case 'semver_wildcard':
|
|
433
|
-
|
|
434
|
-
const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
|
|
435
|
-
const { lower, upper } = computeWildcardBounds(String(value), parsingPolicy);
|
|
436
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
437
|
-
}
|
|
513
|
+
return isContextSemverWithin(computeWildcardBounds(String(value), parsingPolicy));
|
|
438
514
|
default:
|
|
439
515
|
throw new InconclusiveMatchError(`Unknown operator: ${operator}`);
|
|
440
516
|
}
|
|
@@ -485,6 +561,7 @@ function resolveFeatureFlagPayload(payloads, flagValue) {
|
|
|
485
561
|
return null == payload ? null : (0, external_featureFlagUtils_js_namespaceObject.parsePayload)(payload);
|
|
486
562
|
}
|
|
487
563
|
exports.InconclusiveMatchError = __webpack_exports__.InconclusiveMatchError;
|
|
564
|
+
exports.assertFeatureFlagFilterSupported = __webpack_exports__.assertFeatureFlagFilterSupported;
|
|
488
565
|
exports.getFeatureFlagHash = __webpack_exports__.getFeatureFlagHash;
|
|
489
566
|
exports.getFeatureFlagVariant = __webpack_exports__.getFeatureFlagVariant;
|
|
490
567
|
exports.getFeatureFlagVariantLookupTable = __webpack_exports__.getFeatureFlagVariantLookupTable;
|
|
@@ -496,6 +573,7 @@ exports.relativeDateParseForFeatureFlagMatching = __webpack_exports__.relativeDa
|
|
|
496
573
|
exports.resolveFeatureFlagPayload = __webpack_exports__.resolveFeatureFlagPayload;
|
|
497
574
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
498
575
|
"InconclusiveMatchError",
|
|
576
|
+
"assertFeatureFlagFilterSupported",
|
|
499
577
|
"getFeatureFlagHash",
|
|
500
578
|
"getFeatureFlagVariant",
|
|
501
579
|
"getFeatureFlagVariantLookupTable",
|
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
import { parsePayload } from "./featureFlagUtils.mjs";
|
|
2
2
|
const NULL_VALUES_ALLOWED_OPERATORS = [
|
|
3
|
+
'exact',
|
|
3
4
|
'is_not',
|
|
4
|
-
'
|
|
5
|
+
'icontains',
|
|
6
|
+
'not_icontains',
|
|
7
|
+
'starts_with',
|
|
8
|
+
'not_starts_with',
|
|
9
|
+
'ends_with',
|
|
10
|
+
'not_ends_with',
|
|
11
|
+
'regex',
|
|
12
|
+
'not_regex'
|
|
5
13
|
];
|
|
6
14
|
const LONG_SCALE = 0xfffffffffffffff;
|
|
7
15
|
class InconclusiveMatchError extends Error {
|
|
8
|
-
constructor(message){
|
|
16
|
+
constructor(message, reason = 'unsupported_definition'){
|
|
9
17
|
super(message);
|
|
10
18
|
this.name = this.constructor.name;
|
|
19
|
+
this.reason = reason;
|
|
11
20
|
Object.setPrototypeOf(this, InconclusiveMatchError.prototype);
|
|
12
21
|
}
|
|
13
22
|
}
|
|
23
|
+
function readContextValue(read) {
|
|
24
|
+
try {
|
|
25
|
+
return read();
|
|
26
|
+
} catch (e) {
|
|
27
|
+
if (e instanceof InconclusiveMatchError) throw new InconclusiveMatchError(e.message, 'missing_context');
|
|
28
|
+
throw e;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
14
31
|
function isTruthyOrFalsyPropertyValue(value) {
|
|
15
32
|
if ('boolean' == typeof value) return true;
|
|
16
33
|
if ('string' == typeof value) {
|
|
@@ -281,7 +298,69 @@ function relativeDateParseForFeatureFlagMatching(value) {
|
|
|
281
298
|
}
|
|
282
299
|
return parsedDt;
|
|
283
300
|
}
|
|
301
|
+
function parseDateFilter(value) {
|
|
302
|
+
if ('boolean' == typeof value) throw new InconclusiveMatchError('Date operations cannot be performed on boolean values');
|
|
303
|
+
return relativeDateParseForFeatureFlagMatching(String(value)) ?? convertToDateTime(value);
|
|
304
|
+
}
|
|
305
|
+
function assertFeatureFlagFilterSupported(property, options = {}) {
|
|
306
|
+
const value = property.value;
|
|
307
|
+
const parsingPolicy = options.semverParsingPolicy ?? 'strict';
|
|
308
|
+
switch(property.operator || 'exact'){
|
|
309
|
+
case 'exact':
|
|
310
|
+
case 'is_not':
|
|
311
|
+
for (const item of Array.isArray(value) ? value : [
|
|
312
|
+
value
|
|
313
|
+
])exactMatchString(item);
|
|
314
|
+
return;
|
|
315
|
+
case 'is_set':
|
|
316
|
+
case 'is_not_set':
|
|
317
|
+
case 'icontains':
|
|
318
|
+
case 'not_icontains':
|
|
319
|
+
case 'starts_with':
|
|
320
|
+
case 'not_starts_with':
|
|
321
|
+
case 'ends_with':
|
|
322
|
+
case 'not_ends_with':
|
|
323
|
+
case 'regex':
|
|
324
|
+
case 'not_regex':
|
|
325
|
+
case 'gt':
|
|
326
|
+
case 'gte':
|
|
327
|
+
case 'lt':
|
|
328
|
+
case 'lte':
|
|
329
|
+
return;
|
|
330
|
+
case 'is_date_after':
|
|
331
|
+
case 'is_date_before':
|
|
332
|
+
parseDateFilter(value);
|
|
333
|
+
return;
|
|
334
|
+
case 'semver_eq':
|
|
335
|
+
case 'semver_neq':
|
|
336
|
+
case 'semver_gt':
|
|
337
|
+
case 'semver_gte':
|
|
338
|
+
case 'semver_lt':
|
|
339
|
+
case 'semver_lte':
|
|
340
|
+
parseFeatureFlagSemver(String(value), parsingPolicy);
|
|
341
|
+
return;
|
|
342
|
+
case 'semver_tilde':
|
|
343
|
+
computeTildeBounds(String(value), parsingPolicy);
|
|
344
|
+
return;
|
|
345
|
+
case 'semver_caret':
|
|
346
|
+
computeCaretBounds(String(value), parsingPolicy);
|
|
347
|
+
return;
|
|
348
|
+
case 'semver_wildcard':
|
|
349
|
+
computeWildcardBounds(String(value), parsingPolicy);
|
|
350
|
+
return;
|
|
351
|
+
default:
|
|
352
|
+
throw new InconclusiveMatchError(`Unknown operator: ${property.operator}`);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
284
355
|
function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
356
|
+
try {
|
|
357
|
+
return matchPropertyValue(property, propertyValues, options);
|
|
358
|
+
} catch (e) {
|
|
359
|
+
if (e instanceof InconclusiveMatchError && 'missing_context' === e.reason) assertFeatureFlagFilterSupported(property, options);
|
|
360
|
+
throw e;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function matchPropertyValue(property, propertyValues, options) {
|
|
285
364
|
const key = property.key;
|
|
286
365
|
const value = property.value;
|
|
287
366
|
const operator = property.operator || 'exact';
|
|
@@ -290,30 +369,31 @@ function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
|
290
369
|
if (hasProperty) {
|
|
291
370
|
if ('is_not_set' === operator) return false;
|
|
292
371
|
else if ('is_set' === operator) return true;
|
|
293
|
-
} else throw new InconclusiveMatchError(`Property ${key} not found in propertyValues
|
|
372
|
+
} else throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`, 'missing_context');
|
|
294
373
|
const overrideValue = propertyValues[key];
|
|
295
374
|
if (void 0 === overrideValue) {
|
|
296
375
|
options.warnFunction?.(`Property ${key} cannot have a value of undefined with the ${operator} operator`);
|
|
297
|
-
|
|
376
|
+
throw new InconclusiveMatchError(`Property ${key} is undefined in propertyValues`);
|
|
298
377
|
}
|
|
299
|
-
if (null === overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)
|
|
378
|
+
if (null === overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {
|
|
300
379
|
options.warnFunction?.(`Property ${key} cannot have a value of null with the ${operator} operator`);
|
|
301
380
|
return false;
|
|
302
381
|
}
|
|
303
382
|
const computeExactMatch = (target, actual)=>{
|
|
304
383
|
if (2 !== options.propertyMatchingVersion && isTruthyOrFalsyPropertyValue(target) || Array.isArray(target) && 0 === target.length) {
|
|
305
|
-
assertJsonRepresentable(actual);
|
|
384
|
+
readContextValue(()=>assertJsonRepresentable(actual));
|
|
306
385
|
return isTruthyPropertyValue(target) === isTruthyPropertyValue(actual);
|
|
307
386
|
}
|
|
308
387
|
if (2 === options.propertyMatchingVersion && 'number' == typeof actual && isTruthyOrFalsyPropertyValue(target)) {
|
|
309
|
-
assertJsonRepresentable(actual);
|
|
388
|
+
readContextValue(()=>assertJsonRepresentable(actual));
|
|
310
389
|
return false;
|
|
311
390
|
}
|
|
312
391
|
if (Array.isArray(target)) {
|
|
313
|
-
const actualString = exactMatchString(actual).toLowerCase();
|
|
392
|
+
const actualString = readContextValue(()=>exactMatchString(actual)).toLowerCase();
|
|
314
393
|
return target.some((item)=>exactMatchString(item).toLowerCase() === actualString);
|
|
315
394
|
}
|
|
316
|
-
|
|
395
|
+
const targetString = exactMatchString(target).toLowerCase();
|
|
396
|
+
return targetString === readContextValue(()=>exactMatchString(actual)).toLowerCase();
|
|
317
397
|
};
|
|
318
398
|
const compare = (lhs, rhs, comparisonOperator)=>{
|
|
319
399
|
if ('gt' === comparisonOperator) return lhs > rhs;
|
|
@@ -322,6 +402,15 @@ function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
|
322
402
|
if ('lte' === comparisonOperator) return lhs <= rhs;
|
|
323
403
|
throw new Error(`Invalid operator: ${comparisonOperator}`);
|
|
324
404
|
};
|
|
405
|
+
const parseContextSemver = ()=>readContextValue(()=>parseFeatureFlagSemver(String(overrideValue), parsingPolicy));
|
|
406
|
+
const compareContextSemverToFilter = ()=>{
|
|
407
|
+
const filterParsed = parseFeatureFlagSemver(String(value), parsingPolicy);
|
|
408
|
+
return compareSemverTuples(parseContextSemver(), filterParsed);
|
|
409
|
+
};
|
|
410
|
+
const isContextSemverWithin = ({ lower, upper })=>{
|
|
411
|
+
const overrideParsed = parseContextSemver();
|
|
412
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
413
|
+
};
|
|
325
414
|
switch(operator){
|
|
326
415
|
case 'exact':
|
|
327
416
|
return computeExactMatch(value, overrideValue);
|
|
@@ -358,42 +447,28 @@ function matchFeatureFlagProperty(property, propertyValues, options = {}) {
|
|
|
358
447
|
case 'is_date_after':
|
|
359
448
|
case 'is_date_before':
|
|
360
449
|
{
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
if (null == parsedDate) parsedDate = convertToDateTime(value);
|
|
364
|
-
const overrideDate = convertToDateTime(overrideValue);
|
|
450
|
+
const parsedDate = parseDateFilter(value);
|
|
451
|
+
const overrideDate = readContextValue(()=>convertToDateTime(overrideValue));
|
|
365
452
|
return 'is_date_before' === operator ? overrideDate < parsedDate : overrideDate > parsedDate;
|
|
366
453
|
}
|
|
367
454
|
case 'semver_eq':
|
|
368
|
-
return 0 ===
|
|
455
|
+
return 0 === compareContextSemverToFilter();
|
|
369
456
|
case 'semver_neq':
|
|
370
|
-
return 0 !==
|
|
457
|
+
return 0 !== compareContextSemverToFilter();
|
|
371
458
|
case 'semver_gt':
|
|
372
|
-
return
|
|
459
|
+
return compareContextSemverToFilter() > 0;
|
|
373
460
|
case 'semver_gte':
|
|
374
|
-
return
|
|
461
|
+
return compareContextSemverToFilter() >= 0;
|
|
375
462
|
case 'semver_lt':
|
|
376
|
-
return
|
|
463
|
+
return compareContextSemverToFilter() < 0;
|
|
377
464
|
case 'semver_lte':
|
|
378
|
-
return
|
|
465
|
+
return compareContextSemverToFilter() <= 0;
|
|
379
466
|
case 'semver_tilde':
|
|
380
|
-
|
|
381
|
-
const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
|
|
382
|
-
const { lower, upper } = computeTildeBounds(String(value), parsingPolicy);
|
|
383
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
384
|
-
}
|
|
467
|
+
return isContextSemverWithin(computeTildeBounds(String(value), parsingPolicy));
|
|
385
468
|
case 'semver_caret':
|
|
386
|
-
|
|
387
|
-
const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
|
|
388
|
-
const { lower, upper } = computeCaretBounds(String(value), parsingPolicy);
|
|
389
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
390
|
-
}
|
|
469
|
+
return isContextSemverWithin(computeCaretBounds(String(value), parsingPolicy));
|
|
391
470
|
case 'semver_wildcard':
|
|
392
|
-
|
|
393
|
-
const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
|
|
394
|
-
const { lower, upper } = computeWildcardBounds(String(value), parsingPolicy);
|
|
395
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
396
|
-
}
|
|
471
|
+
return isContextSemverWithin(computeWildcardBounds(String(value), parsingPolicy));
|
|
397
472
|
default:
|
|
398
473
|
throw new InconclusiveMatchError(`Unknown operator: ${operator}`);
|
|
399
474
|
}
|
|
@@ -443,4 +518,4 @@ function resolveFeatureFlagPayload(payloads, flagValue) {
|
|
|
443
518
|
const payload = payloads[payloadKey] || null;
|
|
444
519
|
return null == payload ? null : parsePayload(payload);
|
|
445
520
|
}
|
|
446
|
-
export { InconclusiveMatchError, getFeatureFlagHash, getFeatureFlagVariant, getFeatureFlagVariantLookupTable, getHoldoutVariant, hashSHA1, matchFeatureFlagProperty, parseFeatureFlagSemver, relativeDateParseForFeatureFlagMatching, resolveFeatureFlagPayload };
|
|
521
|
+
export { InconclusiveMatchError, assertFeatureFlagFilterSupported, getFeatureFlagHash, getFeatureFlagVariant, getFeatureFlagVariantLookupTable, getHoldoutVariant, hashSHA1, matchFeatureFlagProperty, parseFeatureFlagSemver, relativeDateParseForFeatureFlagMatching, resolveFeatureFlagPayload };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { getFeatureFlagValue, getEnabledFromValue, getVariantFromValue, parsePayload, flagDetailsToResults, MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES, minimizeFlagCalledEventProperties, } from './featureFlagUtils';
|
|
2
|
-
export { getFeatureFlagHash, getFeatureFlagVariant, getFeatureFlagVariantLookupTable, getHoldoutVariant, hashSHA1, InconclusiveMatchError, matchFeatureFlagProperty, parseFeatureFlagSemver, relativeDateParseForFeatureFlagMatching, resolveFeatureFlagPayload, } from './featureFlagLocalEvaluation';
|
|
3
|
-
export type { FeatureFlagProperty, FeatureFlagPropertyValue, FeatureFlagSemverParsingPolicy, FeatureFlagVariant, FeatureFlagVariantLookupEntry, MatchFeatureFlagPropertyOptions, } from './featureFlagLocalEvaluation';
|
|
2
|
+
export { assertFeatureFlagFilterSupported, getFeatureFlagHash, getFeatureFlagVariant, getFeatureFlagVariantLookupTable, getHoldoutVariant, hashSHA1, InconclusiveMatchError, matchFeatureFlagProperty, parseFeatureFlagSemver, relativeDateParseForFeatureFlagMatching, resolveFeatureFlagPayload, } from './featureFlagLocalEvaluation';
|
|
3
|
+
export type { FeatureFlagProperty, FeatureFlagPropertyValue, FeatureFlagSemverParsingPolicy, FeatureFlagVariant, FeatureFlagVariantLookupEntry, MatchFeatureFlagPropertyOptions, UnresolvedFlagReason, } from './featureFlagLocalEvaluation';
|
|
4
4
|
export { gzipCompress, isGzipData, isGzipRequest, isGzipSupported, isNativeAsyncGzipError, isNativeAsyncGzipReadError, } from './gzip';
|
|
5
5
|
export * from './utils';
|
|
6
6
|
export * as ErrorTracking from './error-tracking';
|
|
@@ -1 +1 @@
|
|
|
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,EACpB,6CAA6C,EAC7C,iCAAiC,GAClC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,gCAAgC,EAChC,iBAAiB,EACjB,QAAQ,EACR,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,uCAAuC,EACvC,yBAAyB,GAC1B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,8BAA8B,EAC9B,kBAAkB,EAClB,6BAA6B,EAC7B,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -132,9 +132,10 @@ var __webpack_exports__ = {};
|
|
|
132
132
|
"getOtlpSeverityNumber",
|
|
133
133
|
"toOtlpKeyValueList",
|
|
134
134
|
"matchFeatureFlagProperty",
|
|
135
|
-
"
|
|
135
|
+
"assertFeatureFlagFilterSupported",
|
|
136
136
|
"parseFeatureFlagSemver",
|
|
137
137
|
"InconclusiveMatchError",
|
|
138
|
+
"PostHogMetrics",
|
|
138
139
|
"inertSpan",
|
|
139
140
|
"uuidv7",
|
|
140
141
|
"getLengthFromRules",
|
|
@@ -196,9 +197,10 @@ var __webpack_exports__ = {};
|
|
|
196
197
|
"getOtlpSeverityNumber",
|
|
197
198
|
"toOtlpKeyValueList",
|
|
198
199
|
"matchFeatureFlagProperty",
|
|
199
|
-
"
|
|
200
|
+
"assertFeatureFlagFilterSupported",
|
|
200
201
|
"parseFeatureFlagSemver",
|
|
201
202
|
"InconclusiveMatchError",
|
|
203
|
+
"PostHogMetrics",
|
|
202
204
|
"inertSpan",
|
|
203
205
|
"uuidv7",
|
|
204
206
|
"getLengthFromRules",
|
|
@@ -249,9 +251,10 @@ var __webpack_exports__ = {};
|
|
|
249
251
|
"getOtlpSeverityNumber",
|
|
250
252
|
"toOtlpKeyValueList",
|
|
251
253
|
"matchFeatureFlagProperty",
|
|
252
|
-
"
|
|
254
|
+
"assertFeatureFlagFilterSupported",
|
|
253
255
|
"parseFeatureFlagSemver",
|
|
254
256
|
"InconclusiveMatchError",
|
|
257
|
+
"PostHogMetrics",
|
|
255
258
|
"inertSpan",
|
|
256
259
|
"uuidv7",
|
|
257
260
|
"getLengthFromRules",
|
|
@@ -302,9 +305,10 @@ var __webpack_exports__ = {};
|
|
|
302
305
|
"getOtlpSeverityNumber",
|
|
303
306
|
"toOtlpKeyValueList",
|
|
304
307
|
"matchFeatureFlagProperty",
|
|
305
|
-
"
|
|
308
|
+
"assertFeatureFlagFilterSupported",
|
|
306
309
|
"parseFeatureFlagSemver",
|
|
307
310
|
"InconclusiveMatchError",
|
|
311
|
+
"PostHogMetrics",
|
|
308
312
|
"inertSpan",
|
|
309
313
|
"uuidv7",
|
|
310
314
|
"getLengthFromRules",
|
|
@@ -355,9 +359,10 @@ var __webpack_exports__ = {};
|
|
|
355
359
|
"getOtlpSeverityNumber",
|
|
356
360
|
"toOtlpKeyValueList",
|
|
357
361
|
"matchFeatureFlagProperty",
|
|
358
|
-
"
|
|
362
|
+
"assertFeatureFlagFilterSupported",
|
|
359
363
|
"parseFeatureFlagSemver",
|
|
360
364
|
"InconclusiveMatchError",
|
|
365
|
+
"PostHogMetrics",
|
|
361
366
|
"inertSpan",
|
|
362
367
|
"uuidv7",
|
|
363
368
|
"getLengthFromRules",
|
|
@@ -408,9 +413,10 @@ var __webpack_exports__ = {};
|
|
|
408
413
|
"getOtlpSeverityNumber",
|
|
409
414
|
"toOtlpKeyValueList",
|
|
410
415
|
"matchFeatureFlagProperty",
|
|
411
|
-
"
|
|
416
|
+
"assertFeatureFlagFilterSupported",
|
|
412
417
|
"parseFeatureFlagSemver",
|
|
413
418
|
"InconclusiveMatchError",
|
|
419
|
+
"PostHogMetrics",
|
|
414
420
|
"inertSpan",
|
|
415
421
|
"uuidv7",
|
|
416
422
|
"getLengthFromRules",
|
|
@@ -461,9 +467,10 @@ var __webpack_exports__ = {};
|
|
|
461
467
|
"getOtlpSeverityNumber",
|
|
462
468
|
"toOtlpKeyValueList",
|
|
463
469
|
"matchFeatureFlagProperty",
|
|
464
|
-
"
|
|
470
|
+
"assertFeatureFlagFilterSupported",
|
|
465
471
|
"parseFeatureFlagSemver",
|
|
466
472
|
"InconclusiveMatchError",
|
|
473
|
+
"PostHogMetrics",
|
|
467
474
|
"inertSpan",
|
|
468
475
|
"uuidv7",
|
|
469
476
|
"getLengthFromRules",
|
|
@@ -509,6 +516,7 @@ var __webpack_exports__ = {};
|
|
|
509
516
|
PostHogMetrics: ()=>_metrics__rspack_import_9.PostHogMetrics,
|
|
510
517
|
PostHogTraces: ()=>_traces__rspack_import_10.PostHogTraces,
|
|
511
518
|
SyncSpanContextManager: ()=>_traces_context__rspack_import_11.SyncSpanContextManager,
|
|
519
|
+
assertFeatureFlagFilterSupported: ()=>_featureFlagLocalEvaluation__rspack_import_1.assertFeatureFlagFilterSupported,
|
|
512
520
|
buildMetricsResourceAttributes: ()=>_metrics__rspack_import_9.buildMetricsResourceAttributes,
|
|
513
521
|
buildOtlpLogRecord: ()=>_logs_logs_utils__rspack_import_5.buildOtlpLogRecord,
|
|
514
522
|
buildOtlpLogsPayload: ()=>_logs_logs_utils__rspack_import_5.buildOtlpLogsPayload,
|
|
@@ -558,6 +566,7 @@ exports.PostHogLogs = __webpack_exports__.PostHogLogs;
|
|
|
558
566
|
exports.PostHogMetrics = __webpack_exports__.PostHogMetrics;
|
|
559
567
|
exports.PostHogTraces = __webpack_exports__.PostHogTraces;
|
|
560
568
|
exports.SyncSpanContextManager = __webpack_exports__.SyncSpanContextManager;
|
|
569
|
+
exports.assertFeatureFlagFilterSupported = __webpack_exports__.assertFeatureFlagFilterSupported;
|
|
561
570
|
exports.buildMetricsResourceAttributes = __webpack_exports__.buildMetricsResourceAttributes;
|
|
562
571
|
exports.buildOtlpLogRecord = __webpack_exports__.buildOtlpLogRecord;
|
|
563
572
|
exports.buildOtlpLogsPayload = __webpack_exports__.buildOtlpLogsPayload;
|
|
@@ -606,6 +615,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
606
615
|
"PostHogMetrics",
|
|
607
616
|
"PostHogTraces",
|
|
608
617
|
"SyncSpanContextManager",
|
|
618
|
+
"assertFeatureFlagFilterSupported",
|
|
609
619
|
"buildMetricsResourceAttributes",
|
|
610
620
|
"buildOtlpLogRecord",
|
|
611
621
|
"buildOtlpLogsPayload",
|
|
@@ -7,7 +7,7 @@ export * from "./privacy.mjs";
|
|
|
7
7
|
export * from "./tracing-headers.mjs";
|
|
8
8
|
export * from "./types.mjs";
|
|
9
9
|
export { MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getVariantFromValue, minimizeFlagCalledEventProperties, parsePayload } from "./featureFlagUtils.mjs";
|
|
10
|
-
export { InconclusiveMatchError, getFeatureFlagHash, getFeatureFlagVariant, getFeatureFlagVariantLookupTable, getHoldoutVariant, hashSHA1, matchFeatureFlagProperty, parseFeatureFlagSemver, relativeDateParseForFeatureFlagMatching, resolveFeatureFlagPayload } from "./featureFlagLocalEvaluation.mjs";
|
|
10
|
+
export { InconclusiveMatchError, assertFeatureFlagFilterSupported, getFeatureFlagHash, getFeatureFlagVariant, getFeatureFlagVariantLookupTable, getHoldoutVariant, hashSHA1, matchFeatureFlagProperty, parseFeatureFlagSemver, relativeDateParseForFeatureFlagMatching, resolveFeatureFlagPayload } from "./featureFlagLocalEvaluation.mjs";
|
|
11
11
|
export { gzipCompress, isGzipData, isGzipRequest, isGzipSupported, isNativeAsyncGzipError, isNativeAsyncGzipReadError } from "./gzip.mjs";
|
|
12
12
|
export { buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, getOtlpSeverityNumber, getOtlpSeverityText } from "./logs/logs-utils.mjs";
|
|
13
13
|
export { toOtlpAnyValue, toOtlpKeyValueList } from "./utils/otlp-any-value.mjs";
|