pepka 1.0.0-beta.7 → 1.0.0-beta.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.
package/dist/bundle.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";const e=Symbol("Placeholder"),r=r=>{let t=0;for(const s of r)s!==e&&t++;return t},t=(r,t)=>{const s=r.length,o=r.slice(),p=t.length;let n=p,c=0;for(;n&&c<s;c++)o[c]===e&&(o[c]=t[p-n],n--);for(c=s;n;c++,n--)o[c]=t[p-n];return o},s=(e,o,p)=>{const n=e.length-o.length-r(p);if(n<1)return e(...t(o,p));{const r=(...r)=>s(e,t(o,p),r);return r.$args_left=n,r}},o=e=>(...t)=>e.length>r(t)?s(e,[],t):e(...t),p=r=>function(t){return t===e?r:r(t)};function n(r){return function(t,s){const o=t===e,n=arguments.length;if(1===n&&o)throw new Error("Senseless placeholder usage.");return arguments.length>1?o?p((e=>r(e,s))):r(t,s):e=>r(t,e)}}function c(e){return o(e)}const x=void 0,a=1/0,i=e=>typeof e,l=e=>null===e,u=e=>"number"==i(e),f=e=>Array.isArray(e),h=e=>"function"===i(e),m={u:"U",b:"B",n:"N",s:"S",f:"F"},y=e=>{const r=i(e);return"object"===r?l(e)?"Null":e.constructor.name:m[r[0]]+r.slice(1)},d=n(((e,r)=>y(r)===e)),g=n(((e,r)=>(r.push(e),r))),b=c(((e,r,t)=>(t[e]=r,t))),w=c(((e,r,t)=>t.reduce(e,r))),j=c(((e,r,t)=>{for(let s in t)switch(y(t[s])){case"Array":if(e>1&&"Array"===y(r[s]))switch(e){case 2:const o=r[s],p=t[s];for(const r in p)o[r]?j(e,o[r],p[r]):o[r]=p[r];break;case 3:r[s].push(...t[s])}else r[s]=t[s];break;case"Object":if("Object"===y(r[s])){j(e,r[s],t[s]);break}default:r[s]=t[s]}return r})),O=j(1),q=j(2),A=j(3),E=n(((e,r)=>Object.assign(e,r))),S=n(((e,r)=>{let t,s,o,p;for(t in e)t in r&&(s=e[t],[o,p]=h(s)?s(r[t],r):[s||t,r[t]],r[o]=p,t!==o&&delete r[t]);return r})),k=n(((e,r)=>{for(let t in r)r[t]=e(r[t],+t,r);return r})),v=n(((e,r)=>{const t=f(r);let s,o;t&&(s=0,o=[]);for(let s in r)e(r[s],s)||(t?o.push(+s):delete r[s]);if(t)for(const e of o)r.splice(e-s++,1);return r})),P=e=>(...r)=>r[e],D=n(((e,r)=>{const t=y(e);if(t===y(r)&&("Object"===t||"Array"==t)){if(l(e)||l(r))return e===r;if(e===r)return!0;for(const t of[e,r])for(const s in t)if(!(t===r&&s in e||t===e&&s in r&&D(e[s],r[s])))return!1;return!0}return e===r})),z=o(((e,r,t,s)=>e(s)?r(s):t(s))),N=c(((e,r,t)=>z(e,r,te,t))),B=(...r)=>(...t)=>{let s,o=!0;for(let p=ee(r)-1;p>-1;p--)o?(o=!1,s=r[p](...t)):s=s===e?r[p]():r[p](s);return s},_=n(((e,r)=>e.bind(r))),C=n(((e,r)=>r[e])),I=n(((e,r)=>{if((e=>"string"===i(e))(r))return r.includes(e);for(const t of r)if(D(t,e))return!0;return!1})),T=c(((e,r,t)=>t.slice(e,u(r)?r:a))),U=e=>n(((r,t)=>e(t,r))),$=C(0),F=T(1,a),K=n(((e,r)=>e+r)),L=n(((e,r)=>r-e)),W=n(((e,r)=>e*r)),X=n(((e,r)=>e>r)),G=n(((e,r)=>e<r)),H=n(((e,r)=>r>=e)),J=n(((e,r)=>r<=e)),M=n(((e,r)=>r.sort(e))),Q=n(((e,r)=>r.find(e))),R=n(((e,r)=>r.findIndex(e))),V=n(((e,r)=>R(D(e),r))),Y=n(((e,r)=>e/r)),Z=e=>l(e)||(e=>e===x)(e),ee=e=>e.length,re=e=>()=>e,te=e=>e,se=e=>!e,oe=n(((e,r)=>e.test(r))),pe=n(((e,r)=>(e(r),r))),ne=n(((e,r)=>[...r,e])),ce=n(((e,r)=>r.split(e))),xe=re(!0),ae=re(!1),ie=n(((e,r)=>r(...e))),le=e=>(...r)=>{const t=e(...r),s=h(t);return!s||s&&t.$args_left<=0?se(t):le(t)},ue=n(((e,r)=>he(K(e),r-e))),fe=n(((e,r)=>e.filter(U(I)(r)))),he=n(((e,r)=>[...Array(r)].map(((r,t)=>e(t))))),me=n(((e,r)=>{for(const[t,s]of e)if(t(r))return s(r)})),ye=c(((e,r,t)=>({...t,[e]:r}))),de=c(((e,r,t)=>B((s=>{return ye(s,ee(e)<2?r:de(T(1,a,e),r,(o=t[s],l(o)||"object"!==i(o)?{}:t[s])),t);var o}),$)(e))),ge=n(((e,r)=>r.every(e))),be=n(((e,r)=>r.some(e))),we=n(((e,r)=>e.every((e=>e(r))))),je=n(((e,r)=>e.some((e=>e(r))))),Oe=n(((e,r)=>r[e])),qe=c(((e,r,t)=>D(t[e],r))),Ae=c(((e,r,t)=>D(r[e],t[e]))),Ee=c(((e,r,t)=>z(ee,(()=>Z(t)?e:B(z(Z,re(e),(t=>Ee(e,T(1,a,r),t))),U(Oe)(t),$)(r)),re(t),r))),Se=Ee(x),ke=c(((e,r,t)=>D(Se(e,t),r))),ve=c(((e,r,t)=>D(Se(e,r),Se(e,t)))),Pe=/^(.*?)(8|16|32|64)(Clamped)?Array$/,De=(e,r=!1)=>{const t=y(e);switch(t){case"Null":case"String":case"Number":case"Boolean":case"Symbol":return e;case"Array":return r?[...e]:Te(B(De,P(0)),e);case"Object":if(r)return{...e};const s={};for(let r in e)s[r]=De(e[r]);return s;default:return Pe.test(t)?e.constructor.from(e):e}},ze=c(((e,r,t)=>w(e,De(r),t))),Ne=n(((e,r)=>Ke(e,r))),Be=n(((e,r)=>{const t={};for(const s of e)s in r&&(t[s]=r[s]);return t})),_e=n(((e,r)=>Ke(((r,t)=>!I(t,e)),r))),Ce=n(((e,r)=>r.concat(e))),Ie=n(((e,r)=>r.join(e))),Te=n(((e,r)=>r.map(e))),Ue=n(((e,r)=>r.forEach(e))),$e=c(((e,r,t)=>r(t)&&e(t))),Fe=c(((e,r,t)=>t.replace(e,r))),Ke=n(((e,r)=>f(r)?r.filter(e):v(e,{...r}))),Le=n(((e,r)=>Object.assign({},e,r))),We=n(((e,r)=>O(De(e),De(r)))),Xe=n(((e,r)=>q(De(e),De(r)))),Ge=n(((e,r)=>A(De(e),De(r)))),He=c(((e,r,t)=>ye(e,r(t[e]),t))),Je=n(((e,r)=>S(e,Object.assign({},r)))),Me=n(((e,r)=>Te(((e,t)=>[e,r[t]]),e))),Qe=n(((e,r)=>ze(((e,t,s)=>ye(t,r[s],e)),{},e))),Re=c(((e,r,t)=>Te(((r,s)=>e(r,t[s])),r))),Ve=(()=>{const e=async(r,t,s)=>{s<t.length&&(await r(t[s]),await e(r,t,++s))};return n(((r,t)=>e(r,t,0)))})(),Ye=n((async(e,r)=>(await e(r),r))),Ze=n(((e,r)=>Promise.all(r.map(e)))),er=(()=>{const e=async(r,t,s)=>~s?await e(r,[await r[s](...t)],--s):$(t);return(...r)=>(...t)=>e(r,t,r.length-1)})(),rr=te,tr=te,sr=te,or=le,pr=ne,nr=be;exports.F=ae,exports.T=xe,exports.__=e,exports.add=K,exports.all=ge,exports.allPass=we,exports.always=re,exports.any=be,exports.anyPass=je,exports.append=ne,exports.assoc=ye,exports.assocPath=de,exports.bind=_,exports.both=$e,exports.callWith=ie,exports.clone=De,exports.cloneShallow=e=>De(e,!0),exports.complement=le,exports.compose=B,exports.composeAsync=er,exports.concat=Ce,exports.cond=me,exports.curry=o,exports.curry2=n,exports.curry3=c,exports.divide=Y,exports.echo=sr,exports.empty=e=>{switch(y(e)){case"String":return"";case"Object":return{};case"Array":return[];default:return x}},exports.equals=D,exports.explore=(e,r="log")=>pe((t=>console[r](e,t))),exports.filter=Ke,exports.find=Q,exports.findIndex=R,exports.flip=U,exports.forEach=Ue,exports.forEachAsync=Ze,exports.forEachSerial=Ve,exports.fromPairs=e=>Object.fromEntries(e),exports.genBy=he,exports.getTmpl=e=>{const r=[],t=[],s=e.length;let o,p,n,c=0,x=0,a=!1,i=$(e),l=!1;for(c=0;c<s;c++)switch(o=e[c],o){case"{":if(!i){a=!0,x=c;break}case"}":if(!i){a=!1,r.push(""),t.push(e.slice(x+1,c));break}default:n=e[c+1],l="\\"===o,a||l&&("{"===n||"}"===n)||(p=r.length-1,p<0&&(r.push(""),p++),r[p]+=o),i=l}return e=>{const s=[],o=r.length-1;for(const p in r)c=+p,s.push(r[c]),c!==o&&s.push(Se(t[c].split("."),e));return s.join("")}},exports.gt=X,exports.gte=H,exports.head=$,exports.identity=te,exports.ifElse=z,exports.includes=I,exports.indexOf=V,exports.intersection=fe,exports.isEmpty=e=>{switch(y(e)){case"String":case"Array":return 0==ee(e);case"Object":for(const r in e)return!1;return!0;default:return null}},exports.isNil=Z,exports.join=Ie,exports.keys=e=>Object.keys(e),exports.last=e=>e[ee(e)-1],exports.length=ee,exports.lt=G,exports.lte=J,exports.map=Te,exports.mapKeys=Je,exports.memoize=e=>{let r,t=!1;return()=>t?r:(t=!0,r=e())},exports.mergeDeep=We,exports.mergeDeepAdd=Ge,exports.mergeDeepX=Xe,exports.mergeShallow=Le,exports.mirror=rr,exports.multiply=W,exports.noop=(...e)=>{},exports.not=se,exports.notf=or,exports.nth=C,exports.omit=_e,exports.once=e=>{let r,t=!1;return(...s)=>t?r:(t=!0,r=e(...s))},exports.overProp=He,exports.path=Se,exports.pathEq=ke,exports.pathOr=Ee,exports.pathsEq=ve,exports.pick=Be,exports.pickBy=Ne,exports.prop=Oe,exports.propEq=qe,exports.propsEq=Ae,exports.push=pr,exports.qappend=g,exports.qassoc=b,exports.qfilter=v,exports.qmap=k,exports.qmapKeys=S,exports.qmergeDeep=O,exports.qmergeDeepAdd=A,exports.qmergeDeepX=q,exports.qmergeShallow=E,exports.qreduce=w,exports.range=ue,exports.reduce=ze,exports.reflect=tr,exports.replace=Fe,exports.reverse=e=>B((r=>ze(((t,s,o)=>g(e[r-o],t)),[],e)),K(-1),ee)(e),exports.sizeof=e=>{if("Object"===y(e)){let r=0;for(let t in e)r++;return r}return ee(e)},exports.slice=T,exports.some=nr,exports.sort=M,exports.split=ce,exports.subtract=L,exports.tail=F,exports.take=P,exports.tap=pe,exports.test=oe,exports.toLower=e=>e.toLowerCase(),exports.toPairs=e=>Object.entries(e),exports.toUpper=e=>e.toUpperCase(),exports.trim=e=>e.trim(),exports.type=y,exports.typeIs=d,exports.uncurry=e=>(...r)=>w(((e,r)=>e?e(r):e),e,r),exports.uniq=e=>w(((e,r)=>I(r,e)?e:g(r,e)),[],e),exports.values=e=>Object.values(e),exports.waitAll=e=>Promise.all(e),exports.waitTap=Ye,exports.when=N,exports.zip=Me,exports.zipObj=Qe,exports.zipWith=Re;
1
+ "use strict";const e=Symbol("Placeholder"),r=r=>{let t=0;for(const s of r)s!==e&&t++;return t},t=(r,t)=>{const s=r.length,o=r.slice(),p=t.length;let n=p,x=0;for(;n&&x<s;x++)o[x]===e&&(o[x]=t[p-n],n--);for(x=s;n;x++,n--)o[x]=t[p-n];return o},s=(e,o,p)=>{const n=e.length-o.length-r(p);if(n<1)return e(...t(o,p));{const r=(...r)=>s(e,t(o,p),r);return r.$args_left=n,r}},o=e=>(...t)=>e.length>r(t)?s(e,[],t):e(...t),p=r=>function(t){return t===e?r:r(t)};function n(r){return function(t,s){const o=t===e,n=arguments.length;if(1===n&&o)throw new Error("Senseless placeholder usage.");return arguments.length>1?o?p((e=>r(e,s))):r(t,s):e=>r(t,e)}}function x(e){return o(e)}const c=void 0,a=1/0,l=e=>typeof e,i=e=>null===e,u=e=>"number"==l(e),f=e=>Array.isArray(e),h=e=>"function"===l(e),m=e=>!i(e)&&"object"===l(e),d={u:"U",b:"B",n:"N",s:"S",f:"F"},y=e=>{const r=l(e);return"object"===r?i(e)?"Null":e.constructor.name:d[r[0]]+r.slice(1)},g=n(((e,r)=>y(r)===e)),b=e=>(...r)=>r[e],w=n(((e,r)=>e===r)),q=n(((e,r)=>e==r)),j=n(((e,r)=>{const t=y(e);if(w(t,y(r))&&(w(t,"Object")||w(t,"Array"))){if(i(e)||i(r))return w(e,r);if(w(e,r))return!0;for(const t of[e,r])for(const s in t)if(!(w(t,r)&&s in e||w(t,e)&&s in r&&j(e[s],r[s])))return!1;return!0}return w(e,r)})),O=o(((e,r,t,s)=>e(s)?r(s):t(s))),A=x(((e,r,t)=>O(e,r,M,t))),S=(...r)=>(...t)=>{let s,o=!0;for(let p=H(r)-1;p>-1;p--)o?(o=!1,s=r[p](...t)):s=s===e?r[p]():r[p](s);return s},E=n(((e,r)=>e.bind(r))),k=n(((e,r)=>r[e])),z=n(((e,r)=>{if((e=>"string"===l(e))(r))return r.includes(e);for(const t of r)if(j(t,e))return!0;return!1})),P=x(((e,r,t)=>t.slice(e,u(r)?r:a))),v=e=>n(((r,t)=>e(t,r))),D=k(0),N=P(1,a),B=n(((e,r)=>e+r)),T=n(((e,r)=>r-e)),_=n(((e,r)=>e*r)),C=n(((e,r)=>e>r)),F=n(((e,r)=>e<r)),I=n(((e,r)=>r>=e)),U=n(((e,r)=>r<=e)),$=n(((e,r)=>r.sort(e))),K=n(((e,r)=>r.find(e))),L=n(((e,r)=>r.findIndex(e))),W=n(((e,r)=>L(j(e),r))),X=n(((e,r)=>e/r)),G=e=>i(e)||(e=>e===c)(e),H=e=>e.length,J=e=>()=>e,M=e=>e,Q=e=>!e,R=n(((e,r)=>e.test(r))),V=n(((e,r)=>(e(r),r))),Y=n(((e,r)=>[...r,e])),Z=n(((e,r)=>[...r,e])),ee=n(((e,r)=>r.flat(e))),re=n(((e,r)=>r.split(e))),te=J(!0),se=J(!1),oe=n(((e,r)=>r(...e))),pe=o(((e,r,t)=>t[r](...e))),ne=e=>(...r)=>{const t=e(...r),s=h(t);return!s||s&&t.$args_left<=0?Q(t):ne(t)},xe=n(((e,r)=>ae(B(e),r-e))),ce=n(((e,r)=>e.filter(v(z)(r)))),ae=n(((e,r)=>[...Array(r)].map(((r,t)=>e(t))))),le=n(((e,r)=>{for(const[t,s]of e)if(t(r))return s(r)})),ie=x(((e,r,t)=>({...t,[e]:r}))),ue=x(((e,r,t)=>S((s=>ie(s,H(e)<2?r:ue(P(1,a,e),r,m(t[s])?t[s]:{}),t)),D)(e))),fe=n(((e,r)=>r.every(e))),he=n(((e,r)=>r.some(e))),me=n(((e,r)=>e.every((e=>e(r))))),de=n(((e,r)=>e.some((e=>e(r))))),ye=n(((e,r)=>r[e])),ge=x(((e,r,t)=>j(t[e],r))),be=x(((e,r,t)=>j(r[e],t[e]))),we=x(((e,r,t)=>O(H,(()=>G(t)?e:S(O(G,J(e),(t=>we(e,P(1,a,r),t))),v(ye)(t),D)(r)),J(t),r))),qe=we(c),je=x(((e,r,t)=>j(qe(e,t),r))),Oe=x(((e,r,t)=>j(qe(e,r),qe(e,t)))),Ae=/^(.*?)(8|16|32|64)(Clamped)?Array$/,Se=(e,r=!1)=>{const t=y(e);switch(t){case"Null":case"String":case"Number":case"Boolean":case"Symbol":return e;case"Array":return r?[...e]:Ne(S(Se,b(0)),e);case"Object":if(r)return{...e};const s={};for(let r in e)s[r]=Se(e[r]);return s;default:return Ae.test(t)?e.constructor.from(e):e}},Ee=x(((e,r,t)=>or(e,Se(r),t))),ke=n(((e,r)=>Ce(e,r))),ze=n(((e,r)=>{const t={};for(const s of e)s in r&&(t[s]=r[s]);return t})),Pe=n(((e,r)=>Ce(((r,t)=>!z(t,e)),r))),ve=n(((e,r)=>r.concat(e))),De=n(((e,r)=>r.join(e))),Ne=n(((e,r)=>r.map(e))),Be=n(((e,r)=>r.forEach(e))),Te=x(((e,r,t)=>r(t)&&e(t))),_e=x(((e,r,t)=>t.replace(e,r))),Ce=n(((e,r)=>f(r)?r.filter(e):ur(e,{...r}))),Fe=n(((e,r)=>Object.assign({},e,r))),Ie=n(((e,r)=>nr(Se(e),Se(r)))),Ue=n(((e,r)=>xr(Se(e),Se(r)))),$e=n(((e,r)=>cr(Se(e),Se(r)))),Ke=x(((e,r,t)=>ie(e,r(t[e]),t))),Le=n(((e,r)=>lr(e,Object.assign({},r)))),We=n(((e,r)=>Ne(((e,t)=>[e,r[t]]),e))),Xe=n(((e,r)=>Ee(((e,t,s)=>ie(t,r[s],e)),{},e))),Ge=x(((e,r,t)=>Ne(((r,s)=>e(r,t[s])),r))),He=(()=>{const e=async(r,t,s)=>{s<t.length&&(await r(t[s]),await e(r,t,++s))};return n(((r,t)=>e(r,t,0)))})(),Je=n((async(e,r)=>(await e(r),r))),Me=n(((e,r)=>Promise.all(r.map(e)))),Qe=(()=>{const e=async(r,t,s)=>~s?await e(r,[await r[s](...t)],--s):D(t);return(...r)=>(...t)=>e(r,t,r.length-1)})(),Re=M,Ve=M,Ye=M,Ze=ne,er=Y,rr=he,tr=n(((e,r)=>(r.push(e),r))),sr=x(((e,r,t)=>(t[e]=r,t))),or=x(((e,r,t)=>t.reduce(e,r))),pr=x(((e,r,t)=>{for(let s in t)switch(y(t[s])){case"Array":if(e>1&&"Array"===y(r[s]))switch(e){case 2:const o=r[s],p=t[s];for(const r in p)o[r]?pr(e,o[r],p[r]):o[r]=p[r];break;case 3:r[s].push(...t[s])}else r[s]=t[s];break;case"Object":if("Object"===y(r[s])){pr(e,r[s],t[s]);break}default:r[s]=t[s]}return r})),nr=pr(1),xr=pr(2),cr=pr(3),ar=n(((e,r)=>Object.assign(e,r))),lr=n(((e,r)=>{let t,s,o,p;for(t in e)t in r&&(s=e[t],[o,p]=h(s)?s(r[t],t,r):[s,r[t]],r[G(o)?t:o]=p,t!==o&&delete r[t]);return r})),ir=n(((e,r)=>{for(let t in r)r[t]=e(r[t],+t,r);return r})),ur=n(((e,r)=>{const t=f(r);let s,o;t&&(s=0,o=[]);for(let s in r)e(r[s],s)||(t?o.push(+s):delete r[s]);if(t)for(const e of o)r.splice(e-s++,1);return r})),fr=e=>{let r;for(const t in e)r=e[t],m(r)&&fr(r);return Object.freeze(e)},hr=e=>Object.freeze(e),mr=n(((e,r)=>r.unshift(e))),dr=x(((e,r,t)=>{const s=e[0];return sr(s,e.length<2?r:dr(e.slice(1),r,m(t[s])?t[s]:{}),t)}));exports.F=se,exports.T=te,exports.__=e,exports.add=B,exports.all=fe,exports.allPass=me,exports.always=J,exports.any=he,exports.anyPass=de,exports.append=Y,exports.assoc=ie,exports.assocPath=ue,exports.bind=E,exports.both=Te,exports.callFrom=pe,exports.callWith=oe,exports.clone=Se,exports.cloneShallow=e=>Se(e,!0),exports.complement=ne,exports.compose=S,exports.composeAsync=Qe,exports.concat=ve,exports.cond=le,exports.curry=o,exports.curry2=n,exports.curry3=x,exports.divide=X,exports.echo=Ye,exports.empty=e=>{switch(y(e)){case"String":return"";case"Object":return{};case"Array":return[];default:return c}},exports.eq=w,exports.equals=j,exports.explore=(e,r="log")=>V((t=>console[r](e,t))),exports.filter=Ce,exports.find=K,exports.findIndex=L,exports.flat=e=>e.flat(a),exports.flatShallow=e=>e.flat(),exports.flatTo=ee,exports.flip=v,exports.forEach=Be,exports.forEachAsync=Me,exports.forEachSerial=He,exports.freeze=e=>fr(Se(e)),exports.freezeShallow=e=>hr(Se(e)),exports.fromPairs=e=>Object.fromEntries(e),exports.genBy=ae,exports.getTmpl=e=>{const r=[],t=[],s=e.length;let o,p,n,x=0,c=0,a=!1,l=D(e),i=!1;for(x=0;x<s;x++)switch(o=e[x],o){case"{":if(!l){a=!0,c=x;break}case"}":if(!l){a=!1,r.push(""),t.push(e.slice(c+1,x));break}default:n=e[x+1],i="\\"===o,a||i&&("{"===n||"}"===n)||(p=r.length-1,p<0&&(r.push(""),p++),r[p]+=o),l=i}return e=>{const s=[],o=r.length-1;for(const p in r)x=+p,s.push(r[x]),x!==o&&s.push(qe(t[x].split("."),e));return s.join("")}},exports.gt=C,exports.gte=I,exports.head=D,exports.identity=M,exports.ifElse=O,exports.includes=z,exports.indexOf=W,exports.intersection=ce,exports.isEmpty=e=>{switch(y(e)){case"String":case"Array":return 0==H(e);case"Object":for(const r in e)return!1;return!0;default:return null}},exports.isNil=G,exports.join=De,exports.keys=e=>Object.keys(e),exports.last=e=>e[H(e)-1],exports.length=H,exports.lt=F,exports.lte=U,exports.map=Ne,exports.mapKeys=Le,exports.memoize=e=>{let r,t=!1;return()=>t?r:(t=!0,r=e())},exports.mergeDeep=Ie,exports.mergeDeepAdd=$e,exports.mergeDeepX=Ue,exports.mergeShallow=Fe,exports.mirror=Re,exports.multiply=_,exports.noop=()=>{},exports.not=Q,exports.notf=Ze,exports.nth=k,exports.omit=Pe,exports.once=e=>{let r,t=!1;return(...s)=>t?r:(t=!0,r=e(...s))},exports.overProp=Ke,exports.path=qe,exports.pathEq=je,exports.pathOr=we,exports.pathsEq=Oe,exports.pick=ze,exports.pickBy=ke,exports.prepend=Z,exports.prop=ye,exports.propEq=ge,exports.propsEq=be,exports.push=er,exports.qappend=tr,exports.qassoc=sr,exports.qassocPath=dr,exports.qempty=e=>{if(f(e))e.splice(0);else for(const r in e)delete e[r];return e},exports.qfilter=ur,exports.qfreeze=fr,exports.qfreezeShallow=hr,exports.qmap=ir,exports.qmapKeys=lr,exports.qmergeDeep=nr,exports.qmergeDeepAdd=cr,exports.qmergeDeepX=xr,exports.qmergeShallow=ar,exports.qprepend=mr,exports.qreduce=or,exports.range=xe,exports.reduce=Ee,exports.reflect=Ve,exports.replace=_e,exports.reverse=e=>S((r=>Ee(((t,s,o)=>tr(e[r-o],t)),[],e)),B(-1),H)(e),exports.sizeof=e=>{if("Object"===y(e)){let r=0;for(let t in e)r++;return r}return H(e)},exports.slice=P,exports.some=rr,exports.sort=$,exports.split=re,exports.subtract=T,exports.tail=N,exports.take=b,exports.tap=V,exports.test=R,exports.toLower=e=>e.toLowerCase(),exports.toPairs=e=>Object.entries(e),exports.toUpper=e=>e.toUpperCase(),exports.trim=e=>e.trim(),exports.type=y,exports.typeIs=g,exports.uncurry=e=>(...r)=>or(((e,r)=>e?e(r):e),e,r),exports.uniq=e=>or(((e,r)=>z(r,e)?e:tr(r,e)),[],e),exports.values=e=>Object.values(e),exports.waitAll=e=>Promise.all(e),exports.waitTap=Je,exports.weakEq=q,exports.when=A,exports.zip=We,exports.zipObj=Xe,exports.zipWith=Ge;
package/dist/bundle.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { __ }
2
2
 
