@ix-xs/node-comfort 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.md +32 -30
  3. package/index.js +3 -3
  4. package/package.json +8 -7
  5. package/src/Arr.js +222 -58
  6. package/src/Async.js +322 -90
  7. package/src/Cache.js +148 -44
  8. package/src/Checker.js +257 -26
  9. package/src/Cli.js +404 -145
  10. package/src/Color.js +224 -83
  11. package/src/Crypto.js +481 -106
  12. package/src/Emitter.js +104 -37
  13. package/src/Env.js +176 -42
  14. package/src/FS.js +203 -60
  15. package/src/Func.js +226 -76
  16. package/src/Http.js +311 -149
  17. package/src/Id.js +281 -96
  18. package/src/Logger.js +302 -78
  19. package/src/Num.js +182 -60
  20. package/src/Obj.js +340 -125
  21. package/src/SQLite.js +426 -105
  22. package/src/Schema.js +602 -87
  23. package/src/Str.js +316 -86
  24. package/src/Sys.js +197 -54
  25. package/src/Time.js +572 -317
  26. package/src/Utils.js +62 -41
  27. package/src/errors.js +54 -11
  28. package/src/internal/shared.js +415 -0
  29. package/types/index.d.ts +59 -17
  30. package/types/src/Arr.d.ts +78 -0
  31. package/types/src/Arr.d.ts.map +1 -1
  32. package/types/src/Async.d.ts +52 -1
  33. package/types/src/Async.d.ts.map +1 -1
  34. package/types/src/Cache.d.ts +33 -7
  35. package/types/src/Cache.d.ts.map +1 -1
  36. package/types/src/Checker.d.ts +155 -2
  37. package/types/src/Checker.d.ts.map +1 -1
  38. package/types/src/Cli.d.ts +97 -15
  39. package/types/src/Cli.d.ts.map +1 -1
  40. package/types/src/Color.d.ts +7 -1
  41. package/types/src/Color.d.ts.map +1 -1
  42. package/types/src/Crypto.d.ts +99 -13
  43. package/types/src/Crypto.d.ts.map +1 -1
  44. package/types/src/Emitter.d.ts +36 -17
  45. package/types/src/Emitter.d.ts.map +1 -1
  46. package/types/src/Env.d.ts +31 -1
  47. package/types/src/Env.d.ts.map +1 -1
  48. package/types/src/FS.d.ts +36 -5
  49. package/types/src/FS.d.ts.map +1 -1
  50. package/types/src/Func.d.ts +147 -19
  51. package/types/src/Func.d.ts.map +1 -1
  52. package/types/src/Http.d.ts +113 -43
  53. package/types/src/Http.d.ts.map +1 -1
  54. package/types/src/Id.d.ts +60 -8
  55. package/types/src/Id.d.ts.map +1 -1
  56. package/types/src/Logger.d.ts +53 -2
  57. package/types/src/Logger.d.ts.map +1 -1
  58. package/types/src/Num.d.ts +48 -7
  59. package/types/src/Num.d.ts.map +1 -1
  60. package/types/src/Obj.d.ts +67 -4
  61. package/types/src/Obj.d.ts.map +1 -1
  62. package/types/src/SQLite.d.ts +123 -14
  63. package/types/src/SQLite.d.ts.map +1 -1
  64. package/types/src/Schema.d.ts +256 -7
  65. package/types/src/Schema.d.ts.map +1 -1
  66. package/types/src/Str.d.ts +49 -1
  67. package/types/src/Str.d.ts.map +1 -1
  68. package/types/src/Sys.d.ts +51 -6
  69. package/types/src/Sys.d.ts.map +1 -1
  70. package/types/src/Time.d.ts +130 -34
  71. package/types/src/Time.d.ts.map +1 -1
  72. package/types/src/Utils.d.ts +15 -11
  73. package/types/src/Utils.d.ts.map +1 -1
  74. package/types/src/errors.d.ts +27 -3
  75. package/types/src/errors.d.ts.map +1 -1
  76. package/types/src/internal/shared.d.ts +123 -0
  77. package/types/src/internal/shared.d.ts.map +1 -0
