@posthog/convex 2.1.1 → 2.1.3
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/client/feature-flags/crypto.d.ts +1 -1
- package/dist/client/feature-flags/crypto.d.ts.map +1 -1
- package/dist/client/feature-flags/crypto.js +1 -10
- package/dist/client/feature-flags/crypto.js.map +1 -1
- package/dist/client/feature-flags/evaluator.d.ts +0 -1
- package/dist/client/feature-flags/evaluator.d.ts.map +1 -1
- package/dist/client/feature-flags/evaluator.js +5 -48
- package/dist/client/feature-flags/evaluator.js.map +1 -1
- package/dist/client/feature-flags/match-property.d.ts +2 -4
- package/dist/client/feature-flags/match-property.d.ts.map +1 -1
- package/dist/client/feature-flags/match-property.js +8 -237
- package/dist/client/feature-flags/match-property.js.map +1 -1
- package/dist/component/version.d.ts +1 -1
- package/dist/component/version.js +1 -1
- package/package.json +3 -3
- package/src/client/feature-flags/crypto.ts +1 -12
- package/src/client/feature-flags/evaluator.test.ts +2 -4
- package/src/client/feature-flags/evaluator.ts +7 -48
- package/src/client/feature-flags/match-property.test.ts +25 -27
- package/src/client/feature-flags/match-property.ts +9 -236
- package/src/component/version.ts +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { hashSHA1 } from '@posthog/core';
|
|
2
2
|
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/client/feature-flags/crypto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/client/feature-flags/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export async function hashSHA1(text) {
|
|
3
|
-
const subtle = globalThis.crypto?.subtle;
|
|
4
|
-
if (!subtle) {
|
|
5
|
-
throw new Error('SubtleCrypto API not available');
|
|
6
|
-
}
|
|
7
|
-
const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text));
|
|
8
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
9
|
-
return hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
10
|
-
}
|
|
1
|
+
export { hashSHA1 } from '@posthog/core';
|
|
11
2
|
//# sourceMappingURL=crypto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/client/feature-flags/crypto.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/client/feature-flags/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/client/feature-flags/evaluator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/client/feature-flags/evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getFeatureFlagHash, getFeatureFlagVariant, resolveFeatureFlagPayload } from '@posthog/core';
|
|
2
2
|
import { InconclusiveMatchError, RequiresServerEvaluation, matchCohort, matchProperty } from './match-property.js';
|
|
3
|
-
// Matches posthog-node's hashing constant exactly; the value is larger than Number.MAX_SAFE_INTEGER
|
|
4
|
-
// by design and we don't want the no-loss-of-precision rule to coerce it to a different number.
|
|
5
|
-
// eslint-disable-next-line no-loss-of-precision
|
|
6
|
-
const LONG_SCALE = 0xfffffffffffffff;
|
|
7
|
-
async function _hash(key, bucketingValue, salt = '') {
|
|
8
|
-
const hashString = await hashSHA1(`${key}.${bucketingValue}${salt}`);
|
|
9
|
-
return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE;
|
|
10
|
-
}
|
|
11
3
|
export class LocalFeatureFlagEvaluator {
|
|
12
4
|
flags;
|
|
13
5
|
flagsByKey;
|
|
@@ -166,31 +158,7 @@ export class LocalFeatureFlagEvaluator {
|
|
|
166
158
|
return distinctId;
|
|
167
159
|
}
|
|
168
160
|
getPayloadForValue(key, flagValue) {
|
|
169
|
-
|
|
170
|
-
return null;
|
|
171
|
-
let payload = null;
|
|
172
|
-
const payloads = this.flagsByKey[key]?.filters?.payloads;
|
|
173
|
-
if (!payloads)
|
|
174
|
-
return null;
|
|
175
|
-
if (typeof flagValue === 'boolean') {
|
|
176
|
-
payload = payloads[flagValue.toString()] || null;
|
|
177
|
-
}
|
|
178
|
-
else if (typeof flagValue === 'string') {
|
|
179
|
-
payload = payloads[flagValue] || null;
|
|
180
|
-
}
|
|
181
|
-
if (payload == null)
|
|
182
|
-
return null;
|
|
183
|
-
if (typeof payload === 'object')
|
|
184
|
-
return payload;
|
|
185
|
-
if (typeof payload === 'string') {
|
|
186
|
-
try {
|
|
187
|
-
return JSON.parse(payload);
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
return payload;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return payload;
|
|
161
|
+
return resolveFeatureFlagPayload(this.flagsByKey[key]?.filters?.payloads, flagValue);
|
|
194
162
|
}
|
|
195
163
|
async evaluateFlagDependency(property, ctx) {
|
|
196
164
|
const { evaluationCache } = ctx;
|
|
@@ -314,25 +282,14 @@ export class LocalFeatureFlagEvaluator {
|
|
|
314
282
|
if (rolloutPercentage == undefined)
|
|
315
283
|
return true;
|
|
316
284
|
}
|
|
317
|
-
if (rolloutPercentage != undefined &&
|
|
285
|
+
if (rolloutPercentage != undefined &&
|
|
286
|
+
(await getFeatureFlagHash(flag.key, bucketingValue)) > rolloutPercentage / 100.0) {
|
|
318
287
|
return false;
|
|
319
288
|
}
|
|
320
289
|
return true;
|
|
321
290
|
}
|
|
322
291
|
async getMatchingVariant(flag, bucketingValue) {
|
|
323
|
-
|
|
324
|
-
return this.variantLookupTable(flag).find((v) => hashValue >= v.valueMin && hashValue < v.valueMax)?.key;
|
|
325
|
-
}
|
|
326
|
-
variantLookupTable(flag) {
|
|
327
|
-
const table = [];
|
|
328
|
-
let valueMin = 0;
|
|
329
|
-
const multivariates = flag.filters?.multivariate?.variants || [];
|
|
330
|
-
for (const variant of multivariates) {
|
|
331
|
-
const valueMax = valueMin + variant.rollout_percentage / 100.0;
|
|
332
|
-
table.push({ valueMin, valueMax, key: variant.key });
|
|
333
|
-
valueMin = valueMax;
|
|
334
|
-
}
|
|
335
|
-
return table;
|
|
292
|
+
return getFeatureFlagVariant(flag.key, bucketingValue, flag.filters?.multivariate?.variants || []);
|
|
336
293
|
}
|
|
337
294
|
}
|
|
338
295
|
function flagEvaluatesToExpectedValue(expectedValue, flagValue) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/client/feature-flags/evaluator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAElH,oGAAoG;AACpG,gGAAgG;AAChG,gDAAgD;AAChD,MAAM,UAAU,GAAG,iBAAiB,CAAA;AAEpC,KAAK,UAAU,KAAK,CAAC,GAAW,EAAE,cAAsB,EAAE,OAAe,EAAE;IACzE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,GAAG,IAAI,cAAc,GAAG,IAAI,EAAE,CAAC,CAAA;IACpE,OAAO,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAA;AAC3D,CAAC;AAOD,MAAM,OAAO,yBAAyB;IAC3B,KAAK,CAAsB;IAC3B,UAAU,CAAoC;IAC9C,gBAAgB,CAAwB;IACxC,OAAO,CAA4B;IAC5C,SAAS,GAAY,KAAK,CAAA;IAE1B,YAAY,WAA4B;QACtC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAA;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAqC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACpF,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;YACpB,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,IAAI,EAAE,CAAA;QAC1D,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,UAAmB,IAAI;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEO,aAAa,CAAC,EAAc;QAClC,IAAI,IAAI,CAAC,SAAS;YAAE,EAAE,EAAE,CAAA;IAC1B,CAAC;IAEO,uBAAuB,CAC7B,UAAkB,EAClB,SAAiC,EAAE,EACnC,mBAAwC,EAAE,EAC1C,kBAAuD,EAAE;QAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,EAAE,EAAE,CAAA;IACvF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAClB,GAAW,EACX,UAAkB,EAClB,SAAiC,EAAE,EACnC,mBAAwC,EAAE,EAC1C,kBAAuD,EAAE;QAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAExC,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAA;QAC/F,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YACpE,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,wBAAwB,IAAI,CAAC,YAAY,sBAAsB,EAAE,CAAC;gBACjF,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,KAAK,CACX,mBAAoB,CAAW,CAAC,IAAI,iCAAiC,GAAG,KAAM,CAAW,CAAC,OAAO,EAAE,CACpG,CACF,CAAA;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,GAAW,EACX,UAAkB,EAClB,SAAiC,EAAE,EACnC,mBAAwC,EAAE,EAC1C,kBAAuD,EAAE;QAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAExC,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAA;QAC/F,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC3D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,wBAAwB,IAAI,CAAC,YAAY,sBAAsB,EAAE,CAAC;gBACjF,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,KAAK,CACX,mBAAoB,CAAW,CAAC,IAAI,iCAAiC,GAAG,KAAM,CAAW,CAAC,OAAO,EAAE,CACpG,CACF,CAAA;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,qBAAqB,CACzB,GAAW,EACX,UAAkB,EAClB,UAAwC,EACxC,SAAiC,EAAE,EACnC,mBAAwC,EAAE,EAC1C,kBAAuD,EAAE;QAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAA;QAC1G,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAC1C,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,UAAkB,EAClB,SAAiC,EAAE,EACnC,mBAAwC,EAAE,EAC1C,kBAAuD,EAAE,EACzD,QAAmB;QAEnB,MAAM,YAAY,GAAqC,EAAE,CAAA;QACzD,MAAM,mBAAmB,GAA6B,EAAE,CAAA;QAExD,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;QAEvG,MAAM,aAAa,GAAiC;YAClD,UAAU;YACV,MAAM;YACN,gBAAgB;YAChB,eAAe;YACf,eAAe,EAAE,EAAE;SACpB,CAAA;QAED,MAAM,OAAO,CAAC,GAAG,CACf,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;gBACvF,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;gBAC9B,IAAI,OAAO,IAAI,IAAI;oBAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA;YAC9D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,YAAY,wBAAwB,IAAI,CAAC,YAAY,sBAAsB,EAAE,CAAC;oBACjF,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,KAAK,CACX,mBAAoB,CAAW,CAAC,IAAI,iCAAiC,IAAI,CAAC,GAAG,KAAM,CAAW,CAAC,OAAO,EAAE,CACzG,CACF,CAAA;oBACD,OAAM;gBACR,CAAC;gBACD,MAAM,CAAC,CAAA;YACT,CAAC;QACH,CAAC,CAAC,CACH,CAAA;QAED,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,IAAwB,EACxB,GAAiC,EACjC,UAA6C,EAAE;QAE/C,MAAM,SAAS,GACb,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACvG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAA;IACpF,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,IAAwB,EACxB,GAAiC;QAEjC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,GAAG,CAAA;QAErE,qFAAqF;QACrF,0FAA0F;QAC1F,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QAC9B,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACtC,MAAM,IAAI,sBAAsB,CAAC,wCAAwC,CAAC,CAAA;QAC5E,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QACtC,MAAM,4BAA4B,GAAG,WAAW,CAAC,4BAA4B,CAAA;QAE7E,IAAI,4BAA4B,IAAI,SAAS,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAA;YAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,IAAI,CACV,4CAA4C,4BAA4B,qBAAqB,IAAI,CAAC,GAAG,EAAE,CACxG,CACF,CAAA;gBACD,MAAM,IAAI,sBAAsB,CAAC,mCAAmC,CAAC,CAAA;YACvE,CAAC;YAED,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,IAAI,CAAC,qDAAqD,IAAI,CAAC,GAAG,gCAAgC,CAAC,CAC5G,CAAA;gBACD,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,sBAAsB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;YACzD,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAA;QACpG,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAA;QACxF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,IAAI,CACV,+CAA+C,IAAI,CAAC,GAAG,wDAAwD,CAChH,CACF,CAAA;YACD,MAAM,IAAI,sBAAsB,CAAC,+BAA+B,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAA;QAChG,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAA;IAC3F,CAAC;IAEO,wBAAwB,CAC9B,IAAwB,EACxB,UAAkB,EAClB,UAA+B;QAE/B,IAAI,IAAI,CAAC,OAAO,EAAE,4BAA4B,IAAI,SAAS;YAAE,OAAO,UAAU,CAAA;QAC9E,IAAI,IAAI,CAAC,oBAAoB,KAAK,WAAW,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,UAAU,EAAE,UAAU,CAAA;YACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE;gBAAE,OAAO,SAAS,CAAA;YACpF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,kBAAkB,CAAC,GAAW,EAAE,SAA2B;QACjE,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAErF,IAAI,OAAO,GAAoB,IAAI,CAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAA;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAE1B,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAA;QAClD,CAAC;aAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAA;QACvC,CAAC;QAED,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QAChC,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAA;QAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,OAAO,CAAA;YAChB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,QAAgF,EAChF,GAAiC;QAEjC,MAAM,EAAE,eAAe,EAAE,GAAG,GAAG,CAAA;QAC/B,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAA;QAElC,IAAI,CAAC,CAAC,kBAAkB,IAAI,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,sBAAsB,CAC9B,iCAAiC,aAAa,gDAAgD,CAC/F,CAAA;QACH,CAAC;QACD,MAAM,eAAe,GAAG,QAAQ,CAAC,gBAAgB,CAAA;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,sBAAsB,CAC9B,iCAAiC,aAAa,qCAAqC,CACpF,CAAA;QACH,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,sBAAsB,CAAC,0CAA0C,aAAa,GAAG,CAAC,CAAA;QAC9F,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,UAAU,IAAI,eAAe,CAAC,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;gBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,sBAAsB,CAAC,4BAA4B,UAAU,eAAe,aAAa,GAAG,CAAC,CAAA;gBACzG,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,eAAe,CAAC,UAAU,CAAC,GAAG,KAAK,CAAA;gBACrC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC;wBACH,eAAe,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;oBAChF,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,IAAI,sBAAsB,CAC9B,qCAAqC,UAAU,eAAe,aAAa,MAAM,KAAK,EAAE,CACzF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;YAC1C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5C,MAAM,IAAI,sBAAsB,CAAC,eAAe,UAAU,0BAA0B,CAAC,CAAA;YACvF,CAAC;QACH,CAAC;QAED,OAAO,4BAA4B,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,CAAA;IACrF,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACtC,IAAwB,EACxB,cAAsB,EACtB,UAA+B,EAC/B,GAAiC;QAEjC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QACtC,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAA;QAC/C,MAAM,eAAe,GAAG,WAAW,CAAC,4BAA4B,CAAA;QAChE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,GAAG,CAAA;QACvC,IAAI,cAAc,GAAG,KAAK,CAAA;QAC1B,IAAI,MAAM,GAAiC,SAAS,CAAA;QAEpD,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,oBAAoB,GACxB,SAAS,CAAC,4BAA4B,KAAK,SAAS;oBAClD,CAAC,CAAC,SAAS,CAAC,4BAA4B;oBACxC,CAAC,CAAC,eAAe,CAAA;gBAErB,IAAI,mBAAmB,GAAG,UAAU,CAAA;gBACpC,IAAI,uBAAuB,GAAG,cAAc,CAAA;gBAE5C,IAAI,oBAAoB,KAAK,eAAe,EAAE,CAAC;oBAC7C,IAAI,oBAAoB,KAAK,IAAI,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;wBACxE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAA;wBACrE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;4BACzC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,KAAK,CACX,sDAAsD,IAAI,CAAC,GAAG,uBAAuB,oBAAoB,gBAAgB,CAC1H,CACF,CAAA;4BACD,SAAQ;wBACV,CAAC;wBACD,IAAI,CAAC,CAAC,SAAS,IAAI,eAAe,CAAC,EAAE,CAAC;4BACpC,cAAc,GAAG,IAAI,CAAA;4BACrB,SAAQ;wBACV,CAAC;wBACD,mBAAmB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;wBAChD,uBAAuB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;oBAC7C,CAAC;gBACH,CAAC;gBAED,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,CAAC;oBACpG,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAA;oBACzC,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAA;oBAC7D,IAAI,eAAe,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,eAAe,CAAC,EAAE,CAAC;wBACvF,MAAM,GAAG,eAAe,CAAA;oBAC1B,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,IAAI,IAAI,CAAA;oBACjF,CAAC;oBACD,MAAK;gBACP,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,YAAY,wBAAwB;oBAAE,MAAM,CAAC,CAAA;gBAClD,IAAI,CAAC,YAAY,sBAAsB,EAAE,CAAC;oBACxC,cAAc,GAAG,IAAI,CAAA;gBACvB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAA;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAA;QACvC,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,sBAAsB,CAAC,yEAAyE,CAAC,CAAA;QAC7G,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,IAAwB,EACxB,cAAsB,EACtB,SAA+B,EAC/B,UAA+B,EAC/B,GAAiC;QAEjC,MAAM,iBAAiB,GAAG,SAAS,CAAC,kBAAkB,CAAA;QACtD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAE/E,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,OAAgB,CAAA;gBACpB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;gBACvE,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAChC,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACxD,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;gBACjD,CAAC;gBACD,yFAAyF;gBACzF,2FAA2F;gBAC3F,IAAI,IAAI,CAAC,QAAQ;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAA;gBACrC,IAAI,CAAC,OAAO;oBAAE,OAAO,KAAK,CAAA;YAC5B,CAAC;YACD,IAAI,iBAAiB,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAA;QACjD,CAAC;QAED,IAAI,iBAAiB,IAAI,SAAS,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,GAAG,iBAAiB,GAAG,KAAK,EAAE,CAAC;YAC1G,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAwB,EAAE,cAAsB;QAC/E,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;QAClE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;IAC1G,CAAC;IAEO,kBAAkB,CAAC,IAAwB;QACjD,MAAM,KAAK,GAA0D,EAAE,CAAA;QACvE,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAA;QAChE,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAA;YAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;YACpD,QAAQ,GAAG,QAAQ,CAAA;QACrB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAED,SAAS,4BAA4B,CAAC,aAAgC,EAAE,SAA2B;IACjG,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,aAAa,KAAK,SAAS,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,EAAE,IAAI,aAAa,KAAK,IAAI,CAAC,CAAA;IACrH,CAAC;IACD,IAAI,OAAO,aAAa,KAAK,QAAQ;QAAE,OAAO,SAAS,KAAK,aAAa,CAAA;IACzE,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/client/feature-flags/evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import { InconclusiveMatchError } from '@posthog/core';
|
|
1
2
|
import type { FlagProperty, PropertyGroup } from './types.js';
|
|
2
|
-
export
|
|
3
|
-
constructor(message: string);
|
|
4
|
-
}
|
|
3
|
+
export { InconclusiveMatchError };
|
|
5
4
|
export declare class RequiresServerEvaluation extends Error {
|
|
6
5
|
constructor(message: string);
|
|
7
6
|
}
|
|
8
|
-
export declare function relativeDateParseForFeatureFlagMatching(value: string): Date | null;
|
|
9
7
|
export declare function matchProperty(property: FlagProperty, propertyValues: Record<string, any>, warnFunction?: (msg: string) => void): boolean;
|
|
10
8
|
export declare function matchCohort(property: FlagProperty, propertyValues: Record<string, any>, cohortProperties: Record<string, PropertyGroup>, debugMode?: boolean): boolean;
|
|
11
9
|
export declare function matchPropertyGroup(propertyGroup: PropertyGroup, propertyValues: Record<string, any>, cohortProperties: Record<string, PropertyGroup>, debugMode?: boolean): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match-property.d.ts","sourceRoot":"","sources":["../../../src/client/feature-flags/match-property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"match-property.d.ts","sourceRoot":"","sources":["../../../src/client/feature-flags/match-property.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA4B,MAAM,eAAe,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE7D,OAAO,EAAE,sBAAsB,EAAE,CAAA;AAEjC,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAID,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAKT;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,SAAS,GAAE,OAAe,GACzB,OAAO,CAQT;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,SAAS,GAAE,OAAe,GACzB,OAAO,CAiFT"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// must not be short-circuited by the null guard below.
|
|
4
|
-
const NULL_VALUES_ALLOWED_OPERATORS = ['is_not', 'is_set'];
|
|
5
|
-
export class InconclusiveMatchError extends Error {
|
|
6
|
-
constructor(message) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.name = this.constructor.name;
|
|
9
|
-
Object.setPrototypeOf(this, InconclusiveMatchError.prototype);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
1
|
+
import { InconclusiveMatchError, matchFeatureFlagProperty } from '@posthog/core';
|
|
2
|
+
export { InconclusiveMatchError };
|
|
12
3
|
export class RequiresServerEvaluation extends Error {
|
|
13
4
|
constructor(message) {
|
|
14
5
|
super(message);
|
|
@@ -16,233 +7,13 @@ export class RequiresServerEvaluation extends Error {
|
|
|
16
7
|
Object.setPrototypeOf(this, RequiresServerEvaluation.prototype);
|
|
17
8
|
}
|
|
18
9
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
new RegExp(regex);
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function parseSemver(value) {
|
|
29
|
-
const text = String(value).trim().replace(/^[vV]/, '');
|
|
30
|
-
const baseVersion = text.split('-')[0].split('+')[0];
|
|
31
|
-
if (!baseVersion || baseVersion.startsWith('.')) {
|
|
32
|
-
throw new InconclusiveMatchError(`Invalid semver: ${value}`);
|
|
33
|
-
}
|
|
34
|
-
const parts = baseVersion.split('.');
|
|
35
|
-
const parsePart = (part) => {
|
|
36
|
-
if (part === undefined || part === '')
|
|
37
|
-
return 0;
|
|
38
|
-
if (!/^\d+$/.test(part)) {
|
|
39
|
-
throw new InconclusiveMatchError(`Invalid semver: ${value}`);
|
|
40
|
-
}
|
|
41
|
-
return parseInt(part, 10);
|
|
42
|
-
};
|
|
43
|
-
return [parsePart(parts[0]), parsePart(parts[1]), parsePart(parts[2])];
|
|
44
|
-
}
|
|
45
|
-
function compareSemverTuples(a, b) {
|
|
46
|
-
for (let i = 0; i < 3; i++) {
|
|
47
|
-
if (a[i] < b[i])
|
|
48
|
-
return -1;
|
|
49
|
-
if (a[i] > b[i])
|
|
50
|
-
return 1;
|
|
51
|
-
}
|
|
52
|
-
return 0;
|
|
53
|
-
}
|
|
54
|
-
function computeTildeBounds(value) {
|
|
55
|
-
const parsed = parseSemver(value);
|
|
56
|
-
return { lower: [parsed[0], parsed[1], parsed[2]], upper: [parsed[0], parsed[1] + 1, 0] };
|
|
57
|
-
}
|
|
58
|
-
function computeCaretBounds(value) {
|
|
59
|
-
const [major, minor, patch] = parseSemver(value);
|
|
60
|
-
const lower = [major, minor, patch];
|
|
61
|
-
let upper;
|
|
62
|
-
if (major > 0)
|
|
63
|
-
upper = [major + 1, 0, 0];
|
|
64
|
-
else if (minor > 0)
|
|
65
|
-
upper = [0, minor + 1, 0];
|
|
66
|
-
else
|
|
67
|
-
upper = [0, 0, patch + 1];
|
|
68
|
-
return { lower, upper };
|
|
69
|
-
}
|
|
70
|
-
function computeWildcardBounds(value) {
|
|
71
|
-
const text = String(value).trim().replace(/^[vV]/, '');
|
|
72
|
-
const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, '');
|
|
73
|
-
if (!cleanedText)
|
|
74
|
-
throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
75
|
-
const parts = cleanedText.split('.');
|
|
76
|
-
const major = parseInt(parts[0], 10);
|
|
77
|
-
if (isNaN(major))
|
|
78
|
-
throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
79
|
-
if (parts.length === 1) {
|
|
80
|
-
return { lower: [major, 0, 0], upper: [major + 1, 0, 0] };
|
|
81
|
-
}
|
|
82
|
-
const minor = parseInt(parts[1], 10);
|
|
83
|
-
if (isNaN(minor))
|
|
84
|
-
throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
|
|
85
|
-
return { lower: [major, minor, 0], upper: [major, minor + 1, 0] };
|
|
86
|
-
}
|
|
87
|
-
function convertToDateTime(value) {
|
|
88
|
-
if (value instanceof Date)
|
|
89
|
-
return value;
|
|
90
|
-
if (typeof value === 'string' || typeof value === 'number') {
|
|
91
|
-
const date = new Date(value);
|
|
92
|
-
if (!isNaN(date.valueOf()))
|
|
93
|
-
return date;
|
|
94
|
-
throw new InconclusiveMatchError(`${value} is in an invalid date format`);
|
|
95
|
-
}
|
|
96
|
-
throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`);
|
|
97
|
-
}
|
|
98
|
-
export function relativeDateParseForFeatureFlagMatching(value) {
|
|
99
|
-
const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/;
|
|
100
|
-
const match = value.match(regex);
|
|
101
|
-
const parsedDt = new Date(new Date().toISOString());
|
|
102
|
-
if (!match || !match.groups)
|
|
103
|
-
return null;
|
|
104
|
-
const number = parseInt(match.groups['number']);
|
|
105
|
-
if (number >= 10000)
|
|
106
|
-
return null;
|
|
107
|
-
const interval = match.groups['interval'];
|
|
108
|
-
if (interval == 'h')
|
|
109
|
-
parsedDt.setUTCHours(parsedDt.getUTCHours() - number);
|
|
110
|
-
else if (interval == 'd')
|
|
111
|
-
parsedDt.setUTCDate(parsedDt.getUTCDate() - number);
|
|
112
|
-
else if (interval == 'w')
|
|
113
|
-
parsedDt.setUTCDate(parsedDt.getUTCDate() - number * 7);
|
|
114
|
-
else if (interval == 'm')
|
|
115
|
-
parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number);
|
|
116
|
-
else if (interval == 'y')
|
|
117
|
-
parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number);
|
|
118
|
-
else
|
|
119
|
-
return null;
|
|
120
|
-
return parsedDt;
|
|
121
|
-
}
|
|
10
|
+
// Convex historically accepted leading-zero SemVer identifiers and parseInt-compatible wildcard
|
|
11
|
+
// components. Keep that behavior explicit until product parity is decided.
|
|
122
12
|
export function matchProperty(property, propertyValues, warnFunction) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
// When the property is genuinely absent we can answer `is_not_set` locally — no need to
|
|
128
|
-
// bail out as inconclusive and force the flag to return undefined.
|
|
129
|
-
if (operator === 'is_not_set')
|
|
130
|
-
return true;
|
|
131
|
-
throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`);
|
|
132
|
-
}
|
|
133
|
-
else if (operator === 'is_not_set') {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
const overrideValue = propertyValues[key];
|
|
137
|
-
if (overrideValue == null && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {
|
|
138
|
-
warnFunction?.(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`);
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
function computeExactMatch(value, overrideValue) {
|
|
142
|
-
if (Array.isArray(value)) {
|
|
143
|
-
return value.map((val) => String(val).toLowerCase()).includes(String(overrideValue).toLowerCase());
|
|
144
|
-
}
|
|
145
|
-
return String(value).toLowerCase() === String(overrideValue).toLowerCase();
|
|
146
|
-
}
|
|
147
|
-
function compare(lhs, rhs, op) {
|
|
148
|
-
if (op === 'gt')
|
|
149
|
-
return lhs > rhs;
|
|
150
|
-
if (op === 'gte')
|
|
151
|
-
return lhs >= rhs;
|
|
152
|
-
if (op === 'lt')
|
|
153
|
-
return lhs < rhs;
|
|
154
|
-
if (op === 'lte')
|
|
155
|
-
return lhs <= rhs;
|
|
156
|
-
throw new Error(`Invalid operator: ${op}`);
|
|
157
|
-
}
|
|
158
|
-
switch (operator) {
|
|
159
|
-
case 'exact':
|
|
160
|
-
return computeExactMatch(value, overrideValue);
|
|
161
|
-
case 'is_not':
|
|
162
|
-
return !computeExactMatch(value, overrideValue);
|
|
163
|
-
case 'is_set':
|
|
164
|
-
return key in propertyValues;
|
|
165
|
-
case 'icontains':
|
|
166
|
-
return String(overrideValue).toLowerCase().includes(String(value).toLowerCase());
|
|
167
|
-
case 'not_icontains':
|
|
168
|
-
return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase());
|
|
169
|
-
case 'starts_with':
|
|
170
|
-
return String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase());
|
|
171
|
-
case 'not_starts_with':
|
|
172
|
-
return !String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase());
|
|
173
|
-
case 'ends_with':
|
|
174
|
-
return String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase());
|
|
175
|
-
case 'not_ends_with':
|
|
176
|
-
return !String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase());
|
|
177
|
-
case 'regex':
|
|
178
|
-
return isValidRegex(String(value)) && String(overrideValue).match(String(value)) !== null;
|
|
179
|
-
case 'not_regex':
|
|
180
|
-
return isValidRegex(String(value)) && String(overrideValue).match(String(value)) === null;
|
|
181
|
-
case 'gt':
|
|
182
|
-
case 'gte':
|
|
183
|
-
case 'lt':
|
|
184
|
-
case 'lte': {
|
|
185
|
-
// Try a numeric comparison first; only fall back to lexicographic when one side genuinely
|
|
186
|
-
// isn't a number. `parseFloat` returns NaN for non-numeric strings, so `Number.isFinite`
|
|
187
|
-
// is the right guard — `NaN != null` would slip through and produce nonsense comparisons
|
|
188
|
-
// like `NaN > 5`. Likewise, when a person property arrives as the string `"10"` we want
|
|
189
|
-
// `"10" > "9"` to evaluate numerically (true), not lexicographically (false).
|
|
190
|
-
const parsedValue = typeof value === 'number' ? value : parseFloat(String(value));
|
|
191
|
-
const parsedOverride = typeof overrideValue === 'number'
|
|
192
|
-
? overrideValue
|
|
193
|
-
: overrideValue != null
|
|
194
|
-
? parseFloat(String(overrideValue))
|
|
195
|
-
: NaN;
|
|
196
|
-
if (Number.isFinite(parsedValue) && Number.isFinite(parsedOverride)) {
|
|
197
|
-
return compare(parsedOverride, parsedValue, operator);
|
|
198
|
-
}
|
|
199
|
-
return compare(String(overrideValue), String(value), operator);
|
|
200
|
-
}
|
|
201
|
-
case 'is_date_after':
|
|
202
|
-
case 'is_date_before': {
|
|
203
|
-
if (typeof value === 'boolean') {
|
|
204
|
-
throw new InconclusiveMatchError(`Date operations cannot be performed on boolean values`);
|
|
205
|
-
}
|
|
206
|
-
let parsedDate = relativeDateParseForFeatureFlagMatching(String(value));
|
|
207
|
-
if (parsedDate == null)
|
|
208
|
-
parsedDate = convertToDateTime(value);
|
|
209
|
-
if (parsedDate == null)
|
|
210
|
-
throw new InconclusiveMatchError(`Invalid date: ${value}`);
|
|
211
|
-
const overrideDate = convertToDateTime(overrideValue);
|
|
212
|
-
if (operator === 'is_date_before')
|
|
213
|
-
return overrideDate < parsedDate;
|
|
214
|
-
return overrideDate > parsedDate;
|
|
215
|
-
}
|
|
216
|
-
case 'semver_eq':
|
|
217
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) === 0;
|
|
218
|
-
case 'semver_neq':
|
|
219
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) !== 0;
|
|
220
|
-
case 'semver_gt':
|
|
221
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) > 0;
|
|
222
|
-
case 'semver_gte':
|
|
223
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) >= 0;
|
|
224
|
-
case 'semver_lt':
|
|
225
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) < 0;
|
|
226
|
-
case 'semver_lte':
|
|
227
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) <= 0;
|
|
228
|
-
case 'semver_tilde': {
|
|
229
|
-
const overrideParsed = parseSemver(String(overrideValue));
|
|
230
|
-
const { lower, upper } = computeTildeBounds(String(value));
|
|
231
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
232
|
-
}
|
|
233
|
-
case 'semver_caret': {
|
|
234
|
-
const overrideParsed = parseSemver(String(overrideValue));
|
|
235
|
-
const { lower, upper } = computeCaretBounds(String(value));
|
|
236
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
237
|
-
}
|
|
238
|
-
case 'semver_wildcard': {
|
|
239
|
-
const overrideParsed = parseSemver(String(overrideValue));
|
|
240
|
-
const { lower, upper } = computeWildcardBounds(String(value));
|
|
241
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
|
|
242
|
-
}
|
|
243
|
-
default:
|
|
244
|
-
throw new InconclusiveMatchError(`Unknown operator: ${operator}`);
|
|
245
|
-
}
|
|
13
|
+
return matchFeatureFlagProperty(property, propertyValues, {
|
|
14
|
+
warnFunction,
|
|
15
|
+
semverParsingPolicy: 'legacy-permissive',
|
|
16
|
+
});
|
|
246
17
|
}
|
|
247
18
|
export function matchCohort(property, propertyValues, cohortProperties, debugMode = false) {
|
|
248
19
|
const cohortId = String(property.value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match-property.js","sourceRoot":"","sources":["../../../src/client/feature-flags/match-property.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"match-property.js","sourceRoot":"","sources":["../../../src/client/feature-flags/match-property.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "2.1.
|
|
1
|
+
export declare const version = "2.1.3";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '2.1.
|
|
1
|
+
export const version = '2.1.3';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"url": "https://github.com/PostHog/posthog-js/issues"
|
|
12
12
|
},
|
|
13
13
|
"author": "PostHog Inc.",
|
|
14
|
-
"version": "2.1.
|
|
14
|
+
"version": "2.1.3",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"keywords": [
|
|
17
17
|
"convex",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"types": "./dist/client/index.d.ts",
|
|
49
49
|
"module": "./dist/client/index.js",
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@posthog/core": "^1.48.
|
|
52
|
-
"posthog-node": "^5.
|
|
51
|
+
"@posthog/core": "^1.48.12",
|
|
52
|
+
"posthog-node": "^5.51.3"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@edge-runtime/vm": "^5.0.0",
|
|
@@ -1,12 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export async function hashSHA1(text: string): Promise<string> {
|
|
4
|
-
const subtle = globalThis.crypto?.subtle
|
|
5
|
-
if (!subtle) {
|
|
6
|
-
throw new Error('SubtleCrypto API not available')
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text))
|
|
10
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer))
|
|
11
|
-
return hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('')
|
|
12
|
-
}
|
|
1
|
+
export { hashSHA1 } from '@posthog/core'
|
|
@@ -200,7 +200,7 @@ describe('LocalFeatureFlagEvaluator', () => {
|
|
|
200
200
|
expect(await evaluator.getFeatureFlag('not-pro', 'user', {}, { plan: 'free' })).toBe(true)
|
|
201
201
|
})
|
|
202
202
|
|
|
203
|
-
test('is_not_set condition
|
|
203
|
+
test('is_not_set condition is inconclusive when the property is omitted', async () => {
|
|
204
204
|
const evaluator = new LocalFeatureFlagEvaluator(
|
|
205
205
|
definitions([
|
|
206
206
|
makeFlag('only-anon', {
|
|
@@ -215,9 +215,7 @@ describe('LocalFeatureFlagEvaluator', () => {
|
|
|
215
215
|
}),
|
|
216
216
|
])
|
|
217
217
|
)
|
|
218
|
-
|
|
219
|
-
expect(await evaluator.getFeatureFlag('only-anon', 'user', {}, {})).toBe(true)
|
|
220
|
-
// Key present → property IS set → flag does not match.
|
|
218
|
+
expect(await evaluator.getFeatureFlag('only-anon', 'user', {}, {})).toBeUndefined()
|
|
221
219
|
expect(await evaluator.getFeatureFlag('only-anon', 'user', {}, { email: 'a@b.com' })).toBe(false)
|
|
222
220
|
})
|
|
223
221
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getFeatureFlagHash, getFeatureFlagVariant, resolveFeatureFlagPayload } from '@posthog/core'
|
|
1
2
|
import type {
|
|
2
3
|
FeatureFlagCondition,
|
|
3
4
|
FeatureFlagEvaluationContext,
|
|
@@ -7,19 +8,8 @@ import type {
|
|
|
7
8
|
JsonType,
|
|
8
9
|
PostHogFeatureFlag,
|
|
9
10
|
} from './types.js'
|
|
10
|
-
import { hashSHA1 } from './crypto.js'
|
|
11
11
|
import { InconclusiveMatchError, RequiresServerEvaluation, matchCohort, matchProperty } from './match-property.js'
|
|
12
12
|
|
|
13
|
-
// Matches posthog-node's hashing constant exactly; the value is larger than Number.MAX_SAFE_INTEGER
|
|
14
|
-
// by design and we don't want the no-loss-of-precision rule to coerce it to a different number.
|
|
15
|
-
// eslint-disable-next-line no-loss-of-precision
|
|
16
|
-
const LONG_SCALE = 0xfffffffffffffff
|
|
17
|
-
|
|
18
|
-
async function _hash(key: string, bucketingValue: string, salt: string = ''): Promise<number> {
|
|
19
|
-
const hashString = await hashSHA1(`${key}.${bucketingValue}${salt}`)
|
|
20
|
-
return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE
|
|
21
|
-
}
|
|
22
|
-
|
|
23
13
|
export type EvaluationResult = {
|
|
24
14
|
value: FeatureFlagValue
|
|
25
15
|
payload: JsonType | null
|
|
@@ -263,28 +253,7 @@ export class LocalFeatureFlagEvaluator {
|
|
|
263
253
|
}
|
|
264
254
|
|
|
265
255
|
private getPayloadForValue(key: string, flagValue: FeatureFlagValue): JsonType | null {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
let payload: JsonType | null = null
|
|
269
|
-
const payloads = this.flagsByKey[key]?.filters?.payloads
|
|
270
|
-
if (!payloads) return null
|
|
271
|
-
|
|
272
|
-
if (typeof flagValue === 'boolean') {
|
|
273
|
-
payload = payloads[flagValue.toString()] || null
|
|
274
|
-
} else if (typeof flagValue === 'string') {
|
|
275
|
-
payload = payloads[flagValue] || null
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
if (payload == null) return null
|
|
279
|
-
if (typeof payload === 'object') return payload
|
|
280
|
-
if (typeof payload === 'string') {
|
|
281
|
-
try {
|
|
282
|
-
return JSON.parse(payload)
|
|
283
|
-
} catch {
|
|
284
|
-
return payload
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
return payload
|
|
256
|
+
return resolveFeatureFlagPayload(this.flagsByKey[key]?.filters?.payloads, flagValue)
|
|
288
257
|
}
|
|
289
258
|
|
|
290
259
|
private async evaluateFlagDependency(
|
|
@@ -434,27 +403,17 @@ export class LocalFeatureFlagEvaluator {
|
|
|
434
403
|
if (rolloutPercentage == undefined) return true
|
|
435
404
|
}
|
|
436
405
|
|
|
437
|
-
if (
|
|
406
|
+
if (
|
|
407
|
+
rolloutPercentage != undefined &&
|
|
408
|
+
(await getFeatureFlagHash(flag.key, bucketingValue)) > rolloutPercentage / 100.0
|
|
409
|
+
) {
|
|
438
410
|
return false
|
|
439
411
|
}
|
|
440
412
|
return true
|
|
441
413
|
}
|
|
442
414
|
|
|
443
415
|
private async getMatchingVariant(flag: PostHogFeatureFlag, bucketingValue: string): Promise<string | undefined> {
|
|
444
|
-
|
|
445
|
-
return this.variantLookupTable(flag).find((v) => hashValue >= v.valueMin && hashValue < v.valueMax)?.key
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
private variantLookupTable(flag: PostHogFeatureFlag): { valueMin: number; valueMax: number; key: string }[] {
|
|
449
|
-
const table: { valueMin: number; valueMax: number; key: string }[] = []
|
|
450
|
-
let valueMin = 0
|
|
451
|
-
const multivariates = flag.filters?.multivariate?.variants || []
|
|
452
|
-
for (const variant of multivariates) {
|
|
453
|
-
const valueMax = valueMin + variant.rollout_percentage / 100.0
|
|
454
|
-
table.push({ valueMin, valueMax, key: variant.key })
|
|
455
|
-
valueMin = valueMax
|
|
456
|
-
}
|
|
457
|
-
return table
|
|
416
|
+
return getFeatureFlagVariant(flag.key, bucketingValue, flag.filters?.multivariate?.variants || [])
|
|
458
417
|
}
|
|
459
418
|
}
|
|
460
419
|
|
|
@@ -37,34 +37,22 @@ describe('matchProperty — numeric comparisons', () => {
|
|
|
37
37
|
})
|
|
38
38
|
})
|
|
39
39
|
|
|
40
|
-
describe('matchProperty —
|
|
41
|
-
test(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
expect(matchProperty({ key: '
|
|
52
|
-
})
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
describe('matchProperty — is_set', () => {
|
|
56
|
-
test('returns true when the property is present with a non-null value', () => {
|
|
57
|
-
expect(matchProperty({ key: 'plan', value: '', operator: 'is_set' }, { plan: 'pro' })).toBe(true)
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
test('returns true when the property is present with a null value', () => {
|
|
61
|
-
// `is_set` is about key presence, not value. Pre-fix, the null guard short-circuited and
|
|
62
|
-
// returned false here.
|
|
63
|
-
expect(matchProperty({ key: 'plan', value: '', operator: 'is_set' }, { plan: null })).toBe(true)
|
|
40
|
+
describe('matchProperty — presence operators', () => {
|
|
41
|
+
test.each([
|
|
42
|
+
['null', null],
|
|
43
|
+
['undefined', undefined],
|
|
44
|
+
['false', false],
|
|
45
|
+
['zero', 0],
|
|
46
|
+
['empty string', ''],
|
|
47
|
+
['empty array', []],
|
|
48
|
+
['empty object', {}],
|
|
49
|
+
])('treats present %s as set', (_, value) => {
|
|
50
|
+
expect(matchProperty({ key: 'key', value: '', operator: 'is_set' }, { key: value })).toBe(true)
|
|
51
|
+
expect(matchProperty({ key: 'key', value: '', operator: 'is_not_set' }, { key: value })).toBe(false)
|
|
64
52
|
})
|
|
65
53
|
|
|
66
|
-
test('
|
|
67
|
-
expect(() => matchProperty({ key: '
|
|
54
|
+
test.each(['is_set', 'is_not_set'])('%s is inconclusive when the property is omitted', (operator) => {
|
|
55
|
+
expect(() => matchProperty({ key: 'key', value: '', operator }, {})).toThrow(InconclusiveMatchError)
|
|
68
56
|
})
|
|
69
57
|
})
|
|
70
58
|
|
|
@@ -141,8 +129,18 @@ describe('matchProperty — starts_with / ends_with', () => {
|
|
|
141
129
|
)
|
|
142
130
|
})
|
|
143
131
|
|
|
132
|
+
describe('matchProperty — SemVer compatibility policy', () => {
|
|
133
|
+
test('preserves legacy leading-zero SemVer matching', () => {
|
|
134
|
+
expect(matchProperty(prop('semver_eq', '01.02.03'), { k: '1.2.3' })).toBe(true)
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
test('preserves legacy parseInt-compatible wildcard matching', () => {
|
|
138
|
+
expect(matchProperty(prop('semver_wildcard', '1x.*'), { k: '1.8.0' })).toBe(true)
|
|
139
|
+
})
|
|
140
|
+
})
|
|
141
|
+
|
|
144
142
|
describe('matchProperty — error cases', () => {
|
|
145
|
-
test('throws InconclusiveMatchError when key is absent for
|
|
143
|
+
test('throws InconclusiveMatchError when key is absent for other operators', () => {
|
|
146
144
|
expect(() => matchProperty(prop('exact', 'x'), {})).toThrow(InconclusiveMatchError)
|
|
147
145
|
})
|
|
148
146
|
})
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { InconclusiveMatchError, matchFeatureFlagProperty } from '@posthog/core'
|
|
2
|
+
import type { FlagProperty, PropertyGroup } from './types.js'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
// `is_not` may legitimately compare against null; `is_set` only cares about key presence and
|
|
5
|
-
// must not be short-circuited by the null guard below.
|
|
6
|
-
const NULL_VALUES_ALLOWED_OPERATORS = ['is_not', 'is_set']
|
|
7
|
-
|
|
8
|
-
export class InconclusiveMatchError extends Error {
|
|
9
|
-
constructor(message: string) {
|
|
10
|
-
super(message)
|
|
11
|
-
this.name = this.constructor.name
|
|
12
|
-
Object.setPrototypeOf(this, InconclusiveMatchError.prototype)
|
|
13
|
-
}
|
|
14
|
-
}
|
|
4
|
+
export { InconclusiveMatchError }
|
|
15
5
|
|
|
16
6
|
export class RequiresServerEvaluation extends Error {
|
|
17
7
|
constructor(message: string) {
|
|
@@ -21,234 +11,17 @@ export class RequiresServerEvaluation extends Error {
|
|
|
21
11
|
}
|
|
22
12
|
}
|
|
23
13
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
new RegExp(regex)
|
|
27
|
-
return true
|
|
28
|
-
} catch {
|
|
29
|
-
return false
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
type SemverTuple = [number, number, number]
|
|
34
|
-
|
|
35
|
-
function parseSemver(value: string): SemverTuple {
|
|
36
|
-
const text = String(value).trim().replace(/^[vV]/, '')
|
|
37
|
-
const baseVersion = text.split('-')[0].split('+')[0]
|
|
38
|
-
|
|
39
|
-
if (!baseVersion || baseVersion.startsWith('.')) {
|
|
40
|
-
throw new InconclusiveMatchError(`Invalid semver: ${value}`)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const parts = baseVersion.split('.')
|
|
44
|
-
|
|
45
|
-
const parsePart = (part: string | undefined): number => {
|
|
46
|
-
if (part === undefined || part === '') return 0
|
|
47
|
-
if (!/^\d+$/.test(part)) {
|
|
48
|
-
throw new InconclusiveMatchError(`Invalid semver: ${value}`)
|
|
49
|
-
}
|
|
50
|
-
return parseInt(part, 10)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return [parsePart(parts[0]), parsePart(parts[1]), parsePart(parts[2])]
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function compareSemverTuples(a: SemverTuple, b: SemverTuple): number {
|
|
57
|
-
for (let i = 0; i < 3; i++) {
|
|
58
|
-
if (a[i] < b[i]) return -1
|
|
59
|
-
if (a[i] > b[i]) return 1
|
|
60
|
-
}
|
|
61
|
-
return 0
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function computeTildeBounds(value: string): { lower: SemverTuple; upper: SemverTuple } {
|
|
65
|
-
const parsed = parseSemver(value)
|
|
66
|
-
return { lower: [parsed[0], parsed[1], parsed[2]], upper: [parsed[0], parsed[1] + 1, 0] }
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function computeCaretBounds(value: string): { lower: SemverTuple; upper: SemverTuple } {
|
|
70
|
-
const [major, minor, patch] = parseSemver(value)
|
|
71
|
-
const lower: SemverTuple = [major, minor, patch]
|
|
72
|
-
let upper: SemverTuple
|
|
73
|
-
if (major > 0) upper = [major + 1, 0, 0]
|
|
74
|
-
else if (minor > 0) upper = [0, minor + 1, 0]
|
|
75
|
-
else upper = [0, 0, patch + 1]
|
|
76
|
-
return { lower, upper }
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function computeWildcardBounds(value: string): { lower: SemverTuple; upper: SemverTuple } {
|
|
80
|
-
const text = String(value).trim().replace(/^[vV]/, '')
|
|
81
|
-
const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, '')
|
|
82
|
-
if (!cleanedText) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`)
|
|
83
|
-
|
|
84
|
-
const parts = cleanedText.split('.')
|
|
85
|
-
const major = parseInt(parts[0], 10)
|
|
86
|
-
if (isNaN(major)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`)
|
|
87
|
-
|
|
88
|
-
if (parts.length === 1) {
|
|
89
|
-
return { lower: [major, 0, 0], upper: [major + 1, 0, 0] }
|
|
90
|
-
}
|
|
91
|
-
const minor = parseInt(parts[1], 10)
|
|
92
|
-
if (isNaN(minor)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`)
|
|
93
|
-
return { lower: [major, minor, 0], upper: [major, minor + 1, 0] }
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function convertToDateTime(value: FlagPropertyValue | Date): Date {
|
|
97
|
-
if (value instanceof Date) return value
|
|
98
|
-
if (typeof value === 'string' || typeof value === 'number') {
|
|
99
|
-
const date = new Date(value)
|
|
100
|
-
if (!isNaN(date.valueOf())) return date
|
|
101
|
-
throw new InconclusiveMatchError(`${value} is in an invalid date format`)
|
|
102
|
-
}
|
|
103
|
-
throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function relativeDateParseForFeatureFlagMatching(value: string): Date | null {
|
|
107
|
-
const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/
|
|
108
|
-
const match = value.match(regex)
|
|
109
|
-
const parsedDt = new Date(new Date().toISOString())
|
|
110
|
-
|
|
111
|
-
if (!match || !match.groups) return null
|
|
112
|
-
|
|
113
|
-
const number = parseInt(match.groups['number'])
|
|
114
|
-
if (number >= 10000) return null
|
|
115
|
-
|
|
116
|
-
const interval = match.groups['interval']
|
|
117
|
-
if (interval == 'h') parsedDt.setUTCHours(parsedDt.getUTCHours() - number)
|
|
118
|
-
else if (interval == 'd') parsedDt.setUTCDate(parsedDt.getUTCDate() - number)
|
|
119
|
-
else if (interval == 'w') parsedDt.setUTCDate(parsedDt.getUTCDate() - number * 7)
|
|
120
|
-
else if (interval == 'm') parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number)
|
|
121
|
-
else if (interval == 'y') parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number)
|
|
122
|
-
else return null
|
|
123
|
-
|
|
124
|
-
return parsedDt
|
|
125
|
-
}
|
|
126
|
-
|
|
14
|
+
// Convex historically accepted leading-zero SemVer identifiers and parseInt-compatible wildcard
|
|
15
|
+
// components. Keep that behavior explicit until product parity is decided.
|
|
127
16
|
export function matchProperty(
|
|
128
17
|
property: FlagProperty,
|
|
129
18
|
propertyValues: Record<string, any>,
|
|
130
19
|
warnFunction?: (msg: string) => void
|
|
131
20
|
): boolean {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (!(key in propertyValues)) {
|
|
137
|
-
// When the property is genuinely absent we can answer `is_not_set` locally — no need to
|
|
138
|
-
// bail out as inconclusive and force the flag to return undefined.
|
|
139
|
-
if (operator === 'is_not_set') return true
|
|
140
|
-
throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`)
|
|
141
|
-
} else if (operator === 'is_not_set') {
|
|
142
|
-
return false
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const overrideValue = propertyValues[key]
|
|
146
|
-
if (overrideValue == null && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {
|
|
147
|
-
warnFunction?.(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`)
|
|
148
|
-
return false
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
function computeExactMatch(value: any, overrideValue: any): boolean {
|
|
152
|
-
if (Array.isArray(value)) {
|
|
153
|
-
return value.map((val) => String(val).toLowerCase()).includes(String(overrideValue).toLowerCase())
|
|
154
|
-
}
|
|
155
|
-
return String(value).toLowerCase() === String(overrideValue).toLowerCase()
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
function compare(lhs: any, rhs: any, op: string): boolean {
|
|
159
|
-
if (op === 'gt') return lhs > rhs
|
|
160
|
-
if (op === 'gte') return lhs >= rhs
|
|
161
|
-
if (op === 'lt') return lhs < rhs
|
|
162
|
-
if (op === 'lte') return lhs <= rhs
|
|
163
|
-
throw new Error(`Invalid operator: ${op}`)
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
switch (operator) {
|
|
167
|
-
case 'exact':
|
|
168
|
-
return computeExactMatch(value, overrideValue)
|
|
169
|
-
case 'is_not':
|
|
170
|
-
return !computeExactMatch(value, overrideValue)
|
|
171
|
-
case 'is_set':
|
|
172
|
-
return key in propertyValues
|
|
173
|
-
case 'icontains':
|
|
174
|
-
return String(overrideValue).toLowerCase().includes(String(value).toLowerCase())
|
|
175
|
-
case 'not_icontains':
|
|
176
|
-
return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase())
|
|
177
|
-
case 'starts_with':
|
|
178
|
-
return String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase())
|
|
179
|
-
case 'not_starts_with':
|
|
180
|
-
return !String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase())
|
|
181
|
-
case 'ends_with':
|
|
182
|
-
return String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase())
|
|
183
|
-
case 'not_ends_with':
|
|
184
|
-
return !String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase())
|
|
185
|
-
case 'regex':
|
|
186
|
-
return isValidRegex(String(value)) && String(overrideValue).match(String(value)) !== null
|
|
187
|
-
case 'not_regex':
|
|
188
|
-
return isValidRegex(String(value)) && String(overrideValue).match(String(value)) === null
|
|
189
|
-
case 'gt':
|
|
190
|
-
case 'gte':
|
|
191
|
-
case 'lt':
|
|
192
|
-
case 'lte': {
|
|
193
|
-
// Try a numeric comparison first; only fall back to lexicographic when one side genuinely
|
|
194
|
-
// isn't a number. `parseFloat` returns NaN for non-numeric strings, so `Number.isFinite`
|
|
195
|
-
// is the right guard — `NaN != null` would slip through and produce nonsense comparisons
|
|
196
|
-
// like `NaN > 5`. Likewise, when a person property arrives as the string `"10"` we want
|
|
197
|
-
// `"10" > "9"` to evaluate numerically (true), not lexicographically (false).
|
|
198
|
-
const parsedValue = typeof value === 'number' ? value : parseFloat(String(value))
|
|
199
|
-
const parsedOverride =
|
|
200
|
-
typeof overrideValue === 'number'
|
|
201
|
-
? overrideValue
|
|
202
|
-
: overrideValue != null
|
|
203
|
-
? parseFloat(String(overrideValue))
|
|
204
|
-
: NaN
|
|
205
|
-
if (Number.isFinite(parsedValue) && Number.isFinite(parsedOverride)) {
|
|
206
|
-
return compare(parsedOverride, parsedValue, operator)
|
|
207
|
-
}
|
|
208
|
-
return compare(String(overrideValue), String(value), operator)
|
|
209
|
-
}
|
|
210
|
-
case 'is_date_after':
|
|
211
|
-
case 'is_date_before': {
|
|
212
|
-
if (typeof value === 'boolean') {
|
|
213
|
-
throw new InconclusiveMatchError(`Date operations cannot be performed on boolean values`)
|
|
214
|
-
}
|
|
215
|
-
let parsedDate = relativeDateParseForFeatureFlagMatching(String(value))
|
|
216
|
-
if (parsedDate == null) parsedDate = convertToDateTime(value)
|
|
217
|
-
if (parsedDate == null) throw new InconclusiveMatchError(`Invalid date: ${value}`)
|
|
218
|
-
const overrideDate = convertToDateTime(overrideValue)
|
|
219
|
-
if (operator === 'is_date_before') return overrideDate < parsedDate
|
|
220
|
-
return overrideDate > parsedDate
|
|
221
|
-
}
|
|
222
|
-
case 'semver_eq':
|
|
223
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) === 0
|
|
224
|
-
case 'semver_neq':
|
|
225
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) !== 0
|
|
226
|
-
case 'semver_gt':
|
|
227
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) > 0
|
|
228
|
-
case 'semver_gte':
|
|
229
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) >= 0
|
|
230
|
-
case 'semver_lt':
|
|
231
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) < 0
|
|
232
|
-
case 'semver_lte':
|
|
233
|
-
return compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) <= 0
|
|
234
|
-
case 'semver_tilde': {
|
|
235
|
-
const overrideParsed = parseSemver(String(overrideValue))
|
|
236
|
-
const { lower, upper } = computeTildeBounds(String(value))
|
|
237
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0
|
|
238
|
-
}
|
|
239
|
-
case 'semver_caret': {
|
|
240
|
-
const overrideParsed = parseSemver(String(overrideValue))
|
|
241
|
-
const { lower, upper } = computeCaretBounds(String(value))
|
|
242
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0
|
|
243
|
-
}
|
|
244
|
-
case 'semver_wildcard': {
|
|
245
|
-
const overrideParsed = parseSemver(String(overrideValue))
|
|
246
|
-
const { lower, upper } = computeWildcardBounds(String(value))
|
|
247
|
-
return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0
|
|
248
|
-
}
|
|
249
|
-
default:
|
|
250
|
-
throw new InconclusiveMatchError(`Unknown operator: ${operator}`)
|
|
251
|
-
}
|
|
21
|
+
return matchFeatureFlagProperty(property, propertyValues, {
|
|
22
|
+
warnFunction,
|
|
23
|
+
semverParsingPolicy: 'legacy-permissive',
|
|
24
|
+
})
|
|
252
25
|
}
|
|
253
26
|
|
|
254
27
|
export function matchCohort(
|
package/src/component/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '2.1.
|
|
1
|
+
export const version = '2.1.3'
|