sift-r
Version:
Apportion objects / arrays into multiple buckets based on predicates / patterns
8 lines (7 loc) • 6.81 kB
JavaScript
/*
* sift-r
* v1.4.0
* https://github.com/shuckster/sift-r
* License: MIT
*/
var siftr=(()=>{var M=Object.defineProperty,me=Object.defineProperties,pe=Object.getOwnPropertyDescriptor,de=Object.getOwnPropertyDescriptors,ve=Object.getOwnPropertyNames,C=Object.getOwnPropertySymbols;var J=Object.prototype.hasOwnProperty,Oe=Object.prototype.propertyIsEnumerable;var H=(e,t,s)=>t in e?M(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,m=(e,t)=>{for(var s in t||(t={}))J.call(t,s)&&H(e,s,t[s]);if(C)for(var s of C(t))Oe.call(t,s)&&H(e,s,t[s]);return e},p=(e,t)=>me(e,de(t));var Q=(e,t)=>{for(var s in t)M(e,s,{get:t[s],enumerable:!0})},be=(e,t,s,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ve(t))!J.call(e,r)&&r!==s&&M(e,r,{get:()=>t[r],enumerable:!(a=pe(t,r))||a.enumerable});return e};var Ae=e=>be(M({},"__esModule",{value:!0}),e);var Dt={};Q(Dt,{byPattern:()=>Rt,sift:()=>It});var j={};Q(j,{against:()=>ee,allOf:()=>ae,anyOf:()=>se,cata:()=>ot,deepEq:()=>He,defined:()=>Ze,empty:()=>re,endsWith:()=>st,eq:()=>te,every:()=>Qe,falsy:()=>lt,firstOf:()=>Xe,gt:()=>_e,gte:()=>Ve,hasOwn:()=>it,inRange:()=>et,includedIn:()=>rt,includes:()=>at,instanceOf:()=>We,isArray:()=>f,isDate:()=>Fe,isFunction:()=>g,isNumber:()=>K,isPojo:()=>h,isRegExp:()=>W,isStrictly:()=>nt,isString:()=>b,lastOf:()=>Ye,lt:()=>$e,lte:()=>Ke,match:()=>qe,not:()=>Je,otherwise:()=>ke,pluck:()=>ze,some:()=>Ue,spread:()=>gt,startsWith:()=>tt,truthy:()=>ct,when:()=>Ge});var X=Object.defineProperty,S=Object.getOwnPropertySymbols,Y=Object.prototype.hasOwnProperty,Z=Object.prototype.propertyIsEnumerable,U=(e,t,s)=>t in e?X(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,je=(e,t)=>{for(var s in t||(t={}))Y.call(t,s)&&U(e,s,t[s]);if(S)for(var s of S(t))Z.call(t,s)&&U(e,s,t[s]);return e},Pe=(e,t)=>{var s={};for(var a in e)Y.call(e,a)&&t.indexOf(a)<0&&(s[a]=e[a]);if(e!=null&&S)for(var a of S(e))t.indexOf(a)<0&&Z.call(e,a)&&(s[a]=e[a]);return s},Me=(e,t)=>{for(var s in t)X(e,s,{get:t[s],enumerable:!0})},D={};Me(D,{instanceOf:()=>F,isArguments:()=>$,isArray:()=>we,isDate:()=>Ee,isFunction:()=>xe,isNumber:()=>Ie,isObject:()=>V,isPojo:()=>De,isRegExp:()=>Re,isString:()=>Ne});var _=Object.prototype,Se=_.toString,w=e=>t=>typeof t===e,F=e=>t=>t instanceof e,{isArray:we}=Array,$=e=>Se.call(e)==="[object Arguments]",Ee=e=>F(Date)(e)&&!isNaN(e),xe=w("function"),Ne=w("string"),Ie=e=>e===e&&w("number")(e),V=e=>e!==null&&w("object")(e),Re=F(RegExp),De=e=>e===null||!V(e)||$(e)?!1:Object.getPrototypeOf(e)===_,{isArray:f,isDate:Fe,isFunction:g,isNumber:K}=D,{isPojo:h,isRegExp:W,isString:b,instanceOf:We}=D,{keys:d,entries:Be,assign:Te}=Object;function qe(e){return(...t)=>ee(...t)(e)}var ee=(...e)=>{let t;return s=>e.find(a=>{let r=a(s),{matched:n,value:c}=r||{};return[n,c].every(g)?n(s)&&(t=c(s),!0):r&&(t=r)})&&t},ke=e=>t=>({matched:()=>!0,value:()=>g(e)?e(t):e}),R=e=>t=>s=>({matched:()=>o(e,s,a=>s=a),value:()=>g(t)?b(s)&&W(e)?t(...Le(s.match(e))):t(s):t}),Ge=(...e)=>{if(e.length===1){let[t]=e;return R(t)}if(e.length===2){let[t,s]=e;return R(t)(s)}if(e.length>2){let t=e.slice(-1)[0],s=e.slice(0,-1);return R(ae(s))(t)}throw new Error("expected 1 or 2 arguments")},Le=e=>{let{groups:t}=e;return t?[t,e]:[e]},o=(e,t,s)=>h(e)?d(e).every(a=>o(e[a],t==null?void 0:t[a],s)):f(e)?f(t)&&e.length===t.length&&e.every((a,r)=>o(a,t==null?void 0:t[r],s)):g(e)?e(t,s):b(t)&&W(e)?e.test(t):e===t||[e,t].every(Number.isNaN),ze=(...e)=>(t,s)=>e.length===0||(g(e[0])?e[0](t):o(e[0],t,s))?(s(t),!0):!1,Ce=(e,t)=>[e,t].every(h)?d(e).length===d(t).length:!0,te=e=>(t,s)=>Ce(e,t)&&o(e,t,s),He=e=>B(e,t=>h(t)?te(t):t),Je=e=>(t,s)=>!o(e,t,s),se=(...e)=>(t,s)=>e.flat().some(a=>o(a,t,s)),ae=(...e)=>(t,s)=>e.flat().every(a=>o(a,t,s)),Qe=e=>ie(t=>t.every(s=>o(e,s))),Ue=e=>ie(t=>t.some(s=>o(e,s))),Xe=(...e)=>T((t,s)=>e.length<=t.length&&o(e,t.slice(0,e.length),s)),Ye=(...e)=>T((t,s)=>e.length<=t.length&&o(e,t.slice(t.length-e.length),s)),re=e=>e!==e||!e&&e!==0&&e!==!1||f(e)&&!e.length||h(e)&&!d(e).length,Ze=e=>!re(e),_e=e=>A(t=>t>e),$e=e=>A(t=>t<e),Ve=e=>A(t=>t>=e),Ke=e=>A(t=>t<=e),et=(e,t)=>A(s=>s>=Math.min(e,t)&&s<=Math.max(e,t)),tt=e=>ne(t=>t.startsWith(e)),st=e=>ne(t=>t.endsWith(e)),at=e=>T(t=>t.includes(e)),rt=se,nt=e=>t=>t===e,it=(...e)=>t=>h(t)&&(([s,a])=>s.length&&s.every(r=>a.includes(r)))([e.flat(),d(t)]),ot=e=>{var t=e,{getValue:s}=t,a=Pe(t,["getValue"]);return Be(a).reduce((r,[n,c])=>Te(r,{[n]:O=>z=>({matched:()=>c(z),value:()=>g(O)?O(s(z)):O})}),{})},ct=e=>!!e,lt=e=>!e,ut=e=>(t,s)=>(t[s]=B(t[s],e),t),ft=e=>t=>B(t,e),B=(e,t)=>t(h(e)?d(e).reduce(ut(t),je({},e)):f(e)?e.map(ft(t)):e),gt=e=>new Proxy({},{get:()=>e}),ne=e=>t=>b(t)&&e(t),A=e=>t=>K(t)&&e(t),ie=e=>(t,s)=>f(t)&&e(t,s),T=e=>(t,s)=>(f(t)||b(t))&&e(t,s);var{match:x,against:P,when:i,otherwise:l}=j,{not:q,allOf:y,firstOf:N,every:oe,gte:ht}=j,{isArray:u,isPojo:v,isFunction:fe,isString:yt}=j,E=e=>t=>e.push(t),ce=e=>t=>e.add(t),le=(e,t)=>s=>e.set(t,s),ue=e=>([t,s])=>Object.assign(e,{[t]:s}),k=e=>e instanceof Set,G=e=>e instanceof Map,mt=e=>e!=null&&[e[Symbol.iterator],e.next].every(fe),ge=y(u,oe(u),oe({length:2})),pt=y(v,e=>ge(Object.values(e))),I={length:ht(2)},dt=y(N(u,q(u)),I),he=y(q(k),q(G)),vt=y(N(k,he),I),Ot=y(N(G,he),I),bt=y(N(mt),I),ye=([e,t])=>e.reduce(([s,a],r,n)=>x(r)(i(t[n])(c=>[[...s,c],a]),l(()=>[s,[...a,r]])),[[],[]]),At=([e])=>ye(e.reduce(([t,s],[a,r])=>[[...t,r],[...s,a]],[[],[]])),jt=([e,...t])=>{let s=Array.from({length:t.length}).map(()=>[]),a=[];return e.forEach(P(...t.map((r,n)=>i(r)(E(s[n]))),l(E(a)))),[...s,a]},Pt=([e,...t])=>{let s=Array.from({length:t.length}).map(()=>new Set),a=new Set;return e.forEach(P(...t.map((r,n)=>i(r)(ce(s[n]))),l(ce(a)))),[...s,a]},Mt=([e,...t])=>{let s=Array.from({length:t.length}).map(()=>new Map),a=new Map;return e.forEach((r,n)=>x(r)(...t.map((c,O)=>i(c)(le(s[O],n))),l(le(a,n)))),[...s,a]},St=([e,...t])=>{let s=Array.from({length:t.length}).map(()=>[]),a=[];for(let r of e)x(r)(...t.map((n,c)=>i(n)(E(s[c]))),l(E(a)));return[...s,a]},L=([e,t])=>Object.entries(e).reduce(([s,a],[r,n])=>x(n)(i(t[r])(()=>[p(m({},s),{[r]:n}),a]),l(()=>[s,p(m({},a),{[r]:n})])),[{},{}]),wt=([e])=>L(Object.entries(e).reduce(([t,s],[a,[r,n]])=>[p(m({},t),{[a]:n}),p(m({},s),{[a]:r})],[{},{}])),Et=([e,t])=>L([e,Object.keys(e).reduce((s,a)=>p(m({},s),{[a]:t}),{})]),xt=([e,t])=>{let s=Array.from({length:t.length}).map(()=>({})),a={};return Object.entries(e).forEach(P(...t.map((r,n)=>i([yt,r])(ue(s[n]))),l(ue(a)))),[...s,a]},Nt=P(i([pt])(wt),i([v,v])(L),i([v,fe])(Et),i([v,u])(xt),i([ge])(At),i([u,u])(ye),i(dt)(jt),i(vt)(Pt),i(Ot)(Mt),i(bt)(St),i([v])(([e])=>[{},e]),i([u])(([e])=>[[],e]),i([k])(([e])=>[new Set([]),e]),i([G])(([e])=>[new Map([]),e]),l(([e])=>[void 0,e]));function It(e,...t){return Nt([e,...t])}var Rt=e=>P(i(e,t=>t),l(void 0));return Ae(Dt);})();