@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.
Files changed (44) hide show
  1. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.d.ts +13 -1
  2. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.d.ts.map +1 -1
  3. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.js +112 -34
  4. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.mjs +110 -35
  5. package/node_modules/@posthog/core/dist/index.d.ts +2 -2
  6. package/node_modules/@posthog/core/dist/index.d.ts.map +1 -1
  7. package/node_modules/@posthog/core/dist/index.js +17 -7
  8. package/node_modules/@posthog/core/dist/index.mjs +1 -1
  9. package/node_modules/@posthog/core/dist/posthog-core.d.ts.map +1 -1
  10. package/node_modules/@posthog/core/dist/posthog-core.js +1 -1
  11. package/node_modules/@posthog/core/dist/posthog-core.mjs +1 -1
  12. package/node_modules/@posthog/core/dist/types.d.ts +2 -0
  13. package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
  14. package/node_modules/@posthog/core/dist/types.js +1 -0
  15. package/node_modules/@posthog/core/dist/types.mjs +1 -0
  16. package/node_modules/@posthog/core/package.json +1 -1
  17. package/node_modules/@posthog/core/src/featureFlagLocalEvaluation.ts +160 -72
  18. package/node_modules/@posthog/core/src/index.ts +2 -0
  19. package/node_modules/@posthog/core/src/posthog-core.ts +3 -1
  20. package/node_modules/@posthog/core/src/types.ts +2 -0
  21. package/node_modules/@zuplo/core/package.json +1 -1
  22. package/node_modules/@zuplo/core/zeno.js +4 -4
  23. package/node_modules/@zuplo/graphql/package.json +1 -1
  24. package/node_modules/@zuplo/openapi-tools/package.json +1 -1
  25. package/node_modules/@zuplo/otel/package.json +1 -1
  26. package/node_modules/@zuplo/runtime/out/esm/{chunk-WTWRZT3M.js → chunk-N2ZQITZD.js} +96 -96
  27. package/node_modules/@zuplo/runtime/out/esm/chunk-N2ZQITZD.js.map +1 -0
  28. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  29. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  30. package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
  31. package/node_modules/@zuplo/runtime/out/types/index.d.ts +10 -14
  32. package/node_modules/@zuplo/runtime/package.json +1 -1
  33. package/node_modules/body-parser/README.md +17 -13
  34. package/node_modules/body-parser/lib/read.js +74 -57
  35. package/node_modules/body-parser/lib/types/json.js +11 -11
  36. package/node_modules/body-parser/lib/types/urlencoded.js +5 -5
  37. package/node_modules/body-parser/lib/utils.js +0 -15
  38. package/node_modules/body-parser/package.json +7 -12
  39. package/node_modules/on-finished/index.js +14 -2
  40. package/node_modules/on-finished/package.json +11 -7
  41. package/package.json +11 -11
  42. package/node_modules/@zuplo/runtime/out/esm/chunk-WTWRZT3M.js.map +0 -1
  43. package/node_modules/on-finished/HISTORY.md +0 -98
  44. /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
- constructor(message: string);
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;AASD,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF;AAsLD,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAa3C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,8BAAyC,GACvD,WAAW,CAeb;AAwED,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAmBlF;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAwKT;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5D;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,MAAW,EACjB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EACxE,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0B7B;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,6BAA6B,EAAE,CASjC;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAK7B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3E,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC7C,QAAQ,GAAG,IAAI,CAMjB"}
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
- 'is_set'
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
- return 'is_not' === operator;
418
+ throw new InconclusiveMatchError(`Property ${key} is undefined in propertyValues`);
339
419
  }
340
- if (null === overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator) && 'exact' !== operator && 'is_not' !== 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
- return exactMatchString(target).toLowerCase() === exactMatchString(actual).toLowerCase();
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
- if ('boolean' == typeof value) throw new InconclusiveMatchError('Date operations cannot be performed on boolean values');
403
- let parsedDate = relativeDateParseForFeatureFlagMatching(String(value));
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 === compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy));
497
+ return 0 === compareContextSemverToFilter();
410
498
  case 'semver_neq':
411
- return 0 !== compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy));
499
+ return 0 !== compareContextSemverToFilter();
412
500
  case 'semver_gt':
413
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) > 0;
501
+ return compareContextSemverToFilter() > 0;
414
502
  case 'semver_gte':
415
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) >= 0;
503
+ return compareContextSemverToFilter() >= 0;
416
504
  case 'semver_lt':
417
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) < 0;
505
+ return compareContextSemverToFilter() < 0;
418
506
  case 'semver_lte':
419
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) <= 0;
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
- 'is_set'
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
- return 'is_not' === operator;
376
+ throw new InconclusiveMatchError(`Property ${key} is undefined in propertyValues`);
298
377
  }
299
- if (null === overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator) && 'exact' !== operator && 'is_not' !== 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
- return exactMatchString(target).toLowerCase() === exactMatchString(actual).toLowerCase();
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
- if ('boolean' == typeof value) throw new InconclusiveMatchError('Date operations cannot be performed on boolean values');
362
- let parsedDate = relativeDateParseForFeatureFlagMatching(String(value));
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 === compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy));
455
+ return 0 === compareContextSemverToFilter();
369
456
  case 'semver_neq':
370
- return 0 !== compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy));
457
+ return 0 !== compareContextSemverToFilter();
371
458
  case 'semver_gt':
372
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) > 0;
459
+ return compareContextSemverToFilter() > 0;
373
460
  case 'semver_gte':
374
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) >= 0;
461
+ return compareContextSemverToFilter() >= 0;
375
462
  case 'semver_lt':
376
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) < 0;
463
+ return compareContextSemverToFilter() < 0;
377
464
  case 'semver_lte':
378
- return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) <= 0;
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":"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"}
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
- "PostHogMetrics",
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
- "PostHogMetrics",
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
- "PostHogMetrics",
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
- "PostHogMetrics",
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
- "PostHogMetrics",
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
- "PostHogMetrics",
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
- "PostHogMetrics",
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";