@ix-xs/node-comfort 1.2.0 → 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.
Files changed (75) hide show
  1. package/CHANGELOG.md +190 -0
  2. package/README.md +136 -549
  3. package/index.js +80 -35
  4. package/package.json +160 -33
  5. package/src/Arr.js +887 -419
  6. package/src/Async.js +585 -0
  7. package/src/Cache.js +329 -0
  8. package/src/Checker.js +971 -539
  9. package/src/Cli.js +1034 -0
  10. package/src/Color.js +415 -0
  11. package/src/Crypto.js +707 -0
  12. package/src/Emitter.js +289 -0
  13. package/src/Env.js +555 -0
  14. package/src/FS.js +1483 -894
  15. package/src/Func.js +670 -353
  16. package/src/Http.js +538 -0
  17. package/src/Id.js +384 -201
  18. package/src/Logger.js +739 -378
  19. package/src/Num.js +844 -361
  20. package/src/Obj.js +855 -372
  21. package/src/SQLite.js +1308 -1005
  22. package/src/Schema.js +1586 -0
  23. package/src/Str.js +983 -436
  24. package/src/Sys.js +511 -0
  25. package/src/Time.js +1260 -422
  26. package/src/Utils.js +321 -325
  27. package/src/errors.js +292 -0
  28. package/types/index.d.ts +693 -526
  29. package/types/src/Arr.d.ts +455 -145
  30. package/types/src/Arr.d.ts.map +1 -1
  31. package/types/src/Async.d.ts +321 -0
  32. package/types/src/Async.d.ts.map +1 -0
  33. package/types/src/Cache.d.ts +195 -0
  34. package/types/src/Cache.d.ts.map +1 -0
  35. package/types/src/Checker.d.ts +501 -235
  36. package/types/src/Checker.d.ts.map +1 -1
  37. package/types/src/Cli.d.ts +582 -0
  38. package/types/src/Cli.d.ts.map +1 -0
  39. package/types/src/Color.d.ts +294 -0
  40. package/types/src/Color.d.ts.map +1 -0
  41. package/types/src/Crypto.d.ts +534 -0
  42. package/types/src/Crypto.d.ts.map +1 -0
  43. package/types/src/Emitter.d.ts +170 -0
  44. package/types/src/Emitter.d.ts.map +1 -0
  45. package/types/src/Env.d.ts +382 -0
  46. package/types/src/Env.d.ts.map +1 -0
  47. package/types/src/FS.d.ts +686 -238
  48. package/types/src/FS.d.ts.map +1 -1
  49. package/types/src/Func.d.ts +380 -135
  50. package/types/src/Func.d.ts.map +1 -1
  51. package/types/src/Http.d.ts +374 -0
  52. package/types/src/Http.d.ts.map +1 -0
  53. package/types/src/Id.d.ts +149 -68
  54. package/types/src/Id.d.ts.map +1 -1
  55. package/types/src/Logger.d.ts +363 -46
  56. package/types/src/Logger.d.ts.map +1 -1
  57. package/types/src/Num.d.ts +473 -137
  58. package/types/src/Num.d.ts.map +1 -1
  59. package/types/src/Obj.d.ts +390 -104
  60. package/types/src/Obj.d.ts.map +1 -1
  61. package/types/src/SQLite.d.ts +646 -309
  62. package/types/src/SQLite.d.ts.map +1 -1
  63. package/types/src/Schema.d.ts +940 -0
  64. package/types/src/Schema.d.ts.map +1 -0
  65. package/types/src/Str.d.ts +569 -166
  66. package/types/src/Str.d.ts.map +1 -1
  67. package/types/src/Sys.d.ts +269 -0
  68. package/types/src/Sys.d.ts.map +1 -0
  69. package/types/src/Time.d.ts +663 -204
  70. package/types/src/Time.d.ts.map +1 -1
  71. package/types/src/Utils.d.ts +154 -102
  72. package/types/src/Utils.d.ts.map +1 -1
  73. package/types/src/errors.d.ts +292 -0
  74. package/types/src/errors.d.ts.map +1 -0
  75. package/types/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FS.d.ts","sourceRoot":"","sources":["../../src/FS.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FS.d.ts","sourceRoot":"","sources":["../../src/FS.js"],"names":[],"mappings":"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"}
