@oscarpalmer/atoms 0.192.0 → 0.193.1

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 (130) hide show
  1. package/dist/index.d.mts +25 -23
  2. package/dist/index.mjs +30 -31
  3. package/dist/queue.d.mts +25 -23
  4. package/dist/queue.mjs +27 -28
  5. package/package.json +3 -4
  6. package/src/array/difference.ts +0 -73
  7. package/src/array/exists.ts +0 -93
  8. package/src/array/filter.ts +0 -182
  9. package/src/array/find.ts +0 -183
  10. package/src/array/first.ts +0 -196
  11. package/src/array/flatten.ts +0 -20
  12. package/src/array/from.ts +0 -129
  13. package/src/array/get.ts +0 -131
  14. package/src/array/group-by.ts +0 -369
  15. package/src/array/index.ts +0 -26
  16. package/src/array/insert.ts +0 -52
  17. package/src/array/intersection.ts +0 -72
  18. package/src/array/last.ts +0 -194
  19. package/src/array/match.ts +0 -436
  20. package/src/array/move.ts +0 -315
  21. package/src/array/partition.ts +0 -91
  22. package/src/array/push.ts +0 -23
  23. package/src/array/reverse.ts +0 -33
  24. package/src/array/select.ts +0 -260
  25. package/src/array/single.ts +0 -93
  26. package/src/array/slice.ts +0 -335
  27. package/src/array/sort.ts +0 -607
  28. package/src/array/splice.ts +0 -106
  29. package/src/array/swap.ts +0 -322
  30. package/src/array/to-map.ts +0 -371
  31. package/src/array/to-record.ts +0 -351
  32. package/src/array/to-set.ts +0 -80
  33. package/src/array/toggle.ts +0 -79
  34. package/src/array/union.ts +0 -72
  35. package/src/array/unique.ts +0 -67
  36. package/src/array/update.ts +0 -75
  37. package/src/beacon.ts +0 -378
  38. package/src/color/constants.ts +0 -137
  39. package/src/color/index.ts +0 -83
  40. package/src/color/instance.ts +0 -162
  41. package/src/color/misc/alpha.ts +0 -56
  42. package/src/color/misc/format.ts +0 -29
  43. package/src/color/misc/get.ts +0 -210
  44. package/src/color/misc/is.ts +0 -221
  45. package/src/color/misc/state.ts +0 -243
  46. package/src/color/models.ts +0 -389
  47. package/src/color/space/hex.ts +0 -184
  48. package/src/color/space/hsl.ts +0 -174
  49. package/src/color/space/hwb.ts +0 -153
  50. package/src/color/space/rgb.ts +0 -240
  51. package/src/function/assert.ts +0 -174
  52. package/src/function/index.ts +0 -2
  53. package/src/function/limit.ts +0 -83
  54. package/src/function/memoize.ts +0 -202
  55. package/src/function/once.ts +0 -200
  56. package/src/function/retry.ts +0 -175
  57. package/src/function/work.ts +0 -1007
  58. package/src/herald.ts +0 -216
  59. package/src/index.ts +0 -68
  60. package/src/internal/array/callbacks.ts +0 -46
  61. package/src/internal/array/chunk.ts +0 -51
  62. package/src/internal/array/compact.ts +0 -56
  63. package/src/internal/array/find.ts +0 -200
  64. package/src/internal/array/group.ts +0 -42
  65. package/src/internal/array/index-of.ts +0 -182
  66. package/src/internal/array/insert.ts +0 -80
  67. package/src/internal/array/overlap.ts +0 -35
  68. package/src/internal/array/sets.ts +0 -74
  69. package/src/internal/array/shuffle.ts +0 -33
  70. package/src/internal/array/update.ts +0 -52
  71. package/src/internal/function/misc.ts +0 -8
  72. package/src/internal/function/timer.ts +0 -168
  73. package/src/internal/is.ts +0 -244
  74. package/src/internal/math/aggregate.ts +0 -164
  75. package/src/internal/math/misc.ts +0 -28
  76. package/src/internal/number.ts +0 -129
  77. package/src/internal/random.ts +0 -49
  78. package/src/internal/result.ts +0 -92
  79. package/src/internal/sized.ts +0 -25
  80. package/src/internal/string.ts +0 -128
  81. package/src/internal/subscription.ts +0 -264
  82. package/src/internal/value/compare.ts +0 -170
  83. package/src/internal/value/equal.ts +0 -465
  84. package/src/internal/value/get.ts +0 -57
  85. package/src/internal/value/handlers.ts +0 -95
  86. package/src/internal/value/has.ts +0 -118
  87. package/src/internal/value/misc.ts +0 -125
  88. package/src/internal/value/partial.ts +0 -46
  89. package/src/internal/value/set.ts +0 -132
  90. package/src/is.ts +0 -182
  91. package/src/logger.ts +0 -230
  92. package/src/math.ts +0 -281
  93. package/src/models.ts +0 -286
  94. package/src/number.ts +0 -1
  95. package/src/promise/delay.ts +0 -62
  96. package/src/promise/helpers.ts +0 -96
  97. package/src/promise/index.ts +0 -300
  98. package/src/promise/misc.ts +0 -96
  99. package/src/promise/models.ts +0 -195
  100. package/src/promise/timed.ts +0 -91
  101. package/src/query.ts +0 -147
  102. package/src/queue.ts +0 -814
  103. package/src/random.ts +0 -125
  104. package/src/result/index.ts +0 -105
  105. package/src/result/match.ts +0 -124
  106. package/src/result/misc.ts +0 -129
  107. package/src/result/models.ts +0 -83
  108. package/src/result/work/flow.ts +0 -488
  109. package/src/result/work/pipe.ts +0 -496
  110. package/src/sized/map.ts +0 -110
  111. package/src/sized/set.ts +0 -107
  112. package/src/string/case.ts +0 -236
  113. package/src/string/fuzzy.ts +0 -444
  114. package/src/string/index.ts +0 -199
  115. package/src/string/match.ts +0 -80
  116. package/src/string/normalize.ts +0 -205
  117. package/src/string/template.ts +0 -161
  118. package/src/value/clone.ts +0 -319
  119. package/src/value/collection.ts +0 -63
  120. package/src/value/diff.ts +0 -232
  121. package/src/value/freeze.ts +0 -322
  122. package/src/value/handle.ts +0 -3
  123. package/src/value/index.ts +0 -5
  124. package/src/value/merge.ts +0 -278
  125. package/src/value/omit.ts +0 -20
  126. package/src/value/pick.ts +0 -20
  127. package/src/value/shake.ts +0 -45
  128. package/src/value/smush.ts +0 -89
  129. package/src/value/transform.ts +0 -153
  130. package/src/value/unsmush.ts +0 -84
