pepka 1.6.19 → 1.6.21

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
@@ -49,12 +49,8 @@ const endlessph = (fn) => {
49
49
  const zero = 0;
50
50
  function curry2(fn) {
51
51
  function curried2(a, ...args) {
52
- const withPlaceholder1 = a === __;
53
- const aln = args.length === 1;
54
- if (aln && withPlaceholder1)
55
- throw new Error('Senseless placeholder usage.');
56
- return aln
57
- ? withPlaceholder1
52
+ return args.length > zero
53
+ ? a === __
58
54
  ? endlessph((a) => fn(a, args[zero]))
59
55
  : fn(a, args[zero])
60
56
  : (b) => fn(a, b);
package/dist/bundle.d.ts CHANGED
@@ -23,9 +23,19 @@ export type AnyFunc<ReturnT = any, Args extends AnyArgs = AnyArgs> = (...args: A
23
23
  export type Curried<Args extends AnyArgs = AnyArgs, ReturnT = any> = (arg: Args[number]) => Curried<Args> | ReturnT;
24
24
  export type Composed<TIn extends any[], TOut> = (...xs: TIn) => TOut;
25
25
  export type Inverse<T> = T extends Falsey ? true : false;
26
+ export type PathValue<O, Keys extends readonly PropertyKey[], Default> = Keys extends [
27
+ infer K,
28
+ ...infer Rest
29
+ ] ? K extends keyof O ? Rest extends PropertyKey[] ? PathValue<O[K], Rest, Default> : Default : Default : O;
26
30
  type Placeholder = symbol;
27
31
  export declare const __: Placeholder;
28
32
  export declare const curry: (fn: AnyFunc) => (...args: AnyArgs) => any;
33
+ type Curried2<p0, p1, ReturnT> = {
34
+ (a: Placeholder, b: p1): (a: p0) => ReturnT;
35
+ (a: p0, b: Placeholder): (b: p1) => ReturnT;
36
+ (a: p0): (b: p1) => ReturnT;
37
+ (a: p0, b: p1): ReturnT;
38
+ };
29
39
  type Func2 = (a: any, b: any) => any;
30
40
  export declare function curry2<Func extends Func2>(fn: Func): {
31
41
  (a: Placeholder, b: Parameters<Func>[1]): (a: Parameters<Func>[0]) => ReturnType<Func>;
@@ -33,59 +43,191 @@ export declare function curry2<Func extends Func2>(fn: Func): {
33
43
  (a: Parameters<Func>[0]): (b: Parameters<Func>[1]) => ReturnType<Func>;
34
44
  (a: Parameters<Func>[0], b: Parameters<Func>[1]): ReturnType<Func>;
35
45
  };
36
- type Func3 = (a: any, b: any, c: any) => any;
37
- export declare function curry3<Func extends Func3>(fn: Func): (...args: AnyArgs) => any;
38
- export declare const uncurry: <Args extends any[] = any[], ReturnT = any>(fn: Curried<Args>) => AnyFunc;
46
+ type Curried3<A, B, C, R> = ((a: A) => Curried2<B, C, R>) & ((a: A, b: B) => (c: C) => R) & ((a: A, b: B, c: C) => R) & ((a: Placeholder, b: B, c: C) => (a: A) => R) & ((a: A, b: Placeholder, c: C) => (b: B) => R) & ((a: A, b: B, c: Placeholder) => (c: C) => R) & ((a: Placeholder, b: Placeholder, c: C) => (a: A, b: B) => R) & ((a: Placeholder, b: B, c: Placeholder) => (a: A, c: C) => R) & ((a: A, b: Placeholder, c: Placeholder) => (b: B, c: C) => R);
47
+ export declare const curry3: <Params extends [
48
+ any,
49
+ any,
50
+ any
51
+ ], ReturnT, F = AnyFunc<ReturnT, Params>>(fn: F) => Curried3<Params[0], Params[1], Params[2], ReturnT>;
52
+ /** One promise waits for another. */
53
+ export declare const forEachSerial: {
54
+ (a: Placeholder, b: any[]): (a: AnyFunc) => Promise<void>;
55
+ (a: AnyFunc, b: Placeholder): (b: any[]) => Promise<void>;
56
+ (a: AnyFunc): (b: any[]) => Promise<void>;
57
+ (a: AnyFunc, b: any[]): Promise<void>;
58
+ };
59
+ /** Promise.all wrapper for functional pipelining. */
60
+ export declare const waitAll: <T>(promises: Promise<T>[]) => Promise<Awaited<T>[]>;
61
+ /** Waits for a Promise that been generated by the first arg, then returns an untoched value. Types T.
62
+ * @param {AnyFunc<Promise>} fn - function to wait.
63
+ * @param {T} s - any value to tap and return back
64
+ * @returns {T}
65
+ */
66
+ export declare const waitTap: {
67
+ (a: Placeholder, b: any): (a: AnyFunc<Promise<any>>) => Promise<any>;
68
+ (a: AnyFunc<Promise<any>>, b: Placeholder): (b: any) => Promise<any>;
69
+ (a: AnyFunc<Promise<any>>): (b: any) => Promise<any>;
70
+ (a: AnyFunc<Promise<any>>, b: any): Promise<any>;
71
+ };
72
+ /** Waits for all promises mapped by the fn. */
73
+ export declare const forEachAsync: {
74
+ (a: Placeholder, b: any[]): (a: (item: any) => Promise<any>) => Promise<any[]>;
75
+ (a: (item: any) => Promise<any>, b: Placeholder): (b: any[]) => Promise<any[]>;
76
+ (a: (item: any) => Promise<any>): (b: any[]) => Promise<any[]>;
77
+ (a: (item: any) => Promise<any>, b: any[]): Promise<any[]>;
78
+ };
79
+ /** The same as compose, but waits for promises in chains and returns a Promise. */
80
+ export declare const composeAsync: <TIn extends any[] = any[], TOut = any>(...fns: AnyFunc[]) => Composed<TIn, Promise<TOut>>;
39
81
  declare const length$1: <T extends AnyArray | string>(s: T) => T extends string ? StrLen<T> : T["length"];
40
82
  export declare const symbol: unique symbol;
41
83
  export declare const toLower: (s: string) => string;
42
84
  export declare const toUpper: (s: string) => string;
43
85
  export declare const type: (s: any) => string;
44
86
  export declare const typeIs: {
45
- (a: symbol, b: any): (a: string) => boolean;
46
- (a: string, b: symbol): (b: any) => boolean;
87
+ (a: Placeholder, b: any): (a: string) => boolean;
88
+ (a: string, b: Placeholder): (b: any) => boolean;
47
89
  (a: string): (b: any) => boolean;
48
90
  (a: string, b: any): boolean;
49
91
  };
50
92
  export declare const eq: {
51
- (a: symbol, b: any): (a: any) => boolean;
52
- (a: any, b: symbol): (b: any) => boolean;
93
+ (a: Placeholder, b: any): (a: any) => boolean;
94
+ (a: any, b: Placeholder): (b: any) => boolean;
53
95
  (a: any): (b: any) => boolean;
54
96
  (a: any, b: any): boolean;
55
97
  };
56
98
  export declare const equals: {
57
- (a: symbol, b: any): (a: any) => boolean;
58
- (a: any, b: symbol): (b: any) => boolean;
99
+ (a: Placeholder, b: any): (a: any) => boolean;
100
+ (a: any, b: Placeholder): (b: any) => boolean;
59
101
  (a: any): (b: any) => boolean;
60
102
  (a: any, b: any): boolean;
61
103
  };
62
104
  export declare const includes: {
63
- (a: symbol, b: unknown[]): (a: unknown) => boolean;
64
- (a: unknown, b: symbol): (b: unknown[]) => boolean;
105
+ (a: Placeholder, b: unknown[]): (a: unknown) => boolean;
106
+ (a: unknown, b: Placeholder): (b: unknown[]) => boolean;
65
107
  (a: unknown): (b: unknown[]) => boolean;
66
108
  (a: unknown, b: unknown[]): boolean;
67
109
  };
110
+ export declare const qappend: {
111
+ (a: Placeholder, b: any[]): (a: any) => any[];
112
+ (a: any, b: Placeholder): (b: any[]) => any[];
113
+ (a: any): (b: any[]) => any[];
114
+ (a: any, b: any[]): any[];
115
+ };
116
+ export declare const qassoc: Curried3<any, any, any, unknown>;
117
+ export declare const qreduce: Curried3<any, any, any, unknown>;
118
+ export declare const qmergeDeep: {
119
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
120
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
121
+ (a: AnyObject): (b: AnyObject) => AnyObject;
122
+ (a: AnyObject, b: AnyObject): AnyObject;
123
+ };
124
+ export declare const qmergeDeepX: {
125
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
126
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
127
+ (a: AnyObject): (b: AnyObject) => AnyObject;
128
+ (a: AnyObject, b: AnyObject): AnyObject;
129
+ };
130
+ export declare const qmergeDeepAdd: {
131
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
132
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
133
+ (a: AnyObject): (b: AnyObject) => AnyObject;
134
+ (a: AnyObject, b: AnyObject): AnyObject;
135
+ };
136
+ /** @param o1 <- o2 */
137
+ export declare const qmergeShallow: {
138
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
139
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
140
+ (a: AnyObject): (b: AnyObject) => AnyObject;
141
+ (a: AnyObject, b: AnyObject): AnyObject;
142
+ };
143
+ /** qmapKeys({ a: 'b' }, { a: 44 }) -> { b: 44 } */
144
+ export declare const qmapKeys: {
145
+ (a: Placeholder, b: AnyObject): (a: {
146
+ [oldKey: string]: string | AnyFunc;
147
+ }) => AnyObject;
148
+ (a: {
149
+ [oldKey: string]: string | AnyFunc;
150
+ }, b: Placeholder): (b: AnyObject) => AnyObject;
151
+ (a: {
152
+ [oldKey: string]: string | AnyFunc;
153
+ }): (b: AnyObject) => AnyObject;
154
+ (a: {
155
+ [oldKey: string]: string | AnyFunc;
156
+ }, b: AnyObject): AnyObject;
157
+ };
158
+ export declare const qmap: {
159
+ (a: Placeholder, b: any[]): (a: (s: any, i?: number, list?: any[]) => any) => any[];
160
+ (a: (s: any, i?: number, list?: any[]) => any, b: Placeholder): (b: any[]) => any[];
161
+ (a: (s: any, i?: number, list?: any[]) => any): (b: any[]) => any[];
162
+ (a: (s: any, i?: number, list?: any[]) => any, b: any[]): any[];
163
+ };
164
+ export declare const qmapObj: {
165
+ (a: Placeholder, b: AnyObject): (a: (s: any, k?: string, o?: AnyObject) => any) => AnyObject;
166
+ (a: (s: any, k?: string, o?: AnyObject) => any, b: Placeholder): (b: AnyObject) => AnyObject;
167
+ (a: (s: any, k?: string, o?: AnyObject) => any): (b: AnyObject) => AnyObject;
168
+ (a: (s: any, k?: string, o?: AnyObject) => any, b: AnyObject): AnyObject;
169
+ };
170
+ export declare const qfilter: {
171
+ (a: Placeholder, b: any[] | AnyObject): (a: (v: any, k: string | number) => boolean) => any[] | AnyObject;
172
+ (a: (v: any, k: string | number) => boolean, b: Placeholder): (b: any[] | AnyObject) => any[] | AnyObject;
173
+ (a: (v: any, k: string | number) => boolean): (b: any[] | AnyObject) => any[] | AnyObject;
174
+ (a: (v: any, k: string | number) => boolean, b: any[] | AnyObject): any[] | AnyObject;
175
+ };
176
+ export declare const qempty: <T extends AnyObject | any[]>(o: T) => T extends any[] ? [
177
+ ] : {};
178
+ export declare const qfreeze: <T extends AnyObject>(o: T) => Readonly<T>;
179
+ export declare const qfreezeShallow: <T extends AnyObject>(o: T) => Readonly<T>;
180
+ export declare const qprepend: {
181
+ (a: Placeholder, b: any[]): (a: any) => number;
182
+ (a: any, b: Placeholder): (b: any[]) => number;
183
+ (a: any): (b: any[]) => number;
184
+ (a: any, b: any[]): number;
185
+ };
186
+ export declare const qsort: {
187
+ (a: Placeholder, b: any[]): (a: (a: any, b: any) => number) => any[];
188
+ (a: (a: any, b: any) => number, b: Placeholder): (b: any[]) => any[];
189
+ (a: (a: any, b: any) => number): (b: any[]) => any[];
190
+ (a: (a: any, b: any) => number, b: any[]): any[];
191
+ };
192
+ export declare const qassocPath: Curried3<any, any, any, unknown>;
193
+ export declare const qreverse: (arr: any[]) => any[];
194
+ export declare const qomit: {
195
+ (a: Placeholder, b: AnyObject): (a: string[]) => any[] | AnyObject;
196
+ (a: string[], b: Placeholder): (b: AnyObject) => any[] | AnyObject;
197
+ (a: string[]): (b: AnyObject) => any[] | AnyObject;
198
+ (a: string[], b: AnyObject): any[] | AnyObject;
199
+ };
200
+ /** @param prop string @param pipe (data[prop]): prop_value @param data any
201
+ * @returns data with prop over pipe. */
202
+ export declare const qoverProp: Curried3<any, any, any, unknown>;
203
+ export declare const qpush: {
204
+ (a: Placeholder, b: any[]): (a: any) => any[];
205
+ (a: any, b: Placeholder): (b: any[]) => any[];
206
+ (a: any): (b: any[]) => any[];
207
+ (a: any, b: any[]): any[];
208
+ };
68
209
  export declare const isNil: <T extends any>(s: T) => T extends (null | undefined) ? true : false;
69
210
  export declare const take: (argN: number) => (...args: any[]) => any;
70
211
  export declare const ifElse: (...args: AnyArgs) => any;
71
- export declare const when: (...args: AnyArgs) => any;
212
+ export declare const when: Curried3<any, any, any, unknown>;
72
213
  export declare const compose: <TIn extends any[] = any[], TOut = any>(...fns: AnyFunc[]) => Composed<TIn, TOut>;
214
+ /** @param fn AnyFunc @param context any */
73
215
  export declare const bind: {
74
- (a: symbol, b: any): (a: any) => any;
75
- (a: any, b: symbol): (b: any) => any;
216
+ (a: Placeholder, b: any): (a: any) => any;
217
+ (a: any, b: Placeholder): (b: any) => any;
76
218
  (a: any): (b: any) => any;
77
219
  (a: any, b: any): any;
78
220
  };
79
221
  export declare const nth: {
80
- (a: symbol, b: string | ArrayLike<unknown>): (a: number) => unknown;
81
- (a: number, b: symbol): (b: string | ArrayLike<unknown>) => unknown;
222
+ (a: Placeholder, b: string | ArrayLike<unknown>): (a: number) => unknown;
223
+ (a: number, b: Placeholder): (b: string | ArrayLike<unknown>) => unknown;
82
224
  (a: number): (b: string | ArrayLike<unknown>) => unknown;
83
225
  (a: number, b: string | ArrayLike<unknown>): unknown;
84
226
  };
85
- export declare const slice: (...args: AnyArgs) => any;
227
+ export declare const slice: Curried3<any, any, any, unknown>;
86
228
  export declare const flip: <T extends AnyFunc>(fn: T) => {
87
- (a: symbol, b: Parameters<T>[0]): (a: Parameters<T>[1]) => any;
88
- (a: Parameters<T>[1], b: symbol): (b: Parameters<T>[0]) => any;
229
+ (a: Placeholder, b: Parameters<T>[0]): (a: Parameters<T>[1]) => any;
230
+ (a: Parameters<T>[1], b: Placeholder): (b: Parameters<T>[0]) => any;
89
231
  (a: Parameters<T>[1]): (b: Parameters<T>[0]) => any;
90
232
  (a: Parameters<T>[1], b: Parameters<T>[0]): any;
91
233
  };
@@ -127,80 +269,80 @@ type LastOverload = {
127
269
  export declare const last: LastOverload;
128
270
  /** @param a @param b @returns a+b */
129
271
  export declare const add: {
130
- (a: symbol, b: number): (a: number) => number;
131
- (a: number, b: symbol): (b: number) => number;
272
+ (a: Placeholder, b: number): (a: number) => number;
273
+ (a: number, b: Placeholder): (b: number) => number;
132
274
  (a: number): (b: number) => number;
133
275
  (a: number, b: number): number;
134
276
  };
135
277
  /** @param a @param b @returns b-a */
136
278
  export declare const subtract: {
137
- (a: symbol, b: number): (a: number) => number;
138
- (a: number, b: symbol): (b: number) => number;
279
+ (a: Placeholder, b: number): (a: number) => number;
280
+ (a: number, b: Placeholder): (b: number) => number;
139
281
  (a: number): (b: number) => number;
140
282
  (a: number, b: number): number;
141
283
  };
142
284
  /**@param a @param b @returns a×b */
143
285
  export declare const multiply: {
144
- (a: symbol, b: number): (a: number) => number;
145
- (a: number, b: symbol): (b: number) => number;
286
+ (a: Placeholder, b: number): (a: number) => number;
287
+ (a: number, b: Placeholder): (b: number) => number;
146
288
  (a: number): (b: number) => number;
147
289
  (a: number, b: number): number;
148
290
  };
149
291
  /** @param a @param b @returns a<b */
150
292
  export declare const gt: {
151
- (a: symbol, b: number): (a: number) => boolean;
152
- (a: number, b: symbol): (b: number) => boolean;
293
+ (a: Placeholder, b: number): (a: number) => boolean;
294
+ (a: number, b: Placeholder): (b: number) => boolean;
153
295
  (a: number): (b: number) => boolean;
154
296
  (a: number, b: number): boolean;
155
297
  };
156
298
  /** @param a @param b @returns a>b */
157
299
  export declare const lt: {
158
- (a: symbol, b: number): (a: number) => boolean;
159
- (a: number, b: symbol): (b: number) => boolean;
300
+ (a: Placeholder, b: number): (a: number) => boolean;
301
+ (a: number, b: Placeholder): (b: number) => boolean;
160
302
  (a: number): (b: number) => boolean;
161
303
  (a: number, b: number): boolean;
162
304
  };
163
305
  /** @param a @param b @returns a≤b */
164
306
  export declare const gte: {
165
- (a: symbol, b: number): (a: number) => boolean;
166
- (a: number, b: symbol): (b: number) => boolean;
307
+ (a: Placeholder, b: number): (a: number) => boolean;
308
+ (a: number, b: Placeholder): (b: number) => boolean;
167
309
  (a: number): (b: number) => boolean;
168
310
  (a: number, b: number): boolean;
169
311
  };
170
312
  /** @param a @param b @returns a≥b */
171
313
  export declare const lte: {
172
- (a: symbol, b: number): (a: number) => boolean;
173
- (a: number, b: symbol): (b: number) => boolean;
314
+ (a: Placeholder, b: number): (a: number) => boolean;
315
+ (a: number, b: Placeholder): (b: number) => boolean;
174
316
  (a: number): (b: number) => boolean;
175
317
  (a: number, b: number): boolean;
176
318
  };
177
319
  export declare const sort: {
178
- (a: symbol, b: unknown[]): (a: (a: unknown, b: unknown) => number) => unknown[];
179
- (a: (a: unknown, b: unknown) => number, b: symbol): (b: unknown[]) => unknown[];
320
+ (a: Placeholder, b: unknown[]): (a: (a: unknown, b: unknown) => number) => unknown[];
321
+ (a: (a: unknown, b: unknown) => number, b: Placeholder): (b: unknown[]) => unknown[];
180
322
  (a: (a: unknown, b: unknown) => number): (b: unknown[]) => unknown[];
181
323
  (a: (a: unknown, b: unknown) => number, b: unknown[]): unknown[];
182
324
  };
183
325
  export declare const find: {
184
- (a: symbol, b: any[]): (a: Cond) => any;
185
- (a: Cond, b: symbol): (b: any[]) => any;
326
+ (a: Placeholder, b: any[]): (a: Cond) => any;
327
+ (a: Cond, b: Placeholder): (b: any[]) => any;
186
328
  (a: Cond): (b: any[]) => any;
187
329
  (a: Cond, b: any[]): any;
188
330
  };
189
331
  export declare const findIndex: {
190
- (a: symbol, b: any[]): (a: Cond) => number;
191
- (a: Cond, b: symbol): (b: any[]) => number;
332
+ (a: Placeholder, b: any[]): (a: Cond) => number;
333
+ (a: Cond, b: Placeholder): (b: any[]) => number;
192
334
  (a: Cond): (b: any[]) => number;
193
335
  (a: Cond, b: any[]): number;
194
336
  };
195
337
  export declare const indexOf: {
196
- (a: symbol, b: any[]): (a: any) => number;
197
- (a: any, b: symbol): (b: any[]) => number;
338
+ (a: Placeholder, b: any[]): (a: any) => number;
339
+ (a: any, b: Placeholder): (b: any[]) => number;
198
340
  (a: any): (b: any[]) => number;
199
341
  (a: any, b: any[]): number;
200
342
  };
201
343
  export declare const divide: {
202
- (a: symbol, b: number): (a: number) => number;
203
- (a: number, b: symbol): (b: number) => number;
344
+ (a: Placeholder, b: number): (a: number) => number;
345
+ (a: number, b: Placeholder): (b: number) => number;
204
346
  (a: number): (b: number) => number;
205
347
  (a: number, b: number): number;
206
348
  };
@@ -225,8 +367,8 @@ export declare const toPairs: (o: AnyObject | any[]) => [
225
367
  any
226
368
  ][];
227
369
  export declare const test: {
228
- (a: symbol, b: string): (a: RegExp) => boolean;
229
- (a: RegExp, b: symbol): (b: string) => boolean;
370
+ (a: Placeholder, b: string): (a: RegExp) => boolean;
371
+ (a: RegExp, b: Placeholder): (b: string) => boolean;
230
372
  (a: RegExp): (b: string) => boolean;
231
373
  (a: RegExp, b: string): boolean;
232
374
  };
@@ -239,36 +381,36 @@ type T_tap = {
239
381
  };
240
382
  export declare const tap: T_tap;
241
383
  export declare const append: {
242
- (a: symbol, b: any[]): (a: any) => any[];
243
- (a: any, b: symbol): (b: any[]) => any[];
384
+ (a: Placeholder, b: any[]): (a: any) => any[];
385
+ (a: any, b: Placeholder): (b: any[]) => any[];
244
386
  (a: any): (b: any[]) => any[];
245
387
  (a: any, b: any[]): any[];
246
388
  };
247
389
  export declare const prepend: {
248
- (a: symbol, b: any[]): (a: any) => any[];
249
- (a: any, b: symbol): (b: any[]) => any[];
390
+ (a: Placeholder, b: any[]): (a: any) => any[];
391
+ (a: any, b: Placeholder): (b: any[]) => any[];
250
392
  (a: any): (b: any[]) => any[];
251
393
  (a: any, b: any[]): any[];
252
394
  };
253
395
  export declare const flat: (xs: any[]) => any[];
254
396
  export declare const flatShallow: (xs: any[]) => any[];
255
397
  export declare const flatTo: {
256
- (a: symbol, b: any[]): (a: number) => any[];
257
- (a: number, b: symbol): (b: any[]) => any[];
398
+ (a: Placeholder, b: any[]): (a: number) => any[];
399
+ (a: number, b: Placeholder): (b: any[]) => any[];
258
400
  (a: number): (b: any[]) => any[];
259
401
  (a: number, b: any[]): any[];
260
402
  };
261
403
  export declare const split: {
262
- (a: symbol, b: string): (a: string | RegExp) => string[];
263
- (a: string | RegExp, b: symbol): (b: string) => string[];
404
+ (a: Placeholder, b: string): (a: string | RegExp) => string[];
405
+ (a: string | RegExp, b: Placeholder): (b: string) => string[];
264
406
  (a: string | RegExp): (b: string) => string[];
265
407
  (a: string | RegExp, b: string): string[];
266
408
  };
267
409
  export declare const T: (...args: any[]) => true;
268
410
  export declare const F: (...args: any[]) => false;
269
411
  export declare const callWith: {
270
- (a: symbol, b: AnyFunc): (a: any[]) => any;
271
- (a: any[], b: symbol): (b: AnyFunc) => any;
412
+ (a: Placeholder, b: AnyFunc): (a: any[]) => any;
413
+ (a: any[], b: Placeholder): (b: AnyFunc) => any;
272
414
  (a: any[]): (b: AnyFunc) => any;
273
415
  (a: any[], b: AnyFunc): any;
274
416
  };
@@ -284,35 +426,35 @@ type T_complement<F extends AnyFunc> = {
284
426
  export declare const complement: <F extends AnyFunc>(fn: F) => T_complement<F>;
285
427
  export declare const sizeof: (s: any[] | string | AnyObject) => number;
286
428
  export declare const range: {
287
- (a: symbol, b: number): (a: number) => any[];
288
- (a: number, b: symbol): (b: number) => any[];
429
+ (a: Placeholder, b: number): (a: number) => any[];
430
+ (a: number, b: Placeholder): (b: number) => any[];
289
431
  (a: number): (b: number) => any[];
290
432
  (a: number, b: number): any[];
291
433
  };
292
434
  /** @param cond (x, y): bool @param xs any[] @returns xs without duplicates, using cond as a comparator. */
293
435
  export declare const uniqWith: {
294
- (a: symbol, b: any[]): (a: (x: any, y: any) => boolean) => any;
295
- (a: (x: any, y: any) => boolean, b: symbol): (b: any[]) => any;
296
- (a: (x: any, y: any) => boolean): (b: any[]) => any;
297
- (a: (x: any, y: any) => boolean, b: any[]): any;
436
+ (a: Placeholder, b: any[]): (a: (x: any, y: any) => boolean) => unknown;
437
+ (a: (x: any, y: any) => boolean, b: Placeholder): (b: any[]) => unknown;
438
+ (a: (x: any, y: any) => boolean): (b: any[]) => unknown;
439
+ (a: (x: any, y: any) => boolean, b: any[]): unknown;
298
440
  };
299
441
  /** @param xs any[] @returns xs without duplicates. */
300
- export declare const uniq: (b: any[]) => any;
442
+ export declare const uniq: (b: any[]) => unknown;
301
443
  export declare const intersection: {
302
- (a: symbol, b: any[]): (a: any[]) => any[];
303
- (a: any[], b: symbol): (b: any[]) => any[];
444
+ (a: Placeholder, b: any[]): (a: any[]) => any[];
445
+ (a: any[], b: Placeholder): (b: any[]) => any[];
304
446
  (a: any[]): (b: any[]) => any[];
305
447
  (a: any[], b: any[]): any[];
306
448
  };
307
449
  export declare const diff: {
308
- (a: symbol, b: any[]): (a: any[]) => any[];
309
- (a: any[], b: symbol): (b: any[]) => any[];
450
+ (a: Placeholder, b: any[]): (a: any[]) => any[];
451
+ (a: any[], b: Placeholder): (b: any[]) => any[];
310
452
  (a: any[]): (b: any[]) => any[];
311
453
  (a: any[], b: any[]): any[];
312
454
  };
313
455
  export declare const genBy: {
314
- (a: symbol, b: number): (a: (i: number) => any) => any[];
315
- (a: (i: number) => any, b: symbol): (b: number) => any[];
456
+ (a: Placeholder, b: number): (a: (i: number) => any) => any[];
457
+ (a: (i: number) => any, b: Placeholder): (b: number) => any[];
316
458
  (a: (i: number) => any): (b: number) => any[];
317
459
  (a: (i: number) => any, b: number): any[];
318
460
  };
@@ -323,14 +465,14 @@ export declare const explore: (caption: string, level?: string) => {
323
465
  (): undefined;
324
466
  };
325
467
  export declare const cond: {
326
- (a: symbol, b: any): (a: [
468
+ (a: Placeholder, b: any): (a: [
327
469
  Cond,
328
470
  Function
329
471
  ][]) => any;
330
472
  (a: [
331
473
  Cond,
332
474
  Function
333
- ][], b: symbol): (b: any) => any;
475
+ ][], b: Placeholder): (b: any) => any;
334
476
  (a: [
335
477
  Cond,
336
478
  Function
@@ -345,61 +487,61 @@ export declare const cond: {
345
487
  * @param value any
346
488
  * @param object AnyObject
347
489
  */
348
- export declare const assoc: (...args: AnyArgs) => any;
349
- export declare const assocPath: (...args: AnyArgs) => any;
490
+ export declare const assoc: Curried3<any, any, any, unknown>;
491
+ export declare const assocPath: Curried3<any, any, any, unknown>;
350
492
  export declare const all: {
351
- (a: symbol, b: any[]): (a: Cond) => boolean;
352
- (a: Cond, b: symbol): (b: any[]) => boolean;
493
+ (a: Placeholder, b: any[]): (a: Cond) => boolean;
494
+ (a: Cond, b: Placeholder): (b: any[]) => boolean;
353
495
  (a: Cond): (b: any[]) => boolean;
354
496
  (a: Cond, b: any[]): boolean;
355
497
  };
356
498
  export declare const any: {
357
- (a: symbol, b: any[]): (a: Cond) => boolean;
358
- (a: Cond, b: symbol): (b: any[]) => boolean;
499
+ (a: Placeholder, b: any[]): (a: Cond) => boolean;
500
+ (a: Cond, b: Placeholder): (b: any[]) => boolean;
359
501
  (a: Cond): (b: any[]) => boolean;
360
502
  (a: Cond, b: any[]): boolean;
361
503
  };
362
504
  export declare const allPass: {
363
- (a: symbol, b: any): (a: Cond[]) => boolean;
364
- (a: Cond[], b: symbol): (b: any) => boolean;
505
+ (a: Placeholder, b: any): (a: Cond[]) => boolean;
506
+ (a: Cond[], b: Placeholder): (b: any) => boolean;
365
507
  (a: Cond[]): (b: any) => boolean;
366
508
  (a: Cond[], b: any): boolean;
367
509
  };
368
510
  export declare const anyPass: {
369
- (a: symbol, b: any): (a: Cond[]) => boolean;
370
- (a: Cond[], b: symbol): (b: any) => boolean;
511
+ (a: Placeholder, b: any): (a: Cond[]) => boolean;
512
+ (a: Cond[], b: Placeholder): (b: any) => boolean;
371
513
  (a: Cond[]): (b: any) => boolean;
372
514
  (a: Cond[], b: any): boolean;
373
515
  };
374
516
  /** @param start string | any[] @param s string | any[] @description detects if `s` starts with `start` */
375
517
  export declare const startsWith: {
376
- (a: symbol, b: string | any[]): (a: string | any[]) => boolean;
377
- (a: string | any[], b: symbol): (b: string | any[]) => boolean;
518
+ (a: Placeholder, b: string | any[]): (a: string | any[]) => boolean;
519
+ (a: string | any[], b: Placeholder): (b: string | any[]) => boolean;
378
520
  (a: string | any[]): (b: string | any[]) => boolean;
379
521
  (a: string | any[], b: string | any[]): boolean;
380
522
  };
381
523
  /** @param start string | any[] @param s string | any[] @description detects if `s` starts with `start` */
382
524
  export declare const startsWithShallow: {
383
- (a: symbol, b: string | any[]): (a: string | any[]) => boolean;
384
- (a: string | any[], b: symbol): (b: string | any[]) => boolean;
525
+ (a: Placeholder, b: string | any[]): (a: string | any[]) => boolean;
526
+ (a: string | any[], b: Placeholder): (b: string | any[]) => boolean;
385
527
  (a: string | any[]): (b: string | any[]) => boolean;
386
528
  (a: string | any[], b: string | any[]): boolean;
387
529
  };
388
530
  /** @param key string @param o AnyObject @returns o[key] */
389
531
  export declare const prop: {
390
- (a: symbol, b: AnyObject): (a: string) => any;
391
- (a: string, b: symbol): (b: AnyObject) => any;
532
+ (a: Placeholder, b: AnyObject): (a: string) => any;
533
+ (a: string, b: Placeholder): (b: AnyObject) => any;
392
534
  (a: string): (b: AnyObject) => any;
393
535
  (a: string, b: AnyObject): any;
394
536
  };
395
537
  /** @param key string @param value any @param o AnyObject @returns boolean o[key] equals value */
396
- export declare const propEq: (...args: AnyArgs) => any;
538
+ export declare const propEq: Curried3<any, any, any, unknown>;
397
539
  /** @param key string @param o1 AnyObject @param o2 AnyObject @returns o₁[key] equals o₂[key] */
398
- export declare const propsEq: (...args: AnyArgs) => any;
399
- export declare const pathOr: (...args: AnyArgs) => any;
400
- export declare const path: any;
401
- export declare const pathEq: (...args: AnyArgs) => any;
402
- export declare const pathsEq: (...args: AnyArgs) => any;
540
+ export declare const propsEq: Curried3<any, any, any, unknown>;
541
+ export declare const pathOr: Curried3<any, (string | number)[], AnyObject, any>;
542
+ export declare const path: Curried2<(string | number)[], AnyObject, any>;
543
+ export declare const pathEq: Curried3<any, any, any, unknown>;
544
+ export declare const pathsEq: Curried3<any, any, any, unknown>;
403
545
  export declare const pathExists: Composed<any[], any>;
404
546
  export declare const clone: <T extends any>(s: T, shallow?: boolean) => T;
405
547
  export declare const cloneShallow: (s: any) => any;
@@ -410,22 +552,22 @@ export declare const freezeShallow: <T extends AnyObject>(o: T) => Readonly<T>;
410
552
  * @param accum T1
411
553
  * @param array T2[]
412
554
  */
413
- export declare const reduce: (...args: AnyArgs) => any;
555
+ export declare const reduce: Curried3<any, any, any, unknown>;
414
556
  export declare const pick: {
415
- (a: symbol, b: AnyObject): (a: string[]) => {};
416
- (a: string[], b: symbol): (b: AnyObject) => {};
557
+ (a: Placeholder, b: AnyObject): (a: string[]) => {};
558
+ (a: string[], b: Placeholder): (b: AnyObject) => {};
417
559
  (a: string[]): (b: AnyObject) => {};
418
560
  (a: string[], b: AnyObject): {};
419
561
  };
420
562
  export declare const pickBy: {
421
- (a: symbol, b: AnyObject): (a: Cond) => any;
422
- (a: Cond, b: symbol): (b: AnyObject) => any;
563
+ (a: Placeholder, b: AnyObject): (a: Cond) => any;
564
+ (a: Cond, b: Placeholder): (b: AnyObject) => any;
423
565
  (a: Cond): (b: AnyObject) => any;
424
566
  (a: Cond, b: AnyObject): any;
425
567
  };
426
568
  export declare const omit: {
427
- (a: symbol, b: AnyObject): (a: string[]) => any;
428
- (a: string[], b: symbol): (b: AnyObject) => any;
569
+ (a: Placeholder, b: AnyObject): (a: string[]) => any;
570
+ (a: string[], b: Placeholder): (b: AnyObject) => any;
429
571
  (a: string[]): (b: AnyObject) => any;
430
572
  (a: string[], b: AnyObject): any;
431
573
  };
@@ -436,30 +578,30 @@ export declare const fromPairs: (pairs: [
436
578
  [k: string]: any;
437
579
  };
438
580
  export declare const concat: {
439
- (a: symbol, b: string | any[]): (a: string | any[]) => string | any[];
440
- (a: string | any[], b: symbol): (b: string | any[]) => string | any[];
581
+ (a: Placeholder, b: string | any[]): (a: string | any[]) => string | any[];
582
+ (a: string | any[], b: Placeholder): (b: string | any[]) => string | any[];
441
583
  (a: string | any[]): (b: string | any[]) => string | any[];
442
584
  (a: string | any[], b: string | any[]): string | any[];
443
585
  };
444
586
  export declare const map: {
445
- (a: symbol, b: any[]): (a: (s: any, i?: number, list?: any[]) => any) => any[];
446
- (a: (s: any, i?: number, list?: any[]) => any, b: symbol): (b: any[]) => any[];
587
+ (a: Placeholder, b: any[]): (a: (s: any, i?: number, list?: any[]) => any) => any[];
588
+ (a: (s: any, i?: number, list?: any[]) => any, b: Placeholder): (b: any[]) => any[];
447
589
  (a: (s: any, i?: number, list?: any[]) => any): (b: any[]) => any[];
448
590
  (a: (s: any, i?: number, list?: any[]) => any, b: any[]): any[];
449
591
  };
450
592
  export declare const mapObj: {
451
- (a: symbol, b: AnyObject): (a: (s: any, i?: string, list?: any[]) => any) => AnyObject;
452
- (a: (s: any, i?: string, list?: any[]) => any, b: symbol): (b: AnyObject) => AnyObject;
593
+ (a: Placeholder, b: AnyObject): (a: (s: any, i?: string, list?: any[]) => any) => AnyObject;
594
+ (a: (s: any, i?: string, list?: any[]) => any, b: Placeholder): (b: AnyObject) => AnyObject;
453
595
  (a: (s: any, i?: string, list?: any[]) => any): (b: AnyObject) => AnyObject;
454
596
  (a: (s: any, i?: string, list?: any[]) => any, b: AnyObject): AnyObject;
455
597
  };
456
598
  export declare const join: {
457
- (a: symbol, b: ArrayLike<any> & {
599
+ (a: Placeholder, b: ArrayLike<any> & {
458
600
  join: AnyFunc<string, [
459
601
  delim: string
460
602
  ]>;
461
603
  }): (a: string) => string;
462
- (a: string, b: symbol): (b: ArrayLike<any> & {
604
+ (a: string, b: Placeholder): (b: ArrayLike<any> & {
463
605
  join: AnyFunc<string, [
464
606
  delim: string
465
607
  ]>;
@@ -476,18 +618,18 @@ export declare const join: {
476
618
  }): string;
477
619
  };
478
620
  export declare const forEach: {
479
- (a: symbol, b: any[]): (a: (s: unknown, i: number, arr: unknown[]) => any) => void;
480
- (a: (s: unknown, i: number, arr: unknown[]) => any, b: symbol): (b: any[]) => void;
621
+ (a: Placeholder, b: any[]): (a: (s: unknown, i: number, arr: unknown[]) => any) => void;
622
+ (a: (s: unknown, i: number, arr: unknown[]) => any, b: Placeholder): (b: any[]) => void;
481
623
  (a: (s: unknown, i: number, arr: unknown[]) => any): (b: any[]) => void;
482
624
  (a: (s: unknown, i: number, arr: unknown[]) => any, b: any[]): void;
483
625
  };
484
- export declare const both: (...args: AnyArgs) => any;
626
+ export declare const both: Curried3<any, any, any, unknown>;
485
627
  export declare const isEmpty: (s: any) => boolean | null;
486
628
  export declare const empty: (s: any) => {} | undefined;
487
- export declare const replace: (...args: AnyArgs) => any;
629
+ export declare const replace: Curried3<any, any, any, unknown>;
488
630
  export declare const filter: {
489
- (a: symbol, b: any[] | AnyObject): (a: (v: any, k: string | number) => boolean) => any;
490
- (a: (v: any, k: string | number) => boolean, b: symbol): (b: any[] | AnyObject) => any;
631
+ (a: Placeholder, b: any[] | AnyObject): (a: (v: any, k: string | number) => boolean) => any;
632
+ (a: (v: any, k: string | number) => boolean, b: Placeholder): (b: any[] | AnyObject) => any;
491
633
  (a: (v: any, k: string | number) => boolean): (b: any[] | AnyObject) => any;
492
634
  (a: (v: any, k: string | number) => boolean, b: any[] | AnyObject): any;
493
635
  };
@@ -496,45 +638,45 @@ export declare const filter: {
496
638
  * @param {(...args: Args) any} fn to be cached.
497
639
  */
498
640
  export declare const memoize: {
499
- (a: symbol, b: AnyFunc<any, any[]>): (a: (...args: any[]) => string) => (...args: any[]) => ReturnType<AnyFunc<any, any[]>>;
500
- (a: (...args: any[]) => string, b: symbol): (b: AnyFunc<any, any[]>) => (...args: any[]) => ReturnType<AnyFunc<any, any[]>>;
641
+ (a: Placeholder, b: AnyFunc<any, any[]>): (a: (...args: any[]) => string) => (...args: any[]) => ReturnType<AnyFunc<any, any[]>>;
642
+ (a: (...args: any[]) => string, b: Placeholder): (b: AnyFunc<any, any[]>) => (...args: any[]) => ReturnType<AnyFunc<any, any[]>>;
501
643
  (a: (...args: any[]) => string): (b: AnyFunc<any, any[]>) => (...args: any[]) => ReturnType<AnyFunc<any, any[]>>;
502
644
  (a: (...args: any[]) => string, b: AnyFunc<any, any[]>): (...args: any[]) => ReturnType<AnyFunc<any, any[]>>;
503
645
  };
504
646
  export declare const mergeShallow: {
505
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
506
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
647
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
648
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
507
649
  (a: AnyObject): (b: AnyObject) => AnyObject;
508
650
  (a: AnyObject, b: AnyObject): AnyObject;
509
651
  };
510
652
  export declare const mergeDeep: {
511
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
512
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
653
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
654
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
513
655
  (a: AnyObject): (b: AnyObject) => AnyObject;
514
656
  (a: AnyObject, b: AnyObject): AnyObject;
515
657
  };
516
658
  export declare const mergeDeepX: {
517
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
518
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
659
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
660
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
519
661
  (a: AnyObject): (b: AnyObject) => AnyObject;
520
662
  (a: AnyObject, b: AnyObject): AnyObject;
521
663
  };
522
664
  export declare const mergeDeepAdd: {
523
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
524
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
665
+ (a: Placeholder, b: AnyObject): (a: AnyObject) => AnyObject;
666
+ (a: AnyObject, b: Placeholder): (b: AnyObject) => AnyObject;
525
667
  (a: AnyObject): (b: AnyObject) => AnyObject;
526
668
  (a: AnyObject, b: AnyObject): AnyObject;
527
669
  };
528
670
  /** @param prop string @param pipe(data[prop]) @param data any @returns data with prop over pipe. */
529
- export declare const overProp: (...args: AnyArgs) => any;
671
+ export declare const overProp: Curried3<any, any, any, unknown>;
530
672
  /** mapKeys({ a: 'b' }, { a: 44 }) -> { b: 44 } */
531
673
  export declare const mapKeys: {
532
- (a: symbol, b: AnyObject): (a: {
674
+ (a: Placeholder, b: AnyObject): (a: {
533
675
  [oldKey: string]: string | AnyFunc;
534
676
  }) => AnyObject;
535
677
  (a: {
536
678
  [oldKey: string]: string | AnyFunc;
537
- }, b: symbol): (b: AnyObject) => AnyObject;
679
+ }, b: Placeholder): (b: AnyObject) => AnyObject;
538
680
  (a: {
539
681
  [oldKey: string]: string | AnyFunc;
540
682
  }): (b: AnyObject) => AnyObject;
@@ -543,16 +685,16 @@ export declare const mapKeys: {
543
685
  }, b: AnyObject): AnyObject;
544
686
  };
545
687
  export declare const zip: {
546
- (a: symbol, b: unknown[]): (a: unknown[]) => any[];
547
- (a: unknown[], b: symbol): (b: unknown[]) => any[];
688
+ (a: Placeholder, b: unknown[]): (a: unknown[]) => any[];
689
+ (a: unknown[], b: Placeholder): (b: unknown[]) => any[];
548
690
  (a: unknown[]): (b: unknown[]) => any[];
549
691
  (a: unknown[], b: unknown[]): any[];
550
692
  };
551
693
  export declare const zipObj: {
552
- (a: symbol, b: unknown[]): (a: unknown[]) => any;
553
- (a: unknown[], b: symbol): (b: unknown[]) => any;
554
- (a: unknown[]): (b: unknown[]) => any;
555
- (a: unknown[], b: unknown[]): any;
694
+ (a: Placeholder, b: unknown[]): (a: unknown[]) => unknown;
695
+ (a: unknown[], b: Placeholder): (b: unknown[]) => unknown;
696
+ (a: unknown[]): (b: unknown[]) => unknown;
697
+ (a: unknown[], b: unknown[]): unknown;
556
698
  };
557
699
  /** zips through a pipe. Types T1, T2, T3.
558
700
  * @returns T3[]
@@ -560,128 +702,29 @@ export declare const zipObj: {
560
702
  * @param a T1[]
561
703
  * @param b T2[]
562
704
  */
563
- export declare const zipWith: (...args: AnyArgs) => any;
705
+ export declare const zipWith: Curried3<any, any, any, unknown>;
564
706
  export declare const mirror: <T extends unknown>(s: T) => T;
565
707
  export declare const reflect: <T extends unknown>(s: T) => T;
566
708
  export declare const echo: <T extends unknown>(s: T) => T;
567
709
  export declare const notf: <F extends AnyFunc>(fn: F) => T_complement<F>;
568
710
  export declare const push: {
569
- (a: symbol, b: any[]): (a: any) => any[];
570
- (a: any, b: symbol): (b: any[]) => any[];
711
+ (a: Placeholder, b: any[]): (a: any) => any[];
712
+ (a: any, b: Placeholder): (b: any[]) => any[];
571
713
  (a: any): (b: any[]) => any[];
572
714
  (a: any, b: any[]): any[];
573
715
  };
574
716
  export declare const some: {
575
- (a: symbol, b: any[]): (a: Cond) => boolean;
576
- (a: Cond, b: symbol): (b: any[]) => boolean;
717
+ (a: Placeholder, b: any[]): (a: Cond) => boolean;
718
+ (a: Cond, b: Placeholder): (b: any[]) => boolean;
577
719
  (a: Cond): (b: any[]) => boolean;
578
720
  (a: Cond, b: any[]): boolean;
579
721
  };
580
722
  export declare const weakEq: {
581
- (a: symbol, b: any): (a: any) => boolean;
582
- (a: any, b: symbol): (b: any) => boolean;
723
+ (a: Placeholder, b: any): (a: any) => boolean;
724
+ (a: any, b: Placeholder): (b: any) => boolean;
583
725
  (a: any): (b: any) => boolean;
584
726
  (a: any, b: any): boolean;
585
727
  };
586
- export declare const qappend: {
587
- (a: symbol, b: any[]): (a: any) => any[];
588
- (a: any, b: symbol): (b: any[]) => any[];
589
- (a: any): (b: any[]) => any[];
590
- (a: any, b: any[]): any[];
591
- };
592
- export declare const qassoc: (...args: AnyArgs) => any;
593
- export declare const qreduce: (...args: AnyArgs) => any;
594
- export declare const qmergeDeep: {
595
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
596
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
597
- (a: AnyObject): (b: AnyObject) => AnyObject;
598
- (a: AnyObject, b: AnyObject): AnyObject;
599
- };
600
- export declare const qmergeDeepX: {
601
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
602
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
603
- (a: AnyObject): (b: AnyObject) => AnyObject;
604
- (a: AnyObject, b: AnyObject): AnyObject;
605
- };
606
- export declare const qmergeDeepAdd: {
607
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
608
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
609
- (a: AnyObject): (b: AnyObject) => AnyObject;
610
- (a: AnyObject, b: AnyObject): AnyObject;
611
- };
612
- /** @param o1 <- o2 */
613
- export declare const qmergeShallow: {
614
- (a: symbol, b: AnyObject): (a: AnyObject) => AnyObject;
615
- (a: AnyObject, b: symbol): (b: AnyObject) => AnyObject;
616
- (a: AnyObject): (b: AnyObject) => AnyObject;
617
- (a: AnyObject, b: AnyObject): AnyObject;
618
- };
619
- /** qmapKeys({ a: 'b' }, { a: 44 }) -> { b: 44 } */
620
- export declare const qmapKeys: {
621
- (a: symbol, b: AnyObject): (a: {
622
- [oldKey: string]: string | AnyFunc;
623
- }) => AnyObject;
624
- (a: {
625
- [oldKey: string]: string | AnyFunc;
626
- }, b: symbol): (b: AnyObject) => AnyObject;
627
- (a: {
628
- [oldKey: string]: string | AnyFunc;
629
- }): (b: AnyObject) => AnyObject;
630
- (a: {
631
- [oldKey: string]: string | AnyFunc;
632
- }, b: AnyObject): AnyObject;
633
- };
634
- export declare const qmap: {
635
- (a: symbol, b: any[]): (a: (s: any, i?: number, list?: any[]) => any) => any[];
636
- (a: (s: any, i?: number, list?: any[]) => any, b: symbol): (b: any[]) => any[];
637
- (a: (s: any, i?: number, list?: any[]) => any): (b: any[]) => any[];
638
- (a: (s: any, i?: number, list?: any[]) => any, b: any[]): any[];
639
- };
640
- export declare const qmapObj: {
641
- (a: symbol, b: AnyObject): (a: (s: any, k?: string, o?: AnyObject) => any) => AnyObject;
642
- (a: (s: any, k?: string, o?: AnyObject) => any, b: symbol): (b: AnyObject) => AnyObject;
643
- (a: (s: any, k?: string, o?: AnyObject) => any): (b: AnyObject) => AnyObject;
644
- (a: (s: any, k?: string, o?: AnyObject) => any, b: AnyObject): AnyObject;
645
- };
646
- export declare const qfilter: {
647
- (a: symbol, b: any[] | AnyObject): (a: (v: any, k: string | number) => boolean) => any[] | AnyObject;
648
- (a: (v: any, k: string | number) => boolean, b: symbol): (b: any[] | AnyObject) => any[] | AnyObject;
649
- (a: (v: any, k: string | number) => boolean): (b: any[] | AnyObject) => any[] | AnyObject;
650
- (a: (v: any, k: string | number) => boolean, b: any[] | AnyObject): any[] | AnyObject;
651
- };
652
- export declare const qempty: <T extends AnyObject | any[]>(o: T) => T extends any[] ? [
653
- ] : {};
654
- export declare const qfreeze: <T extends AnyObject>(o: T) => Readonly<T>;
655
- export declare const qfreezeShallow: <T extends AnyObject>(o: T) => Readonly<T>;
656
- export declare const qprepend: {
657
- (a: symbol, b: any[]): (a: any) => number;
658
- (a: any, b: symbol): (b: any[]) => number;
659
- (a: any): (b: any[]) => number;
660
- (a: any, b: any[]): number;
661
- };
662
- export declare const qsort: {
663
- (a: symbol, b: any[]): (a: (a: any, b: any) => number) => any[];
664
- (a: (a: any, b: any) => number, b: symbol): (b: any[]) => any[];
665
- (a: (a: any, b: any) => number): (b: any[]) => any[];
666
- (a: (a: any, b: any) => number, b: any[]): any[];
667
- };
668
- export declare const qassocPath: (...args: AnyArgs) => any;
669
- export declare const qreverse: (arr: any[]) => any[];
670
- export declare const qomit: {
671
- (a: symbol, b: AnyObject): (a: string[]) => any[] | AnyObject;
672
- (a: string[], b: symbol): (b: AnyObject) => any[] | AnyObject;
673
- (a: string[]): (b: AnyObject) => any[] | AnyObject;
674
- (a: string[], b: AnyObject): any[] | AnyObject;
675
- };
676
- /** @param prop string @param pipe (data[prop]): prop_value @param data any
677
- * @returns data with prop over pipe. */
678
- export declare const qoverProp: (...args: AnyArgs) => any;
679
- export declare const qpush: {
680
- (a: symbol, b: any[]): (a: any) => any[];
681
- (a: any, b: symbol): (b: any[]) => any[];
682
- (a: any): (b: any[]) => any[];
683
- (a: any, b: any[]): any[];
684
- };
685
728
  type StrTmpl = ((data: AnyObject) => string);
686
729
  /** Supports ecrans: '\\{"json": {yes} \\}'
687
730
  @returns getTmpl('one{meme}two')({meme: 42}) -> one42two */
@@ -689,35 +732,7 @@ export declare const getTmpl: (tmpl: string) => StrTmpl;
689
732
  export declare const debounce: <T extends AnyFunc>(time: number, fn: T) => (...args: Parameters<T>) => Promise<ReturnType<T>>;
690
733
  export declare const throttle: <T extends AnyFunc>(time: number, fn: T) => (...args: Parameters<T>) => any;
691
734
  export declare const wait: (time: number) => Promise<unknown>;
692
- /** One promise waits for another. */
693
- export declare const forEachSerial: {
694
- (a: symbol, b: any[]): (a: AnyFunc) => Promise<void>;
695
- (a: AnyFunc, b: symbol): (b: any[]) => Promise<void>;
696
- (a: AnyFunc): (b: any[]) => Promise<void>;
697
- (a: AnyFunc, b: any[]): Promise<void>;
698
- };
699
- /** Promise.all wrapper for functional pipelining. */
700
- export declare const waitAll: <T>(promises: Promise<T>[]) => Promise<Awaited<T>[]>;
701
- /** Waits for a Promise that been generated by the first arg, then returns an untoched value. Types T.
702
- * @param {AnyFunc<Promise>} fn - function to wait.
703
- * @param {T} s - any value to tap and return back
704
- * @returns {T}
705
- */
706
- export declare const waitTap: {
707
- (a: symbol, b: any): (a: AnyFunc<Promise<any>>) => Promise<any>;
708
- (a: AnyFunc<Promise<any>>, b: symbol): (b: any) => Promise<any>;
709
- (a: AnyFunc<Promise<any>>): (b: any) => Promise<any>;
710
- (a: AnyFunc<Promise<any>>, b: any): Promise<any>;
711
- };
712
- /** Waits for all promises mapped by the fn. */
713
- export declare const forEachAsync: {
714
- (a: symbol, b: any[]): (a: (item: any) => Promise<any>) => Promise<any[]>;
715
- (a: (item: any) => Promise<any>, b: symbol): (b: any[]) => Promise<any[]>;
716
- (a: (item: any) => Promise<any>): (b: any[]) => Promise<any[]>;
717
- (a: (item: any) => Promise<any>, b: any[]): Promise<any[]>;
718
- };
719
- /** The same as compose, but waits for promises in chains and returns a Promise. */
720
- export declare const composeAsync: <TIn extends any[] = any[], TOut = any>(...fns: AnyFunc[]) => Composed<TIn, Promise<TOut>>;
735
+ export declare const uncurry: <Args extends any[] = any[], ReturnT = any>(fn: Curried<Args>) => AnyFunc;
721
736
 
722
737
  export {
723
738
  length$1 as length,
package/dist/bundle.mjs CHANGED
@@ -47,12 +47,8 @@ const endlessph = (fn) => {
47
47
  const zero = 0;
48
48
  function curry2(fn) {
49
49
  function curried2(a, ...args) {
50
- const withPlaceholder1 = a === __;
51
- const aln = args.length === 1;
52
- if (aln && withPlaceholder1)
53
- throw new Error('Senseless placeholder usage.');
54
- return aln
55
- ? withPlaceholder1
50
+ return args.length > zero
51
+ ? a === __
56
52
  ? endlessph((a) => fn(a, args[zero]))
57
53
  : fn(a, args[zero])
58
54
  : (b) => fn(a, b);
package/package.json CHANGED
@@ -41,7 +41,7 @@
41
41
  "prod": "npm run gentypes && npm run prod:es && npm run prod:cjs",
42
42
  "all": "npm run dev && npm run prod"
43
43
  },
44
- "version": "1.6.19",
44
+ "version": "1.6.21",
45
45
  "devDependencies": {
46
46
  "@rollup/plugin-commonjs": "^29.0.0",
47
47
  "@rollup/plugin-node-resolve": "^16.0.3",
package/src/curry.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import { AnyArgs } from "./internal_types"
2
2
  import { AnyFunc } from "./types"
3
3
 
4
- type Placeholder = symbol
4
+ export type Placeholder = symbol
5
5
  export const __: Placeholder = Symbol('Placeholder')
6
- const {assign, defineProperty} = Object
7
6
 
8
7
  const countArgs = (s: AnyArgs) => {
9
8
  let i = 0
@@ -61,33 +60,15 @@ const endlessph = <Func extends AnyFunc>(fn: Func) => {
61
60
  return _endlessph
62
61
  }
63
62
 
64
- type Curried2<p0, p1, ReturnT> = {
63
+ export type Curried2<p0, p1, ReturnT> = {
65
64
  (a: Placeholder, b: p1): (a: p0) => ReturnT
66
65
  (a: p0, b: Placeholder): (b: p1) => ReturnT
67
66
  (a: p0): (b: p1) => ReturnT
68
67
  (a: p0, b: p1): ReturnT
69
68
  }
70
69
 
71
- const curried2 =
72
- <p0, p1, ReturnT>(fn: (a: p0, b: p1) => ReturnT) => {
73
-
74
- const impl = (
75
- a: p0 | Placeholder,
76
- ...args: [b?: p1]
77
- ): ReturnT | ((b: p1) => ReturnT) => {
78
- if (args.length === 0) {
79
- return (b: p1) => fn(a as p0, b)
80
- }
81
- const b = args[0]
82
- return fn(a as p0, b as p1)
83
- }
84
-
85
- return impl as Curried2<p0, p1, ReturnT>
86
- }
87
-
88
-
89
70
  type Func2 = (a: any, b: any) => any
90
- const zero = 0
71
+ const zero = 0, one = 1
91
72
  export function curry2<Func extends Func2>(fn: Func) {
92
73
  type p0 = Parameters<Func>[0]
93
74
  type p1 = Parameters<Func>[1]
@@ -97,12 +78,8 @@ export function curry2<Func extends Func2>(fn: Func) {
97
78
  function curried2(a: p0 ): (b: p1) => ReturnT
98
79
  function curried2(a: p0, b: p1): ReturnT
99
80
  function curried2(a: p0 | Placeholder, ...args: [b?: p1]) {
100
- const withPlaceholder1 = a===__
101
- const aln = args.length===1
102
- if(aln && withPlaceholder1)
103
- throw new Error('Senseless placeholder usage.')
104
- return aln
105
- ? withPlaceholder1
81
+ return args.length>zero
82
+ ? a===__
106
83
  ? endlessph((a: p0) => fn(a, args[zero]) as ReturnType<Func>)
107
84
  : fn(a, args[zero]) as ReturnType<Func>
108
85
  : (b: p1) => fn(a, b) as Curried2<p0, p1, ReturnT>
@@ -110,14 +87,16 @@ export function curry2<Func extends Func2>(fn: Func) {
110
87
  return curried2
111
88
  }
112
89
 
113
- type Func3 = (a: any, b: any, c: any) => any
114
- export function curry3<Func extends Func3>(fn: Func) {
115
- // type p0 = Parameters<Func>[0]
116
- // type p1 = Parameters<Func>[1]
117
- // type p2 = Parameters<Func>[2]
118
- // type ReturnT = ReturnType<Func>
119
- // TODO: optimize.
120
- // Cannot use ts-toolbelt due to this error:
121
- // Excessive stack depth comparing types 'GapsOf<?, L2>' and 'GapsOf<?, L2>'
122
- return curry(fn)
123
- }
90
+ export type Curried3<A, B, C, R> =
91
+ & ((a: A) => Curried2<B, C, R>)
92
+ & ((a: A, b: B) => (c: C) => R)
93
+ & ((a: A, b: B, c: C) => R)
94
+ & ((a: Placeholder, b: B, c: C) => (a: A) => R)
95
+ & ((a: A, b: Placeholder, c: C) => (b: B) => R)
96
+ & ((a: A, b: B, c: Placeholder) => (c: C) => R)
97
+ & ((a: Placeholder, b: Placeholder, c: C) => (a: A, b: B) => R)
98
+ & ((a: Placeholder, b: B, c: Placeholder) => (a: A, c: C) => R)
99
+ & ((a: A, b: Placeholder, c: Placeholder) => (b: B, c: C) => R)
100
+
101
+ export declare const curry3: <Params extends [any, any, any], ReturnT, F = AnyFunc<ReturnT, Params>>(fn: F) =>
102
+ Curried3<Params[0], Params[1], Params[2], ReturnT>
package/src/index.ts CHANGED
@@ -1,10 +1,10 @@
1
1
 
2
- export * from './curry'
3
- export * from './uncurry'
2
+ export * from './async'
4
3
  export * from './common'
5
- export * from './safe'
4
+ export { __, curry, curry2, curry3 } from './curry'
6
5
  export * from './quick'
6
+ export * from './safe'
7
7
  export * from './strings'
8
8
  export * from './timers'
9
- export * from './async'
10
- export * from './types'
9
+ export * from './types'
10
+ export * from './uncurry'
package/src/safe.ts CHANGED
@@ -1,10 +1,10 @@
1
+ import { eq, equals, includes, length, symbol, type } from './common'
1
2
  import { __, curry, curry2, curry3 } from './curry'
2
- import { isNum, undef, isArray, isFunc, isObj, inf, isNil } from './utils'
3
- import { qmergeDeep, qreduce, qappend, qmapKeys, qmergeDeepX, qmergeDeepAdd, qfilter, qfreeze, qfreezeShallow, qmapObj } from './quick'
4
- import { AnyFunc, Composed, Cond, AnyObject, Reducer } from './types'
5
- import { symbol, type, length, equals, includes, eq } from './common'
6
- import { Split, AnyArray, IndexesOfArray } from './internal_types'
7
3
  import { is_typed_arr, startsWithWith } from './internal'
4
+ import { AnyArray, IndexesOfArray, Split } from './internal_types'
5
+ import { qappend, qfilter, qfreeze, qfreezeShallow, qmapKeys, qmapObj, qmergeDeep, qmergeDeepAdd, qmergeDeepX, qreduce } from './quick'
6
+ import { AnyFunc, AnyObject, Composed, Cond, Reducer } from './types'
7
+ import { inf, isArray, isFunc, isNil, isNum, isObj, undef } from './utils'
8
8
  // TODO: over, lensProp, reduceAsync, propsEq is up to 20x slow due to deep equals.
9
9
 
10
10
  export const take = (argN: number) => (...args: any[]) => args[argN]
@@ -38,6 +38,7 @@ export const compose = (
38
38
  return s as any as TOut
39
39
  }
40
40
  )
41
+ /** @param fn AnyFunc @param context any */
41
42
  export const bind = curry2<AnyFunc>((fn: AnyFunc, context: any) => fn.bind(context))
42
43
  export const nth = curry2(<T extends any>(i: number, data: string | ArrayLike<T>) => data[i])
43
44
  // FIXME: these types. Somewhere in curry2.
@@ -265,16 +266,15 @@ export const propEq = curry3(
265
266
  export const propsEq = curry3(
266
267
  (key: string, o1: any, o2: AnyObject) => equals(o1[key], o2[key])
267
268
  )
268
- export const pathOr = curry3(
269
- (_default: any, path: (string | number)[], o: any) => length(path)
270
- ? isNil(o)
271
- ? _default
272
- : compose(
273
- (k) => k in o ? pathOr(_default, slice(1, inf, path), o[k]) : _default,
274
- head
275
- )(path)
276
- : o
277
- )
269
+ const _pathOr = (_default: any, path: (string | number)[], o: AnyObject) => length(path)
270
+ ? isNil(o)
271
+ ? _default
272
+ : compose(
273
+ (k) => k in o ? _pathOr(_default, slice(1, inf, path) as typeof path, o[k] as typeof o) : _default,
274
+ head
275
+ )(path)
276
+ : o
277
+ export const pathOr = curry3<[any, (string | number)[], AnyObject], any>(_pathOr) // it's more performant due to recursion there.
278
278
  export const path = pathOr(undef)
279
279
  export const pathEq = curry3(
280
280
  (_path: string[], value: any, o: AnyObject) => equals(path(_path, o), value)
@@ -443,7 +443,7 @@ export const zipWith = curry3(
443
443
  )
444
444
 
445
445
  // Reexport safe stuff that is ready to use externally.
446
- export { toLower, toUpper, type, typeIs, length, eq, equals, includes } from './common'
446
+ export { eq, equals, includes, length, toLower, toUpper, type, typeIs } from './common'
447
447
  export { isNil } from './utils'
448
448
 
449
449
  // ALIASES
package/src/timers.ts CHANGED
@@ -13,15 +13,16 @@ export const debounce = <T extends AnyFunc>(time: number, fn: T) => {
13
13
  queue.push(ff)
14
14
  }))
15
15
  }
16
- // export const debouncePrepared =
17
16
  export const throttle = <T extends AnyFunc>(time: number, fn: T) => {
18
17
  let on = true
18
+ let res: any
19
19
  return (...args: Parameters<T>) => {
20
20
  if(on) {
21
21
  on = false
22
22
  setTimeout(() => on = true, time)
23
- return fn(...args)
23
+ res = fn(...args)
24
24
  }
25
+ return res
25
26
  }
26
27
  }
27
28
  export const wait = (time: number) => new Promise((ff) => setTimeout(ff, time))
package/src/types.ts CHANGED
@@ -8,4 +8,12 @@ export type Reducer<T=any> = (accum: T, cur: any, index: number) => T
8
8
  export type AnyFunc<ReturnT = any, Args extends AnyArgs = AnyArgs> = (...args: Args) => ReturnT
9
9
  export type Curried<Args extends AnyArgs = AnyArgs, ReturnT = any> = (arg: Args[number]) => Curried<Args> | ReturnT
10
10
  export type Composed<TIn extends any[], TOut> = (...xs: TIn) => TOut
11
- export type Inverse<T> = T extends Falsey ? true : false
11
+ export type Inverse<T> = T extends Falsey ? true : false
12
+ export type PathValue<O, Keys extends readonly PropertyKey[], Default> =
13
+ Keys extends [infer K, ...infer Rest]
14
+ ? K extends keyof O
15
+ ? Rest extends PropertyKey[]
16
+ ? PathValue<O[K], Rest, Default>
17
+ : Default
18
+ : Default
19
+ : O