@@ -1,210 +1,455 @@
1
1
  /**
2
- * Creates a debounced version of a function that delays invocation until
3
- * `wait` ms have elapsed since the last call.
4
- *
5
- * The returned function exposes `.cancel()` and `.flush()`.
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...
6
118
  *
7
119
  * @example
8
- * const onResize = nodeComfort.func.debounce(() => render(), 200);
9
- * window.on("resize", onResize);
10
- * onResize.cancel(); // drop any pending call
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
11
124
  *
12
125
  * @template {(...args: any[]) => any} F
13
- * @param {F} fn - Function to debounce.
14
- * @param {number} wait - Delay in milliseconds.
15
- * @param {{ leading?: boolean }} [options] - Set `leading` to fire on the first call.
16
- * @returns {F & { cancel: () => void, flush: () => void }} The debounced function.
17
- */
18
- export function debounce<F extends (...args: any[]) => any>(fn: F, wait: number, options?: {
19
- leading?: boolean;
20
- }): F & {
21
- cancel: () => void;
22
- flush: () => void;
23
- };
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>;
24
132
  /**
25
- * Creates a throttled version of a function that runs at most once per
26
- * `wait` ms.
133
+ * Runs at most once every `wait` ms, however often it's called. For scroll
134
+ * handlers, progress reports, rate-limited APIs...
27
135
  *
28
136
  * @example
29
- * const onScroll = nodeComfort.func.throttle(() => update(), 100);
137
+ * const report = func.throttle((pct) => console.log(`${pct}%`), 1000);
30
138
  *
31
139
  * @template {(...args: any[]) => any} F
32
- * @param {F} fn - Function to throttle.
33
- * @param {number} wait - Minimum interval in milliseconds.
34
- * @param {{ trailing?: boolean }} [options] - Set `trailing` (default true) to run a final call.
35
- * @returns {F & { cancel: () => void }} The throttled function.
36
- */
37
- export function throttle<F extends (...args: any[]) => any>(fn: F, wait: number, options?: {
38
- trailing?: boolean;
39
- }): F & {
40
- cancel: () => void;
41
- };
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>;
42
146
  /**
43
- * Wraps a function so it can only ever run once; subsequent calls return
44
- * the first result.
147
+ * Runs `fn` the first time only; later calls return the same result.
45
148
  *
46
149
  * @example
47
- * const init = nodeComfort.func.once(() => expensiveSetup());
150
+ * const connect = func.once(() => createPool(config));
48
151
  *
49
152
  * @template {(...args: any[]) => any} F
50
- * @param {F} fn - Function to wrap.
51
- * @returns {F} The single-call function.
153
+ * @param {F} fn
154
+ * @returns {F}
52
155
  */
53
156
  export function once<F extends (...args: any[]) => any>(fn: F): F;
54
157
  /**
55
- * Memoizes a function, caching results by argument key.
56
- *
57
- * By default the cache key is a JSON serialization of the arguments; pass a
58
- * `resolver` for custom keys.
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.
59
161
  *
60
162
  * @example
61
- * const fib = nodeComfort.func.memoize((n) => (n < 2 ? n : fib(n - 1) + fib(n - 2)));
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
62
166
  *
63
167
  * @template {(...args: any[]) => any} F
64
- * @param {F} fn - Function to memoize.
65
- * @param {(...args: any[]) => any} [resolver] - Cache-key resolver.
66
- * @returns {F & { cache: Map<any, any> }} The memoized function.
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>}
67
171
  */
