@ix-xs/node-comfort 1.1.31 → 2.0.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/CHANGELOG.md +190 -0
- package/LICENSE +21 -0
- package/README.md +210 -748
- package/index.js +84 -13
- package/package.json +201 -21
- package/src/Arr.js +901 -0
- package/src/Async.js +585 -0
- package/src/Cache.js +329 -0
- package/src/Checker.js +979 -188
- package/src/Cli.js +1034 -0
- package/src/Color.js +415 -0
- package/src/Crypto.js +707 -0
- package/src/Emitter.js +289 -0
- package/src/Env.js +555 -0
- package/src/FS.js +1483 -768
- package/src/Func.js +692 -0
- package/src/Http.js +538 -0
- package/src/Id.js +418 -0
- package/src/Logger.js +739 -307
- package/src/Num.js +849 -0
- package/src/Obj.js +904 -0
- package/src/SQLite.js +1308 -994
- package/src/Schema.js +1586 -0
- package/src/Str.js +999 -0
- package/src/Sys.js +511 -0
- package/src/Time.js +1323 -0
- package/src/Utils.js +321 -325
- package/src/errors.js +292 -0
- package/types/index.d.ts +693 -120
- package/types/src/Arr.d.ts +562 -0
- package/types/src/Arr.d.ts.map +1 -0
- package/types/src/Async.d.ts +321 -0
- package/types/src/Async.d.ts.map +1 -0
- package/types/src/Cache.d.ts +195 -0
- package/types/src/Cache.d.ts.map +1 -0
- package/types/src/Checker.d.ts +609 -81
- package/types/src/Checker.d.ts.map +1 -1
- package/types/src/Cli.d.ts +582 -0
- package/types/src/Cli.d.ts.map +1 -0
- package/types/src/Color.d.ts +294 -0
- package/types/src/Color.d.ts.map +1 -0
- package/types/src/Crypto.d.ts +534 -0
- package/types/src/Crypto.d.ts.map +1 -0
- package/types/src/Emitter.d.ts +170 -0
- package/types/src/Emitter.d.ts.map +1 -0
- package/types/src/Env.d.ts +382 -0
- package/types/src/Env.d.ts.map +1 -0
- package/types/src/FS.d.ts +709 -201
- package/types/src/FS.d.ts.map +1 -1
- package/types/src/Func.d.ts +455 -0
- package/types/src/Func.d.ts.map +1 -0
- package/types/src/Http.d.ts +374 -0
- package/types/src/Http.d.ts.map +1 -0
- package/types/src/Id.d.ts +200 -0
- package/types/src/Id.d.ts.map +1 -0
- package/types/src/Logger.d.ts +374 -24
- package/types/src/Logger.d.ts.map +1 -1
- package/types/src/Num.d.ts +578 -0
- package/types/src/Num.d.ts.map +1 -0
- package/types/src/Obj.d.ts +475 -0
- package/types/src/Obj.d.ts.map +1 -0
- package/types/src/SQLite.d.ts +647 -305
- package/types/src/SQLite.d.ts.map +1 -1
- package/types/src/Schema.d.ts +940 -0
- package/types/src/Schema.d.ts.map +1 -0
- package/types/src/Str.d.ts +696 -0
- package/types/src/Str.d.ts.map +1 -0
- package/types/src/Sys.d.ts +269 -0
- package/types/src/Sys.d.ts.map +1 -0
- package/types/src/Time.d.ts +664 -0
- package/types/src/Time.d.ts.map +1 -0
- package/types/src/Utils.d.ts +154 -102
- package/types/src/Utils.d.ts.map +1 -1
- package/types/src/errors.d.ts +292 -0
- package/types/src/errors.d.ts.map +1 -0
- package/tsconfig.json +0 -18
- package/types/index.d.ts.map +0 -1
package/types/src/FS.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FS.d.ts","sourceRoot":"","sources":["../../src/FS.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FS.d.ts","sourceRoot":"","sources":["../../src/FS.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for `debounce()`.
|
|
3
|
+
*/
|
|
4
|
+
export type DebounceOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* Call right away at the start of a burst.
|
|
7
|
+
*/
|
|
8
|
+
leading?: boolean | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Call once the burst is over. Defaults to `true`.
|
|
11
|
+
*/
|
|
12
|
+
trailing?: boolean | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Never postpone a call longer than this, in ms, even if calls keep coming.
|
|
15
|
+
*/
|
|
16
|
+
maxWait?: number | undefined;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* A debounced function. `flush()` runs the pending call now, `cancel()`
|
|
20
|
+
* drops it, `pending()` tells you if there's one.
|
|
21
|
+
*/
|
|
22
|
+
export type DebouncedFunction<F extends (...args: any[]) => any> = ((...args: Parameters<F>) => void) & {
|
|
23
|
+
cancel(): void;
|
|
24
|
+
flush(): void;
|
|
25
|
+
pending(): boolean;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Options for `throttle()`.
|
|
29
|
+
*/
|
|
30
|
+
export type ThrottleOptions = {
|
|
31
|
+
/**
|
|
32
|
+
* Call right away on the first call. Defaults to `true`.
|
|
33
|
+
*/
|
|
34
|
+
leading?: boolean | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Make a last call with the latest arguments at the end of the interval. Defaults to `true`.
|
|
37
|
+
*/
|
|
38
|
+
trailing?: boolean | undefined;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* A throttled function, with `cancel()`.
|
|
42
|
+
*/
|
|
43
|
+
export type ThrottledFunction<F extends (...args: any[]) => any> = ((...args: Parameters<F>) => void) & {
|
|
44
|
+
cancel(): void;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Options for `memoize()`.
|
|
48
|
+
*/
|
|
49
|
+
export type MemoizeOptions = {
|
|
50
|
+
/**
|
|
51
|
+
* Builds the cache key from the arguments. Defaults to the arguments as JSON.
|
|
52
|
+
*/
|
|
53
|
+
resolver?: ((...args: any[]) => unknown) | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* How long a result stays cached, in ms.
|
|
56
|
+
*/
|
|
57
|
+
ttl?: number | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Maximum number of results; the least recently used goes first.
|
|
60
|
+
*/
|
|
61
|
+
max?: number | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Keep rejected promises. By default they're dropped so the next call tries again.
|
|
64
|
+
*/
|
|
65
|
+
cacheRejections?: boolean | undefined;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* A memoized function, with its `cache`, `clear()` and `delete(...args)`.
|
|
69
|
+
*/
|
|
70
|
+
export type MemoizedFunction<F extends (...args: any[]) => any> = F & {
|
|
71
|
+
cache: Map<unknown, {
|
|
72
|
+
value: ReturnType<F>;
|
|
73
|
+
expires: number;
|
|
74
|
+
}>;
|
|
75
|
+
clear(): void;
|
|
76
|
+
delete(...args: Parameters<F>): boolean;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Options for `retry()`.
|
|
80
|
+
*/
|
|
81
|
+
export type RetryOptions = {
|
|
82
|
+
/**
|
|
83
|
+
* Total attempts, the first one included. Defaults to `3`.
|
|
84
|
+
*/
|
|
85
|
+
attempts?: number | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Wait before the next attempt, in ms, or a function that computes it.
|
|
88
|
+
*/
|
|
89
|
+
delay?: number | ((attempt: number, error: unknown) => number) | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Multiplies the delay after each failure: `2` gives 200, 400, 800... Defaults to `1`.
|
|
92
|
+
*/
|
|
93
|
+
backoff?: number | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Cap for the computed delay, in ms.
|
|
96
|
+
*/
|
|
97
|
+
maxDelay?: number | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Randomizes the delay, from `0` (none) to `1` (anywhere between 0 and 2x). Stops many clients from retrying in sync.
|
|
100
|
+
*/
|
|
101
|
+
jitter?: number | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* Return `false` to give up early, for example on a 4xx error.
|
|
104
|
+
*/
|
|
105
|
+
shouldRetry?: ((error: unknown, attempt: number) => boolean | Promise<boolean>) | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Called before each wait, for logs or metrics.
|
|
108
|
+
*/
|
|
109
|
+
onRetry?: ((error: unknown, attempt: number, delay: number) => void) | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Stops retrying. The attempt in progress isn't interrupted.
|
|
112
|
+
*/
|
|
113
|
+
signal?: AbortSignal | undefined;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Waits for a pause of `wait` ms between calls, then runs once with the
|
|
117
|
+
* latest arguments. For search boxes, resizing, auto-saving...
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* const search = func.debounce((query) => api.search(query), 300);
|
|
121
|
+
* input.on("input", (e) => search(e.target.value));
|
|
122
|
+
*
|
|
123
|
+
* const save = func.debounce(persist, 1000, { maxWait: 5000 }); // saves at least every 5s
|
|
124
|
+
*
|
|
125
|
+
* @template {(...args: any[]) => any} F
|
|
126
|
+
* @param {F} fn
|
|
127
|
+
* @param {number} wait Pause needed, in ms.
|
|
128
|
+
* @param {DebounceOptions} [options]
|
|
129
|
+
* @returns {DebouncedFunction<F>}
|
|
130
|
+
*/
|
|
131
|
+
export function debounce<F extends (...args: any[]) => any>(fn: F, wait: number, options?: DebounceOptions): DebouncedFunction<F>;
|
|
132
|
+
/**
|
|
133
|
+
* Runs at most once every `wait` ms, however often it's called. For scroll
|
|
134
|
+
* handlers, progress reports, rate-limited APIs...
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* const report = func.throttle((pct) => console.log(`${pct}%`), 1000);
|
|
138
|
+
*
|
|
139
|
+
* @template {(...args: any[]) => any} F
|
|
140
|
+
* @param {F} fn
|
|
141
|
+
* @param {number} wait Minimum gap between calls, in ms.
|
|
142
|
+
* @param {ThrottleOptions} [options]
|
|
143
|
+
* @returns {ThrottledFunction<F>}
|
|
144
|
+
*/
|
|
145
|
+
export function throttle<F extends (...args: any[]) => any>(fn: F, wait: number, options?: ThrottleOptions): ThrottledFunction<F>;
|
|
146
|
+
/**
|
|
147
|
+
* Runs `fn` the first time only; later calls return the same result.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* const connect = func.once(() => createPool(config));
|
|
151
|
+
*
|
|
152
|
+
* @template {(...args: any[]) => any} F
|
|
153
|
+
* @param {F} fn
|
|
154
|
+
* @returns {F}
|
|
155
|
+
*/
|
|
156
|
+
export function once<F extends (...args: any[]) => any>(fn: F): F;
|
|
157
|
+
/**
|
|
158
|
+
* Caches results by arguments. Supports expiry (`ttl`), a size limit
|
|
159
|
+
* (`max`) and async functions: a failed promise isn't cached, so the next
|
|
160
|
+
* call tries again.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* const getUser = func.memoize((id) => db.users.find(id), { ttl: 60_000, max: 1000 });
|
|
164
|
+
* getUser.delete(42); // forget one entry
|
|
165
|
+
* getUser.clear(); // forget everything
|
|
166
|
+
*
|
|
167
|
+
* @template {(...args: any[]) => any} F
|
|
168
|
+
* @param {F} fn
|
|
169
|
+
* @param {MemoizeOptions | ((...args: Parameters<F>) => unknown)} [options] Options, or a function that builds the cache key.
|
|
170
|
+
* @returns {MemoizedFunction<F>}
|
|
171
|
+
*/
|
|
172
|
+
export function memoize<F extends (...args: any[]) => any>(fn: F, options?: MemoizeOptions | ((...args: Parameters<F>) => unknown)): MemoizedFunction<F>;
|
|
173
|
+
/**
|
|
174
|
+
* Calls `fn` until it succeeds, waiting between attempts. If every attempt
|
|
175
|
+
* fails, the last error is thrown.
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* const data = await func.retry(() => fetchJSON(url), {
|
|
179
|
+
* attempts: 5,
|
|
180
|
+
* delay: 200,
|
|
181
|
+
* backoff: 2, // 200, 400, 800, 1600 ms
|
|
182
|
+
* shouldRetry: (error) => !(error instanceof nc.errors.HttpError && error.status < 500),
|
|
183
|
+
* });
|
|
184
|
+
*
|
|
185
|
+
* @template T
|
|
186
|
+
* @param {(attempt: number) => T | PromiseLike<T>} fn Receives the attempt number, starting at 1.
|
|
187
|
+
* @param {RetryOptions} [options]
|
|
188
|
+
* @returns {Promise<Awaited<T>>}
|
|
189
|
+
* @throws The last error, or an `AbortError` if the signal fires.
|
|
190
|
+
*/
|
|
191
|
+
export function retry<T>(fn: (attempt: number) => T | PromiseLike<T>, options?: RetryOptions): Promise<Awaited<T>>;
|
|
192
|
+
/**
|
|
193
|
+
* Rejects with a `TimeoutError` if the promise takes longer than `ms`.
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* const res = await func.timeout(fetch(url), 5000);
|
|
197
|
+
* const rows = await func.timeout(() => slowQuery(), 2000, "Database too slow");
|
|
198
|
+
*
|
|
199
|
+
* @template T
|
|
200
|
+
* @param {PromiseLike<T> | (() => PromiseLike<T> | T)} promise A promise, or a function that returns one.
|
|
201
|
+
* @param {number} ms
|
|
202
|
+
* @param {string} [message]
|
|
203
|
+
* @returns {Promise<Awaited<T>>}
|
|
204
|
+
* @throws {TimeoutError}
|
|
205
|
+
*/
|
|
206
|
+
export function timeout<T>(promise: PromiseLike<T> | (() => PromiseLike<T> | T), ms: number, message?: string): Promise<Awaited<T>>;
|
|
207
|
+
/**
|
|
208
|
+
* Waits `ms`, then calls `fn` with the arguments and resolves with its result.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* await func.delay(() => console.log("1s later"), 1000);
|
|
212
|
+
*
|
|
213
|
+
* @template {(...args: any[]) => any} F
|
|
214
|
+
* @param {F} fn
|
|
215
|
+
* @param {number} ms
|
|
216
|
+
* @param {Parameters<F>} args
|
|
217
|
+
* @returns {Promise<Awaited<ReturnType<F>>>}
|
|
218
|
+
*/
|
|
219
|
+
export function delay<F extends (...args: any[]) => any>(fn: F, ms: number, ...args: Parameters<F>): Promise<Awaited<ReturnType<F>>>;
|
|
220
|
+
/**
|
|
221
|
+
* Awaits a promise and gives you `[error, value]` instead of throwing, so
|
|
222
|
+
* you don't need a try/catch.
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* const [error, user] = await func.to(db.users.find(id));
|
|
226
|
+
* if (error) return res.status(500).send(error.message);
|
|
227
|
+
*
|
|
228
|
+
* @template T
|
|
229
|
+
* @template [E=Error]
|
|
230
|
+
* @param {PromiseLike<T> | (() => PromiseLike<T> | T)} promise A promise, or a function (sync errors are caught too).
|
|
231
|
+
* @returns {Promise<[E, undefined] | [null, Awaited<T>]>}
|
|
232
|
+
*/
|
|
233
|
+
export function to<T, E = Error>(promise: PromiseLike<T> | (() => PromiseLike<T> | T)): Promise<[E, undefined] | [null, Awaited<T>]>;
|
|
234
|
+
/**
|
|
235
|
+
* Wraps a function so it resolves to `[error, value]` instead of throwing.
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* const safeParse = func.attempt(JSON.parse);
|
|
239
|
+
* const [error, data] = await safeParse(input);
|
|
240
|
+
*
|
|
241
|
+
* @template {(...args: any[]) => any} F
|
|
242
|
+
* @param {F} fn
|
|
243
|
+
* @returns {(...args: Parameters<F>) => Promise<[unknown, undefined] | [null, Awaited<ReturnType<F>>]>}
|
|
244
|
+
*/
|
|
245
|
+
export function attempt<F extends (...args: any[]) => any>(fn: F): (...args: Parameters<F>) => Promise<[unknown, undefined] | [null, Awaited<ReturnType<F>>]>;
|
|
246
|
+
/**
|
|
247
|
+
* Turns a callback-style function into one that returns a promise.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* const lookup = func.promisify(dns.lookup);
|
|
251
|
+
* const address = await lookup("nodejs.org");
|
|
252
|
+
*
|
|
253
|
+
* @param {(...args: any[]) => void} fn
|
|
254
|
+
* @returns {(...args: any[]) => Promise<any>}
|
|
255
|
+
*/
|
|
256
|
+
export function promisify(fn: (...args: any[]) => void): (...args: any[]) => Promise<any>;
|
|
257
|
+
/**
|
|
258
|
+
* Chains functions from left to right: `pipe(f, g)(x)` is `g(f(x))`.
|
|
259
|
+
* Types flow through up to 6 functions.
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* const toSlug = func.pipe(nc.str.deburr, nc.str.kebabCase);
|
|
263
|
+
* toSlug("Crème Brûlée"); // "creme-brulee"
|
|
264
|
+
*
|
|
265
|
+
* @template {any[]} A
|
|
266
|
+
* @template B
|
|
267
|
+
* @overload
|
|
268
|
+
* @param {(...args: A) => B} f1
|
|
269
|
+
* @returns {(...args: A) => B}
|
|
270
|
+
*/
|
|
271
|
+
export function pipe<A extends any[], B>(f1: (...args: A) => B): (...args: A) => B;
|
|
272
|
+
/**
|
|
273
|
+
* Chains functions from left to right.
|
|
274
|
+
*
|
|
275
|
+
* @template {any[]} A
|
|
276
|
+
* @template B
|
|
277
|
+
* @template C
|
|
278
|
+
* @overload
|
|
279
|
+
* @param {(...args: A) => B} f1
|
|
280
|
+
* @param {(b: B) => C} f2
|
|
281
|
+
* @returns {(...args: A) => C}
|
|
282
|
+
*/
|
|
283
|
+
export function pipe<A extends any[], B, C>(f1: (...args: A) => B, f2: (b: B) => C): (...args: A) => C;
|
|
284
|
+
/**
|
|
285
|
+
* Chains functions from left to right.
|
|
286
|
+
*
|
|
287
|
+
* @template {any[]} A
|
|
288
|
+
* @template B
|
|
289
|
+
* @template C
|
|
290
|
+
* @template D
|
|
291
|
+
* @overload
|
|
292
|
+
* @param {(...args: A) => B} f1
|
|
293
|
+
* @param {(b: B) => C} f2
|
|
294
|
+
* @param {(c: C) => D} f3
|
|
295
|
+
* @returns {(...args: A) => D}
|
|
296
|
+
*/
|
|
297
|
+
export function pipe<A extends any[], B, C, D>(f1: (...args: A) => B, f2: (b: B) => C, f3: (c: C) => D): (...args: A) => D;
|
|
298
|
+
/**
|
|
299
|
+
* Chains functions from left to right.
|
|
300
|
+
*
|
|
301
|
+
* @template {any[]} A
|
|
302
|
+
* @template B
|
|
303
|
+
* @template C
|
|
304
|
+
* @template D
|
|
305
|
+
* @template E
|
|
306
|
+
* @overload
|
|
307
|
+
* @param {(...args: A) => B} f1
|
|
308
|
+
* @param {(b: B) => C} f2
|
|
309
|
+
* @param {(c: C) => D} f3
|
|
310
|
+
* @param {(d: D) => E} f4
|
|
311
|
+
* @returns {(...args: A) => E}
|
|
312
|
+
*/
|
|
313
|
+
export function pipe<A extends any[], B, C, D, E>(f1: (...args: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E): (...args: A) => E;
|
|
314
|
+
/**
|
|
315
|
+
* Chains functions from left to right.
|
|
316
|
+
*
|
|
317
|
+
* @template {any[]} A
|
|
318
|
+
* @template B
|
|
319
|
+
* @template C
|
|
320
|
+
* @template D
|
|
321
|
+
* @template E
|
|
322
|
+
* @template F
|
|
323
|
+
* @overload
|
|
324
|
+
* @param {(...args: A) => B} f1
|
|
325
|
+
* @param {(b: B) => C} f2
|
|
326
|
+
* @param {(c: C) => D} f3
|
|
327
|
+
* @param {(d: D) => E} f4
|
|
328
|
+
* @param {(e: E) => F} f5
|
|
329
|
+
* @returns {(...args: A) => F}
|
|
330
|
+
*/
|
|
331
|
+
export function pipe<A extends any[], B, C, D, E, F>(f1: (...args: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F): (...args: A) => F;
|
|
332
|
+
/**
|
|
333
|
+
* Chains functions from left to right.
|
|
334
|
+
*
|
|
335
|
+
* @template {any[]} A
|
|
336
|
+
* @template B
|
|
337
|
+
* @template C
|
|
338
|
+
* @template D
|
|
339
|
+
* @template E
|
|
340
|
+
* @template F
|
|
341
|
+
* @template G
|
|
342
|
+
* @overload
|
|
343
|
+
* @param {(...args: A) => B} f1
|
|
344
|
+
* @param {(b: B) => C} f2
|
|
345
|
+
* @param {(c: C) => D} f3
|
|
346
|
+
* @param {(d: D) => E} f4
|
|
347
|
+
* @param {(e: E) => F} f5
|
|
348
|
+
* @param {(f: F) => G} f6
|
|
349
|
+
* @returns {(...args: A) => G}
|
|
350
|
+
*/
|
|
351
|
+
export function pipe<A extends any[], B, C, D, E, F, G>(f1: (...args: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G): (...args: A) => G;
|
|
352
|
+
/**
|
|
353
|
+
* Chains any number of functions from left to right.
|
|
354
|
+
*
|
|
355
|
+
* @overload
|
|
356
|
+
* @param {...((arg: any) => any)} fns
|
|
357
|
+
* @returns {(...args: any[]) => any}
|
|
358
|
+
*/
|
|
359
|
+
export function pipe(...fns: ((arg: any) => any)[]): (...args: any[]) => any;
|
|
360
|
+
/**
|
|
361
|
+
* Chains functions from right to left: `compose(f, g)(x)` is `f(g(x))`.
|
|
362
|
+
* `pipe()` reads in execution order and is better typed.
|
|
363
|
+
*
|
|
364
|
+
* @example
|
|
365
|
+
* const shout = func.compose((s) => s + "!", (s) => s.toUpperCase());
|
|
366
|
+
* shout("hi"); // "HI!"
|
|
367
|
+
*
|
|
368
|
+
* @param {...((...args: any[]) => any)} fns
|
|
369
|
+
* @returns {(...args: any[]) => any}
|
|
370
|
+
*/
|
|
371
|
+
export function compose(...fns: ((...args: any[]) => any)[]): (...args: any[]) => any;
|
|
372
|
+
/**
|
|
373
|
+
* Lets you pass a function's arguments a few at a time.
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
* const add = func.curry((a, b, c) => a + b + c);
|
|
377
|
+
* add(1)(2)(3); // 6
|
|
378
|
+
* add(1, 2)(3); // 6
|
|
379
|
+
*
|
|
380
|
+
* @param {(...args: any[]) => any} fn
|
|
381
|
+
* @param {number} [arity=fn.length] How many arguments to collect before calling.
|
|
382
|
+
* @returns {(...args: any[]) => any}
|
|
383
|
+
*/
|
|
384
|
+
export function curry(fn: (...args: any[]) => any, arity?: number): (...args: any[]) => any;
|
|
385
|
+
/**
|
|
386
|
+
* Fixes the first arguments of a function.
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* const hello = func.partial((greeting, name) => `${greeting}, ${name}!`, "Hello");
|
|
390
|
+
* hello("Ada"); // "Hello, Ada!"
|
|
391
|
+
*
|
|
392
|
+
* @template {any[]} P
|
|
393
|
+
* @template {any[]} R
|
|
394
|
+
* @template T
|
|
395
|
+
* @param {(...args: [...P, ...R]) => T} fn
|
|
396
|
+
* @param {P} preset
|
|
397
|
+
* @returns {(...args: R) => T}
|
|
398
|
+
*/
|
|
399
|
+
export function partial<P extends any[], R extends any[], T>(fn: (...args: [...P, ...R]) => T, ...preset: P): (...args: R) => T;
|
|
400
|
+
/**
|
|
401
|
+
* The opposite of a predicate.
|
|
402
|
+
*
|
|
403
|
+
* @example
|
|
404
|
+
* files.filter(func.negate((name) => name.startsWith(".")));
|
|
405
|
+
*
|
|
406
|
+
* @template {any[]} A
|
|
407
|
+
* @param {(...args: A) => unknown} predicate
|
|
408
|
+
* @returns {(...args: A) => boolean}
|
|
409
|
+
*/
|
|
410
|
+
export function negate<A extends any[]>(predicate: (...args: A) => unknown): (...args: A) => boolean;
|
|
411
|
+
/**
|
|
412
|
+
* Does nothing for the first `n - 1` calls, then calls `fn` every time.
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* const done = func.after(3, () => console.log("All 3 uploads finished"));
|
|
416
|
+
* uploads.forEach((upload) => upload.on("end", done));
|
|
417
|
+
*
|
|
418
|
+
* @template {(...args: any[]) => any} F
|
|
419
|
+
* @param {number} n
|
|
420
|
+
* @param {F} fn
|
|
421
|
+
* @returns {(...args: Parameters<F>) => ReturnType<F> | undefined}
|
|
422
|
+
*/
|
|
423
|
+
export function after<F extends (...args: any[]) => any>(n: number, fn: F): (...args: Parameters<F>) => ReturnType<F> | undefined;
|
|
424
|
+
/**
|
|
425
|
+
* Calls `fn` for the first `n - 1` calls, then keeps returning the last
|
|
426
|
+
* result.
|
|
427
|
+
*
|
|
428
|
+
* @example
|
|
429
|
+
* const tryLogin = func.before(4, login); // 3 real attempts at most
|
|
430
|
+
*
|
|
431
|
+
* @template {(...args: any[]) => any} F
|
|
432
|
+
* @param {number} n
|
|
433
|
+
* @param {F} fn
|
|
434
|
+
* @returns {(...args: Parameters<F>) => ReturnType<F> | undefined}
|
|
435
|
+
*/
|
|
436
|
+
export function before<F extends (...args: any[]) => any>(n: number, fn: F): (...args: Parameters<F>) => ReturnType<F> | undefined;
|
|
437
|
+
/**
|
|
438
|
+
* Does nothing. Useful as a default callback.
|
|
439
|
+
*
|
|
440
|
+
* @param {...unknown} _args
|
|
441
|
+
* @returns {void}
|
|
442
|
+
*/
|
|
443
|
+
export function noop(..._args: unknown[]): void;
|
|
444
|
+
/**
|
|
445
|
+
* Returns its argument.
|
|
446
|
+
*
|
|
447
|
+
* @example
|
|
448
|
+
* [0, 1, 2].filter(func.identity); // [1, 2]
|
|
449
|
+
*
|
|
450
|
+
* @template T
|
|
451
|
+
* @param {T} value
|
|
452
|
+
* @returns {T}
|
|
453
|
+
*/
|
|
454
|
+
export function identity<T>(value: T): T;
|
|
455
|
+
//# sourceMappingURL=Func.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Func.d.ts","sourceRoot":"","sources":["../../src/Func.js"],"names":[],"mappings":"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"}
|