posthog-node 5.27.0 → 5.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/feature-flags/feature-flags.d.ts +12 -1
- package/dist/extensions/feature-flags/feature-flags.d.ts.map +1 -1
- package/dist/extensions/feature-flags/feature-flags.js +160 -0
- package/dist/extensions/feature-flags/feature-flags.mjs +158 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +1 -1
- package/src/extensions/feature-flags/feature-flags.ts +166 -0
- package/src/version.ts +1 -1
|
@@ -139,6 +139,17 @@ declare class FeatureFlagsPoller {
|
|
|
139
139
|
stopPoller(timeoutMs?: number): Promise<void>;
|
|
140
140
|
}
|
|
141
141
|
declare function matchProperty(property: FeatureFlagCondition['properties'][number], propertyValues: Record<string, any>, warnFunction?: (msg: string) => void): boolean;
|
|
142
|
+
type SemverTuple = [number, number, number];
|
|
143
|
+
/**
|
|
144
|
+
* Parse a version string into a [major, minor, patch] tuple.
|
|
145
|
+
* - Strips leading/trailing whitespace
|
|
146
|
+
* - Strips 'v' or 'V' prefix
|
|
147
|
+
* - Strips pre-release and build metadata (-alpha, +build)
|
|
148
|
+
* - Defaults missing components to 0
|
|
149
|
+
* - Ignores extra components beyond the third
|
|
150
|
+
* - Throws InconclusiveMatchError for invalid input
|
|
151
|
+
*/
|
|
152
|
+
declare function parseSemver(value: string): SemverTuple;
|
|
142
153
|
declare function relativeDateParseForFeatureFlagMatching(value: string): Date | null;
|
|
143
|
-
export { FeatureFlagsPoller, matchProperty, relativeDateParseForFeatureFlagMatching, InconclusiveMatchError, RequiresServerEvaluation, ClientError, };
|
|
154
|
+
export { FeatureFlagsPoller, matchProperty, relativeDateParseForFeatureFlagMatching, parseSemver, InconclusiveMatchError, RequiresServerEvaluation, ClientError, };
|
|
144
155
|
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/feature-flags.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmC,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACtH,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAG1G,OAAO,EAAE,2BAA2B,EAA2B,MAAM,SAAS,CAAA;AAQ9E,cAAM,WAAY,SAAQ,KAAK;gBACjB,OAAO,EAAE,MAAM;CAO5B;AAED,cAAM,sBAAuB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAS5B;AAED,cAAM,wBAAyB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAS5B;AAED,KAAK,yBAAyB,GAAG;IAC/B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACpF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACzC,aAAa,CAAC,EAAE,2BAA2B,CAAA;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACpD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAClD,CAAA;AAED,KAAK,4BAA4B,GAAG;IAClC,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,cAAM,kBAAkB;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACtC,sBAAsB,EAAE,OAAO,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IACvB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACnF,SAAS,EAAE,OAAO,CAAQ;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACzC,6BAA6B,EAAE,OAAO,CAAQ;IAC9C,YAAY,EAAE,MAAM,CAAI;IACxB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,aAAa,CAAC,CAA6B;IACnD,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,kBAAkB,CAAC,CAAQ;IACnC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,uBAAuB,CAAC,CAAQ;gBAE5B,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,OAAO,EACP,IAAI,EACJ,aAAa,EACb,GAAG,OAAO,EACX,EAAE,yBAAyB;IAqB5B,KAAK,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI;IAIpC,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,uBAAuB;IAgBzB,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACnC,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC1C,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM,GACxD,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA8BlC,sBAAsB,CAC1B,iBAAiB,EAAE,4BAA4B,EAC/C,4BAA4B,CAAC,EAAE,MAAM,EAAE,GACtC,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;QAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClC,eAAe,EAAE,OAAO,CAAA;KACzB,CAAC;IAyCI,4BAA4B,CAChC,IAAI,EAAE,kBAAkB,EACxB,iBAAiB,EAAE,4BAA4B,EAC/C,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC;QACT,KAAK,EAAE,gBAAgB,CAAA;QACvB,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAA;KACzB,CAAC;YA2BY,uBAAuB;IA+DrC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,qBAAqB;YA+Bf,sBAAsB;IAwEpC,OAAO,CAAC,4BAA4B;IAkB9B,0BAA0B,CAC9B,IAAI,EAAE,kBAAkB,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,iBAAiB,EAAE,4BAA4B,GAC9C,OAAO,CAAC,gBAAgB,CAAC;IA2CtB,gBAAgB,CACpB,IAAI,EAAE,kBAAkB,EACxB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,oBAAoB,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,iBAAiB,EAAE,4BAA4B,GAC9C,OAAO,CAAC,OAAO,CAAC;IAmCb,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAYjH,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE;IAkBnG;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;;;OAIG;IACH,OAAO,CAAC,kCAAkC;IAoB1C;;;OAGG;YACW,aAAa;IAqBrB,gBAAgB,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1D;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;;OAGG;IACH,0BAA0B,IAAI,MAAM,GAAG,SAAS;IAIhD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAQpB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMd,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8JxC,OAAO,CAAC,+BAA+B;IAoBvC,8BAA8B,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAyBzD,UAAU,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB3D;AAWD,iBAAS,aAAa,CACpB,QAAQ,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EACpD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAoJT;AAoJD,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE3C;;;;;;;;GAQG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA2B/C;AAsGD,iBAAS,uCAAuC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAmC3E;AAED,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,uCAAuC,EACvC,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,WAAW,GACZ,CAAA"}
|
|
@@ -25,6 +25,7 @@ var __webpack_exports__ = {};
|
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
matchProperty: ()=>matchProperty,
|
|
28
|
+
parseSemver: ()=>parseSemver,
|
|
28
29
|
ClientError: ()=>ClientError,
|
|
29
30
|
relativeDateParseForFeatureFlagMatching: ()=>relativeDateParseForFeatureFlagMatching,
|
|
30
31
|
InconclusiveMatchError: ()=>InconclusiveMatchError,
|
|
@@ -547,6 +548,54 @@ function matchProperty(property, propertyValues, warnFunction) {
|
|
|
547
548
|
].includes(operator)) return overrideDate < parsedDate;
|
|
548
549
|
return overrideDate > parsedDate;
|
|
549
550
|
}
|
|
551
|
+
case 'semver_eq':
|
|
552
|
+
{
|
|
553
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
554
|
+
return 0 === cmp;
|
|
555
|
+
}
|
|
556
|
+
case 'semver_neq':
|
|
557
|
+
{
|
|
558
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
559
|
+
return 0 !== cmp;
|
|
560
|
+
}
|
|
561
|
+
case 'semver_gt':
|
|
562
|
+
{
|
|
563
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
564
|
+
return cmp > 0;
|
|
565
|
+
}
|
|
566
|
+
case 'semver_gte':
|
|
567
|
+
{
|
|
568
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
569
|
+
return cmp >= 0;
|
|
570
|
+
}
|
|
571
|
+
case 'semver_lt':
|
|
572
|
+
{
|
|
573
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
574
|
+
return cmp < 0;
|
|
575
|
+
}
|
|
576
|
+
case 'semver_lte':
|
|
577
|
+
{
|
|
578
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
579
|
+
return cmp <= 0;
|
|
580
|
+
}
|
|
581
|
+
case 'semver_tilde':
|
|
582
|
+
{
|
|
583
|
+
const overrideParsed = parseSemver(String(overrideValue));
|
|
584
|
+
const { lower, upper } = computeTildeBounds(String(value));
|
|
585
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
586
|
+
}
|
|
587
|
+
case 'semver_caret':
|
|
588
|
+
{
|
|
589
|
+
const overrideParsed = parseSemver(String(overrideValue));
|
|
590
|
+
const { lower, upper } = computeCaretBounds(String(value));
|
|
591
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
592
|
+
}
|
|
593
|
+
case 'semver_wildcard':
|
|
594
|
+
{
|
|
595
|
+
const overrideParsed = parseSemver(String(overrideValue));
|
|
596
|
+
const { lower, upper } = computeWildcardBounds(String(value));
|
|
597
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
598
|
+
}
|
|
550
599
|
default:
|
|
551
600
|
throw new InconclusiveMatchError(`Unknown operator: ${operator}`);
|
|
552
601
|
}
|
|
@@ -615,6 +664,115 @@ function isValidRegex(regex) {
|
|
|
615
664
|
return false;
|
|
616
665
|
}
|
|
617
666
|
}
|
|
667
|
+
function parseSemver(value) {
|
|
668
|
+
const text = String(value).trim().replace(/^[vV]/, '');
|
|
669
|
+
const baseVersion = text.split('-')[0].split('+')[0];
|
|
670
|
+
if (!baseVersion || baseVersion.startsWith('.')) throw new InconclusiveMatchError(`Invalid semver: ${value}`);
|
|
671
|
+
const parts = baseVersion.split('.');
|
|
672
|
+
const parsePart = (part)=>{
|
|
673
|
+
if (void 0 === part || '' === part) return 0;
|
|
674
|
+
if (!/^\d+$/.test(part)) throw new InconclusiveMatchError(`Invalid semver: ${value}`);
|
|
675
|
+
return parseInt(part, 10);
|
|
676
|
+
};
|
|
677
|
+
const major = parsePart(parts[0]);
|
|
678
|
+
const minor = parsePart(parts[1]);
|
|
679
|
+
const patch = parsePart(parts[2]);
|
|
680
|
+
return [
|
|
681
|
+
major,
|
|
682
|
+
minor,
|
|
683
|
+
patch
|
|
684
|
+
];
|
|
685
|
+
}
|
|
686
|
+
function compareSemverTuples(a, b) {
|
|
687
|
+
for(let i = 0; i < 3; i++){
|
|
688
|
+
if (a[i] < b[i]) return -1;
|
|
689
|
+
if (a[i] > b[i]) return 1;
|
|
690
|
+
}
|
|
691
|
+
return 0;
|
|
692
|
+
}
|
|
693
|
+
function computeTildeBounds(value) {
|
|
694
|
+
const parsed = parseSemver(value);
|
|
695
|
+
const lower = [
|
|
696
|
+
parsed[0],
|
|
697
|
+
parsed[1],
|
|
698
|
+
parsed[2]
|
|
699
|
+
];
|
|
700
|
+
const upper = [
|
|
701
|
+
parsed[0],
|
|
702
|
+
parsed[1] + 1,
|
|
703
|
+
0
|
|
704
|
+
];
|
|
705
|
+
return {
|
|
706
|
+
lower,
|
|
707
|
+
upper
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
function computeCaretBounds(value) {
|
|
711
|
+
const parsed = parseSemver(value);
|
|
712
|
+
const [major, minor, patch] = parsed;
|
|
713
|
+
const lower = [
|
|
714
|
+
major,
|
|
715
|
+
minor,
|
|
716
|
+
patch
|
|
717
|
+
];
|
|
718
|
+
let upper;
|
|
719
|
+
upper = major > 0 ? [
|
|
720
|
+
major + 1,
|
|
721
|
+
0,
|
|
722
|
+
0
|
|
723
|
+
] : minor > 0 ? [
|
|
724
|
+
0,
|
|
725
|
+
minor + 1,
|
|
726
|
+
0
|
|
727
|
+
] : [
|
|
728
|
+
0,
|
|
729
|
+
0,
|
|
730
|
+
patch + 1
|
|
731
|
+
];
|
|
732
|
+
return {
|
|
733
|
+
lower,
|
|
734
|
+
upper
|
|
735
|
+
};
|
|
736
|
+
}
|
|
737
|
+
function computeWildcardBounds(value) {
|
|
738
|
+
const text = String(value).trim().replace(/^[vV]/, '');
|
|
739
|
+
const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, '');
|
|
740
|
+
if (!cleanedText) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
741
|
+
const parts = cleanedText.split('.');
|
|
742
|
+
const major = parseInt(parts[0], 10);
|
|
743
|
+
if (isNaN(major)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
744
|
+
let lower;
|
|
745
|
+
let upper;
|
|
746
|
+
if (1 === parts.length) {
|
|
747
|
+
lower = [
|
|
748
|
+
major,
|
|
749
|
+
0,
|
|
750
|
+
0
|
|
751
|
+
];
|
|
752
|
+
upper = [
|
|
753
|
+
major + 1,
|
|
754
|
+
0,
|
|
755
|
+
0
|
|
756
|
+
];
|
|
757
|
+
} else {
|
|
758
|
+
const minor = parseInt(parts[1], 10);
|
|
759
|
+
if (isNaN(minor)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
760
|
+
lower = [
|
|
761
|
+
major,
|
|
762
|
+
minor,
|
|
763
|
+
0
|
|
764
|
+
];
|
|
765
|
+
upper = [
|
|
766
|
+
major,
|
|
767
|
+
minor + 1,
|
|
768
|
+
0
|
|
769
|
+
];
|
|
770
|
+
}
|
|
771
|
+
return {
|
|
772
|
+
lower,
|
|
773
|
+
upper
|
|
774
|
+
};
|
|
775
|
+
}
|
|
618
776
|
function convertToDateTime(value) {
|
|
619
777
|
if (value instanceof Date) return value;
|
|
620
778
|
if ('string' == typeof value || 'number' == typeof value) {
|
|
@@ -650,6 +808,7 @@ exports.FeatureFlagsPoller = __webpack_exports__.FeatureFlagsPoller;
|
|
|
650
808
|
exports.InconclusiveMatchError = __webpack_exports__.InconclusiveMatchError;
|
|
651
809
|
exports.RequiresServerEvaluation = __webpack_exports__.RequiresServerEvaluation;
|
|
652
810
|
exports.matchProperty = __webpack_exports__.matchProperty;
|
|
811
|
+
exports.parseSemver = __webpack_exports__.parseSemver;
|
|
653
812
|
exports.relativeDateParseForFeatureFlagMatching = __webpack_exports__.relativeDateParseForFeatureFlagMatching;
|
|
654
813
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
655
814
|
"ClientError",
|
|
@@ -657,6 +816,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
657
816
|
"InconclusiveMatchError",
|
|
658
817
|
"RequiresServerEvaluation",
|
|
659
818
|
"matchProperty",
|
|
819
|
+
"parseSemver",
|
|
660
820
|
"relativeDateParseForFeatureFlagMatching"
|
|
661
821
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
662
822
|
Object.defineProperty(exports, '__esModule', {
|
|
@@ -514,6 +514,54 @@ function matchProperty(property, propertyValues, warnFunction) {
|
|
|
514
514
|
].includes(operator)) return overrideDate < parsedDate;
|
|
515
515
|
return overrideDate > parsedDate;
|
|
516
516
|
}
|
|
517
|
+
case 'semver_eq':
|
|
518
|
+
{
|
|
519
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
520
|
+
return 0 === cmp;
|
|
521
|
+
}
|
|
522
|
+
case 'semver_neq':
|
|
523
|
+
{
|
|
524
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
525
|
+
return 0 !== cmp;
|
|
526
|
+
}
|
|
527
|
+
case 'semver_gt':
|
|
528
|
+
{
|
|
529
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
530
|
+
return cmp > 0;
|
|
531
|
+
}
|
|
532
|
+
case 'semver_gte':
|
|
533
|
+
{
|
|
534
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
535
|
+
return cmp >= 0;
|
|
536
|
+
}
|
|
537
|
+
case 'semver_lt':
|
|
538
|
+
{
|
|
539
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
540
|
+
return cmp < 0;
|
|
541
|
+
}
|
|
542
|
+
case 'semver_lte':
|
|
543
|
+
{
|
|
544
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));
|
|
545
|
+
return cmp <= 0;
|
|
546
|
+
}
|
|
547
|
+
case 'semver_tilde':
|
|
548
|
+
{
|
|
549
|
+
const overrideParsed = parseSemver(String(overrideValue));
|
|
550
|
+
const { lower, upper } = computeTildeBounds(String(value));
|
|
551
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
552
|
+
}
|
|
553
|
+
case 'semver_caret':
|
|
554
|
+
{
|
|
555
|
+
const overrideParsed = parseSemver(String(overrideValue));
|
|
556
|
+
const { lower, upper } = computeCaretBounds(String(value));
|
|
557
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
558
|
+
}
|
|
559
|
+
case 'semver_wildcard':
|
|
560
|
+
{
|
|
561
|
+
const overrideParsed = parseSemver(String(overrideValue));
|
|
562
|
+
const { lower, upper } = computeWildcardBounds(String(value));
|
|
563
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
564
|
+
}
|
|
517
565
|
default:
|
|
518
566
|
throw new InconclusiveMatchError(`Unknown operator: ${operator}`);
|
|
519
567
|
}
|
|
@@ -582,6 +630,115 @@ function isValidRegex(regex) {
|
|
|
582
630
|
return false;
|
|
583
631
|
}
|
|
584
632
|
}
|
|
633
|
+
function parseSemver(value) {
|
|
634
|
+
const text = String(value).trim().replace(/^[vV]/, '');
|
|
635
|
+
const baseVersion = text.split('-')[0].split('+')[0];
|
|
636
|
+
if (!baseVersion || baseVersion.startsWith('.')) throw new InconclusiveMatchError(`Invalid semver: ${value}`);
|
|
637
|
+
const parts = baseVersion.split('.');
|
|
638
|
+
const parsePart = (part)=>{
|
|
639
|
+
if (void 0 === part || '' === part) return 0;
|
|
640
|
+
if (!/^\d+$/.test(part)) throw new InconclusiveMatchError(`Invalid semver: ${value}`);
|
|
641
|
+
return parseInt(part, 10);
|
|
642
|
+
};
|
|
643
|
+
const major = parsePart(parts[0]);
|
|
644
|
+
const minor = parsePart(parts[1]);
|
|
645
|
+
const patch = parsePart(parts[2]);
|
|
646
|
+
return [
|
|
647
|
+
major,
|
|
648
|
+
minor,
|
|
649
|
+
patch
|
|
650
|
+
];
|
|
651
|
+
}
|
|
652
|
+
function compareSemverTuples(a, b) {
|
|
653
|
+
for(let i = 0; i < 3; i++){
|
|
654
|
+
if (a[i] < b[i]) return -1;
|
|
655
|
+
if (a[i] > b[i]) return 1;
|
|
656
|
+
}
|
|
657
|
+
return 0;
|
|
658
|
+
}
|
|
659
|
+
function computeTildeBounds(value) {
|
|
660
|
+
const parsed = parseSemver(value);
|
|
661
|
+
const lower = [
|
|
662
|
+
parsed[0],
|
|
663
|
+
parsed[1],
|
|
664
|
+
parsed[2]
|
|
665
|
+
];
|
|
666
|
+
const upper = [
|
|
667
|
+
parsed[0],
|
|
668
|
+
parsed[1] + 1,
|
|
669
|
+
0
|
|
670
|
+
];
|
|
671
|
+
return {
|
|
672
|
+
lower,
|
|
673
|
+
upper
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
function computeCaretBounds(value) {
|
|
677
|
+
const parsed = parseSemver(value);
|
|
678
|
+
const [major, minor, patch] = parsed;
|
|
679
|
+
const lower = [
|
|
680
|
+
major,
|
|
681
|
+
minor,
|
|
682
|
+
patch
|
|
683
|
+
];
|
|
684
|
+
let upper;
|
|
685
|
+
upper = major > 0 ? [
|
|
686
|
+
major + 1,
|
|
687
|
+
0,
|
|
688
|
+
0
|
|
689
|
+
] : minor > 0 ? [
|
|
690
|
+
0,
|
|
691
|
+
minor + 1,
|
|
692
|
+
0
|
|
693
|
+
] : [
|
|
694
|
+
0,
|
|
695
|
+
0,
|
|
696
|
+
patch + 1
|
|
697
|
+
];
|
|
698
|
+
return {
|
|
699
|
+
lower,
|
|
700
|
+
upper
|
|
701
|
+
};
|
|
702
|
+
}
|
|
703
|
+
function computeWildcardBounds(value) {
|
|
704
|
+
const text = String(value).trim().replace(/^[vV]/, '');
|
|
705
|
+
const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, '');
|
|
706
|
+
if (!cleanedText) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
707
|
+
const parts = cleanedText.split('.');
|
|
708
|
+
const major = parseInt(parts[0], 10);
|
|
709
|
+
if (isNaN(major)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
710
|
+
let lower;
|
|
711
|
+
let upper;
|
|
712
|
+
if (1 === parts.length) {
|
|
713
|
+
lower = [
|
|
714
|
+
major,
|
|
715
|
+
0,
|
|
716
|
+
0
|
|
717
|
+
];
|
|
718
|
+
upper = [
|
|
719
|
+
major + 1,
|
|
720
|
+
0,
|
|
721
|
+
0
|
|
722
|
+
];
|
|
723
|
+
} else {
|
|
724
|
+
const minor = parseInt(parts[1], 10);
|
|
725
|
+
if (isNaN(minor)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
726
|
+
lower = [
|
|
727
|
+
major,
|
|
728
|
+
minor,
|
|
729
|
+
0
|
|
730
|
+
];
|
|
731
|
+
upper = [
|
|
732
|
+
major,
|
|
733
|
+
minor + 1,
|
|
734
|
+
0
|
|
735
|
+
];
|
|
736
|
+
}
|
|
737
|
+
return {
|
|
738
|
+
lower,
|
|
739
|
+
upper
|
|
740
|
+
};
|
|
741
|
+
}
|
|
585
742
|
function convertToDateTime(value) {
|
|
586
743
|
if (value instanceof Date) return value;
|
|
587
744
|
if ('string' == typeof value || 'number' == typeof value) {
|
|
@@ -612,4 +769,4 @@ function relativeDateParseForFeatureFlagMatching(value) {
|
|
|
612
769
|
return parsedDt;
|
|
613
770
|
}
|
|
614
771
|
}
|
|
615
|
-
export { ClientError, FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation, matchProperty, relativeDateParseForFeatureFlagMatching };
|
|
772
|
+
export { ClientError, FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation, matchProperty, parseSemver, relativeDateParseForFeatureFlagMatching };
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "5.27.
|
|
1
|
+
export declare const version = "5.27.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -26,7 +26,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
version: ()=>version
|
|
28
28
|
});
|
|
29
|
-
const version = '5.27.
|
|
29
|
+
const version = '5.27.1';
|
|
30
30
|
exports.version = __webpack_exports__.version;
|
|
31
31
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
32
32
|
"version"
|
package/dist/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const version = '5.27.
|
|
1
|
+
const version = '5.27.1';
|
|
2
2
|
export { version };
|
package/package.json
CHANGED
|
@@ -1082,6 +1082,45 @@ function matchProperty(
|
|
|
1082
1082
|
}
|
|
1083
1083
|
return overrideDate > parsedDate
|
|
1084
1084
|
}
|
|
1085
|
+
case 'semver_eq': {
|
|
1086
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)))
|
|
1087
|
+
return cmp === 0
|
|
1088
|
+
}
|
|
1089
|
+
case 'semver_neq': {
|
|
1090
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)))
|
|
1091
|
+
return cmp !== 0
|
|
1092
|
+
}
|
|
1093
|
+
case 'semver_gt': {
|
|
1094
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)))
|
|
1095
|
+
return cmp > 0
|
|
1096
|
+
}
|
|
1097
|
+
case 'semver_gte': {
|
|
1098
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)))
|
|
1099
|
+
return cmp >= 0
|
|
1100
|
+
}
|
|
1101
|
+
case 'semver_lt': {
|
|
1102
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)))
|
|
1103
|
+
return cmp < 0
|
|
1104
|
+
}
|
|
1105
|
+
case 'semver_lte': {
|
|
1106
|
+
const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)))
|
|
1107
|
+
return cmp <= 0
|
|
1108
|
+
}
|
|
1109
|
+
case 'semver_tilde': {
|
|
1110
|
+
const overrideParsed = parseSemver(String(overrideValue))
|
|
1111
|
+
const { lower, upper } = computeTildeBounds(String(value))
|
|
1112
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0
|
|
1113
|
+
}
|
|
1114
|
+
case 'semver_caret': {
|
|
1115
|
+
const overrideParsed = parseSemver(String(overrideValue))
|
|
1116
|
+
const { lower, upper } = computeCaretBounds(String(value))
|
|
1117
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0
|
|
1118
|
+
}
|
|
1119
|
+
case 'semver_wildcard': {
|
|
1120
|
+
const overrideParsed = parseSemver(String(overrideValue))
|
|
1121
|
+
const { lower, upper } = computeWildcardBounds(String(value))
|
|
1122
|
+
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0
|
|
1123
|
+
}
|
|
1085
1124
|
default:
|
|
1086
1125
|
throw new InconclusiveMatchError(`Unknown operator: ${operator}`)
|
|
1087
1126
|
}
|
|
@@ -1233,6 +1272,132 @@ function isValidRegex(regex: string): boolean {
|
|
|
1233
1272
|
}
|
|
1234
1273
|
}
|
|
1235
1274
|
|
|
1275
|
+
type SemverTuple = [number, number, number]
|
|
1276
|
+
|
|
1277
|
+
/**
|
|
1278
|
+
* Parse a version string into a [major, minor, patch] tuple.
|
|
1279
|
+
* - Strips leading/trailing whitespace
|
|
1280
|
+
* - Strips 'v' or 'V' prefix
|
|
1281
|
+
* - Strips pre-release and build metadata (-alpha, +build)
|
|
1282
|
+
* - Defaults missing components to 0
|
|
1283
|
+
* - Ignores extra components beyond the third
|
|
1284
|
+
* - Throws InconclusiveMatchError for invalid input
|
|
1285
|
+
*/
|
|
1286
|
+
function parseSemver(value: string): SemverTuple {
|
|
1287
|
+
const text = String(value).trim().replace(/^[vV]/, '')
|
|
1288
|
+
|
|
1289
|
+
// Strip pre-release and build metadata
|
|
1290
|
+
const baseVersion = text.split('-')[0].split('+')[0]
|
|
1291
|
+
|
|
1292
|
+
if (!baseVersion || baseVersion.startsWith('.')) {
|
|
1293
|
+
throw new InconclusiveMatchError(`Invalid semver: ${value}`)
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
const parts = baseVersion.split('.')
|
|
1297
|
+
|
|
1298
|
+
const parsePart = (part: string | undefined): number => {
|
|
1299
|
+
if (part === undefined || part === '') {
|
|
1300
|
+
return 0
|
|
1301
|
+
}
|
|
1302
|
+
if (!/^\d+$/.test(part)) {
|
|
1303
|
+
throw new InconclusiveMatchError(`Invalid semver: ${value}`)
|
|
1304
|
+
}
|
|
1305
|
+
return parseInt(part, 10)
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
const major = parsePart(parts[0])
|
|
1309
|
+
const minor = parsePart(parts[1])
|
|
1310
|
+
const patch = parsePart(parts[2])
|
|
1311
|
+
|
|
1312
|
+
return [major, minor, patch]
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1315
|
+
/**
|
|
1316
|
+
* Compare two semver tuples.
|
|
1317
|
+
* Returns -1 if a < b, 0 if a == b, 1 if a > b
|
|
1318
|
+
*/
|
|
1319
|
+
function compareSemverTuples(a: SemverTuple, b: SemverTuple): number {
|
|
1320
|
+
for (let i = 0; i < 3; i++) {
|
|
1321
|
+
if (a[i] < b[i]) return -1
|
|
1322
|
+
if (a[i] > b[i]) return 1
|
|
1323
|
+
}
|
|
1324
|
+
return 0
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
/**
|
|
1328
|
+
* Compute bounds for tilde operator: ~X.Y.Z means >=X.Y.Z and <X.(Y+1).0
|
|
1329
|
+
*/
|
|
1330
|
+
function computeTildeBounds(value: string): { lower: SemverTuple; upper: SemverTuple } {
|
|
1331
|
+
const parsed = parseSemver(value)
|
|
1332
|
+
const lower: SemverTuple = [parsed[0], parsed[1], parsed[2]]
|
|
1333
|
+
const upper: SemverTuple = [parsed[0], parsed[1] + 1, 0]
|
|
1334
|
+
return { lower, upper }
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
/**
|
|
1338
|
+
* Compute bounds for caret operator:
|
|
1339
|
+
* - ^X.Y.Z where X > 0: >=X.Y.Z <(X+1).0.0
|
|
1340
|
+
* - ^0.Y.Z where Y > 0: >=0.Y.Z <0.(Y+1).0
|
|
1341
|
+
* - ^0.0.Z: >=0.0.Z <0.0.(Z+1)
|
|
1342
|
+
*/
|
|
1343
|
+
function computeCaretBounds(value: string): { lower: SemverTuple; upper: SemverTuple } {
|
|
1344
|
+
const parsed = parseSemver(value)
|
|
1345
|
+
const [major, minor, patch] = parsed
|
|
1346
|
+
const lower: SemverTuple = [major, minor, patch]
|
|
1347
|
+
|
|
1348
|
+
let upper: SemverTuple
|
|
1349
|
+
if (major > 0) {
|
|
1350
|
+
upper = [major + 1, 0, 0]
|
|
1351
|
+
} else if (minor > 0) {
|
|
1352
|
+
upper = [0, minor + 1, 0]
|
|
1353
|
+
} else {
|
|
1354
|
+
upper = [0, 0, patch + 1]
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
return { lower, upper }
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
/**
|
|
1361
|
+
* Compute bounds for wildcard operator:
|
|
1362
|
+
* - "X.*" or "X" with wildcard: >=X.0.0 <(X+1).0.0
|
|
1363
|
+
* - "X.Y.*": >=X.Y.0 <X.(Y+1).0
|
|
1364
|
+
*/
|
|
1365
|
+
function computeWildcardBounds(value: string): { lower: SemverTuple; upper: SemverTuple } {
|
|
1366
|
+
const text = String(value).trim().replace(/^[vV]/, '')
|
|
1367
|
+
|
|
1368
|
+
// Remove trailing .* or *
|
|
1369
|
+
const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, '')
|
|
1370
|
+
|
|
1371
|
+
if (!cleanedText) {
|
|
1372
|
+
throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`)
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
const parts = cleanedText.split('.')
|
|
1376
|
+
const major = parseInt(parts[0], 10)
|
|
1377
|
+
if (isNaN(major)) {
|
|
1378
|
+
throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`)
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
let lower: SemverTuple
|
|
1382
|
+
let upper: SemverTuple
|
|
1383
|
+
|
|
1384
|
+
if (parts.length === 1) {
|
|
1385
|
+
// X.* pattern
|
|
1386
|
+
lower = [major, 0, 0]
|
|
1387
|
+
upper = [major + 1, 0, 0]
|
|
1388
|
+
} else {
|
|
1389
|
+
// X.Y.* pattern
|
|
1390
|
+
const minor = parseInt(parts[1], 10)
|
|
1391
|
+
if (isNaN(minor)) {
|
|
1392
|
+
throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`)
|
|
1393
|
+
}
|
|
1394
|
+
lower = [major, minor, 0]
|
|
1395
|
+
upper = [major, minor + 1, 0]
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
return { lower, upper }
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1236
1401
|
function convertToDateTime(value: FlagPropertyValue | Date): Date {
|
|
1237
1402
|
if (value instanceof Date) {
|
|
1238
1403
|
return value
|
|
@@ -1288,6 +1453,7 @@ export {
|
|
|
1288
1453
|
FeatureFlagsPoller,
|
|
1289
1454
|
matchProperty,
|
|
1290
1455
|
relativeDateParseForFeatureFlagMatching,
|
|
1456
|
+
parseSemver,
|
|
1291
1457
|
InconclusiveMatchError,
|
|
1292
1458
|
RequiresServerEvaluation,
|
|
1293
1459
|
ClientError,
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '5.27.
|
|
1
|
+
export const version = '5.27.1'
|