68
- export function memoize<F extends (...args: any[]) => any>(fn: F, resolver?: (...args: any[]) => any): F & {
69
- cache: Map<any, any>;
70
- };
172
+ export function memoize<F extends (...args: any[]) => any>(fn: F, options?: MemoizeOptions | ((...args: Parameters<F>) => unknown)): MemoizedFunction<F>;
71
173
  /**
72
- * Retries an async function until it succeeds or the attempt budget runs out.
73
- *
74
- * Supports fixed or exponential backoff and a `shouldRetry` guard.
174
+ * Calls `fn` until it succeeds, waiting between attempts. If every attempt
175
+ * fails, the last error is thrown.
75
176
  *
76
177
  * @example
77
- * const data = await nodeComfort.func.retry(() => fetch(url), {
178
+ * const data = await func.retry(() => fetchJSON(url), {
78
179
  * attempts: 5,
79
180
  * delay: 200,
80
- * backoff: 2, // 200, 400, 800, ...
181
+ * backoff: 2, // 200, 400, 800, 1600 ms
182
+ * shouldRetry: (error) => !(error instanceof nc.errors.HttpError && error.status < 500),
81
183
  * });
82
184
  *
83
185
  * @template T
84
- * @param {() => T|Promise<T>} fn - Function to run.
85
- * @param {{
86
- * attempts?: number,
87
- * delay?: number,
88
- * backoff?: number,
89
- * maxDelay?: number,
90
- * shouldRetry?: (error: unknown, attempt: number) => boolean,
91
- * onRetry?: (error: unknown, attempt: number) => void
92
- * }} [options] - Retry options.
93
- * @returns {Promise<T>} The resolved value.
94
- * @throws Re-throws the last error if all attempts fail.
95
- */
96
- export function retry<T>(fn: () => T | Promise<T>, options?: {
97
- attempts?: number;
98
- delay?: number;
99
- backoff?: number;
100
- maxDelay?: number;
101
- shouldRetry?: (error: unknown, attempt: number) => boolean;
102
- onRetry?: (error: unknown, attempt: number) => void;
103
- }): Promise<T>;
104
- /**
105
- * Runs a promise (or async function) with a timeout, rejecting if it takes
106
- * too long.
107
- *
108
- * @example
109
- * await nodeComfort.func.timeout(fetch(url), 5000, "fetch too slow");
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);
110
227
  *
111
228
  * @template T
112
- * @param {Promise<T>|(() => Promise<T>)} promise - Promise or async function.
113
- * @param {number} ms - Timeout in milliseconds.
114
- * @param {string} [message="Operation timed out"] - Error message on timeout.
115
- * @returns {Promise<T>} The resolved value.
116
- * @throws {Error} If the timeout elapses first.
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>]>}
117
232
  */
118
- export function timeout<T>(promise: Promise<T> | (() => Promise<T>), ms: number, message?: string): Promise<T>;
233
+ export function to<T, E = Error>(promise: PromiseLike<T> | (() => PromiseLike<T> | T)): Promise<[E, undefined] | [null, Awaited<T>]>;
119
234
  /**
120
- * Composes functions left-to-right: `pipe(f, g)(x)` is `g(f(x))`.
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");
121
252
  *
122
- * The first function may take multiple arguments; the rest take one.
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.
123
260
  *
124
261
  * @example
125
- * const process = nodeComfort.func.pipe(
126
- * (s) => s.trim(),
127
- * (s) => s.toUpperCase(),
128
- * );
129
- * process(" hi "); // "HI"
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.
130
274
  *
131
- * @param {...((arg: any) => any)} fns - Functions to compose.
132
- * @returns {(...args: any[]) => any} The composed function.
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}
133
358
  */
134
359
  export function pipe(...fns: ((arg: any) => any)[]): (...args: any[]) => any;
135
360
  /**
136
- * Composes functions right-to-left: `compose(f, g)(x)` is `f(g(x))`.
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.
137
363
  *
138
364
  * @example
139
- * const process = nodeComfort.func.compose(
140
- * (s) => s.toUpperCase(),
141
- * (s) => s.trim(),
142
- * );
143
- * process(" hi "); // "HI"
365
+ * const shout = func.compose((s) => s + "!", (s) => s.toUpperCase());
366
+ * shout("hi"); // "HI!"
144
367
  *
145
- * @param {...((arg: any) => any)} fns - Functions to compose.
146
- * @returns {(...args: any[]) => any} The composed function.
368
+ * @param {...((...args: any[]) => any)} fns
369
+ * @returns {(...args: any[]) => any}
147
370
  */
148
- export function compose(...fns: ((arg: any) => any)[]): (...args: any[]) => any;
371
+ export function compose(...fns: ((...args: any[]) => any)[]): (...args: any[]) => any;
149
372
  /**
150
- * Curries a function so it can be called with arguments one (or a few) at a time.
373
+ * Lets you pass a function's arguments a few at a time.
151
374
  *
152
375
  * @example
153
- * const add = nodeComfort.func.curry((a, b, c) => a + b + c);
154
- * add(1)(2)(3); // 6
155
- * add(1, 2)(3); // 6
376
+ * const add = func.curry((a, b, c) => a + b + c);
377
+ * add(1)(2)(3); // 6
378
+ * add(1, 2)(3); // 6
156
379
  *
157
- * @param {(...args: any[]) => any} fn - Function to curry.
158
- * @param {number} [arity=fn.length] - Number of arguments to wait for.
159
- * @returns {(...args: any[]) => any} The curried function.
380
+ * @param {(...args: any[]) => any} fn
381
+ * @param {number} [arity=fn.length] How many arguments to collect before calling.
382
+ * @returns {(...args: any[]) => any}
160
383
  */