@@ -1,1007 +0,0 @@
1
- import {isError, isOk} from '../internal/result';
2
- import type {GenericCallback} from '../models';
3
- import type {UnwrapValue} from '../result/models';
4
- import {assert, type Asserter} from './assert';
5
-
6
- // #region Types
7
-
8
- /**
9
- * A synchronous _Flow_, a function that pipe a value through a series of functions
10
- */
11
- export type Flow<Callback extends GenericCallback, Value> = (
12
- ...args: Parameters<Callback>
13
- ) => UnwrapValue<Value>;
14
-
15
- /**
16
- * An asynchronous _Flow_, a function that pipes a value through a series of functions
17
- */
18
- export type FlowPromise<Callback extends GenericCallback, Value> = (
19
- ...args: Parameters<Callback>
20
- ) => Promise<UnwrapValue<Value>>;
21
-
22
- // #endregion
23
-
24
- // #region Functions
25
-
26
- // #region Flow
27
-
28
- // #region Asynchronous
29
-
30
- /**
31
- * Create an asynchronous _Flow_, a function that pipes values through a function
32
- *
33
- * _Available as `asyncFlow` and `flow.async`_
34
- *
35
- * @returns _Flow_ function
36
- */
37
- export function asyncFlow<Fn extends GenericCallback>(fn: Fn): FlowPromise<Fn, ReturnType<Fn>>;
38
-
39
- /**
40
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
41
- *
42
- * _Available as `asyncFlow` and `flow.async`_
43
- *
44
- * @returns _Flow_ function
45
- */
46
- export function asyncFlow<First extends GenericCallback, Second>(
47
- first: First,
48
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
49
- ): FlowPromise<First, Second>;
50
-
51
- /**
52
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
53
- *
54
- * _Available as `asyncFlow` and `flow.async`_
55
- *
56
- * @returns _Flow_ function
57
- */
58
- export function asyncFlow<First extends GenericCallback, Second, Third>(
59
- first: First,
60
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
61
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
62
- ): FlowPromise<First, Third>;
63
-
64
- /**
65
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
66
- *
67
- * _Available as `asyncFlow` and `flow.async`_
68
- *
69
- * @returns _Flow_ function
70
- */
71
- export function asyncFlow<First extends GenericCallback, Second, Third, Fourth>(
72
- first: First,
73
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
74
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
75
- fourth: (value: Awaited<UnwrapValue<Third>>) => Fourth,
76
- ): FlowPromise<First, Fourth>;
77
-
78
- /**
79
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
80
- *
81
- * _Available as `asyncFlow` and `flow.async`_
82
- *
83
- * @returns _Flow_ function
84
- */
85
- export function asyncFlow<First extends GenericCallback, Second, Third, Fourth, Fifth>(
86
- first: First,
87
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
88
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
89
- fourth: (value: Awaited<UnwrapValue<Third>>) => Fourth,
90
- fifth: (value: Awaited<UnwrapValue<Fourth>>) => Fifth,
91
- ): FlowPromise<First, Fifth>;
92
-
93
- /**
94
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
95
- *
96
- * _Available as `asyncFlow` and `flow.async`_
97
- *
98
- * @returns _Flow_ function
99
- */
100
- export function asyncFlow<First extends GenericCallback, Second, Third, Fourth, Fifth, Sixth>(
101
- first: First,
102
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
103
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
104
- fourth: (value: Awaited<UnwrapValue<Third>>) => Fourth,
105
- fifth: (value: Awaited<UnwrapValue<Fourth>>) => Fifth,
106
- sixth: (value: Awaited<UnwrapValue<Fifth>>) => Sixth,
107
- ): FlowPromise<First, Sixth>;
108
-
109
- /**
110
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
111
- *
112
- * _Available as `asyncFlow` and `flow.async`_
113
- *
114
- * @returns _Flow_ function
115
- */
116
- export function asyncFlow<
117
- First extends GenericCallback,
118
- Second,
119
- Third,
120
- Fourth,
121
- Fifth,
122
- Sixth,
123
- Seventh,
124
- >(
125
- first: First,
126
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
127
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
128
- fourth: (value: Awaited<UnwrapValue<Third>>) => Fourth,
129
- fifth: (value: Awaited<UnwrapValue<Fourth>>) => Fifth,
130
- sixth: (value: Awaited<UnwrapValue<Fifth>>) => Sixth,
131
- seventh: (value: Awaited<UnwrapValue<Sixth>>) => Seventh,
132
- ): FlowPromise<First, Seventh>;
133
-
134
- /**
135
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
136
- *
137
- * _Available as `asyncFlow` and `flow.async`_
138
- *
139
- * @returns _Flow_ function
140
- */
141
- export function asyncFlow<
142
- First extends GenericCallback,
143
- Second,
144
- Third,
145
- Fourth,
146
- Fifth,
147
- Sixth,
148
- Seventh,
149
- Eighth,
150
- >(
151
- first: First,
152
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
153
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
154
- fourth: (value: Awaited<UnwrapValue<Third>>) => Fourth,
155
- fifth: (value: Awaited<UnwrapValue<Fourth>>) => Fifth,
156
- sixth: (value: Awaited<UnwrapValue<Fifth>>) => Sixth,
157
- seventh: (value: Awaited<UnwrapValue<Sixth>>) => Seventh,
158
- eighth: (value: Awaited<UnwrapValue<Seventh>>) => Eighth,
159
- ): FlowPromise<First, Eighth>;
160
-
161
- /**
162
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
163
- *
164
- * _Available as `asyncFlow` and `flow.async`_
165
- *
166
- * @returns _Flow_ function
167
- */
168
- export function asyncFlow<
169
- First extends GenericCallback,
170
- Second,
171
- Third,
172
- Fourth,
173
- Fifth,
174
- Sixth,
175
- Seventh,
176
- Eighth,
177
- Ninth,
178
- >(
179
- first: First,
180
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
181
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
182
- fourth: (value: Awaited<UnwrapValue<Third>>) => Fourth,
183
- fifth: (value: Awaited<UnwrapValue<Fourth>>) => Fifth,
184
- sixth: (value: Awaited<UnwrapValue<Fifth>>) => Sixth,
185
- seventh: (value: Awaited<UnwrapValue<Sixth>>) => Seventh,
186
- eighth: (value: Awaited<UnwrapValue<Seventh>>) => Eighth,
187
- ninth: (value: Awaited<UnwrapValue<Eighth>>) => Ninth,
188
- ): FlowPromise<First, Ninth>;
189
-
190
- /**
191
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
192
- *
193
- * _Available as `asyncFlow` and `flow.async`_
194
- *
195
- * @returns _Flow_ function
196
- */
197
- export function asyncFlow<
198
- First extends GenericCallback,
199
- Second,
200
- Third,
201
- Fourth,
202
- Fifth,
203
- Sixth,
204
- Seventh,
205
- Eighth,
206
- Ninth,
207
- Tenth,
208
- >(
209
- first: First,
210
- second: (value: Awaited<UnwrapValue<ReturnType<First>>>) => Second,
211
- third: (value: Awaited<UnwrapValue<Second>>) => Third,
212
- fourth: (value: Awaited<UnwrapValue<Third>>) => Fourth,
213
- fifth: (value: Awaited<UnwrapValue<Fourth>>) => Fifth,
214
- sixth: (value: Awaited<UnwrapValue<Fifth>>) => Sixth,
215
- seventh: (value: Awaited<UnwrapValue<Sixth>>) => Seventh,
216
- eighth: (value: Awaited<UnwrapValue<Seventh>>) => Eighth,
217
- ninth: (value: Awaited<UnwrapValue<Eighth>>) => Ninth,
218
- tenth: (value: Awaited<UnwrapValue<Ninth>>) => Tenth,
219
- ): FlowPromise<First, Tenth>;
220
-
221
- /**
222
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
223
- *
224
- * _Available as `asyncFlow` and `flow.async`_
225
- *
226
- * @returns _Flow_ function
227
- */
228
- export function asyncFlow<Fn extends GenericCallback>(
229
- fn: Fn,
230
- ...fns: Array<(value: Awaited<UnwrapValue<ReturnType<Fn>>>) => unknown>
231
- ): FlowPromise<Fn, ReturnType<Fn>>;
232
-
233
- /**
234
- * Create an asynchronous _Flow_, a function that pipes values through a series of functions
235
- *
236
- * _Available as `asyncFlow` and `flow.async`_
237
- *
238
- * @returns _Flow_ function
239
- */
240
- export function asyncFlow(...fns: GenericCallback[]): (...args: unknown[]) => Promise<unknown>;
241
-
242
- export function asyncFlow(...fns: GenericCallback[]): (...args: unknown[]) => Promise<unknown> {
243
- assertFlowFunctions(fns);
244
-
245
- return (...args: unknown[]): Promise<unknown> =>
246
- asyncWork(
247
- args.map(value => {
248
- if (isError(value)) {
249
- throw value.error;
250
- }
251
-
252
- return isOk(value) ? value.value : value;
253
- }),
254
- fns,
255
- true,
256
- );
257
- }
258
-
259
- // #endregion
260
-
261
- // #region Synchronous
262
-
263
- /**
264
- * Create a _Flow_, a function that pipes values through a function
265
- *
266
- * @returns _Flow_ function
267
- */
268
- export function flow<Fn extends GenericCallback>(fn: Fn): Flow<Fn, ReturnType<Fn>>;
269
-
270
- /**
271
- * Create a _Flow_, a function that pipes values through a series of functions
272
- *
273
- * @returns _Flow_ function
274
- */
275
- export function flow<First extends GenericCallback, Second>(
276
- first: First,
277
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
278
- ): Flow<First, Second>;
279
-
280
- /**
281
- * Create a _Flow_, a function that pipes values through a series of functions
282
- *
283
- * @returns _Flow_ function
284
- */
285
- export function flow<First extends GenericCallback, Second, Third>(
286
- first: First,
287
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
288
- third: (value: UnwrapValue<Second>) => Third,
289
- ): Flow<First, Third>;
290
-
291
- /**
292
- * Create a _Flow_, a function that pipes values through a series of functions
293
- *
294
- * @returns _Flow_ function
295
- */
296
- export function flow<First extends GenericCallback, Second, Third, Fourth>(
297
- first: First,
298
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
299
- third: (value: UnwrapValue<Second>) => Third,
300
- fourth: (value: UnwrapValue<Third>) => Fourth,
301
- ): Flow<First, Fourth>;
302
-
303
- /**
304
- * Create a _Flow_, a function that pipes values through a series of functions
305
- *
306
- * @returns _Flow_ function
307
- */
308
- export function flow<First extends GenericCallback, Second, Third, Fourth, Fifth>(
309
- first: First,
310
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
311
- third: (value: UnwrapValue<Second>) => Third,
312
- fourth: (value: UnwrapValue<Third>) => Fourth,
313
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
314
- ): Flow<First, Fifth>;
315
-
316
- /**
317
- * Create a _Flow_, a function that pipes values through a series of functions
318
- *
319
- * @returns _Flow_ function
320
- */
321
- export function flow<First extends GenericCallback, Second, Third, Fourth, Fifth, Sixth>(
322
- first: First,
323
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
324
- third: (value: UnwrapValue<Second>) => Third,
325
- fourth: (value: UnwrapValue<Third>) => Fourth,
326
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
327
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
328
- ): Flow<First, Sixth>;
329
-
330
- /**
331
- * Create a _Flow_, a function that pipes values through a series of functions
332
- *
333
- * @returns _Flow_ function
334
- */
335
- export function flow<First extends GenericCallback, Second, Third, Fourth, Fifth, Sixth, Seventh>(
336
- first: First,
337
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
338
- third: (value: UnwrapValue<Second>) => Third,
339
- fourth: (value: UnwrapValue<Third>) => Fourth,
340
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
341
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
342
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
343
- ): Flow<First, Seventh>;
344
-
345
- /**
346
- * Create a _Flow_, a function that pipes values through a series of functions
347
- *
348
- * @returns _Flow_ function
349
- */
350
- export function flow<
351
- First extends GenericCallback,
352
- Second,
353
- Third,
354
- Fourth,
355
- Fifth,
356
- Sixth,
357
- Seventh,
358
- Eighth,
359
- >(
360
- first: First,
361
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
362
- third: (value: UnwrapValue<Second>) => Third,
363
- fourth: (value: UnwrapValue<Third>) => Fourth,
364
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
365
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
366
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
367
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
368
- ): Flow<First, Eighth>;
369
-
370
- /**
371
- * Create a _Flow_, a function that pipes values through a series of functions
372
- *
373
- * @returns _Flow_ function
374
- */
375
- export function flow<
376
- First extends GenericCallback,
377
- Second,
378
- Third,
379
- Fourth,
380
- Fifth,
381
- Sixth,
382
- Seventh,
383
- Eighth,
384
- Ninth,
385
- >(
386
- first: First,
387
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
388
- third: (value: UnwrapValue<Second>) => Third,
389
- fourth: (value: UnwrapValue<Third>) => Fourth,
390
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
391
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
392
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
393
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
394
- ninth: (value: UnwrapValue<Eighth>) => Ninth,
395
- ): Flow<First, Ninth>;
396
-
397
- /**
398
- * Create a _Flow_, a function that pipes values through a series of functions
399
- *
400
- * @returns _Flow_ function
401
- */
402
- export function flow<
403
- First extends GenericCallback,
404
- Second,
405
- Third,
406
- Fourth,
407
- Fifth,
408
- Sixth,
409
- Seventh,
410
- Eighth,
411
- Ninth,
412
- Tenth,
413
- >(
414
- first: First,
415
- second: (value: UnwrapValue<ReturnType<First>>) => Second,
416
- third: (value: UnwrapValue<Second>) => Third,
417
- fourth: (value: UnwrapValue<Third>) => Fourth,
418
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
419
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
420
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
421
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
422
- ninth: (value: UnwrapValue<Eighth>) => Ninth,
423
- tenth: (value: UnwrapValue<Ninth>) => Tenth,
424
- ): Flow<First, Tenth>;
425
-
426
- /**
427
- * Create a _Flow_, a function that pipes values through a series of functions
428
- *
429
- * @returns _Flow_ function
430
- */
431
- export function flow<First extends GenericCallback>(
432
- first: First,
433
- ...fns: Array<(value: UnwrapValue<ReturnType<First>>) => unknown>
434
- ): Flow<First, ReturnType<First>>;
435
-
436
- /**
437
- * Create a _Flow_, a function that pipes values through a series of functions
438
- *
439
- * @returns _Flow_ function
440
- */
441
- export function flow(...fns: GenericCallback[]): (...args: unknown[]) => unknown;
442
-
443
- export function flow(...fns: GenericCallback[]): (...args: unknown[]) => unknown {
444
- assertFlowFunctions(fns);
445
-
446
- return (...args: unknown[]): unknown =>
447
- work(
448
- args.map(value => {
449
- if (isError(value)) {
450
- throw value.error;
451
- }
452
-
453
- return isOk(value) ? value.value : value;
454
- }),
455
- fns,
456
- true,
457
- );
458
- }
459
-
460
- flow.async = asyncFlow;
461
-
462
- // #endregion
463
-
464
- // #endregion
465
-
466
- // #region Pipe
467
-
468
- // #region Asynchronous
469
-
470
- /**
471
- * Pipe a value through a function
472
- *
473
- * _Available as `asyncPipe` and `pipe.async`_
474
- *
475
- * @param value Initial value
476
- * @returns _Piped_ result
477
- */
478
- export async function asyncPipe<Initial, Piped>(
479
- value: Initial,
480
- pipe: (value: UnwrapValue<Initial>) => Piped,
481
- ): Promise<UnwrapValue<Piped>>;
482
-
483
- /**
484
- * Pipe a value through a series of functions
485
- *
486
- * _Available as `asyncPipe` and `pipe.async`_
487
- *
488
- * @param value Initial value
489
- * @returns _Piped_ result
490
- */
491
- export async function asyncPipe<Initial, First, Second>(
492
- value: Initial,
493
- first: (value: UnwrapValue<Initial>) => First,
494
- second: (value: UnwrapValue<First>) => Second,
495
- ): Promise<UnwrapValue<Second>>;
496
-
497
- /**
498
- * Pipe a value through a series of functions
499
- *
500
- * _Available as `asyncPipe` and `pipe.async`_
501
- *
502
- * @param value Initial value
503
- * @returns _Piped_ result
504
- */
505
- export async function asyncPipe<Initial, First, Second, Third>(
506
- value: Initial,
507
- first: (value: UnwrapValue<Initial>) => First,
508
- second: (value: UnwrapValue<First>) => Second,
509
- third: (value: UnwrapValue<Second>) => Third,
510
- ): Promise<UnwrapValue<Third>>;
511
-
512
- /**
513
- * Pipe a value through a series of functions
514
- *
515
- * _Available as `asyncPipe` and `pipe.async`_
516
- *
517
- * @param value Initial value
518
- * @returns _Piped_ result
519
- */
520
- export async function asyncPipe<Initial, First, Second, Third, Fourth>(
521
- value: Initial,
522
- first: (value: UnwrapValue<Initial>) => First,
523
- second: (value: UnwrapValue<First>) => Second,
524
- third: (value: UnwrapValue<Second>) => Third,
525
- fourth: (value: UnwrapValue<Third>) => Fourth,
526
- ): Promise<UnwrapValue<Fourth>>;
527
-
528
- /**
529
- * Pipe a value through a series of functions
530
- *
531
- * _Available as `asyncPipe` and `pipe.async`_
532
- *
533
- * @param value Initial value
534
- * @returns _Piped_ result
535
- */
536
- export async function asyncPipe<Initial, First, Second, Third, Fourth, Fifth>(
537
- value: Initial,
538
- first: (value: UnwrapValue<Initial>) => First,
539
- second: (value: UnwrapValue<First>) => Second,
540
- third: (value: UnwrapValue<Second>) => Third,
541
- fourth: (value: UnwrapValue<Third>) => Fourth,
542
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
543
- ): Promise<UnwrapValue<Fifth>>;
544
-
545
- /**
546
- * Pipe a value through a series of functions
547
- *
548
- * _Available as `asyncPipe` and `pipe.async`_
549
- *
550
- * @param value Initial value
551
- * @returns _Piped_ result
552
- */
553
- export async function asyncPipe<Initial, First, Second, Third, Fourth, Fifth, Sixth>(
554
- value: Initial,
555
- first: (value: UnwrapValue<Initial>) => First,
556
- second: (value: UnwrapValue<First>) => Second,
557
- third: (value: UnwrapValue<Second>) => Third,
558
- fourth: (value: UnwrapValue<Third>) => Fourth,
559
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
560
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
561
- ): Promise<UnwrapValue<Sixth>>;
562
-
563
- /**
564
- * Pipe a value through a series of functions
565
- *
566
- * _Available as `asyncPipe` and `pipe.async`_
567
- *
568
- * @param value Initial value
569
- * @returns _Piped_ result
570
- */
571
- export async function asyncPipe<Initial, First, Second, Third, Fourth, Fifth, Sixth, Seventh>(
572
- value: Initial,
573
- first: (value: UnwrapValue<Initial>) => First,
574
- second: (value: UnwrapValue<First>) => Second,
575
- third: (value: UnwrapValue<Second>) => Third,
576
- fourth: (value: UnwrapValue<Third>) => Fourth,
577
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
578
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
579
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
580
- ): Promise<UnwrapValue<Seventh>>;
581
-
582
- /**
583
- * Pipe a value through a series of functions
584
- *
585
- * _Available as `asyncPipe` and `pipe.async`_
586
- *
587
- * @param value Initial value
588
- * @returns _Piped_ result
589
- */
590
- export async function asyncPipe<
591
- Initial,
592
- First,
593
- Second,
594
- Third,
595
- Fourth,
596
- Fifth,
597
- Sixth,
598
- Seventh,
599
- Eighth,
600
- >(
601
- value: Initial,
602
- first: (value: UnwrapValue<Initial>) => First,
603
- second: (value: UnwrapValue<First>) => Second,
604
- third: (value: UnwrapValue<Second>) => Third,
605
- fourth: (value: UnwrapValue<Third>) => Fourth,
606
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
607
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
608
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
609
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
610
- ): Promise<UnwrapValue<Eighth>>;
611
-
612
- /**
613
- * Pipe a value through a series of functions
614
- *
615
- * _Available as `asyncPipe` and `pipe.async`_
616
- *
617
- * @param value Initial value
618
- * @returns _Piped_ result
619
- */
620
- export async function asyncPipe<
621
- Initial,
622
- First,
623
- Second,
624
- Third,
625
- Fourth,
626
- Fifth,
627
- Sixth,
628
- Seventh,
629
- Eighth,
630
- Ninth,
631
- >(
632
- value: Initial,
633
- first: (value: UnwrapValue<Initial>) => First,
634
- second: (value: UnwrapValue<First>) => Second,
635
- third: (value: UnwrapValue<Second>) => Third,
636
- fourth: (value: UnwrapValue<Third>) => Fourth,
637
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
638
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
639
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
640
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
641
- ninth: (value: UnwrapValue<Eighth>) => Ninth,
642
- ): Promise<UnwrapValue<Ninth>>;
643
-
644
- /**
645
- * Pipe a value through a series of functions
646
- *
647
- * _Available as `asyncPipe` and `pipe.async`_
648
- *
649
- * @param value Initial value
650
- * @returns _Piped_ result
651
- */
652
- export async function asyncPipe<
653
- Initial,
654
- First,
655
- Second,
656
- Third,
657
- Fourth,
658
- Fifth,
659
- Sixth,
660
- Seventh,
661
- Eighth,
662
- Ninth,
663
- Tenth,
664
- >(
665
- value: Initial,
666
- first: (value: UnwrapValue<Initial>) => First,
667
- second: (value: UnwrapValue<First>) => Second,
668
- third: (value: UnwrapValue<Second>) => Third,
669
- fourth: (value: UnwrapValue<Third>) => Fourth,
670
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
671
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
672
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
673
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
674
- ninth: (value: UnwrapValue<Eighth>) => Ninth,
675
- tenth: (value: UnwrapValue<Ninth>) => Tenth,
676
- ): Promise<UnwrapValue<Tenth>>;
677
-
678
- /**
679
- * Pipe a value through a series of functions
680
- *
681
- * _Available as `asyncPipe` and `pipe.async`_
682
- *
683
- * @param value Initial value
684
- * @returns _Piped_ result
685
- */
686
- export async function asyncPipe<Value>(
687
- value: Value,
688
- ...pipes: Array<(value: Value) => Value>
689
- ): Promise<UnwrapValue<Value>>;
690
-
691
- /**
692
- * Pipe a value through a series of functions
693
- *
694
- * _Available as `asyncPipe` and `pipe.async`_
695
- *
696
- * @param value Initial value
697
- * @returns _Piped_ result
698
- */
699
- export async function asyncPipe(
700
- value: unknown,
701
- ...pipes: Array<(value: unknown) => unknown>
702
- ): Promise<unknown>;
703
-
704
- export async function asyncPipe(
705
- value: unknown,
706
- ...pipes: Array<(value: unknown) => unknown>
707
- ): Promise<unknown> {
708
- assertPipeFunctions(pipes);
709
-
710
- return asyncWork(value, pipes, false);
711
- }
712
-
713
- // #endregion
714
-
715
- // #region Synchronous
716
-
717
- /**
718
- * Pipe a value through a function
719
- *
720
- * @param value Initial value
721
- * @returns _Piped_ result
722
- */
723
- export function pipe<Initial, Piped>(
724
- value: Initial,
725
- pipe: (value: UnwrapValue<Initial>) => Piped,
726
- ): UnwrapValue<Piped>;
727
-
728
- /**
729
- * Pipe a value through a series of functions
730
- *
731
- * @param value Initial value
732
- * @returns _Piped_ result
733
- */
734
- export function pipe<Initial, First, Second>(
735
- value: Initial,
736
- first: (value: UnwrapValue<Initial>) => First,
737
- second: (value: UnwrapValue<First>) => Second,
738
- ): UnwrapValue<Second>;
739
-
740
- /**
741
- * Pipe a value through a series of functions
742
- *
743
- * @param value Initial value
744
- * @returns _Piped_ result
745
- */
746
- export function pipe<Initial, First, Second, Third>(
747
- value: Initial,
748
- first: (value: UnwrapValue<Initial>) => First,
749
- second: (value: UnwrapValue<First>) => Second,
750
- third: (value: UnwrapValue<Second>) => Third,
751
- ): UnwrapValue<Third>;
752
-
753
- /**
754
- * Pipe a value through a series of functions
755
- *
756
- * @param value Initial value
757
- * @returns _Piped_ result
758
- */
759
- export function pipe<Initial, First, Second, Third, Fourth>(
760
- value: Initial,
761
- first: (value: UnwrapValue<Initial>) => First,
762
- second: (value: UnwrapValue<First>) => Second,
763
- third: (value: UnwrapValue<Second>) => Third,
764
- fourth: (value: UnwrapValue<Third>) => Fourth,
765
- ): UnwrapValue<Fourth>;
766
-
767
- /**
768
- * Pipe a value through a series of functions
769
- *
770
- * @param value Initial value
771
- * @returns _Piped_ result
772
- */
773
- export function pipe<Initial, First, Second, Third, Fourth, Fifth>(
774
- value: Initial,
775
- first: (value: UnwrapValue<Initial>) => First,
776
- second: (value: UnwrapValue<First>) => Second,
777
- third: (value: UnwrapValue<Second>) => Third,
778
- fourth: (value: UnwrapValue<Third>) => Fourth,
779
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
780
- ): UnwrapValue<Fifth>;
781
-
782
- /**
783
- * Pipe a value through a series of functions
784
- *
785
- * @param value Initial value
786
- * @returns _Piped_ result
787
- */
788
- export function pipe<Initial, First, Second, Third, Fourth, Fifth, Sixth>(
789
- value: Initial,
790
- first: (value: UnwrapValue<Initial>) => First,
791
- second: (value: UnwrapValue<First>) => Second,
792
- third: (value: UnwrapValue<Second>) => Third,
793
- fourth: (value: UnwrapValue<Third>) => Fourth,
794
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
795
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
796
- ): UnwrapValue<Sixth>;
797
-
798
- /**
799
- * Pipe a value through a series of functions
800
- *
801
- * @param value Initial value
802
- * @returns _Piped_ result
803
- */
804
- export function pipe<Initial, First, Second, Third, Fourth, Fifth, Sixth, Seventh>(
805
- value: Initial,
806
- first: (value: UnwrapValue<Initial>) => First,
807
- second: (value: UnwrapValue<First>) => Second,
808
- third: (value: UnwrapValue<Second>) => Third,
809
- fourth: (value: UnwrapValue<Third>) => Fourth,
810
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
811
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
812
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
813
- ): UnwrapValue<Seventh>;
814
-
815
- /**
816
- * Pipe a value through a series of functions
817
- *
818
- * @param value Initial value
819
- * @returns _Piped_ result
820
- */
821
- export function pipe<Initial, First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth>(
822
- value: Initial,
823
- first: (value: UnwrapValue<Initial>) => First,
824
- second: (value: UnwrapValue<First>) => Second,
825
- third: (value: UnwrapValue<Second>) => Third,
826
- fourth: (value: UnwrapValue<Third>) => Fourth,
827
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
828
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
829
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
830
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
831
- ): UnwrapValue<Eighth>;
832
-
833
- /**
834
- * Pipe a value through a series of functions
835
- *
836
- * @param value Initial value
837
- * @returns _Piped_ result
838
- */
839
- export function pipe<Initial, First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth>(
840
- value: Initial,
841
- first: (value: UnwrapValue<Initial>) => First,
842
- second: (value: UnwrapValue<First>) => Second,
843
- third: (value: UnwrapValue<Second>) => Third,
844
- fourth: (value: UnwrapValue<Third>) => Fourth,
845
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
846
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
847
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
848
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
849
- ninth: (value: UnwrapValue<Eighth>) => Ninth,
850
- ): UnwrapValue<Ninth>;
851
-
852
- /**
853
- * Pipe a value through a series of functions
854
- *
855
- * @param value Initial value
856
- * @returns _Piped_ result
857
- */
858
- export function pipe<
859
- Initial,
860
- First,
861
- Second,
862
- Third,
863
- Fourth,
864
- Fifth,
865
- Sixth,
866
- Seventh,
867
- Eighth,
868
- Ninth,
869
- Tenth,
870
- >(
871
- value: Initial,
872
- first: (value: UnwrapValue<Initial>) => First,
873
- second: (value: UnwrapValue<First>) => Second,
874
- third: (value: UnwrapValue<Second>) => Third,
875
- fourth: (value: UnwrapValue<Third>) => Fourth,
876
- fifth: (value: UnwrapValue<Fourth>) => Fifth,
877
- sixth: (value: UnwrapValue<Fifth>) => Sixth,
878
- seventh: (value: UnwrapValue<Sixth>) => Seventh,
879
- eighth: (value: UnwrapValue<Seventh>) => Eighth,
880
- ninth: (value: UnwrapValue<Eighth>) => Ninth,
881
- tenth: (value: UnwrapValue<Ninth>) => Tenth,
882
- ): UnwrapValue<Tenth>;
883
-
884
- /**
885
- * Pipe a value through a series of functions
886
- *
887
- * @param value Initial value
888
- * @returns _Piped_ result
889
- */
890
- export function pipe<Value>(
891
- value: Value,
892
- ...pipes: Array<(value: Value) => Value>
893
- ): UnwrapValue<Value>;
894
-
895
- /**
896
- * Pipe a value through a series of functions
897
- *
898
- * @param value Initial value
899
- * @returns _Piped_ result
900
- */
901
- export function pipe(value: unknown, ...pipes: Array<(value: unknown) => unknown>): unknown;
902
-
903
- export function pipe(value: unknown, ...pipes: GenericCallback[]): unknown {
904
- assertPipeFunctions(pipes);
905
-
906
- return work(value, pipes, false);
907
- }
908
-
909
- pipe.async = asyncPipe;
910
-
911
- // #endregion
912
-
913
- // #endregion
914
-
915
- // #region Work
916
-
917
- async function asyncWork(
918
- initial: unknown,
919
- functions: GenericCallback[],
920
- flow: boolean,
921
- ): Promise<unknown> {
922
- const {length} = functions;
923
-
924
- let transformed = unwrapValue(initial);
925
-
926
- for (let index = 0; index < length; index += 1) {
927
- const fn = functions[index];
928
-
929
- const value =
930
- flow && index === 0 && Array.isArray(initial)
931
- ? await fn(...(initial as unknown[]))
932
- : await fn(transformed);
933
-
934
- transformed = unwrapValue(value);
935
- }
936
-
937
- return transformed;
938
- }
939
-
940
- function unwrapValue(value: unknown, flow?: boolean, nested?: boolean): unknown {
941
- if (typeof value === 'function') {
942
- if (nested != null) {
943
- throw new TypeError(MESSAGE_NESTING);
944
- }
945
-
946
- return unwrapValue(value(), flow, true);
947
- }
948
-
949
- if (flow != null && value instanceof Promise) {
950
- throw new TypeError(flow ? MESSAGE_FLOW_PROMISE : MESSAGE_PIPE_PROMISE);
951
- }
952
-
953
- if (isError(value)) {
954
- throw value.error;
955
- }
956
-
957
- return isOk(value) ? value.value : value;
958
- }
959
-
960
- function work(initial: unknown, functions: GenericCallback[], flow: boolean): unknown {
961
- const {length} = functions;
962
-
963
- let transformed = unwrapValue(initial, flow);
964
-
965
- for (let index = 0; index < length; index += 1) {
966
- const fn = functions[index];
967
-
968
- const value =
969
- flow && index === 0 && Array.isArray(initial)
970
- ? fn(...(initial as unknown[]))
971
- : fn(transformed);
972
-
973
- transformed = unwrapValue(value, flow);
974
- }
975
-
976
- return transformed;
977
- }
978
-
979
- // #endregion
980
-
981
- // #endregion
982
-
983
- // #region Variables
984
-
985
- const MESSAGE_FLOW_ARRAY = 'Flow expected to receive an array of functions';
986
-
987
- const MESSAGE_FLOW_PROMISE = 'Synchronous Flow received a promise. Use `flow.async` instead.';
988
-
989
- const MESSAGE_NESTING = 'Return values are too deeply nested.';
990
-
991
- const MESSAGE_PIPE_ARRAY = 'Pipe expected to receive an array of functions';
992
-
993
- const MESSAGE_PIPE_PROMISE = 'Synchronous Pipe received a promise. Use `pipe.async` instead.';
994
-
995
- const assertFlowFunctions: Asserter<Function[]> = assert.condition(
996
- value => Array.isArray(value) && value.every(item => typeof item === 'function'),
997
- MESSAGE_FLOW_ARRAY,
998
- TypeError,
999
- );
1000
-
1001
- const assertPipeFunctions: Asserter<Function[]> = assert.condition(
1002
- value => Array.isArray(value) && value.every(item => typeof item === 'function'),
1003
- MESSAGE_PIPE_ARRAY,
1004
- TypeError,
1005
- );
1006
-
1007
- // #endregion