@@ -17,6 +17,7 @@ declare namespace _exports {
17
17
  export { json };
18
18
  export { oneOf };
19
19
  export { validate };
20
+ export { example };
20
21
  export { mode };
21
22
  export { isProduction };
22
23
  export { isDevelopment };
@@ -39,6 +40,10 @@ type EnvLoadOptions = {
39
40
  * Throw if a file is missing.
40
41
  */
41
42
  required?: boolean | undefined;
43
+ /**
44
+ * Also load the files that go with each one: `.env.production.local`, `.env.local`, `.env.production`, then `.env`. `true` takes the mode from `NODE_ENV`; a string names it. `.env.local` is skipped in test mode, so tests run the same for everyone.
45
+ */
46
+ cascade?: string | boolean | undefined;
42
47
  /**
43
48
  * Where to put the variables. Defaults to `process.env`.
44
49
  */
@@ -165,12 +170,14 @@ declare function parse(content: string, options?: EnvParseOptions): Record<strin
165
170
  /**
166
171
  * Loads `.env` files into `process.env`. The first file to set a variable
167
172
  * wins, and variables that are already set are kept, unless you pass
168
- * `override`.
173
+ * `override`. The `.env` loaded by itself at startup doesn't count as
174
+ * already set: `.env.local` wins over it, as you'd expect.
169
175
  *
170
176
  * @example
171
177
  * env.load(); // ./.env
172
178
  * env.load([".env.local", ".env"]); // local values win
173
179
  * env.load(".env.test", { override: true });
180
+ * env.load(".env", { cascade: true }); // .env.production.local, .env.local, .env.production, .env
174
181
  *
175
182
  * @param {string | string[]} [files=".env"] Relative to the working directory.
176
183
  * @param {EnvLoadOptions} [options]
@@ -357,6 +364,29 @@ declare function oneOf<V extends string>(name: string, values: readonly V[], opt
357
364
  declare function validate<T extends Record<string, EnvVarSpec>>(spec: T, options?: {
358
365
  env?: NodeJS.ProcessEnv;
359
366
  }): Readonly<EnvConfig<T>>;
367
+ /**
368
+ * Writes the `.env.example` that goes with a `validate()` spec: one entry
369
+ * per variable, with its description, type and default. Keep the file in
370
+ * the repository so nobody has to read the code to know what to set.
371
+ *
372
+ * @example
373
+ * const spec = {
374
+ * PORT: { type: "port", default: 3000, description: "Port to listen on" },
375
+ * DATABASE_URL: { type: "url", description: "Postgres connection string" },
376
+ * };
377
+ * fs.writeFileSync(".env.example", env.example(spec));
378
+ * // # Port to listen on
379
+ * // # port, default: 3000
380
+ * // PORT=3000
381
+ * //
382
+ * // # Postgres connection string
383
+ * // # url, required
384
+ * // DATABASE_URL=
385
+ *
386
+ * @param {Record<string, EnvVarSpec>} spec
387
+ * @returns {string}
388
+ */
389
+ declare function example(spec: Record<string, EnvVarSpec>): string;
360
390
  /**
361
391
  * `NODE_ENV`, or `"development"` when it's not set.
362
392
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Env.d.ts","sourceRoot":"","sources":["../../src/Env.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Env.d.ts","sourceRoot":"","sources":["../../src/Env.js"],"names":[],"mappings":"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"}
package/types/src/FS.d.ts CHANGED
@@ -124,9 +124,13 @@ export type WriteFileOptions = {
124
124
  */
125
125
  encoding?: BufferEncoding | undefined;
126
126
  /**
127
- * Permissions, like `0o600` for secrets.
127
+ * Permissions, like `0o600` for secrets. A file that already exists keeps the ones it has.
128
128
  */
129
129
  mode?: number | undefined;
130
+ /**
131
+ * Wait until the data is on the disk before returning. Slower, for files that must survive a power cut.
132
+ */
133
+ fsync?: boolean | undefined;
130
134
  /**
131
135
  * Indentation when writing an object as JSON. Defaults to `2`.
132
136
  */
@@ -148,6 +152,14 @@ export type WriteJSONOptions = {
148
152
  * Passed to `JSON.stringify`.
149
153
  */
150
154
  replacer?: ((key: string, value: unknown) => unknown) | undefined;
155
+ /**
156
+ * Permissions, like `0o600` for secrets. A file that already exists keeps the ones it has.
157
+ */
158
+ mode?: number | undefined;
159
+ /**
160
+ * Wait until the data is on the disk before returning.
161
+ */
162
+ fsync?: boolean | undefined;
151
163
  };
152
164
  /**
153
165
  * Options for `readJSON()`.
@@ -238,18 +250,18 @@ export type WatchOptions = {
238
250
  */
239
251
  filter?: ((event: "rename" | "change", file: string) => boolean) | undefined;
240
252
  /**
241
- * Merge events on the same file within this many ms. Editors often save in several steps.
253
+ * Merge events on the same file within this long, in ms or like `"100ms"`. Editors often save in several steps.
242
254
  */
243
- debounce?: number | undefined;
255
+ debounce?: string | number | undefined;
244
256
  };
245
257
  /**
246
258
  * Returned by `watch()`.
247
259
  */
248
260
  export type Watcher = {
249
261
  /**
250
- * Listens for changes. `"all"` also gets the event name.
262
+ * Listens for changes. `"all"` also gets the event name. `"error"` tells you the watch broke, for instance because the folder was deleted.
251
263
  */
252
- on: <E extends "change" | "rename" | "all">(event: E, callback: E extends "all" ? (event: "change" | "rename", file: string) => void : (file: string) => void) => Watcher;
264
+ on: <E extends "change" | "rename" | "all" | "error">(event: E, callback: E extends "all" ? (event: "change" | "rename", file: string) => void : E extends "error" ? (error: Error) => void : (file: string) => void) => Watcher;
253
265
  /**
254
266
  * Stops watching.
255
267
  */
@@ -355,6 +367,25 @@ export function glob(pattern: string | string[], options?: GlobOptions): string[
355
367
  * @returns {string | undefined} The absolute path.
356
368
  */
357
369
  export function find(name: string, options?: FindOptions): string | undefined;
370
+ /**
371
+ * Looks for a file or folder in a folder, then in its parent, and so on up
372
+ * to the root. It's how you find the `package.json` or the `.git` a file
373
+ * belongs to.
374
+ *
375
+ * @example
376
+ * nc.findUp("package.json"); // the closest one above the working directory
377
+ * nc.findUp(".git", { type: "folder", cwd: __dirname });
378
+ * nc.findUp(["pnpm-lock.yaml", "yarn.lock", "package-lock.json"]);
379
+ *
380
+ * @param {string | string[]} name One name, or several to try in each folder, in this order.
381
+ * @param {{ cwd?: string, type?: "file" | "folder" | "any", stopAt?: string }} [options] Where to start (the working directory by default), what to look for (`"any"` by default), and a folder not to go above.
382
+ * @returns {string | undefined} The absolute path.
383
+ */
384
+ export function findUp(name: string | string[], options?: {
385
+ cwd?: string;
386
+ type?: "file" | "folder" | "any";
387
+ stopAt?: string;
388
+ }): string | undefined;
358
389
  /**
359
390
  * Reads a file as text, or as a Buffer with `"buffer"`.
360
391
  *
@@ -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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"}
@@ -11,9 +11,9 @@ export type DebounceOptions = {
11
11
  */
12
12
  trailing?: boolean | undefined;
13
13
  /**
14
- * Never postpone a call longer than this, in ms, even if calls keep coming.
14
+ * Never postpone a call longer than this, even if calls keep coming. In ms, or like `"2s"`.
15
15
  */
16
- maxWait?: number | undefined;
16
+ maxWait?: string | number | undefined;
17
17
  };
18
18
  /**
19
19
  * A debounced function. `flush()` runs the pending call now, `cancel()`
@@ -48,13 +48,13 @@ export type ThrottledFunction<F extends (...args: any[]) => any> = ((...args: Pa
48
48
  */
49
49
  export type MemoizeOptions = {
50
50
  /**
51
- * Builds the cache key from the arguments. Defaults to the arguments as JSON.
51
+ * Builds the cache key from the arguments. By default, primitives are compared by value, plain objects and arrays by content, anything else by identity.
52
52
  */
53
53
  resolver?: ((...args: any[]) => unknown) | undefined;
54
54
  /**
55
- * How long a result stays cached, in ms.
55
+ * How long a result stays cached, in ms or like `"5m"`.
56
56
  */
57
- ttl?: number | undefined;
57
+ ttl?: string | number | undefined;
58
58
  /**
59
59
  * Maximum number of results; the least recently used goes first.
60
60
  */
@@ -84,17 +84,17 @@ export type RetryOptions = {
84
84
  */
85
85
  attempts?: number | undefined;
86
86
  /**
87
- * Wait before the next attempt, in ms, or a function that computes it.
87
+ * Wait before the next attempt, in ms or like `"1s"`, or a function that computes it.
88
88
  */
89
- delay?: number | ((attempt: number, error: unknown) => number) | undefined;
89
+ delay?: string | number | ((attempt: number, error: unknown) => number) | undefined;
90
90
  /**
91
91
  * Multiplies the delay after each failure: `2` gives 200, 400, 800... Defaults to `1`.
92
92
  */
93
93
  backoff?: number | undefined;
94
94
  /**
95
- * Cap for the computed delay, in ms.
95
+ * Cap for the computed delay.
96
96
  */
97
- maxDelay?: number | undefined;
97
+ maxDelay?: string | number | undefined;
98
98
  /**
99
99
  * Randomizes the delay, from `0` (none) to `1` (anywhere between 0 and 2x). Stops many clients from retrying in sync.
100
100
  */
@@ -112,6 +112,86 @@ export type RetryOptions = {
112
112
  */
113
113
  signal?: AbortSignal | undefined;
114
114
  };
115
+ /**
116
+ * Options for `batch()`.
117
+ */
118
+ export type BatchOptions = {
119
+ /**
120
+ * How long to collect calls before running. By default, calls made in the same tick go together.
121
+ */
122
+ wait?: string | number | undefined;
123
+ /**
124
+ * Run as soon as this many calls are waiting.
125
+ */
126
+ max?: number | undefined;
127
+ };
128
+ /**
129
+ * A batched function. `flush()` runs the waiting calls now.
130
+ */
131
+ export type BatchedFunction<I, R> = ((item: I) => Promise<R>) & {
132
+ flush(): void;
133
+ };
134
+ /**
135
+ * Options for `debounce()`.
136
+ * @typedef {object} DebounceOptions
137
+ * @property {boolean} [leading] Call right away at the start of a burst.
138
+ * @property {boolean} [trailing] Call once the burst is over. Defaults to `true`.
139
+ * @property {number | string} [maxWait] Never postpone a call longer than this, even if calls keep coming. In ms, or like `"2s"`.
140
+ */
141
+ /**
142
+ * A debounced function. `flush()` runs the pending call now, `cancel()`
143
+ * drops it, `pending()` tells you if there's one.
144
+ * @template {(...args: any[]) => any} F
145
+ * @typedef {((...args: Parameters<F>) => void) & { cancel(): void, flush(): void, pending(): boolean }} DebouncedFunction
146
+ */
147
+ /**
148
+ * Options for `throttle()`.
149
+ * @typedef {object} ThrottleOptions
150
+ * @property {boolean} [leading] Call right away on the first call. Defaults to `true`.
151
+ * @property {boolean} [trailing] Make a last call with the latest arguments at the end of the interval. Defaults to `true`.
152
+ */
153
+ /**
154
+ * A throttled function, with `cancel()`.
155
+ * @template {(...args: any[]) => any} F
156
+ * @typedef {((...args: Parameters<F>) => void) & { cancel(): void }} ThrottledFunction
157
+ */
158
+ /**
159
+ * Options for `memoize()`.
160
+ * @typedef {object} MemoizeOptions
161
+ * @property {(...args: any[]) => unknown} [resolver] Builds the cache key from the arguments. By default, primitives are compared by value, plain objects and arrays by content, anything else by identity.
162
+ * @property {number | string} [ttl] How long a result stays cached, in ms or like `"5m"`.
163
+ * @property {number} [max] Maximum number of results; the least recently used goes first.
164
+ * @property {boolean} [cacheRejections] Keep rejected promises. By default they're dropped so the next call tries again.
165
+ */
166
+ /**
167
+ * A memoized function, with its `cache`, `clear()` and `delete(...args)`.
168
+ * @template {(...args: any[]) => any} F
169
+ * @typedef {F & { cache: Map<unknown, { value: ReturnType<F>, expires: number }>, clear(): void, delete(...args: Parameters<F>): boolean }} MemoizedFunction
170
+ */
171
+ /**
172
+ * Options for `retry()`.
173
+ * @typedef {object} RetryOptions
174
+ * @property {number} [attempts] Total attempts, the first one included. Defaults to `3`.
175
+ * @property {number | string | ((attempt: number, error: unknown) => number)} [delay] Wait before the next attempt, in ms or like `"1s"`, or a function that computes it.
176
+ * @property {number} [backoff] Multiplies the delay after each failure: `2` gives 200, 400, 800... Defaults to `1`.
177
+ * @property {number | string} [maxDelay] Cap for the computed delay.
178
+ * @property {number} [jitter] Randomizes the delay, from `0` (none) to `1` (anywhere between 0 and 2x). Stops many clients from retrying in sync.
179
+ * @property {(error: unknown, attempt: number) => boolean | Promise<boolean>} [shouldRetry] Return `false` to give up early, for example on a 4xx error.
180
+ * @property {(error: unknown, attempt: number, delay: number) => void} [onRetry] Called before each wait, for logs or metrics.
181
+ * @property {AbortSignal} [signal] Stops retrying. The attempt in progress isn't interrupted.
182
+ */
183
+ /**
184
+ * Options for `batch()`.
185
+ * @typedef {object} BatchOptions
186
+ * @property {number | string} [wait] How long to collect calls before running. By default, calls made in the same tick go together.
187
+ * @property {number} [max] Run as soon as this many calls are waiting.
188
+ */
189
+ /**
190
+ * A batched function. `flush()` runs the waiting calls now.
191
+ * @template I
192
+ * @template R
193
+ * @typedef {((item: I) => Promise<R>) & { flush(): void }} BatchedFunction
194
+ */
115
195
  /**
116
196
  * Waits for a pause of `wait` ms between calls, then runs once with the
117
197
  * latest arguments. For search boxes, resizing, auto-saving...
@@ -124,11 +204,11 @@ export type RetryOptions = {
124
204
  *
125
205
  * @template {(...args: any[]) => any} F
126
206
  * @param {F} fn
127
- * @param {number} wait Pause needed, in ms.
207
+ * @param {number | string} wait Pause needed, in ms or like `"300ms"`.
128
208
  * @param {DebounceOptions} [options]
129
209
  * @returns {DebouncedFunction<F>}
130
210
  */
131
- export function debounce<F extends (...args: any[]) => any>(fn: F, wait: number, options?: DebounceOptions): DebouncedFunction<F>;
211
+ export function debounce<F extends (...args: any[]) => any>(fn: F, wait: number | string, options?: DebounceOptions): DebouncedFunction<F>;
132
212
  /**
133
213
  * Runs at most once every `wait` ms, however often it's called. For scroll
134
214
  * handlers, progress reports, rate-limited APIs...
@@ -138,11 +218,11 @@ export function debounce<F extends (...args: any[]) => any>(fn: F, wait: number,
138
218
  *
139
219
  * @template {(...args: any[]) => any} F
140
220
  * @param {F} fn
141
- * @param {number} wait Minimum gap between calls, in ms.
221
+ * @param {number | string} interval Minimum gap between calls, in ms or like `"1s"`.
142
222
  * @param {ThrottleOptions} [options]
143
223
  * @returns {ThrottledFunction<F>}
144
224
  */
145
- export function throttle<F extends (...args: any[]) => any>(fn: F, wait: number, options?: ThrottleOptions): ThrottledFunction<F>;
225
+ export function throttle<F extends (...args: any[]) => any>(fn: F, interval: number | string, options?: ThrottleOptions): ThrottledFunction<F>;
146
226
  /**
147
227
  * Runs `fn` the first time only; later calls return the same result.
148
228
  *
@@ -190,20 +270,22 @@ export function memoize<F extends (...args: any[]) => any>(fn: F, options?: Memo
190
270
  */
191
271
  export function retry<T>(fn: (attempt: number) => T | PromiseLike<T>, options?: RetryOptions): Promise<Awaited<T>>;
192
272
  /**
193
- * Rejects with a `TimeoutError` if the promise takes longer than `ms`.
273
+ * Rejects with a `TimeoutError` if the promise takes longer than `ms`. Pass
274
+ * a function to get an `AbortSignal` that fires when time is up, so the work
275
+ * actually stops instead of running on in the background.
194
276
  *
195
277
  * @example
196
278
  * const res = await func.timeout(fetch(url), 5000);
197
279
  * const rows = await func.timeout(() => slowQuery(), 2000, "Database too slow");
198
280
  *
199
281
  * @template T
200
- * @param {PromiseLike<T> | (() => PromiseLike<T> | T)} promise A promise, or a function that returns one.
201
- * @param {number} ms
282
+ * @param {PromiseLike<T> | ((signal: AbortSignal) => PromiseLike<T> | T)} promise A promise, or a function that returns one. The function gets a signal that aborts on timeout.
283
+ * @param {number | string} ms The limit, in ms or like `"5s"`. `Infinity` means no limit.
202
284
  * @param {string} [message]
203
285
  * @returns {Promise<Awaited<T>>}
204
286
  * @throws {TimeoutError}
205
287
  */
206
- export function timeout<T>(promise: PromiseLike<T> | (() => PromiseLike<T> | T), ms: number, message?: string): Promise<Awaited<T>>;
288
+ export function timeout<T>(promise: PromiseLike<T> | ((signal: AbortSignal) => PromiseLike<T> | T), ms: number | string, message?: string): Promise<Awaited<T>>;
207
289
  /**
208
290
  * Waits `ms`, then calls `fn` with the arguments and resolves with its result.
209
291
  *
@@ -212,11 +294,11 @@ export function timeout<T>(promise: PromiseLike<T> | (() => PromiseLike<T> | T),
212
294
  *
213
295
  * @template {(...args: any[]) => any} F
214
296
  * @param {F} fn
215
- * @param {number} ms
297
+ * @param {number | string} ms In ms, or like `"2s"`.
216
298
  * @param {Parameters<F>} args
217
299
  * @returns {Promise<Awaited<ReturnType<F>>>}
218
300
  */
219
- export function delay<F extends (...args: any[]) => any>(fn: F, ms: number, ...args: Parameters<F>): Promise<Awaited<ReturnType<F>>>;
301
+ export function delay<F extends (...args: any[]) => any>(fn: F, ms: number | string, ...args: Parameters<F>): Promise<Awaited<ReturnType<F>>>;
220
302
  /**
221
303
  * Awaits a promise and gives you `[error, value]` instead of throwing, so
222
304
  * you don't need a try/catch.
@@ -254,6 +336,40 @@ export function attempt<F extends (...args: any[]) => any>(fn: F): (...args: Par
254
336
  * @returns {(...args: any[]) => Promise<any>}
255
337
  */
256
338
  export function promisify(fn: (...args: any[]) => void): (...args: any[]) => Promise<any>;
339
+ /**
340
+ * Turns many single calls into few grouped ones. Calls made close together
341
+ * are collected, `fn` runs once with all their items, and each caller gets
342
+ * its own result. The classic cure for "N+1 queries".
343
+ *
344
+ * @example
345
+ * const loadUser = func.batch(async (ids) => {
346
+ * const users = await db.getAll("users", { id: ids });
347
+ * return ids.map((id) => users.find((user) => user.id === id));
348
+ * });
349
+ * // One query, however many places ask at once:
350
+ * const [ada, bob] = await Promise.all([loadUser(1), loadUser(2)]);
351
+ *
352
+ * @template I
353
+ * @template R
354
+ * @param {(items: I[]) => ReadonlyArray<R | Error> | Map<I, R | Error> | PromiseLike<ReadonlyArray<R | Error> | Map<I, R | Error>>} fn Gets every waiting item and returns one result per item, in the same order, or a `Map` keyed by item. An `Error` as a result rejects that call only.
355
+ * @param {BatchOptions} [options]
356
+ * @returns {BatchedFunction<I, R>}
357
+ */
358
+ export function batch<I, R>(fn: (items: I[]) => ReadonlyArray<R | Error> | Map<I, R | Error> | PromiseLike<ReadonlyArray<R | Error> | Map<I, R | Error>>, options?: BatchOptions): BatchedFunction<I, R>;
359
+ /**
360
+ * Makes concurrent calls with the same arguments share one run. Once it
361
+ * settles, the next call starts a new one: nothing is cached.
362
+ *
363
+ * @example
364
+ * const refreshToken = func.dedupe(async () => (await api.post("auth/refresh")).data);
365
+ * // Ten requests hit a 401 at once: one refresh, ten answers.
366
+ *
367
+ * @template {(...args: any[]) => any} F
368
+ * @param {F} fn
369
+ * @param {(...args: Parameters<F>) => unknown} [keyOf] Builds the key that identifies a call. Defaults to its arguments.
370
+ * @returns {(...args: Parameters<F>) => Promise<Awaited<ReturnType<F>>>}
371
+ */
372
+ export function dedupe<F extends (...args: any[]) => any>(fn: F, keyOf?: (...args: Parameters<F>) => unknown): (...args: Parameters<F>) => Promise<Awaited<ReturnType<F>>>;
257
373
  /**
258
374
  * Chains functions from left to right: `pipe(f, g)(x)` is `g(f(x))`.
259
375
  * Types flow through up to 6 functions.
@@ -357,6 +473,18 @@ export function pipe<A extends any[], B, C, D, E, F, G>(f1: (...args: A) => B, f
357
473
  * @returns {(...args: any[]) => any}
358
474
  */
359
475
  export function pipe(...fns: ((arg: any) => any)[]): (...args: any[]) => any;
476
+ /**
477
+ * Like `pipe()`, for functions that may be async: each one is awaited
478
+ * before the next runs.
479
+ *
480
+ * @example
481
+ * const publish = func.pipeAsync(loadDraft, renderMarkdown, uploadToCDN);
482
+ * const url = await publish(postId);
483
+ *
484
+ * @param {...((...args: any[]) => any)} fns
485
+ * @returns {(...args: any[]) => Promise<any>}
486
+ */
487
+ export function pipeAsync(...fns: ((...args: any[]) => any)[]): (...args: any[]) => Promise<any>;
360
488
  /**
361
489
  * Chains functions from right to left: `compose(f, g)(x)` is `f(g(x))`.
362
490
  * `pipe()` reads in execution order and is better typed.
@@ -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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"}