161
384
  export function curry(fn: (...args: any[]) => any, arity?: number): (...args: any[]) => any;
162
385
  /**
163
- * Returns a function that negates the result of `predicate`.
386
+ * Fixes the first arguments of a function.
164
387
  *
165
388
  * @example
166
- * const isOdd = nodeComfort.func.negate((n) => n % 2 === 0);
389
+ * const hello = func.partial((greeting, name) => `${greeting}, ${name}!`, "Hello");
390
+ * hello("Ada"); // "Hello, Ada!"
167
391
  *
168
- * @param {(...args: any[]) => boolean} predicate - Predicate to negate.
169
- * @returns {(...args: any[]) => boolean} The negated predicate.
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}
170
398
  */
171
- export function negate(predicate: (...args: any[]) => boolean): (...args: any[]) => boolean;
399
+ export function partial<P extends any[], R extends any[], T>(fn: (...args: [...P, ...R]) => T, ...preset: P): (...args: R) => T;
172
400
  /**
173
- * Wraps a function so that it is only actually invoked from the `n`-th call on.
401
+ * The opposite of a predicate.
174
402
  *
175
403
  * @example
176
- * const save = nodeComfort.func.after(2, () => persist());
177
- * save(); save(); // persists on the 2nd call
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));
178
417
  *
179
418
  * @template {(...args: any[]) => any} F
180
- * @param {number} n - Number of calls before `fn` fires.
181
- * @param {F} fn - Function to wrap.
182
- * @returns {F} The wrapped function.
419
+ * @param {number} n
420
+ * @param {F} fn
421
+ * @returns {(...args: Parameters<F>) => ReturnType<F> | undefined}
183
422
  */
184
- export function after<F extends (...args: any[]) => any>(n: number, fn: F): F;
423
+ export function after<F extends (...args: any[]) => any>(n: number, fn: F): (...args: Parameters<F>) => ReturnType<F> | undefined;
185
424
  /**
186
- * Turns a Node-style callback function (`(err, result) => ...`) into one that
187
- * returns a Promise.
425
+ * Calls `fn` for the first `n - 1` calls, then keeps returning the last
426
+ * result.
188
427
  *
189
428
  * @example
190
- * const readFile = nodeComfort.func.promisify(fs.readFile);
191
- * const data = await readFile("a.txt", "utf8");
429
+ * const tryLogin = func.before(4, login); // 3 real attempts at most
192
430
  *
193
- * @param {(...args: any[]) => void} fn - Callback-style function.
194
- * @returns {(...args: any[]) => Promise<any>} A promise-returning function.
431
+ * @template {(...args: any[]) => any} F
432
+ * @param {number} n
433
+ * @param {F} fn
434
+ * @returns {(...args: Parameters<F>) => ReturnType<F> | undefined}
195
435
  */
196
- export function promisify(fn: (...args: any[]) => void): (...args: any[]) => Promise<any>;
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;
197
444
  /**
198
- * Wraps an async function so it resolves to a `[error, result]` tuple instead
199
- * of throwing • Go-style error handling.
445
+ * Returns its argument.
200
446
  *
201
447
  * @example
202
- * const [err, user] = await nodeComfort.func.attempt(() => getUser(id))();
203
- * if (err) return handle(err);
448
+ * [0, 1, 2].filter(func.identity); // [1, 2]
204
449
  *
205
450
  * @template T
206
- * @param {(...args: any[]) => Promise<T>|T} fn - Function to wrap.
207
- * @returns {(...args: any[]) => Promise<[unknown, T|undefined]>} The safe function.
451
+ * @param {T} value
452
+ * @returns {T}
208
453
  */
209
- export function attempt<T>(fn: (...args: any[]) => Promise<T> | T): (...args: any[]) => Promise<[unknown, T | undefined]>;
454
+ export function identity<T>(value: T): T;
210
455
  //# sourceMappingURL=Func.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Func.d.ts","sourceRoot":"","sources":["../../src/Func.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Func.d.ts","sourceRoot":"","sources":["../../src/Func.js"],"names":[],"mappings":"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"}