3
- // Generated by dts-bundle-generator v7.1.0
3
+ // Generated by dts-bundle-generator v7.2.0
4
4
 
5
5
  export type Cond = (x1?: any, x2?: any, x3?: any) => boolean;
6
6
  export interface AnyObject {
@@ -21,7 +21,7 @@ export declare function curry2<Func extends Func2>(fn: Func): {
21
21
  };
22
22
  export type Func3 = (a: any, b: any, c: any) => any;
23
23
  export declare function curry3<Func extends Func3>(fn: Func): (...args: AnyArgs) => any;
24
- export declare const uncurry: <Args extends any[] = any[], ReturnT = any>(fn: Curried<Args, any>) => AnyFunc;
24
+ export declare const uncurry: <Args extends any[] = any[], ReturnT = any>(fn: Curried<Args>) => AnyFunc;
25
25
  export declare const toLower: (s: string) => string;
26
26
  export declare const toUpper: (s: string) => string;
27
27
  export declare const type: (s: any) => any;
@@ -32,6 +32,18 @@ export declare const typeIs: {
32
32
  (a: string, b: any): boolean;
33
33
  };
34
34
  export declare const take: (argN: number) => (...args: any[]) => any;
35
+ export declare const eq: {
36
+ (a: symbol, b: any): (a: any) => boolean;
37
+ (a: any, b: symbol): (b: any) => boolean;
38
+ (a: any): (b: any) => boolean;
39
+ (a: any, b: any): boolean;
40
+ };
41
+ export declare const weakEq: {
42
+ (a: symbol, b: any): (a: any) => boolean;
43
+ (a: any, b: symbol): (b: any) => boolean;
44
+ (a: any): (b: any) => boolean;
45
+ (a: any, b: any): boolean;
46
+ };
35
47
  export declare const equals: {
36
48
  (a: symbol, b: any): (a: any) => boolean;
37
49
  (a: any, b: symbol): (b: any) => boolean;
@@ -61,7 +73,7 @@ export declare const includes: {
61
73
  (a: unknown, b: unknown[]): boolean;
62
74
  };
63
75
  export declare const slice: (...args: AnyArgs) => any;
64
- export declare const flip: <T extends AnyFunc<any, AnyArgs>>(fn: T) => {
76
+ export declare const flip: <T extends AnyFunc>(fn: T) => {
65
77
  (a: symbol, b: Parameters<T>[0]): (a: Parameters<T>[1]) => any;
66
78
  (a: Parameters<T>[1], b: symbol): (b: Parameters<T>[0]) => any;
67
79
  (a: Parameters<T>[1]): (b: Parameters<T>[0]) => any;
@@ -172,6 +184,20 @@ export declare const append: {
172
184
  (a: any): (b: any[]) => any[];
173
185
  (a: any, b: any[]): any[];
174
186
  };
187
+ export declare const prepend: {
188
+ (a: symbol, b: any[]): (a: any) => any[];
189
+ (a: any, b: symbol): (b: any[]) => any[];
190
+ (a: any): (b: any[]) => any[];
191
+ (a: any, b: any[]): any[];
192
+ };
193
+ export declare const flat: (xs: any[]) => any[];
194
+ export declare const flatShallow: (xs: any[]) => any[];
195
+ export declare const flatTo: {
196
+ (a: symbol, b: any[]): (a: number) => any[];
197
+ (a: number, b: symbol): (b: any[]) => any[];
198
+ (a: number): (b: any[]) => any[];
199
+ (a: number, b: any[]): any[];
200
+ };
175
201
  export declare const split: {
176
202
  (a: symbol, b: string): (a: string | RegExp) => string[];
177
203
  (a: string | RegExp, b: symbol): (b: string) => string[];
@@ -181,12 +207,17 @@ export declare const split: {
181
207
  export declare const T: (...args: any[]) => true;
182
208
  export declare const F: (...args: any[]) => false;
183
209
  export declare const callWith: {
184
- (a: symbol, b: AnyFunc<any, AnyArgs>): (a: any[]) => any;
185
- (a: any[], b: symbol): (b: AnyFunc<any, AnyArgs>) => any;
186
- (a: any[]): (b: AnyFunc<any, AnyArgs>) => any;
187
- (a: any[], b: AnyFunc<any, AnyArgs>): any;
188
- };
189
- export declare const noop: (..._args: any[]) => void;
210
+ (a: symbol, b: AnyFunc): (a: any[]) => any;
211
+ (a: any[], b: symbol): (b: AnyFunc) => any;
212
+ (a: any[]): (b: AnyFunc) => any;
213
+ (a: any[], b: AnyFunc): any;
214
+ };
215
+ export declare const noop: (...args: any[]) => any;
216
+ /** Calls a func from object.
217
+ * @param {any[]} [args] - arguments for the function.
218
+ * @param {string} [fnName] - property name of the function.
219
+ * @param {AnyObject} [o] - the object with the function. */
220
+ export declare const callFrom: (...args: AnyArgs) => any;
190
221
  export declare const complement: (fn: AnyFunc) => (...args: any) => boolean | any;
191
222
  export declare const sizeof: (s: any[] | string | AnyObject) => number;
192
223
  export declare const range: {
@@ -208,7 +239,7 @@ export declare const genBy: {
208
239
  (a: (i: number) => any): (b: number) => any[];
209
240
  (a: (i: number) => any, b: number): any[];
210
241
  };
211
- export declare const once: <Func extends AnyFunc<any, AnyArgs>>(fn: Func) => (...args: Parameters<Func>) => any;
242
+ export declare const once: <Func extends AnyFunc>(fn: Func) => (...args: Parameters<Func>) => any;
212
243
  export declare const reverse: (xs: any[]) => any;
213
244
  export declare const explore: (caption: string, level?: string) => (b: any) => any;
214
245
  export declare const cond: {
@@ -274,6 +305,8 @@ export declare const pathEq: (...args: AnyArgs) => any;
274
305
  export declare const pathsEq: (...args: AnyArgs) => any;
275
306
  export declare const clone: (s: any, shallow?: boolean) => any;
276
307
  export declare const cloneShallow: (s: any) => any;
308
+ export declare const freeze: <T extends AnyObject>(o: T) => Readonly<T>;
309
+ export declare const freezeShallow: <T extends AnyObject>(o: T) => Readonly<T>;
277
310
  /** types T1, T2
278
311
  * @param reducer (accum: T1, current: T2, index: number) => newAccum: T1
279
312
  * @param accum T1
@@ -367,16 +400,16 @@ export declare const overProp: (...args: AnyArgs) => any;
367
400
  /** mapKeys({ a: 'b' }, { a: 44 }) -> { b: 44 } */
368
401
  export declare const mapKeys: {
369
402
  (a: symbol, b: AnyObject): (a: {
370
- [oldKey: string]: string;
403
+ [oldKey: string]: string | AnyFunc;
371
404
  }) => AnyObject;
372
405
  (a: {
373
- [oldKey: string]: string;
406
+ [oldKey: string]: string | AnyFunc;
374
407
  }, b: symbol): (b: AnyObject) => AnyObject;
375
408
  (a: {
376
- [oldKey: string]: string;
409
+ [oldKey: string]: string | AnyFunc;
377
410
  }): (b: AnyObject) => AnyObject;
378
411
  (a: {
379
- [oldKey: string]: string;
412
+ [oldKey: string]: string | AnyFunc;
380
413
  }, b: AnyObject): AnyObject;
381
414
  };
382
415
  export declare const zip: {
@@ -400,10 +433,10 @@ export declare const zipObj: {
400
433
  export declare const zipWith: (...args: AnyArgs) => any;
401
434
  /** One promise waits for another. */
402
435
  export declare const forEachSerial: {
403
- (a: symbol, b: any[]): (a: AnyFunc<any, AnyArgs>) => Promise<void>;
404
- (a: AnyFunc<any, AnyArgs>, b: symbol): (b: any[]) => Promise<void>;
405
- (a: AnyFunc<any, AnyArgs>): (b: any[]) => Promise<void>;
406
- (a: AnyFunc<any, AnyArgs>, b: any[]): Promise<void>;
436
+ (a: symbol, b: any[]): (a: AnyFunc) => Promise<void>;
437
+ (a: AnyFunc, b: symbol): (b: any[]) => Promise<void>;
438
+ (a: AnyFunc): (b: any[]) => Promise<void>;
439
+ (a: AnyFunc, b: any[]): Promise<void>;
407
440
  };
408
441
  /** Promise.all wrapper for functional pipelining. */
409
442
  export declare const waitAll: (promises: Promise<any>[]) => Promise<any[]>;
@@ -413,10 +446,10 @@ export declare const waitAll: (promises: Promise<any>[]) => Promise<any[]>;
413
446
  * @returns {T}
414
447
  */
415
448
  export declare const waitTap: {
416
- (a: symbol, b: any): (a: AnyFunc<any, AnyArgs>) => Promise<any>;
417
- (a: AnyFunc<any, AnyArgs>, b: symbol): (b: any) => Promise<any>;
418
- (a: AnyFunc<any, AnyArgs>): (b: any) => Promise<any>;
419
- (a: AnyFunc<any, AnyArgs>, b: any): Promise<any>;
449
+ (a: symbol, b: any): (a: AnyFunc) => Promise<any>;
450
+ (a: AnyFunc, b: symbol): (b: any) => Promise<any>;
451
+ (a: AnyFunc): (b: any) => Promise<any>;
452
+ (a: AnyFunc, b: any): Promise<any>;
420
453
  };
421
454
  /** Waits for all promises mapped by the fn. */
422
455
  export declare const forEachAsync: {
@@ -463,16 +496,16 @@ export declare const qmergeShallow: {
463
496
  /** qmapKeys({ a: 'b' }, { a: 44 }) -> { b: 44 } */
464
497
  export declare const qmapKeys: {
465
498
  (a: symbol, b: AnyObject): (a: {
466
- [oldKey: string]: string | AnyFunc<any, AnyArgs>;
499
+ [oldKey: string]: string | AnyFunc;
467
500
  }) => AnyObject;
468
501
  (a: {
469
- [oldKey: string]: string | AnyFunc<any, AnyArgs>;
502
+ [oldKey: string]: string | AnyFunc;
470
503
  }, b: symbol): (b: AnyObject) => AnyObject;
471
504
  (a: {
472
- [oldKey: string]: string | AnyFunc<any, AnyArgs>;
505
+ [oldKey: string]: string | AnyFunc;
473
506
  }): (b: AnyObject) => AnyObject;
474
507
  (a: {
475
- [oldKey: string]: string | AnyFunc<any, AnyArgs>;
508
+ [oldKey: string]: string | AnyFunc;
476
509
  }, b: AnyObject): AnyObject;
477
510
  };
478
511
  export declare const qmap: {
@@ -487,6 +520,16 @@ export declare const qfilter: {
487
520
  (a: (v: any, k: string | number) => boolean): (b: any[] | AnyObject) => any[] | AnyObject;
488
521
  (a: (v: any, k: string | number) => boolean, b: any[] | AnyObject): any[] | AnyObject;
489
522
  };
523
+ export declare const qempty: (o: AnyObject | any[]) => any[] | AnyObject;
524
+ export declare const qfreeze: <T extends AnyObject>(o: T) => Readonly<T>;
525
+ export declare const qfreezeShallow: <T extends AnyObject>(o: T) => Readonly<T>;
526
+ export declare const qprepend: {
527
+ (a: symbol, b: any[]): (a: any) => number;
528
+ (a: any, b: symbol): (b: any[]) => number;
529
+ (a: any): (b: any[]) => number;
530
+ (a: any, b: any[]): number;
531
+ };
532
+ export declare const qassocPath: any;
490
533
  export type StrTmpl = ((data: AnyObject) => string);
491
534
  export declare const getTmpl: (tmpl: string) => StrTmpl;
492
535
 
package/dist/bundle.mjs CHANGED
@@ -1 +1 @@
1
- const e=Symbol("Placeholder"),r=r=>{let t=0;for(const n of r)n!==e&&t++;return t},t=(r,t)=>{const n=r.length,s=r.slice(),c=t.length;let o=c,u=0;for(;o&&u<n;u++)s[u]===e&&(s[u]=t[c-o],o--);for(u=n;o;u++,o--)s[u]=t[c-o];return s},n=(e,s,c)=>{const o=e.length-s.length-r(c);if(o<1)return e(...t(s,c));{const r=(...r)=>n(e,t(s,c),r);return r.$args_left=o,r}},s=e=>(...t)=>e.length>r(t)?n(e,[],t):e(...t),c=r=>function(t){return t===e?r:r(t)};function o(r){return function(t,n){const s=t===e,o=arguments.length;if(1===o&&s)throw new Error("Senseless placeholder usage.");return arguments.length>1?s?c((e=>r(e,n))):r(t,n):e=>r(t,e)}}function u(e){return s(e)}const a=void 0,i=1/0,l=e=>typeof e,f=e=>null===e,h=e=>"number"==l(e),b=e=>Array.isArray(e),g=e=>"function"===l(e),p={u:"U",b:"B",n:"N",s:"S",f:"F"},y=e=>e.toLowerCase(),j=e=>e.toUpperCase(),d=e=>{const r=l(e);return"object"===r?f(e)?"Null":e.constructor.name:p[r[0]]+r.slice(1)},m=o(((e,r)=>d(r)===e)),w=o(((e,r)=>(r.push(e),r))),O=u(((e,r,t)=>(t[e]=r,t))),A=u(((e,r,t)=>t.reduce(e,r))),S=u(((e,r,t)=>{for(let n in t)switch(d(t[n])){case"Array":if(e>1&&"Array"===d(r[n]))switch(e){case 2:const s=r[n],c=t[n];for(const r in c)s[r]?S(e,s[r],c[r]):s[r]=c[r];break;case 3:r[n].push(...t[n])}else r[n]=t[n];break;case"Object":if("Object"===d(r[n])){S(e,r[n],t[n]);break}default:r[n]=t[n]}return r})),k=S(1),v=S(2),N=S(3),C=o(((e,r)=>Object.assign(e,r))),E=o(((e,r)=>{let t,n,s,c;for(t in e)t in r&&(n=e[t],[s,c]=g(n)?n(r[t],r):[n||t,r[t]],r[s]=c,t!==s&&delete r[t]);return r})),P=o(((e,r)=>{for(let t in r)r[t]=e(r[t],+t,r);return r})),$=o(((e,r)=>{const t=b(r);let n,s;t&&(n=0,s=[]);for(let n in r)e(r[n],n)||(t?s.push(+n):delete r[n]);if(t)for(const e of s)r.splice(e-n++,1);return r})),x=e=>(...r)=>A(((e,r)=>e?e(r):e),e,r),B=e=>(...r)=>r[e],U=o(((e,r)=>{const t=d(e);if(t===d(r)&&("Object"===t||"Array"==t)){if(f(e)||f(r))return e===r;if(e===r)return!0;for(const t of[e,r])for(const n in t)if(!(t===r&&n in e||t===e&&n in r&&U(e[n],r[n])))return!1;return!0}return e===r})),_=s(((e,r,t,n)=>e(n)?r(n):t(n))),F=u(((e,r,t)=>_(e,r,ce,t))),I=(...r)=>(...t)=>{let n,s=!0;for(let c=ne(r)-1;c>-1;c--)s?(s=!1,n=r[c](...t)):n=n===e?r[c]():r[c](n);return n},L=o(((e,r)=>e.bind(r))),q=o(((e,r)=>r[e])),z=o(((e,r)=>{if((e=>"string"===l(e))(r))return r.includes(e);for(const t of r)if(U(t,e))return!0;return!1})),D=u(((e,r,t)=>t.slice(e,h(r)?r:i))),G=e=>o(((r,t)=>e(t,r))),H=q(0),J=D(1,i),K=o(((e,r)=>e+r)),M=o(((e,r)=>r-e)),Q=o(((e,r)=>e*r)),R=o(((e,r)=>e>r)),T=o(((e,r)=>e<r)),V=o(((e,r)=>r>=e)),W=o(((e,r)=>r<=e)),X=o(((e,r)=>r.sort(e))),Y=o(((e,r)=>r.find(e))),Z=o(((e,r)=>r.findIndex(e))),ee=o(((e,r)=>Z(U(e),r))),re=o(((e,r)=>e/r)),te=e=>f(e)||(e=>e===a)(e),ne=e=>e.length,se=e=>()=>e,ce=e=>e,oe=e=>e.trim(),ue=e=>e[ne(e)-1],ae=e=>!e,ie=e=>Object.keys(e),le=e=>Object.values(e),fe=e=>Object.entries(e),he=o(((e,r)=>e.test(r))),be=o(((e,r)=>(e(r),r))),ge=o(((e,r)=>[...r,e])),pe=o(((e,r)=>r.split(e))),ye=se(!0),je=se(!1),de=o(((e,r)=>r(...e))),me=(...e)=>{},we=e=>(...r)=>{const t=e(...r),n=g(t);return!n||n&&t.$args_left<=0?ae(t):we(t)},Oe=e=>{if("Object"===d(e)){let r=0;for(let t in e)r++;return r}return ne(e)},Ae=o(((e,r)=>ve(K(e),r-e))),Se=e=>A(((e,r)=>z(r,e)?e:w(r,e)),[],e),ke=o(((e,r)=>e.filter(G(z)(r)))),ve=o(((e,r)=>[...Array(r)].map(((r,t)=>e(t))))),Ne=e=>{let r,t=!1;return(...n)=>t?r:(t=!0,r=e(...n))},Ce=e=>I((r=>Qe(((t,n,s)=>w(e[r-s],t)),[],e)),K(-1),ne)(e),Ee=(e,r="log")=>be((t=>console[r](e,t))),Pe=o(((e,r)=>{for(const[t,n]of e)if(t(r))return n(r)})),$e=u(((e,r,t)=>({...t,[e]:r}))),xe=u(((e,r,t)=>I((n=>{return $e(n,ne(e)<2?r:xe(D(1,i,e),r,(s=t[n],f(s)||"object"!==l(s)?{}:t[n])),t);var s}),H)(e))),Be=o(((e,r)=>r.every(e))),Ue=o(((e,r)=>r.some(e))),_e=o(((e,r)=>e.every((e=>e(r))))),Fe=o(((e,r)=>e.some((e=>e(r))))),Ie=o(((e,r)=>r[e])),Le=u(((e,r,t)=>U(t[e],r))),qe=u(((e,r,t)=>U(r[e],t[e]))),ze=u(((e,r,t)=>_(ne,(()=>te(t)?e:I(_(te,se(e),(t=>ze(e,D(1,i,r),t))),G(Ie)(t),H)(r)),se(t),r))),De=ze(a),Ge=u(((e,r,t)=>U(De(e,t),r))),He=u(((e,r,t)=>U(De(e,r),De(e,t)))),Je=/^(.*?)(8|16|32|64)(Clamped)?Array$/,Ke=(e,r=!1)=>{const t=d(e);switch(t){case"Null":case"String":case"Number":case"Boolean":case"Symbol":return e;case"Array":return r?[...e]:Ze(I(Ke,B(0)),e);case"Object":if(r)return{...e};const n={};for(let r in e)n[r]=Ke(e[r]);return n;default:return Je.test(t)?e.constructor.from(e):e}},Me=e=>Ke(e,!0),Qe=u(((e,r,t)=>A(e,Ke(r),t))),Re=o(((e,r)=>cr(e,r))),Te=o(((e,r)=>{const t={};for(const n of e)n in r&&(t[n]=r[n]);return t})),Ve=o(((e,r)=>cr(((r,t)=>!z(t,e)),r))),We=e=>Object.fromEntries(e),Xe=o(((e,r)=>r.concat(e))),Ye=o(((e,r)=>r.join(e))),Ze=o(((e,r)=>r.map(e))),er=o(((e,r)=>r.forEach(e))),rr=u(((e,r,t)=>r(t)&&e(t))),tr=e=>{switch(d(e)){case"String":case"Array":return 0==ne(e);case"Object":for(const r in e)return!1;return!0;default:return null}},nr=e=>{switch(d(e)){case"String":return"";case"Object":return{};case"Array":return[];default:return a}},sr=u(((e,r,t)=>t.replace(e,r))),cr=o(((e,r)=>b(r)?r.filter(e):$(e,{...r}))),or=e=>{let r,t=!1;return()=>t?r:(t=!0,r=e())},ur=o(((e,r)=>Object.assign({},e,r))),ar=o(((e,r)=>k(Ke(e),Ke(r)))),ir=o(((e,r)=>v(Ke(e),Ke(r)))),lr=o(((e,r)=>N(Ke(e),Ke(r)))),fr=u(((e,r,t)=>$e(e,r(t[e]),t))),hr=o(((e,r)=>E(e,Object.assign({},r)))),br=o(((e,r)=>Ze(((e,t)=>[e,r[t]]),e))),gr=o(((e,r)=>Qe(((e,t,n)=>$e(t,r[n],e)),{},e))),pr=u(((e,r,t)=>Ze(((r,n)=>e(r,t[n])),r))),yr=(()=>{const e=async(r,t,n)=>{n<t.length&&(await r(t[n]),await e(r,t,++n))};return o(((r,t)=>e(r,t,0)))})(),jr=e=>Promise.all(e),dr=o((async(e,r)=>(await e(r),r))),mr=o(((e,r)=>Promise.all(r.map(e)))),wr=(()=>{const e=async(r,t,n)=>~n?await e(r,[await r[n](...t)],--n):H(t);return(...r)=>(...t)=>e(r,t,r.length-1)})(),Or=ce,Ar=ce,Sr=ce,kr=we,vr=ge,Nr=Ue,Cr=e=>{const r=[],t=[],n=e.length;let s,c,o,u=0,a=0,i=!1,l=H(e),f=!1;for(u=0;u<n;u++)switch(s=e[u],s){case"{":if(!l){i=!0,a=u;break}case"}":if(!l){i=!1,r.push(""),t.push(e.slice(a+1,u));break}default:o=e[u+1],f="\\"===s,i||f&&("{"===o||"}"===o)||(c=r.length-1,c<0&&(r.push(""),c++),r[c]+=s),l=f}return e=>{const n=[],s=r.length-1;for(const c in r)u=+c,n.push(r[u]),u!==s&&n.push(De(t[u].split("."),e));return n.join("")}};export{je as F,ye as T,e as __,K as add,Be as all,_e as allPass,se as always,Ue as any,Fe as anyPass,ge as append,$e as assoc,xe as assocPath,L as bind,rr as both,de as callWith,Ke as clone,Me as cloneShallow,we as complement,I as compose,wr as composeAsync,Xe as concat,Pe as cond,s as curry,o as curry2,u as curry3,re as divide,Sr as echo,nr as empty,U as equals,Ee as explore,cr as filter,Y as find,Z as findIndex,G as flip,er as forEach,mr as forEachAsync,yr as forEachSerial,We as fromPairs,ve as genBy,Cr as getTmpl,R as gt,V as gte,H as head,ce as identity,_ as ifElse,z as includes,ee as indexOf,ke as intersection,tr as isEmpty,te as isNil,Ye as join,ie as keys,ue as last,ne as length,T as lt,W as lte,Ze as map,hr as mapKeys,or as memoize,ar as mergeDeep,lr as mergeDeepAdd,ir as mergeDeepX,ur as mergeShallow,Or as mirror,Q as multiply,me as noop,ae as not,kr as notf,q as nth,Ve as omit,Ne as once,fr as overProp,De as path,Ge as pathEq,ze as pathOr,He as pathsEq,Te as pick,Re as pickBy,Ie as prop,Le as propEq,qe as propsEq,vr as push,w as qappend,O as qassoc,$ as qfilter,P as qmap,E as qmapKeys,k as qmergeDeep,N as qmergeDeepAdd,v as qmergeDeepX,C as qmergeShallow,A as qreduce,Ae as range,Qe as reduce,Ar as reflect,sr as replace,Ce as reverse,Oe as sizeof,D as slice,Nr as some,X as sort,pe as split,M as subtract,J as tail,B as take,be as tap,he as test,y as toLower,fe as toPairs,j as toUpper,oe as trim,d as type,m as typeIs,x as uncurry,Se as uniq,le as values,jr as waitAll,dr as waitTap,F as when,br as zip,gr as zipObj,pr as zipWith};
1
+ const e=Symbol("Placeholder"),r=r=>{let t=0;for(const n of r)n!==e&&t++;return t},t=(r,t)=>{const n=r.length,s=r.slice(),c=t.length;let o=c,l=0;for(;o&&l<n;l++)s[l]===e&&(s[l]=t[c-o],o--);for(l=n;o;l++,o--)s[l]=t[c-o];return s},n=(e,s,c)=>{const o=e.length-s.length-r(c);if(o<1)return e(...t(s,c));{const r=(...r)=>n(e,t(s,c),r);return r.$args_left=o,r}},s=e=>(...t)=>e.length>r(t)?n(e,[],t):e(...t),c=r=>function(t){return t===e?r:r(t)};function o(r){return function(t,n){const s=t===e,o=arguments.length;if(1===o&&s)throw new Error("Senseless placeholder usage.");return arguments.length>1?s?c((e=>r(e,n))):r(t,n):e=>r(t,e)}}function l(e){return s(e)}const i=void 0,u=1/0,a=e=>typeof e,f=e=>null===e,h=e=>"number"==a(e),b=e=>Array.isArray(e),g=e=>"function"===a(e),p=e=>!f(e)&&"object"===a(e),j={u:"U",b:"B",n:"N",s:"S",f:"F"},y=e=>e.toLowerCase(),d=e=>e.toUpperCase(),m=e=>{const r=a(e);return"object"===r?f(e)?"Null":e.constructor.name:j[r[0]]+r.slice(1)},O=o(((e,r)=>m(r)===e)),w=e=>(...r)=>r[e],A=o(((e,r)=>e===r)),S=o(((e,r)=>e==r)),k=o(((e,r)=>{const t=m(e);if(A(t,m(r))&&(A(t,"Object")||A(t,"Array"))){if(f(e)||f(r))return A(e,r);if(A(e,r))return!0;for(const t of[e,r])for(const n in t)if(!(A(t,r)&&n in e||A(t,e)&&n in r&&k(e[n],r[n])))return!1;return!0}return A(e,r)})),v=s(((e,r,t,n)=>e(n)?r(n):t(n))),N=l(((e,r,t)=>v(e,r,W,t))),C=(...r)=>(...t)=>{let n,s=!0;for(let c=T(r)-1;c>-1;c--)s?(s=!1,n=r[c](...t)):n=n===e?r[c]():r[c](n);return n},E=o(((e,r)=>e.bind(r))),P=o(((e,r)=>r[e])),$=o(((e,r)=>{if((e=>"string"===a(e))(r))return r.includes(e);for(const t of r)if(k(t,e))return!0;return!1})),x=l(((e,r,t)=>t.slice(e,h(r)?r:u))),z=e=>o(((r,t)=>e(t,r))),B=P(0),U=x(1,u),_=o(((e,r)=>e+r)),D=o(((e,r)=>r-e)),F=o(((e,r)=>e*r)),I=o(((e,r)=>e>r)),L=o(((e,r)=>e<r)),q=o(((e,r)=>r>=e)),G=o(((e,r)=>r<=e)),H=o(((e,r)=>r.sort(e))),J=o(((e,r)=>r.find(e))),K=o(((e,r)=>r.findIndex(e))),M=o(((e,r)=>K(k(e),r))),Q=o(((e,r)=>e/r)),R=e=>f(e)||(e=>e===i)(e),T=e=>e.length,V=e=>()=>e,W=e=>e,X=e=>e.trim(),Y=e=>e[T(e)-1],Z=e=>!e,ee=e=>Object.keys(e),re=e=>Object.values(e),te=e=>Object.entries(e),ne=o(((e,r)=>e.test(r))),se=o(((e,r)=>(e(r),r))),ce=o(((e,r)=>[...r,e])),oe=o(((e,r)=>[...r,e])),le=e=>e.flat(u),ie=e=>e.flat(),ue=o(((e,r)=>r.flat(e))),ae=o(((e,r)=>r.split(e))),fe=V(!0),he=V(!1),be=o(((e,r)=>r(...e))),ge=()=>{},pe=s(((e,r,t)=>t[r](...e))),je=e=>(...r)=>{const t=e(...r),n=g(t);return!n||n&&t.$args_left<=0?Z(t):je(t)},ye=e=>{if("Object"===m(e)){let r=0;for(let t in e)r++;return r}return T(e)},de=o(((e,r)=>we(_(e),r-e))),me=e=>Cr(((e,r)=>$(r,e)?e:vr(r,e)),[],e),Oe=o(((e,r)=>e.filter(z($)(r)))),we=o(((e,r)=>[...Array(r)].map(((r,t)=>e(t))))),Ae=e=>{let r,t=!1;return(...n)=>t?r:(t=!0,r=e(...n))},Se=e=>C((r=>Ke(((t,n,s)=>vr(e[r-s],t)),[],e)),_(-1),T)(e),ke=(e,r="log")=>se((t=>console[r](e,t))),ve=o(((e,r)=>{for(const[t,n]of e)if(t(r))return n(r)})),Ne=l(((e,r,t)=>({...t,[e]:r}))),Ce=l(((e,r,t)=>C((n=>Ne(n,T(e)<2?r:Ce(x(1,u,e),r,p(t[n])?t[n]:{}),t)),B)(e))),Ee=o(((e,r)=>r.every(e))),Pe=o(((e,r)=>r.some(e))),$e=o(((e,r)=>e.every((e=>e(r))))),xe=o(((e,r)=>e.some((e=>e(r))))),ze=o(((e,r)=>r[e])),Be=l(((e,r,t)=>k(t[e],r))),Ue=l(((e,r,t)=>k(r[e],t[e]))),_e=l(((e,r,t)=>v(T,(()=>R(t)?e:C(v(R,V(e),(t=>_e(e,x(1,u,r),t))),z(ze)(t),B)(r)),V(t),r))),De=_e(i),Fe=l(((e,r,t)=>k(De(e,t),r))),Ie=l(((e,r,t)=>k(De(e,r),De(e,t)))),Le=/^(.*?)(8|16|32|64)(Clamped)?Array$/,qe=(e,r=!1)=>{const t=m(e);switch(t){case"Null":case"String":case"Number":case"Boolean":case"Symbol":return e;case"Array":return r?[...e]:Xe(C(qe,w(0)),e);case"Object":if(r)return{...e};const n={};for(let r in e)n[r]=qe(e[r]);return n;default:return Le.test(t)?e.constructor.from(e):e}},Ge=e=>qe(e,!0),He=e=>Fr(qe(e)),Je=e=>Ir(qe(e)),Ke=l(((e,r,t)=>Cr(e,qe(r),t))),Me=o(((e,r)=>nr(e,r))),Qe=o(((e,r)=>{const t={};for(const n of e)n in r&&(t[n]=r[n]);return t})),Re=o(((e,r)=>nr(((r,t)=>!$(t,e)),r))),Te=e=>Object.fromEntries(e),Ve=o(((e,r)=>r.concat(e))),We=o(((e,r)=>r.join(e))),Xe=o(((e,r)=>r.map(e))),Ye=o(((e,r)=>r.forEach(e))),Ze=l(((e,r,t)=>r(t)&&e(t))),er=e=>{switch(m(e)){case"String":case"Array":return 0==T(e);case"Object":for(const r in e)return!1;return!0;default:return null}},rr=e=>{switch(m(e)){case"String":return"";case"Object":return{};case"Array":return[];default:return i}},tr=l(((e,r,t)=>t.replace(e,r))),nr=o(((e,r)=>b(r)?r.filter(e):_r(e,{...r}))),sr=e=>{let r,t=!1;return()=>t?r:(t=!0,r=e())},cr=o(((e,r)=>Object.assign({},e,r))),or=o(((e,r)=>Pr(qe(e),qe(r)))),lr=o(((e,r)=>$r(qe(e),qe(r)))),ir=o(((e,r)=>xr(qe(e),qe(r)))),ur=l(((e,r,t)=>Ne(e,r(t[e]),t))),ar=o(((e,r)=>Br(e,Object.assign({},r)))),fr=o(((e,r)=>Xe(((e,t)=>[e,r[t]]),e))),hr=o(((e,r)=>Ke(((e,t,n)=>Ne(t,r[n],e)),{},e))),br=l(((e,r,t)=>Xe(((r,n)=>e(r,t[n])),r))),gr=(()=>{const e=async(r,t,n)=>{n<t.length&&(await r(t[n]),await e(r,t,++n))};return o(((r,t)=>e(r,t,0)))})(),pr=e=>Promise.all(e),jr=o((async(e,r)=>(await e(r),r))),yr=o(((e,r)=>Promise.all(r.map(e)))),dr=(()=>{const e=async(r,t,n)=>~n?await e(r,[await r[n](...t)],--n):B(t);return(...r)=>(...t)=>e(r,t,r.length-1)})(),mr=W,Or=W,wr=W,Ar=je,Sr=ce,kr=Pe,vr=o(((e,r)=>(r.push(e),r))),Nr=l(((e,r,t)=>(t[e]=r,t))),Cr=l(((e,r,t)=>t.reduce(e,r))),Er=l(((e,r,t)=>{for(let n in t)switch(m(t[n])){case"Array":if(e>1&&"Array"===m(r[n]))switch(e){case 2:const s=r[n],c=t[n];for(const r in c)s[r]?Er(e,s[r],c[r]):s[r]=c[r];break;case 3:r[n].push(...t[n])}else r[n]=t[n];break;case"Object":if("Object"===m(r[n])){Er(e,r[n],t[n]);break}default:r[n]=t[n]}return r})),Pr=Er(1),$r=Er(2),xr=Er(3),zr=o(((e,r)=>Object.assign(e,r))),Br=o(((e,r)=>{let t,n,s,c;for(t in e)t in r&&(n=e[t],[s,c]=g(n)?n(r[t],t,r):[n,r[t]],r[R(s)?t:s]=c,t!==s&&delete r[t]);return r})),Ur=o(((e,r)=>{for(let t in r)r[t]=e(r[t],+t,r);return r})),_r=o(((e,r)=>{const t=b(r);let n,s;t&&(n=0,s=[]);for(let n in r)e(r[n],n)||(t?s.push(+n):delete r[n]);if(t)for(const e of s)r.splice(e-n++,1);return r})),Dr=e=>{if(b(e))e.splice(0);else for(const r in e)delete e[r];return e},Fr=e=>{let r;for(const t in e)r=e[t],p(r)&&Fr(r);return Object.freeze(e)},Ir=e=>Object.freeze(e),Lr=o(((e,r)=>r.unshift(e))),qr=l(((e,r,t)=>{const n=e[0];return Nr(n,e.length<2?r:qr(e.slice(1),r,p(t[n])?t[n]:{}),t)})),Gr=e=>(...r)=>Cr(((e,r)=>e?e(r):e),e,r),Hr=e=>{const r=[],t=[],n=e.length;let s,c,o,l=0,i=0,u=!1,a=B(e),f=!1;for(l=0;l<n;l++)switch(s=e[l],s){case"{":if(!a){u=!0,i=l;break}case"}":if(!a){u=!1,r.push(""),t.push(e.slice(i+1,l));break}default:o=e[l+1],f="\\"===s,u||f&&("{"===o||"}"===o)||(c=r.length-1,c<0&&(r.push(""),c++),r[c]+=s),a=f}return e=>{const n=[],s=r.length-1;for(const c in r)l=+c,n.push(r[l]),l!==s&&n.push(De(t[l].split("."),e));return n.join("")}};export{he as F,fe as T,e as __,_ as add,Ee as all,$e as allPass,V as always,Pe as any,xe as anyPass,ce as append,Ne as assoc,Ce as assocPath,E as bind,Ze as both,pe as callFrom,be as callWith,qe as clone,Ge as cloneShallow,je as complement,C as compose,dr as composeAsync,Ve as concat,ve as cond,s as curry,o as curry2,l as curry3,Q as divide,wr as echo,rr as empty,A as eq,k as equals,ke as explore,nr as filter,J as find,K as findIndex,le as flat,ie as flatShallow,ue as flatTo,z as flip,Ye as forEach,yr as forEachAsync,gr as forEachSerial,He as freeze,Je as freezeShallow,Te as fromPairs,we as genBy,Hr as getTmpl,I as gt,q as gte,B as head,W as identity,v as ifElse,$ as includes,M as indexOf,Oe as intersection,er as isEmpty,R as isNil,We as join,ee as keys,Y as last,T as length,L as lt,G as lte,Xe as map,ar as mapKeys,sr as memoize,or as mergeDeep,ir as mergeDeepAdd,lr as mergeDeepX,cr as mergeShallow,mr as mirror,F as multiply,ge as noop,Z as not,Ar as notf,P as nth,Re as omit,Ae as once,ur as overProp,De as path,Fe as pathEq,_e as pathOr,Ie as pathsEq,Qe as pick,Me as pickBy,oe as prepend,ze as prop,Be as propEq,Ue as propsEq,Sr as push,vr as qappend,Nr as qassoc,qr as qassocPath,Dr as qempty,_r as qfilter,Fr as qfreeze,Ir as qfreezeShallow,Ur as qmap,Br as qmapKeys,Pr as qmergeDeep,xr as qmergeDeepAdd,$r as qmergeDeepX,zr as qmergeShallow,Lr as qprepend,Cr as qreduce,de as range,Ke as reduce,Or as reflect,tr as replace,Se as reverse,ye as sizeof,x as slice,kr as some,H as sort,ae as split,D as subtract,U as tail,w as take,se as tap,ne as test,y as toLower,te as toPairs,d as toUpper,X as trim,m as type,O as typeIs,Gr as uncurry,me as uniq,re as values,pr as waitAll,jr as waitTap,S as weakEq,N as when,fr as zip,hr as zipObj,br as zipWith};
package/package.json CHANGED
@@ -1,80 +1,80 @@
1
- {
2
- "author": {
3
- "name": "Michael houd1ni Akiliev"
4
- },
5
- "bugs": {
6
- "url": "https://github.com/houd1ni/pepka/issues"
7
- },
8
- "deprecated": false,
9
- "description": "An ultra lightweight, async or unsafe-speedy ramda alternative.",
10
- "homepage": "https://houd1ni.github.io/pepka/",
11
- "keywords": [
12
- "ramda",
13
- "functional",
14
- "fp",
15
- "pure",
16
- "strongly-typed",
17
- "typescript",
18
- "d.ts"
19
- ],
20
- "license": "MIT",
21
- "type": "module",
22
- "exports": {
23
- ".": {
24
- "import": "./dist/bundle.mjs",
25
- "require": "./dist/bundle.cjs"
26
- }
27
- },
28
- "name": "pepka",
29
- "repository": {
30
- "type": "git",
31
- "url": "git+https://github.com/houd1ni/pepka.git"
32
- },
33
- "scripts": {
34
- "lint": "tslint src/*.ts",
35
- "test": "npm run gentypes && npm run prod:es && ava",
36
- "test:report": "nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && codecov",
37
- "test:lazy": "ava",
38
- "dts-fix": "node dts-fix.js",
39
- "gentypes": "dts-bundle-generator --no-check -o dist/bundle.d.ts src/index.ts && npm run dts-fix",
40
- "dev": "cross-env NODE_ENV=development BUILD=es rollup -c",
41
- "prod:cjs": "cross-env NODE_ENV=production BUILD=cjs rollup -c",
42
- "prod:es": "cross-env NODE_ENV=production BUILD=es rollup -c",
43
- "prod": "npm run gentypes && npm run prod:es && npm run prod:cjs",
44
- "all": "npm run dev && npm run prod"
45
- },
46
- "version": "1.0.0-beta.7",
47
- "ava": {
48
- "files": [
49
- "./test/specs/*.ts"
50
- ],
51
- "failFast": true,
52
- "timeout": "2m",
53
- "extensions": [
54
- "ts"
55
- ],
56
- "require": [
57
- "ts-node/register"
58
- ]
59
- },
60
- "devDependencies": {
61
- "@rollup/plugin-commonjs": "^23.0.3",
62
- "@rollup/plugin-node-resolve": "^15.0.1",
63
- "@rollup/plugin-replace": "^5.0.1",
64
- "@rollup/plugin-terser": "^0.1.0",
65
- "@types/node": "^18.11.11",
66
- "ava": "^5.1.0",
67
- "codecov": "^3.8.2",
68
- "cross-env": "^7.0.3",
69
- "dts-bundle-generator": "^7.1.0",
70
- "nyc": "^15.1.0",
71
- "prepend": "^1.0.2",
72
- "rollup": "^3.6.0",
73
- "rollup-plugin-typescript2": "^0.34.1",
74
- "ts-node": "^10.9.1",
75
- "tslint": "^6.1.0",
76
- "typescript": "^4.9.4"
77
- },
78
- "types": "./dist/bundle.d.ts",
79
- "sideEffects": false
80
- }
1
+ {
2
+ "author": {
3
+ "name": "Michael houd1ni Akiliev"
4
+ },
5
+ "bugs": {
6
+ "url": "https://github.com/houd1ni/pepka/issues"
7
+ },
8
+ "deprecated": false,
9
+ "description": "An ultra lightweight, async or unsafe-speedy ramda alternative.",
10
+ "homepage": "https://houd1ni.github.io/pepka/",
11
+ "keywords": [
12
+ "ramda",
13
+ "functional",
14
+ "fp",
15
+ "pure",
16
+ "strongly-typed",
17
+ "typescript",
18
+ "d.ts"
19
+ ],
20
+ "license": "MIT",
21
+ "type": "module",
22
+ "exports": {
23
+ ".": {
24
+ "import": "./dist/bundle.mjs",
25
+ "require": "./dist/bundle.cjs"
26
+ }
27
+ },
28
+ "name": "pepka",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/houd1ni/pepka.git"
32
+ },
33
+ "scripts": {
34
+ "lint": "tslint src/*.ts",
35
+ "test": "npm run gentypes && npm run prod:es && ava",
36
+ "test:report": "nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && codecov",
37
+ "test:lazy": "ava",
38
+ "dts-fix": "node dts-fix.js",
39
+ "gentypes": "dts-bundle-generator --no-check -o dist/bundle.d.ts src/index.ts && npm run dts-fix",
40
+ "dev": "cross-env NODE_ENV=development BUILD=es rollup -c",
41
+ "prod:cjs": "cross-env NODE_ENV=production BUILD=cjs rollup -c",
42
+ "prod:es": "cross-env NODE_ENV=production BUILD=es rollup -c",
43
+ "prod": "npm run gentypes && npm run prod:es && npm run prod:cjs",
44
+ "all": "npm run dev && npm run prod"
45
+ },
46
+ "version": "1.0.0-beta.9",
47
+ "ava": {
48
+ "files": [
49
+ "./test/specs/*.ts"
50
+ ],
51
+ "failFast": true,
52
+ "timeout": "2m",
53
+ "extensions": [
54
+ "ts"
55
+ ],
56
+ "require": [
57
+ "ts-node/register"
58
+ ]
59
+ },
60
+ "devDependencies": {
61
+ "@rollup/plugin-commonjs": "^24.0.1",
62
+ "@rollup/plugin-node-resolve": "^15.0.1",
63
+ "@rollup/plugin-replace": "^5.0.2",
64
+ "@rollup/plugin-terser": "^0.4.0",
65
+ "@types/node": "^18.15.11",
66
+ "ava": "^5.2.0",
67
+ "codecov": "^3.8.3",
68
+ "cross-env": "^7.0.3",
69
+ "dts-bundle-generator": "^7.2.0",
70
+ "nyc": "^15.1.0",
71
+ "prepend": "^1.0.2",
72
+ "rollup": "^3.20.2",
73
+ "rollup-plugin-typescript2": "^0.34.1",
74
+ "ts-node": "^10.9.1",
75
+ "tslint": "^6.1.3",
76
+ "typescript": "^5.0.2"
77
+ },
78
+ "types": "./dist/bundle.d.ts",
79
+ "sideEffects": false
80
+ }
package/src/curry.ts CHANGED
@@ -43,7 +43,6 @@ const _curry = (fn: Function, args: AnyArgs, new_args: AnyArgs) => {
43
43
  return curried
44
44
  }
45
45
  }
46
-
47
46
  export const curry = (fn: AnyFunc) => (
48
47
  (...args: AnyArgs) => fn.length>countArgs(args)
49
48
  ? _curry(fn, [], args)
package/src/quick.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { curry2, curry3 } from "./curry"
2
2
  import { type } from "./common"
3
3
  import { AnyObject, Reducer, AnyFunc } from "./types"
4
- import { isFunc, isArray } from "./utils"
5
-
4
+ import { isFunc, isArray, isObj } from "./utils"
5
+ import { isNil } from "./safe"
6
6
  // TODO: qoverProp, qover array ?
7
7
 
8
8
  export const qappend = curry2((s: any, xs: any[]) => {xs.push(s); return xs})
@@ -59,9 +59,9 @@ export const qmapKeys = curry2(
59
59
  for(k in keyMap) if(k in o) {
60
60
  mapped = keyMap[k]
61
61
  ;[newKey, newValue] = isFunc(mapped)
62
- ? (mapped as AnyFunc)(o[k], o)
63
- : [mapped || k, o[k]]
64
- o[newKey] = newValue
62
+ ? (mapped as AnyFunc)(o[k], k, o)
63
+ : [mapped, o[k]]
64
+ o[isNil(newKey) ? k : newKey] = newValue
65
65
  if(k !== newKey) delete o[k]
66
66
  }
67
67
  return o
@@ -74,10 +74,10 @@ export const qmap = curry2(
74
74
  }
75
75
  )
76
76
  export const qfilter = curry2(
77
- (
77
+ <T extends any[] | AnyObject>(
78
78
  cond: (v: any, k: string | number) => boolean,
79
- data: any[] | AnyObject
80
- ) => {
79
+ data: T
80
+ ): T => {
81
81
  const isArr = isArray(data)
82
82
  let indicies_offset: number, indicies2rm: number[]
83
83
  if(isArr) {
@@ -87,11 +87,33 @@ export const qfilter = curry2(
87
87
  for(let k in data)
88
88
  if(!cond(data[k], k)) // @ts-ignore
89
89
  if(isArr) indicies2rm.push(+k)
90
- else
91
- delete data[k]
90
+ else delete data[k]
92
91
  if(isArr)// @ts-ignore
93
92
  for(const i of indicies2rm) // @ts-ignore
94
93
  data.splice(i - indicies_offset++, 1)
95
94
  return data
96
95
  }
97
- )
96
+ )
97
+ export const qempty = (o: AnyObject|any[]) => {
98
+ if(isArray(o)) o.splice(0)
99
+ else for(const i in o) delete o[i]
100
+ return o
101
+ }
102
+ export const qfreeze = <T extends AnyObject>(o: T): Readonly<T> => {
103
+ let v: any
104
+ for(const k in o) {
105
+ v = o[k]
106
+ if(isObj(v)) qfreeze(v)
107
+ }
108
+ return Object.freeze(o)
109
+ }
110
+ export const qfreezeShallow = <T extends AnyObject>(o: T): Readonly<T> => Object.freeze(o)
111
+ export const qprepend = curry2((x: any, xs: any[]) => xs.unshift(x))
112
+ export const qassocPath = curry3((_path: string[], v: any, o: AnyObject) => {
113
+ const first = _path[0]
114
+ return qassoc(first, _path.length<2
115
+ ? v
116
+ : qassocPath(_path.slice(1), v, isObj(o[first]) ? o[first] : {}),
117
+ o
118
+ )
119
+ })
package/src/safe.ts CHANGED
@@ -1,25 +1,27 @@
1
1
  import { __, curry, curry2, curry3 } from './curry'
2
2
  import { isNum, isUndef, undef, isNull, isArray, isFunc, isStr, isObj, inf } from './utils'
3
- import { qmergeDeep, qreduce, qappend, qmapKeys, qmergeDeepX, qmergeDeepAdd, qfilter } from './quick'
3
+ import { qmergeDeep, qreduce, qappend, qmapKeys, qmergeDeepX, qmergeDeepAdd, qfilter, qfreeze, qfreezeShallow } from './quick'
4
4
  import { AnyFunc, Cond, AnyObject, Reducer } from './types'
5
5
  import { type } from './common'
6
6
  // over, lensProp
7
7
 
8
8
  export const take = (argN: number) => (...args: any[]) => args[argN]
9
+ export const eq = curry2((a: any, b: any) => a===b)
10
+ export const weakEq = curry2((a: any, b: any) => a==b)
9
11
  export const equals = curry2((a: any, b: any) => {
10
12
  const typea = type(a)
11
- if(typea===type(b) && (typea==='Object' || typea=='Array')) {
12
- if(isNull(a) || isNull(b)) return a===b
13
- if(a===b) return true
13
+ if(eq(typea, type(b)) && (eq(typea, 'Object') || eq(typea, 'Array'))) {
14
+ if(isNull(a) || isNull(b)) return eq(a, b)
15
+ if(eq(a, b)) return true
14
16
  for(const v of [a, b])
15
17
  for(const k in v)
16
18
  if(
17
- !((v===b) && (k in a)) &&
18
- !((v===a) && (k in b) && equals(a[k], b[k]))
19
+ !((eq(v, b)) && (k in a)) &&
20
+ !((eq(v, a)) && (k in b) && equals(a[k], b[k]))
19
21
  ) return false
20
22
  return true
21
23
  }
22
- return a===b
24
+ return eq(a, b)
23
25
  })
24
26
  export const ifElse = curry(
25
27
  (
@@ -97,13 +99,22 @@ export const keys = (o: AnyObject | any[]) => Object.keys(o)
97
99
  export const values = (o: AnyObject | any[]) => Object.values(o)
98
100
  export const toPairs = (o: AnyObject | any[]) => Object.entries(o)
99
101
  export const test = curry2((re: RegExp, s: string) => re.test(s))
100
- export const tap = curry2((fn: Function, s: any) => { fn(s); return s })
101
- export const append = curry2((s: any, xs: any[]) => [...xs, s])
102
+ export const tap = curry2((fn: Function, x: any) => { fn(x); return x })
103
+ export const append = curry2((x: any, xs: any[]) => [...xs, x])
104
+ export const prepend = curry2((x: any, xs: any[]) => [...xs, x])
105
+ export const flat = (xs: any[]) => xs.flat(inf)
106
+ export const flatShallow = (xs: any[]) => xs.flat()
107
+ export const flatTo = curry2((depth: number, xs: any[]) => xs.flat(depth))
102
108
  export const split = curry2((s: string|RegExp, xs: string) => xs.split(s))
103
109
  export const T = always<true>(true) as (...args: any[]) => true
104
110
  export const F = always<false>(false) as (...args: any[]) => false
105
111
  export const callWith = curry2((args: any[], fn: AnyFunc) => fn(...args))
106
- export const noop = (..._args: any[]) => {}
112
+ export const noop = (()=>{}) as (...args: any[]) => any
113
+ /** Calls a func from object.
114
+ * @param {any[]} [args] - arguments for the function.
115
+ * @param {string} [fnName] - property name of the function.
116
+ * @param {AnyObject} [o] - the object with the function. */
117
+ export const callFrom = curry((args: any[], fn: string, o: AnyObject) => o[fn](...args))
107
118
  export const complement = (fn: AnyFunc) => (...args: any) => {
108
119
  const out = fn(...args)
109
120
  const f = isFunc(out)
@@ -119,6 +130,7 @@ export const sizeof = (s: any[] | string | AnyObject) => {
119
130
  export const range = curry2((from: number, to: number) =>
120
131
  genBy(add(from), to-from)
121
132
  )
133
+ // TODO: make it using equals for deep stuff !
122
134
  export const uniq = (xs: any[]) => qreduce(
123
135
  <T>(accum: any, x: T) =>
124
136
  includes(x, accum) ? accum : qappend(x, accum),
@@ -244,6 +256,8 @@ export const clone = (s: any, shallow = false) => {
244
256
  }
245
257
  }
246
258
  export const cloneShallow = (s: any) => clone(s, true)
259
+ export const freeze = <T extends AnyObject>(o: T): Readonly<T> => qfreeze(clone(o))
260
+ export const freezeShallow = <T extends AnyObject>(o: T): Readonly<T> => qfreezeShallow(clone(o))
247
261
 
248
262
  /** types T1, T2
249
263
  * @param reducer (accum: T1, current: T2, index: number) => newAccum: T1
@@ -348,7 +362,7 @@ export const overProp = curry3(
348
362
  /** mapKeys({ a: 'b' }, { a: 44 }) -> { b: 44 } */
349
363
  export const mapKeys = curry2(
350
364
  (
351
- keyMap: {[oldKey: string]: string},
365
+ keyMap: {[oldKey: string]: string | AnyFunc},
352
366
  o: AnyObject
353
367
  ) => qmapKeys(keyMap, Object.assign({}, o))
354
368
  )