@flag-engine/core 0.0.7 → 0.0.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"evaluateFlag.d.ts","sourceRoot":"","sources":["../src/evaluateFlag.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,YAAY,eACX,iBAAiB,qBACV,iBAAiB,qBAgBrC,CAAC"}
1
+ {"version":3,"file":"evaluateFlag.d.ts","sourceRoot":"","sources":["../src/evaluateFlag.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,YAAY,GACvB,YAAY,iBAAiB,EAC7B,mBAAmB,iBAAiB,qBAgBrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getEligibleStrategy.d.ts","sourceRoot":"","sources":["../src/getEligibleStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAOrE,eAAO,MAAM,qBAAqB,UACzB,IAAI,EAAE,qBACM,iBAAiB,KACnC,OAuEF,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAClB,iBAAiB,qBACV,iBAAiB,2CAKrC,CAAC"}
1
+ {"version":3,"file":"getEligibleStrategy.d.ts","sourceRoot":"","sources":["../src/getEligibleStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAOrE,eAAO,MAAM,qBAAqB,GAChC,OAAO,IAAI,EAAE,EACb,mBAAmB,iBAAiB,KACnC,OAuEF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,YAAY,iBAAiB,EAC7B,mBAAmB,iBAAiB,2CAKrC,CAAC"}
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("murmurhash-js");const t=e=>"string"==typeof e,r=e=>null==e,n=(e,a)=>0===e.length||e.every((e=>{if("inSegment"in e)return n(e.inSegment.rules,a);switch(e.operator){case"equals":return a[e.field]===e.value;case"not_equals":return a[e.field]!==e.value;case"greater_than":{const t=a[e.field];return!r(t)&&!r(e.value)&&t>e.value}case"less_than":{const t=a[e.field];return!r(t)&&!r(e.value)&&t<e.value}case"contains":{const r=a[e.field];return t(r)&&t(e.value)&&r.includes(e.value)}case"not_contains":{const r=a[e.field];return t(r)&&t(e.value)&&!r.includes(e.value)}case"in":{const t=a[e.field];return Array.isArray(e.value)&&-1!==e.value.indexOf(t)}case"not_in":{const t=a[e.field];return Array.isArray(e.value)&&-1===e.value.indexOf(t)}default:return!1}})),a=Math.pow(2,32),s=(t,r)=>{if(0===t.strategies.length)return!0;const s=((e,t)=>e.strategies.find((e=>n(e.rules,t))))(t,r);if(!s)return!1;if(0===s.variants.length)return!0;const u=((t,r)=>{t.variants.sort(((e,t)=>e.percent-t.percent));let n=0;const s=`${t.name}-${r}`,u=t.variants.find((t=>{const r=e.murmur3(s)/a*100;if(n+=t.percent,r<=n)return t}));return u||!1})(s,r.__id);return!!u&&u.name};exports.createFlagEngine=e=>({createUserContext:t=>((e,t)=>{let r=t;return{evaluateAll:()=>{const t={};for(const n of e)t[n.key]="enabled"===n.status&&s(n,r);return t},evaluate:t=>{const n=e.find((e=>e.key===t));return!!n&&"disabled"!==n.status&&s(n,r)},setUserConfiguration:e=>{r=e}}})(e,t)});
1
+ "use strict";var e=require("murmurhash-js");const t=e=>"string"==typeof e,r=e=>null==e,n=(e,a)=>0===e.length||e.every((e=>{if("inSegment"in e)return n(e.inSegment.rules,a);switch(e.operator){case"equals":return a[e.field]===e.value;case"not_equals":return a[e.field]!==e.value;case"greater_than":{const t=a[e.field];return!r(t)&&!r(e.value)&&t>e.value}case"less_than":{const t=a[e.field];return!r(t)&&!r(e.value)&&t<e.value}case"contains":{const r=a[e.field];return t(r)&&t(e.value)&&r.includes(e.value)}case"not_contains":{const r=a[e.field];return t(r)&&t(e.value)&&!r.includes(e.value)}case"in":{const t=a[e.field];return Array.isArray(e.value)&&-1!==e.value.indexOf(t)}case"not_in":{const t=a[e.field];return Array.isArray(e.value)&&-1===e.value.indexOf(t)}default:return!1}})),a=Math.pow(2,32),s=(t,r)=>{if(0===t.strategies.length)return!0;const s=((e,t)=>e.strategies.find((e=>n(e.rules,t))))(t,r);if(!s)return!1;if(0===s.variants.length)return!0;const u=((t,r)=>{t.variants.sort(((e,t)=>e.percent-t.percent));let n=0;const s=`${t.name}-${r}`,u=e.murmur3(s),l=t.variants.find((e=>{const t=u/a*100;if(n+=e.percent,t<=n)return e}));return l||!1})(s,r.__id);return!!u&&u.name};exports.createFlagEngine=e=>({createUserContext:t=>((e,t)=>{let r=t;return{evaluateAll:()=>{const t={};for(const n of e)t[n.key]="enabled"===n.status&&s(n,r);return t},evaluate:t=>{const n=e.find((e=>e.key===t));return!!n&&"disabled"!==n.status&&s(n,r)},setUserConfiguration:e=>{r=e}}})(e,t)});
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import { EvaluationMachine, FlagsConfiguration } from "./types";
2
2
  export declare const createFlagEngine: (flagsConfig: FlagsConfiguration) => EvaluationMachine;
3
+ export type { FlagsConfiguration, UserConfiguration } from "./types";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAoCjB,eAAO,MAAM,gBAAgB,gBACd,kBAAkB,KAC9B,iBAKF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAoCjB,eAAO,MAAM,gBAAgB,GAC3B,aAAa,kBAAkB,KAC9B,iBAKF,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{murmur3 as e}from"murmurhash-js";const t=e=>"string"==typeof e,n=e=>null==e,r=(e,a)=>0===e.length||e.every((e=>{if("inSegment"in e)return r(e.inSegment.rules,a);switch(e.operator){case"equals":return a[e.field]===e.value;case"not_equals":return a[e.field]!==e.value;case"greater_than":{const t=a[e.field];return!n(t)&&!n(e.value)&&t>e.value}case"less_than":{const t=a[e.field];return!n(t)&&!n(e.value)&&t<e.value}case"contains":{const n=a[e.field];return t(n)&&t(e.value)&&n.includes(e.value)}case"not_contains":{const n=a[e.field];return t(n)&&t(e.value)&&!n.includes(e.value)}case"in":{const t=a[e.field];return Array.isArray(e.value)&&-1!==e.value.indexOf(t)}case"not_in":{const t=a[e.field];return Array.isArray(e.value)&&-1===e.value.indexOf(t)}default:return!1}})),a=Math.pow(2,32),s=(t,n)=>{if(0===t.strategies.length)return!0;const s=((e,t)=>e.strategies.find((e=>r(e.rules,t))))(t,n);if(!s)return!1;if(0===s.variants.length)return!0;const u=((t,n)=>{t.variants.sort(((e,t)=>e.percent-t.percent));let r=0;const s=`${t.name}-${n}`,u=t.variants.find((t=>{const n=e(s)/a*100;if(r+=t.percent,n<=r)return t}));return u||!1})(s,n.__id);return!!u&&u.name},u=e=>({createUserContext:t=>((e,t)=>{let n=t;return{evaluateAll:()=>{const t={};for(const r of e)t[r.key]="enabled"===r.status&&s(r,n);return t},evaluate:t=>{const r=e.find((e=>e.key===t));return!!r&&"disabled"!==r.status&&s(r,n)},setUserConfiguration:e=>{n=e}}})(e,t)});export{u as createFlagEngine};
1
+ import{murmur3 as e}from"murmurhash-js";const t=e=>"string"==typeof e,n=e=>null==e,r=(e,a)=>0===e.length||e.every((e=>{if("inSegment"in e)return r(e.inSegment.rules,a);switch(e.operator){case"equals":return a[e.field]===e.value;case"not_equals":return a[e.field]!==e.value;case"greater_than":{const t=a[e.field];return!n(t)&&!n(e.value)&&t>e.value}case"less_than":{const t=a[e.field];return!n(t)&&!n(e.value)&&t<e.value}case"contains":{const n=a[e.field];return t(n)&&t(e.value)&&n.includes(e.value)}case"not_contains":{const n=a[e.field];return t(n)&&t(e.value)&&!n.includes(e.value)}case"in":{const t=a[e.field];return Array.isArray(e.value)&&-1!==e.value.indexOf(t)}case"not_in":{const t=a[e.field];return Array.isArray(e.value)&&-1===e.value.indexOf(t)}default:return!1}})),a=Math.pow(2,32),s=(t,n)=>{if(0===t.strategies.length)return!0;const s=((e,t)=>e.strategies.find((e=>r(e.rules,t))))(t,n);if(!s)return!1;if(0===s.variants.length)return!0;const u=((t,n)=>{t.variants.sort(((e,t)=>e.percent-t.percent));let r=0;const s=`${t.name}-${n}`,u=e(s),l=t.variants.find((e=>{const t=u/a*100;if(r+=e.percent,t<=r)return e}));return l||!1})(s,n.__id);return!!u&&u.name},u=e=>({createUserContext:t=>((e,t)=>{let n=t;return{evaluateAll:()=>{const t={};for(const r of e)t[r.key]="enabled"===r.status&&s(r,n);return t},evaluate:t=>{const r=e.find((e=>e.key===t));return!!r&&"disabled"!==r.status&&s(r,n)},setUserConfiguration:e=>{n=e}}})(e,t)});export{u as createFlagEngine};
@@ -1 +1 @@
1
- {"version":3,"file":"resolveStrategyVariant.d.ts","sourceRoot":"","sources":["../src/resolveStrategyVariant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInC,eAAO,MAAM,sBAAsB,aAAc,QAAQ,WAAW,MAAM,sCAsBzE,CAAC"}
1
+ {"version":3,"file":"resolveStrategyVariant.d.ts","sourceRoot":"","sources":["../src/resolveStrategyVariant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInC,eAAO,MAAM,sBAAsB,GAAI,UAAU,QAAQ,EAAE,SAAS,MAAM,sCAsBzE,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@flag-engine/core",
3
3
  "private": false,
4
- "version": "0.0.7",
4
+ "version": "0.0.9",
5
5
  "description": "Feature flags evaluation engine, runtime agnostic",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs.js",
@@ -26,21 +26,21 @@
26
26
  "author": "",
27
27
  "license": "MIT",
28
28
  "devDependencies": {
29
- "@eslint/js": "^9.12.0",
30
- "@rollup/plugin-node-resolve": "^15.3.0",
29
+ "@eslint/js": "^9.29.0",
30
+ "@rollup/plugin-node-resolve": "^16.0.1",
31
31
  "@rollup/plugin-terser": "^0.4.4",
32
- "@rollup/plugin-typescript": "^12.1.0",
33
- "@types/eslint__js": "^8.42.3",
32
+ "@rollup/plugin-typescript": "^12.1.3",
33
+ "@types/eslint__js": "^9.14.0",
34
34
  "@types/murmurhash-js": "^1.0.6",
35
- "@vitest/coverage-v8": "2.1.2",
35
+ "@vitest/coverage-v8": "3.2.4",
36
36
  "bundlesize": "^0.18.2",
37
- "eslint": "^9.12.0",
38
- "rollup": "^4.24.0",
39
- "tslib": "^2.7.0",
40
- "tsx": "^4.19.1",
41
- "typescript": "^5.6.2",
42
- "typescript-eslint": "^8.8.1",
43
- "vitest": "^2.1.2"
37
+ "eslint": "^9.29.0",
38
+ "rollup": "^4.44.0",
39
+ "tslib": "^2.8.1",
40
+ "tsx": "^4.20.3",
41
+ "typescript": "^5.8.3",
42
+ "typescript-eslint": "^8.34.1",
43
+ "vitest": "^3.2.4"
44
44
  },
45
45
  "dependencies": {
46
46
  "murmurhash-js": "^1.0.0"
@@ -0,0 +1,7 @@
1
+ import { defineConfig } from "vitest/config";
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ testTimeout: 15000,
6
+ },
7
+ });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=isEligibleForStrategy.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isEligibleForStrategy.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/isEligibleForStrategy.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=repartition.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repartition.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/repartition.test.ts"],"names":[],"mappings":""}