UNPKG

@burdaforward/composable-rules

Version:

A library for composable rule logic. Easily combine simple rules into more complex ones in a maintainable way using your custom logic and data.

2 lines (1 loc) 2.23 kB
"use strict";var c=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var f=(e,t)=>{for(var u in t)c(e,u,{get:t[u],enumerable:!0})},d=(e,t,u,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of h(t))!F.call(e,l)&&l!==u&&c(e,l,{get:()=>t[l],enumerable:!(n=i(t,l))||n.enumerable});return e};var I=e=>d(c({},"__esModule",{value:!0}),e);var V={};f(V,{all:()=>b,always:()=>M,applyAll:()=>C,applyChain:()=>x,applyFirst:()=>w,applyIf:()=>T,detailedRun:()=>y,injectFacts:()=>A,not:()=>v,one:()=>j,run:()=>P,transformOutput:()=>g});module.exports=I(V);var m=(e,t)=>{let u=(...n)=>(...l)=>{let s=t!==0&&l.length===0?[void 0]:l,a=[...n,...s];return a.length>=t?e(...a):u(...a)};return u()},R=m;var M=(...e)=>!0,v=e=>(t,u)=>!e(t,u),j=e=>(t,u)=>e.some(n=>n(t,u)),b=e=>(t,u)=>e.every(n=>n(t,u)),A=(e,t)=>({type:"injected",mapper:e,childRule:t}),g=(e,t)=>({type:"transformed",transformer:e,rule:t}),T=(e,t)=>({type:"if",matcher:e,rule:t}),C=e=>({type:"all",rules:e}),w=e=>({type:"first",rules:e}),x=e=>({type:"chain",rules:e}),r=(e,t,u)=>{switch(e.type){case"injected":return r(e.childRule,e.mapper(t),u);case"transformed":{let{foundMatch:n,value:l}=r(e.rule,t,u);return{foundMatch:n,value:n?e.transformer(l):l}}case"if":{let n=e.rule;return e.matcher(t,u.value)?r(n,t,u):{foundMatch:!1,value:u.value}}case"all":return O(e.rules,t,u);case"first":return o(e.rules,t,u);case"chain":return p(e.rules,t,u);default:return e.matcher(t,u.value)?{foundMatch:!0,value:e.action(t,u.value)}:{foundMatch:!1,value:u.value}}},O=(e,t,u)=>{let n=(l,s)=>{let a=r(s,t,l);return{foundMatch:l.foundMatch||a.foundMatch,value:a.value}};return e.reduce(n,u)},o=(e,t,u)=>{let[n,...l]=e;if(!n)return u;let{foundMatch:s,value:a}=r(n,t,u);return s?{foundMatch:s,value:a}:o(l,t,u)},p=(e,t,u)=>{let[n,...l]=e;if(!n)return u;let{foundMatch:s,value:a}=r(n,t,u);return s?p(l,t,{foundMatch:s,value:a}):u},y=R((e,t,u)=>{let n={foundMatch:!1,value:u};try{return[null,r(e,t,n)]}catch(l){return[l,null]}},3),P=R((e,t,u)=>{let[n,{value:l}]=y(e,t,u);return[n,l]},3);0&&(module.exports={all,always,applyAll,applyChain,applyFirst,applyIf,detailedRun,injectFacts,not,one,run,transformOutput});