pepka 1.0.0-beta.9 → 1.1.0
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 +1 -1
- package/dist/bundle.d.ts +40 -13
- package/dist/bundle.mjs +1 -1
- package/package.json +13 -13
- package/src/common.ts +1 -0
- package/src/index.ts +2 -1
- package/src/quick.ts +9 -2
- package/src/safe.ts +28 -24
- package/src/timers.ts +18 -0
- package/src/types.ts +5 -10
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,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)
|
|
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);function p(r){return function(t,s){const o=t===e;if(1===arguments.length&&o)throw new Error("Senseless placeholder usage.");return arguments.length>1?o?(r=>function(t){return t===e?r:r(t)})((e=>r(e,s))):r(t,s):e=>r(t,e)}}function n(e){return o(e)}const x=void 0,c=1/0,a=e=>typeof e,l=e=>null===e,i=e=>"number"==a(e),u=e=>Array.isArray(e),f=e=>"function"===a(e),h=e=>!l(e)&&"object"===a(e),m={u:"U",b:"B",n:"N",s:"S",f:"F"},y=Symbol(),d=e=>{const r=a(e);return"object"===r?l(e)?"Null":e.constructor.name:m[r[0]]+r.slice(1)},g=p(((e,r)=>d(r)===e)),b=e=>(...r)=>r[e],w=p(((e,r)=>e===r)),q=p(((e,r)=>e==r)),j=p(((e,r)=>{const t=d(e);if(w(t,d(r))&&(w(t,"Object")||w(t,"Array"))){if(l(e)||l(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=n(((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=p(((e,r)=>e.bind(r))),k=p(((e,r)=>r[e])),z=p(((e,r)=>{if((e=>"string"===a(e))(r))return r.includes(e);for(const t of r)if(j(t,e))return!0;return!1})),v=n(((e,r,t)=>t.slice(e,i(r)?r:c))),P=e=>p(((r,t)=>e(t,r))),D=k(0),N=v(1,c),B=p(((e,r)=>e+r)),T=p(((e,r)=>r-e)),_=p(((e,r)=>e*r)),C=p(((e,r)=>e>r)),F=p(((e,r)=>e<r)),I=p(((e,r)=>r>=e)),U=p(((e,r)=>r<=e)),$=p(((e,r)=>r.sort(e))),K=p(((e,r)=>r.find(e))),L=p(((e,r)=>r.findIndex(e))),W=p(((e,r)=>L(j(e),r))),X=p(((e,r)=>e/r)),G=e=>l(e)||(e=>e===x)(e),H=e=>e.length,J=e=>()=>e,M=e=>e,Q=e=>!e,R=p(((e,r)=>e.test(r))),V=p(((e,r)=>(e(r),r))),Y=p(((e,r)=>[...r,e])),Z=p(((e,r)=>[...r,e])),ee=p(((e,r)=>r.flat(e))),re=p(((e,r)=>r.split(e))),te=J(!0),se=J(!1),oe=p(((e,r)=>r(...e))),pe=o(((e,r,t)=>t[r](...e))),ne=e=>(...r)=>{const t=e(...r),s=f(t);return!s||s&&t.$args_left<=0?Q(t):ne(t)},xe=p(((e,r)=>ae(B(e),r-e))),ce=p(((e,r)=>e.filter(P(z)(r)))),ae=p(((e,r)=>[...Array(r)].map(((r,t)=>e(t))))),le=p(((e,r)=>{for(const[t,s]of e)if(t(r))return s(r)})),ie=n(((e,r,t)=>({...t,[e]:r}))),ue=n(((e,r,t)=>S((s=>ie(s,H(e)<2?r:ue(v(1,c,e),r,h(t[s])?t[s]:{}),t)),D)(e))),fe=p(((e,r)=>r.every(e))),he=p(((e,r)=>r.some(e))),me=p(((e,r)=>e.every((e=>e(r))))),ye=p(((e,r)=>e.some((e=>e(r))))),de=p(((e,r)=>r[e])),ge=n(((e,r,t)=>j(t[e],r))),be=n(((e,r,t)=>j(r[e],t[e]))),we=n(((e,r,t)=>H(r)?G(t)?e:S((s=>s in t?we(e,v(1,c,r),t[s]):e),D)(r):t)),qe=we(x),je=n(((e,r,t)=>j(qe(e,t),r))),Oe=n(((e,r,t)=>j(qe(e,r),qe(e,t)))),Ae=S(O(j(y),se,te),we(y)),Se=/^(.*?)(8|16|32|64)(Clamped)?Array$/,Ee=(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]:Be(S(Ee,b(0)),e);case"Object":if(r)return{...e};const s={};for(let r in e)s[r]=Ee(e[r]);return s;default:return Se.test(t)?e.constructor.from(e):e}},ke=n(((e,r,t)=>pr(e,Ee(r),t))),ze=p(((e,r)=>Fe(e,r))),ve=p(((e,r)=>{const t={};for(const s of e)s in r&&(t[s]=r[s]);return t})),Pe=p(((e,r)=>Fe(((r,t)=>!z(t,e)),r))),De=p(((e,r)=>r.concat(e))),Ne=p(((e,r)=>r.join(e))),Be=p(((e,r)=>r.map(e))),Te=p(((e,r)=>r.forEach(e))),_e=n(((e,r,t)=>r(t)&&e(t))),Ce=n(((e,r,t)=>t.replace(e,r))),Fe=p(((e,r)=>u(r)?r.filter(e):fr(e,{...r}))),Ie=p(((e,r)=>Object.assign({},e,r))),Ue=p(((e,r)=>xr(Ee(e),Ee(r)))),$e=p(((e,r)=>cr(Ee(e),Ee(r)))),Ke=p(((e,r)=>ar(Ee(e),Ee(r)))),Le=n(((e,r,t)=>ie(e,r(t[e]),t))),We=p(((e,r)=>ir(e,Object.assign({},r)))),Xe=p(((e,r)=>Be(((e,t)=>[e,r[t]]),e))),Ge=p(((e,r)=>ke(((e,t,s)=>ie(t,r[s],e)),{},e))),He=n(((e,r,t)=>Be(((r,s)=>e(r,t[s])),r))),Je=(()=>{const e=async(r,t,s)=>{s<t.length&&(await r(t[s]),await e(r,t,++s))};return p(((r,t)=>e(r,t,0)))})(),Me=p((async(e,r)=>(await e(r),r))),Qe=p(((e,r)=>Promise.all(r.map(e)))),Re=(()=>{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)})(),Ve=M,Ye=M,Ze=M,er=ne,rr=Y,tr=he,sr=p(((e,r)=>(r.push(e),r))),or=n(((e,r,t)=>(t[e]=r,t))),pr=n(((e,r,t)=>t.reduce(e,r))),nr=n(((e,r,t)=>{for(let s in t)switch(d(t[s])){case"Array":if(e>1&&"Array"===d(r[s]))switch(e){case 2:const o=r[s],p=t[s];for(const r in p)o[r]?nr(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"===d(r[s])){nr(e,r[s],t[s]);break}default:r[s]=t[s]}return r})),xr=nr(1),cr=nr(2),ar=nr(3),lr=p(((e,r)=>Object.assign(e,r))),ir=p(((e,r)=>{let t,s,o,p;for(t in e)t in r&&(s=e[t],[o,p]=f(s)?s(r[t],t,r):[s,r[t]],r[G(o)?t:o]=p,t!==o&&delete r[t]);return r})),ur=p(((e,r)=>{for(let t in r)r[t]=e(r[t],+t,r);return r})),fr=p(((e,r)=>{const t=u(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})),hr=e=>{let r;for(const t in e)r=e[t],h(r)&&hr(r);return Object.freeze(e)},mr=e=>Object.freeze(e),yr=p(((e,r)=>r.unshift(e))),dr=n(((e,r,t)=>{const s=e[0];return or(s,e.length<2?r:dr(e.slice(1),r,h(t[s])?t[s]:{}),t)})),gr=p(((e,r)=>fr(((r,t)=>!z(t,e)),r)));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=ye,exports.append=Y,exports.assoc=ie,exports.assocPath=ue,exports.bind=E,exports.both=_e,exports.callFrom=pe,exports.callWith=oe,exports.clone=Ee,exports.cloneShallow=e=>Ee(e,!0),exports.complement=ne,exports.compose=S,exports.composeAsync=Re,exports.concat=De,exports.cond=le,exports.curry=o,exports.curry2=p,exports.curry3=n,exports.divide=X,exports.echo=Ze,exports.empty=e=>{switch(d(e)){case"String":return"";case"Object":return{};case"Array":return[];default:return x}},exports.eq=w,exports.equals=j,exports.explore=(e,r="log")=>V((t=>console[r](e,t))),exports.filter=Fe,exports.find=K,exports.findIndex=L,exports.flat=e=>e.flat(c),exports.flatShallow=e=>e.flat(),exports.flatTo=ee,exports.flip=P,exports.forEach=Te,exports.forEachAsync=Qe,exports.forEachSerial=Je,exports.freeze=e=>hr(Ee(e)),exports.freezeShallow=e=>mr(Ee(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(d(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=Ne,exports.keys=e=>Object.keys(e),exports.last=e=>e[H(e)-1],exports.length=H,exports.lt=F,exports.lte=U,exports.map=Be,exports.mapKeys=We,exports.memoize=e=>{let r,t=!1;return()=>t?r:(t=!0,r=e())},exports.mergeDeep=Ue,exports.mergeDeepAdd=Ke,exports.mergeDeepX=$e,exports.mergeShallow=Ie,exports.mirror=Ve,exports.multiply=_,exports.noop=()=>{},exports.not=Q,exports.notf=er,exports.nth=k,exports.omit=Pe,exports.once=e=>{let r,t=!1;return(...s)=>t?r:(t=!0,r=e(...s))},exports.overProp=Le,exports.path=qe,exports.pathEq=je,exports.pathExists=Ae,exports.pathOr=we,exports.pathsEq=Oe,exports.pick=ve,exports.pickBy=ze,exports.prepend=Z,exports.prop=de,exports.propEq=ge,exports.propsEq=be,exports.push=rr,exports.qappend=sr,exports.qassoc=or,exports.qassocPath=dr,exports.qempty=e=>{if(u(e))e.splice(0);else for(const r in e)delete e[r];return e},exports.qfilter=fr,exports.qfreeze=hr,exports.qfreezeShallow=mr,exports.qmap=ur,exports.qmapKeys=ir,exports.qmergeDeep=xr,exports.qmergeDeepAdd=ar,exports.qmergeDeepX=cr,exports.qmergeShallow=lr,exports.qomit=gr,exports.qprepend=yr,exports.qreduce=pr,exports.qreverse=e=>e.reverse(),exports.range=xe,exports.reduce=ke,exports.reflect=Ye,exports.replace=Ce,exports.reverse=e=>S((r=>ke(((t,s,o)=>sr(e[r-o],t)),[],e)),B(-1),H)(e),exports.sizeof=e=>{if("Object"===d(e)){let r=0;for(let t in e)r++;return r}return H(e)},exports.slice=v,exports.some=tr,exports.sort=$,exports.split=re,exports.subtract=T,exports.symbol=y,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=d,exports.typeIs=g,exports.uncurry=e=>(...r)=>pr(((e,r)=>e?e(r):e),e,r),exports.uniq=e=>pr(((e,r)=>z(r,e)?e:sr(r,e)),[],e),exports.values=e=>Object.values(e),exports.waitAll=e=>Promise.all(e),exports.waitTap=Me,exports.weakEq=q,exports.when=A,exports.zip=Xe,exports.zipObj=Ge,exports.zipWith=He;
|
package/dist/bundle.d.ts
CHANGED
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
export { __ }
|
|
2
2
|
|
|
3
|
-
// Generated by dts-bundle-generator
|
|
3
|
+
// Generated by dts-bundle-generator v9.3.1
|
|
4
4
|
|
|
5
5
|
export type Cond = (x1?: any, x2?: any, x3?: any) => boolean;
|
|
6
6
|
export interface AnyObject {
|
|
7
7
|
[k: string]: any;
|
|
8
8
|
}
|
|
9
9
|
export type AnyArgs = any[];
|
|
10
|
-
export type
|
|
10
|
+
export type Reducer<T = any> = (accum: T, cur: any, index: number) => T;
|
|
11
11
|
export type AnyFunc<ReturnT = any, Args extends AnyArgs = AnyArgs> = (...args: Args) => ReturnT;
|
|
12
|
-
export type
|
|
13
|
-
|
|
12
|
+
export type TupleFn<ARG1 = any, ARG2 = any, Out = any> = (a: ARG1, b: ARG2) => Out;
|
|
13
|
+
export type Curried<Args extends AnyArgs = AnyArgs, ReturnT = any> = (arg: Args[number]) => Curried<Args> | ReturnT;
|
|
14
|
+
type Placeholder = symbol;
|
|
15
|
+
export declare const __: Placeholder;
|
|
14
16
|
export declare const curry: (fn: AnyFunc) => (...args: AnyArgs) => any;
|
|
15
|
-
|
|
17
|
+
type Func2 = (a: any, b: any) => any;
|
|
16
18
|
export declare function curry2<Func extends Func2>(fn: Func): {
|
|
17
19
|
(a: Placeholder, b: Parameters<Func>[1]): (a: Parameters<Func>[0]) => ReturnType<Func>;
|
|
18
20
|
(a: Parameters<Func>[0], b: Placeholder): (b: Parameters<Func>[1]) => ReturnType<Func>;
|
|
19
21
|
(a: Parameters<Func>[0]): (b: Parameters<Func>[1]) => ReturnType<Func>;
|
|
20
22
|
(a: Parameters<Func>[0], b: Parameters<Func>[1]): ReturnType<Func>;
|
|
21
23
|
};
|
|
22
|
-
|
|
24
|
+
type Func3 = (a: any, b: any, c: any) => any;
|
|
23
25
|
export declare function curry3<Func extends Func3>(fn: Func): (...args: AnyArgs) => any;
|
|
24
26
|
export declare const uncurry: <Args extends any[] = any[], ReturnT = any>(fn: Curried<Args>) => AnyFunc;
|
|
27
|
+
export declare const symbol: unique symbol;
|
|
25
28
|
export declare const toLower: (s: string) => string;
|
|
26
29
|
export declare const toUpper: (s: string) => string;
|
|
27
30
|
export declare const type: (s: any) => any;
|
|
@@ -52,7 +55,7 @@ export declare const equals: {
|
|
|
52
55
|
};
|
|
53
56
|
export declare const ifElse: (...args: AnyArgs) => any;
|
|
54
57
|
export declare const when: (...args: AnyArgs) => any;
|
|
55
|
-
|
|
58
|
+
type Composed<TIn extends any[], TOut> = (...xs: TIn) => TOut;
|
|
56
59
|
export declare const compose: <TIn extends any[] = any[], TOut = any>(...fns: AnyFunc[]) => Composed<TIn, TOut>;
|
|
57
60
|
export declare const bind: {
|
|
58
61
|
(a: symbol, b: any): (a: any) => any;
|
|
@@ -79,7 +82,7 @@ export declare const flip: <T extends AnyFunc>(fn: T) => {
|
|
|
79
82
|
(a: Parameters<T>[1]): (b: Parameters<T>[0]) => any;
|
|
80
83
|
(a: Parameters<T>[1], b: Parameters<T>[0]): any;
|
|
81
84
|
};
|
|
82
|
-
export declare const head: <T = any>(xs:
|
|
85
|
+
export declare const head: <T = any>(xs: T[] | string) => T;
|
|
83
86
|
export declare const tail: any;
|
|
84
87
|
export declare const add: {
|
|
85
88
|
(a: symbol, b: number): (a: number) => number;
|
|
@@ -154,13 +157,25 @@ export declare const divide: {
|
|
|
154
157
|
(a: number, b: number): number;
|
|
155
158
|
};
|
|
156
159
|
export declare const isNil: (s: any) => boolean;
|
|
157
|
-
|
|
160
|
+
declare const length$1: (s: any[] | string) => number;
|
|
158
161
|
export declare const always: <T = any>(s: T) => () => T;
|
|
159
162
|
export declare const identity: (s: any) => any;
|
|
160
163
|
export declare const trim: (s: string) => string;
|
|
161
164
|
export declare const last: (s: any[] | string) => any;
|
|
162
|
-
|
|
163
|
-
|
|
165
|
+
type NotOverload = {
|
|
166
|
+
(x: true): false;
|
|
167
|
+
(x: false): true;
|
|
168
|
+
(x: any): boolean;
|
|
169
|
+
};
|
|
170
|
+
export declare const not: NotOverload;
|
|
171
|
+
type IndexesOfArray<A> = Exclude<keyof A, keyof [
|
|
172
|
+
]>;
|
|
173
|
+
type KeysOverload = {
|
|
174
|
+
<T extends any[]>(o: T): string[];
|
|
175
|
+
<T extends readonly any[]>(o: T): IndexesOfArray<T>[];
|
|
176
|
+
<T extends AnyObject>(o: T): (keyof T)[];
|
|
177
|
+
};
|
|
178
|
+
export declare const keys: KeysOverload;
|
|
164
179
|
export declare const values: (o: AnyObject | any[]) => any[];
|
|
165
180
|
export declare const toPairs: (o: AnyObject | any[]) => [
|
|
166
181
|
string,
|
|
@@ -299,10 +314,11 @@ export declare const prop: {
|
|
|
299
314
|
};
|
|
300
315
|
export declare const propEq: (...args: AnyArgs) => any;
|
|
301
316
|
export declare const propsEq: (...args: AnyArgs) => any;
|
|
302
|
-
export declare const pathOr:
|
|
317
|
+
export declare const pathOr: any;
|
|
303
318
|
export declare const path: any;
|
|
304
319
|
export declare const pathEq: (...args: AnyArgs) => any;
|
|
305
320
|
export declare const pathsEq: (...args: AnyArgs) => any;
|
|
321
|
+
export declare const pathExists: Composed<any[], any>;
|
|
306
322
|
export declare const clone: (s: any, shallow?: boolean) => any;
|
|
307
323
|
export declare const cloneShallow: (s: any) => any;
|
|
308
324
|
export declare const freeze: <T extends AnyObject>(o: T) => Readonly<T>;
|
|
@@ -530,7 +546,18 @@ export declare const qprepend: {
|
|
|
530
546
|
(a: any, b: any[]): number;
|
|
531
547
|
};
|
|
532
548
|
export declare const qassocPath: any;
|
|
533
|
-
export
|
|
549
|
+
export declare const qreverse: (arr: any[]) => any[];
|
|
550
|
+
export declare const qomit: {
|
|
551
|
+
(a: symbol, b: AnyObject): (a: string[]) => any[] | AnyObject;
|
|
552
|
+
(a: string[], b: symbol): (b: AnyObject) => any[] | AnyObject;
|
|
553
|
+
(a: string[]): (b: AnyObject) => any[] | AnyObject;
|
|
554
|
+
(a: string[], b: AnyObject): any[] | AnyObject;
|
|
555
|
+
};
|
|
556
|
+
type StrTmpl = ((data: AnyObject) => string);
|
|
534
557
|
export declare const getTmpl: (tmpl: string) => StrTmpl;
|
|
535
558
|
|
|
559
|
+
export {
|
|
560
|
+
length$1 as length,
|
|
561
|
+
};
|
|
562
|
+
|
|
536
563
|
export {};
|
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,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)
|
|
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);function c(r){return function(t,n){const s=t===e;if(1===arguments.length&&s)throw new Error("Senseless placeholder usage.");return arguments.length>1?s?(r=>function(t){return t===e?r:r(t)})((e=>r(e,n))):r(t,n):e=>r(t,e)}}function o(e){return s(e)}const l=void 0,i=1/0,u=e=>typeof e,a=e=>null===e,f=e=>"number"==u(e),h=e=>Array.isArray(e),b=e=>"function"===u(e),g=e=>!a(e)&&"object"===u(e),p={u:"U",b:"B",n:"N",s:"S",f:"F"},j=Symbol(),y=e=>e.toLowerCase(),d=e=>e.toUpperCase(),m=e=>{const r=u(e);return"object"===r?a(e)?"Null":e.constructor.name:p[r[0]]+r.slice(1)},O=c(((e,r)=>m(r)===e)),w=e=>(...r)=>r[e],A=c(((e,r)=>e===r)),S=c(((e,r)=>e==r)),k=c(((e,r)=>{const t=m(e);if(A(t,m(r))&&(A(t,"Object")||A(t,"Array"))){if(a(e)||a(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=o(((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=c(((e,r)=>e.bind(r))),P=c(((e,r)=>r[e])),$=c(((e,r)=>{if((e=>"string"===u(e))(r))return r.includes(e);for(const t of r)if(k(t,e))return!0;return!1})),x=o(((e,r,t)=>t.slice(e,f(r)?r:i))),z=e=>c(((r,t)=>e(t,r))),B=P(0),U=x(1,i),_=c(((e,r)=>e+r)),D=c(((e,r)=>r-e)),F=c(((e,r)=>e*r)),I=c(((e,r)=>e>r)),L=c(((e,r)=>e<r)),q=c(((e,r)=>r>=e)),G=c(((e,r)=>r<=e)),H=c(((e,r)=>r.sort(e))),J=c(((e,r)=>r.find(e))),K=c(((e,r)=>r.findIndex(e))),M=c(((e,r)=>K(k(e),r))),Q=c(((e,r)=>e/r)),R=e=>a(e)||(e=>e===l)(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=c(((e,r)=>e.test(r))),se=c(((e,r)=>(e(r),r))),ce=c(((e,r)=>[...r,e])),oe=c(((e,r)=>[...r,e])),le=e=>e.flat(i),ie=e=>e.flat(),ue=c(((e,r)=>r.flat(e))),ae=c(((e,r)=>r.split(e))),fe=V(!0),he=V(!1),be=c(((e,r)=>r(...e))),ge=()=>{},pe=s(((e,r,t)=>t[r](...e))),je=e=>(...r)=>{const t=e(...r),n=b(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=c(((e,r)=>we(_(e),r-e))),me=e=>Er(((e,r)=>$(r,e)?e:Nr(r,e)),[],e),Oe=c(((e,r)=>e.filter(z($)(r)))),we=c(((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=>Me(((t,n,s)=>Nr(e[r-s],t)),[],e)),_(-1),T)(e),ke=(e,r="log")=>se((t=>console[r](e,t))),ve=c(((e,r)=>{for(const[t,n]of e)if(t(r))return n(r)})),Ne=o(((e,r,t)=>({...t,[e]:r}))),Ce=o(((e,r,t)=>C((n=>Ne(n,T(e)<2?r:Ce(x(1,i,e),r,g(t[n])?t[n]:{}),t)),B)(e))),Ee=c(((e,r)=>r.every(e))),Pe=c(((e,r)=>r.some(e))),$e=c(((e,r)=>e.every((e=>e(r))))),xe=c(((e,r)=>e.some((e=>e(r))))),ze=c(((e,r)=>r[e])),Be=o(((e,r,t)=>k(t[e],r))),Ue=o(((e,r,t)=>k(r[e],t[e]))),_e=o(((e,r,t)=>T(r)?R(t)?e:C((n=>n in t?_e(e,x(1,i,r),t[n]):e),B)(r):t)),De=_e(l),Fe=o(((e,r,t)=>k(De(e,t),r))),Ie=o(((e,r,t)=>k(De(e,r),De(e,t)))),Le=C(v(k(j),he,fe),_e(j)),qe=/^(.*?)(8|16|32|64)(Clamped)?Array$/,Ge=(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]:Ye(C(Ge,w(0)),e);case"Object":if(r)return{...e};const n={};for(let r in e)n[r]=Ge(e[r]);return n;default:return qe.test(t)?e.constructor.from(e):e}},He=e=>Ge(e,!0),Je=e=>Ir(Ge(e)),Ke=e=>Lr(Ge(e)),Me=o(((e,r,t)=>Er(e,Ge(r),t))),Qe=c(((e,r)=>sr(e,r))),Re=c(((e,r)=>{const t={};for(const n of e)n in r&&(t[n]=r[n]);return t})),Te=c(((e,r)=>sr(((r,t)=>!$(t,e)),r))),Ve=e=>Object.fromEntries(e),We=c(((e,r)=>r.concat(e))),Xe=c(((e,r)=>r.join(e))),Ye=c(((e,r)=>r.map(e))),Ze=c(((e,r)=>r.forEach(e))),er=o(((e,r,t)=>r(t)&&e(t))),rr=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}},tr=e=>{switch(m(e)){case"String":return"";case"Object":return{};case"Array":return[];default:return l}},nr=o(((e,r,t)=>t.replace(e,r))),sr=c(((e,r)=>h(r)?r.filter(e):Dr(e,{...r}))),cr=e=>{let r,t=!1;return()=>t?r:(t=!0,r=e())},or=c(((e,r)=>Object.assign({},e,r))),lr=c(((e,r)=>$r(Ge(e),Ge(r)))),ir=c(((e,r)=>xr(Ge(e),Ge(r)))),ur=c(((e,r)=>zr(Ge(e),Ge(r)))),ar=o(((e,r,t)=>Ne(e,r(t[e]),t))),fr=c(((e,r)=>Ur(e,Object.assign({},r)))),hr=c(((e,r)=>Ye(((e,t)=>[e,r[t]]),e))),br=c(((e,r)=>Me(((e,t,n)=>Ne(t,r[n],e)),{},e))),gr=o(((e,r,t)=>Ye(((r,n)=>e(r,t[n])),r))),pr=(()=>{const e=async(r,t,n)=>{n<t.length&&(await r(t[n]),await e(r,t,++n))};return c(((r,t)=>e(r,t,0)))})(),jr=e=>Promise.all(e),yr=c((async(e,r)=>(await e(r),r))),dr=c(((e,r)=>Promise.all(r.map(e)))),mr=(()=>{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)})(),Or=W,wr=W,Ar=W,Sr=je,kr=ce,vr=Pe,Nr=c(((e,r)=>(r.push(e),r))),Cr=o(((e,r,t)=>(t[e]=r,t))),Er=o(((e,r,t)=>t.reduce(e,r))),Pr=o(((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]?Pr(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])){Pr(e,r[n],t[n]);break}default:r[n]=t[n]}return r})),$r=Pr(1),xr=Pr(2),zr=Pr(3),Br=c(((e,r)=>Object.assign(e,r))),Ur=c(((e,r)=>{let t,n,s,c;for(t in e)t in r&&(n=e[t],[s,c]=b(n)?n(r[t],t,r):[n,r[t]],r[R(s)?t:s]=c,t!==s&&delete r[t]);return r})),_r=c(((e,r)=>{for(let t in r)r[t]=e(r[t],+t,r);return r})),Dr=c(((e,r)=>{const t=h(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})),Fr=e=>{if(h(e))e.splice(0);else for(const r in e)delete e[r];return e},Ir=e=>{let r;for(const t in e)r=e[t],g(r)&&Ir(r);return Object.freeze(e)},Lr=e=>Object.freeze(e),qr=c(((e,r)=>r.unshift(e))),Gr=o(((e,r,t)=>{const n=e[0];return Cr(n,e.length<2?r:Gr(e.slice(1),r,g(t[n])?t[n]:{}),t)})),Hr=e=>e.reverse(),Jr=c(((e,r)=>Dr(((r,t)=>!$(t,e)),r))),Kr=e=>(...r)=>Er(((e,r)=>e?e(r):e),e,r),Mr=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,er as both,pe as callFrom,be as callWith,Ge as clone,He as cloneShallow,je as complement,C as compose,mr as composeAsync,We as concat,ve as cond,s as curry,c as curry2,o as curry3,Q as divide,Ar as echo,tr as empty,A as eq,k as equals,ke as explore,sr as filter,J as find,K as findIndex,le as flat,ie as flatShallow,ue as flatTo,z as flip,Ze as forEach,dr as forEachAsync,pr as forEachSerial,Je as freeze,Ke as freezeShallow,Ve as fromPairs,we as genBy,Mr 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,rr as isEmpty,R as isNil,Xe as join,ee as keys,Y as last,T as length,L as lt,G as lte,Ye as map,fr as mapKeys,cr as memoize,lr as mergeDeep,ur as mergeDeepAdd,ir as mergeDeepX,or as mergeShallow,Or as mirror,F as multiply,ge as noop,Z as not,Sr as notf,P as nth,Te as omit,Ae as once,ar as overProp,De as path,Fe as pathEq,Le as pathExists,_e as pathOr,Ie as pathsEq,Re as pick,Qe as pickBy,oe as prepend,ze as prop,Be as propEq,Ue as propsEq,kr as push,Nr as qappend,Cr as qassoc,Gr as qassocPath,Fr as qempty,Dr as qfilter,Ir as qfreeze,Lr as qfreezeShallow,_r as qmap,Ur as qmapKeys,$r as qmergeDeep,zr as qmergeDeepAdd,xr as qmergeDeepX,Br as qmergeShallow,Jr as qomit,qr as qprepend,Er as qreduce,Hr as qreverse,de as range,Me as reduce,wr as reflect,nr as replace,Se as reverse,ye as sizeof,x as slice,vr as some,H as sort,ae as split,D as subtract,j as symbol,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,Kr as uncurry,me as uniq,re as values,jr as waitAll,yr as waitTap,S as weakEq,N as when,hr as zip,br as zipObj,gr as zipWith};
|
package/package.json
CHANGED
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"test:report": "nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && codecov",
|
|
37
37
|
"test:lazy": "ava",
|
|
38
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",
|
|
39
|
+
"gentypes": "dts-bundle-generator --no-check --export-referenced-types=false -o dist/bundle.d.ts src/index.ts && npm run dts-fix",
|
|
40
40
|
"dev": "cross-env NODE_ENV=development BUILD=es rollup -c",
|
|
41
41
|
"prod:cjs": "cross-env NODE_ENV=production BUILD=cjs rollup -c",
|
|
42
42
|
"prod:es": "cross-env NODE_ENV=production BUILD=es rollup -c",
|
|
43
43
|
"prod": "npm run gentypes && npm run prod:es && npm run prod:cjs",
|
|
44
44
|
"all": "npm run dev && npm run prod"
|
|
45
45
|
},
|
|
46
|
-
"version": "1.
|
|
46
|
+
"version": "1.1.0",
|
|
47
47
|
"ava": {
|
|
48
48
|
"files": [
|
|
49
49
|
"./test/specs/*.ts"
|
|
@@ -58,22 +58,22 @@
|
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@rollup/plugin-commonjs": "^
|
|
62
|
-
"@rollup/plugin-node-resolve": "^15.
|
|
63
|
-
"@rollup/plugin-replace": "^5.0.
|
|
64
|
-
"@rollup/plugin-terser": "^0.4.
|
|
65
|
-
"@types/node": "^
|
|
66
|
-
"ava": "^
|
|
61
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
62
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
63
|
+
"@rollup/plugin-replace": "^5.0.5",
|
|
64
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
65
|
+
"@types/node": "^20.12.2",
|
|
66
|
+
"ava": "^6.1.2",
|
|
67
67
|
"codecov": "^3.8.3",
|
|
68
68
|
"cross-env": "^7.0.3",
|
|
69
|
-
"dts-bundle-generator": "^
|
|
69
|
+
"dts-bundle-generator": "^9.3.1",
|
|
70
70
|
"nyc": "^15.1.0",
|
|
71
71
|
"prepend": "^1.0.2",
|
|
72
|
-
"rollup": "^
|
|
73
|
-
"rollup-plugin-typescript2": "^0.
|
|
74
|
-
"ts-node": "^10.9.
|
|
72
|
+
"rollup": "^4.13.2",
|
|
73
|
+
"rollup-plugin-typescript2": "^0.36.0",
|
|
74
|
+
"ts-node": "^10.9.2",
|
|
75
75
|
"tslint": "^6.1.3",
|
|
76
|
-
"typescript": "^5.
|
|
76
|
+
"typescript": "^5.4.3"
|
|
77
77
|
},
|
|
78
78
|
"types": "./dist/bundle.d.ts",
|
|
79
79
|
"sideEffects": false
|
package/src/common.ts
CHANGED
package/src/index.ts
CHANGED
package/src/quick.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { curry2, curry3 } from "./curry"
|
|
|
2
2
|
import { type } from "./common"
|
|
3
3
|
import { AnyObject, Reducer, AnyFunc } from "./types"
|
|
4
4
|
import { isFunc, isArray, isObj } from "./utils"
|
|
5
|
-
import { isNil } from "./safe"
|
|
5
|
+
import { includes, 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})
|
|
@@ -116,4 +116,11 @@ export const qassocPath = curry3((_path: string[], v: any, o: AnyObject) => {
|
|
|
116
116
|
: qassocPath(_path.slice(1), v, isObj(o[first]) ? o[first] : {}),
|
|
117
117
|
o
|
|
118
118
|
)
|
|
119
|
-
})
|
|
119
|
+
})
|
|
120
|
+
export const qreverse = (arr: any[]) => arr.reverse()
|
|
121
|
+
export const qomit = curry2(
|
|
122
|
+
(props: string[], o: AnyObject) => qfilter(
|
|
123
|
+
(_: any, k: string) => !includes(k, props),
|
|
124
|
+
o
|
|
125
|
+
)
|
|
126
|
+
)
|
package/src/safe.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { __, curry, curry2, curry3 } from './curry'
|
|
|
2
2
|
import { isNum, isUndef, undef, isNull, isArray, isFunc, isStr, isObj, inf } from './utils'
|
|
3
3
|
import { qmergeDeep, qreduce, qappend, qmapKeys, qmergeDeepX, qmergeDeepAdd, qfilter, qfreeze, qfreezeShallow } from './quick'
|
|
4
4
|
import { AnyFunc, Cond, AnyObject, Reducer } from './types'
|
|
5
|
-
import { type } from './common'
|
|
5
|
+
import { symbol, type } from './common'
|
|
6
6
|
// over, lensProp
|
|
7
7
|
|
|
8
8
|
export const take = (argN: number) => (...args: any[]) => args[argN]
|
|
@@ -94,8 +94,20 @@ export const always = <T=any>(s: T) => () => s
|
|
|
94
94
|
export const identity = (s: any) => s
|
|
95
95
|
export const trim = (s: string) => s.trim()
|
|
96
96
|
export const last = (s: any[] | string) => s[length(s)-1]
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
type NotOverload = {
|
|
98
|
+
(x: true): false
|
|
99
|
+
(x: false): true
|
|
100
|
+
(x: any): boolean
|
|
101
|
+
}
|
|
102
|
+
export const not: NotOverload = (x: any) => !x as any
|
|
103
|
+
type IndexesOfArray<A> = Exclude<keyof A, keyof []>
|
|
104
|
+
type KeysOverload = {
|
|
105
|
+
<T extends any[]>(o: T): string[]
|
|
106
|
+
<T extends readonly any[]>(o: T): IndexesOfArray<T>[]
|
|
107
|
+
<T extends AnyObject>(o: T): (keyof T)[]
|
|
108
|
+
}
|
|
109
|
+
export const keys: KeysOverload = (o: number[]) => Object.keys(o)
|
|
110
|
+
|
|
99
111
|
export const values = (o: AnyObject | any[]) => Object.values(o)
|
|
100
112
|
export const toPairs = (o: AnyObject | any[]) => Object.entries(o)
|
|
101
113
|
export const test = curry2((re: RegExp, s: string) => re.test(s))
|
|
@@ -147,12 +159,9 @@ export const genBy = curry2(
|
|
|
147
159
|
export const once = <Func extends AnyFunc>(fn: Func) => {
|
|
148
160
|
let done = false, cache: any
|
|
149
161
|
return (...args: Parameters<Func>) => {
|
|
150
|
-
if(done)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
done = true
|
|
154
|
-
return cache = fn(...args)
|
|
155
|
-
}
|
|
162
|
+
if(done) return cache
|
|
163
|
+
done = true
|
|
164
|
+
return cache = fn(...args)
|
|
156
165
|
}
|
|
157
166
|
}
|
|
158
167
|
export const reverse = (xs: any[]) => compose(
|
|
@@ -214,20 +223,14 @@ export const propsEq = curry3(
|
|
|
214
223
|
(key: string, o1: any, o2: AnyObject) => equals(o1[key], o2[key])
|
|
215
224
|
)
|
|
216
225
|
export const pathOr = curry3(
|
|
217
|
-
(_default: any, path: (string | number)[], o: any) =>
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
),
|
|
226
|
-
flip(prop)(o),
|
|
227
|
-
head
|
|
228
|
-
)(path),
|
|
229
|
-
always(o),
|
|
230
|
-
path)
|
|
226
|
+
(_default: any, path: (string | number)[], o: any) => length(path)
|
|
227
|
+
? isNil(o)
|
|
228
|
+
? _default
|
|
229
|
+
: compose(
|
|
230
|
+
(k) => k in o ? pathOr(_default, slice(1, inf, path), o[k]) : _default,
|
|
231
|
+
head
|
|
232
|
+
)(path)
|
|
233
|
+
: o
|
|
231
234
|
)
|
|
232
235
|
export const path = pathOr(undef)
|
|
233
236
|
export const pathEq = curry3(
|
|
@@ -237,6 +240,7 @@ export const pathsEq = curry3(
|
|
|
237
240
|
(_path: string[], o1: AnyObject, o2: AnyObject) =>
|
|
238
241
|
equals(path(_path, o1), path(_path, o2))
|
|
239
242
|
)
|
|
243
|
+
export const pathExists = compose(ifElse(equals(symbol), F, T), pathOr(symbol))
|
|
240
244
|
const typed_arr_re = /^(.*?)(8|16|32|64)(Clamped)?Array$/
|
|
241
245
|
export const clone = (s: any, shallow = false) => {
|
|
242
246
|
const t = type(s)
|
|
@@ -328,7 +332,7 @@ export const replace = curry3(
|
|
|
328
332
|
// @ts-ignore Some bug with overload.
|
|
329
333
|
) => where.replace(a, b)
|
|
330
334
|
)
|
|
331
|
-
//
|
|
335
|
+
// FIXME: it thinks cond is a symbol in usage !!!
|
|
332
336
|
export const filter = curry2(
|
|
333
337
|
(
|
|
334
338
|
cond: (v: any, k: string | number) => boolean,
|
package/src/timers.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AnyFunc } from "./types"
|
|
2
|
+
|
|
3
|
+
export const debounce = <T extends AnyFunc>(time: number, fn: T) => {
|
|
4
|
+
let queue: AnyFunc[] = []
|
|
5
|
+
let to: NodeJS.Timeout
|
|
6
|
+
return ((...args: Parameters<T>) => new Promise<ReturnType<T>>((ff) => {
|
|
7
|
+
const qel = async () => {
|
|
8
|
+
clearTimeout(to)
|
|
9
|
+
to = setTimeout(async () => {
|
|
10
|
+
const res = await fn!(...args)
|
|
11
|
+
if(queue.includes(qel)) ff(res)
|
|
12
|
+
}, time)
|
|
13
|
+
}
|
|
14
|
+
queue.splice(0)
|
|
15
|
+
queue.push(qel)
|
|
16
|
+
qel()
|
|
17
|
+
}))
|
|
18
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
export type Cond = (x1?: any, x2?: any, x3?: any) => boolean
|
|
2
|
-
export interface AnyObject {
|
|
3
|
-
[k: string]: any
|
|
4
|
-
}
|
|
2
|
+
export interface AnyObject { [k: string]: any }
|
|
5
3
|
export type AnyArgs = any[]
|
|
4
|
+
export type Reducer<T=any> = (accum: T, cur: any, index: number) => T
|
|
5
|
+
export type AnyFunc<ReturnT = any, Args extends AnyArgs = AnyArgs> = (...args: Args) => ReturnT
|
|
6
|
+
export type TupleFn<ARG1=any, ARG2=any, Out=any> = (a: ARG1, b: ARG2) => Out
|
|
6
7
|
export type Curried<
|
|
7
8
|
Args extends AnyArgs = AnyArgs,
|
|
8
9
|
ReturnT = any
|
|
9
|
-
> = (arg: Args[number]) => Curried<Args> | ReturnT
|
|
10
|
-
export type Reducer<T=any> = (accum: T, cur: any, index: number) => T
|
|
11
|
-
export type AnyFunc<
|
|
12
|
-
ReturnT = any,
|
|
13
|
-
Args extends AnyArgs = AnyArgs
|
|
14
|
-
> = (...args: Args) => ReturnT
|
|
15
|
-
export type TupleFn<ARG1=any, ARG2=any, Out=any> = (a: ARG1, b: ARG2) => Out
|
|
10
|
+
> = (arg: Args[number]) => Curried<Args> | ReturnT
|