@nlozgachev/pipelined 0.42.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -46,7 +46,7 @@ __export(src_exports, {
46
46
  Str: () => Str,
47
47
  Task: () => Task,
48
48
  TaskMaybe: () => TaskMaybe,
49
- TaskResult: () => TaskResult3,
49
+ TaskResult: () => TaskResult,
50
50
  TaskValidation: () => TaskValidation,
51
51
  These: () => These,
52
52
  Tuple: () => Tuple,
@@ -68,7 +68,6 @@ __export(src_exports, {
68
68
  flip: () => flip,
69
69
  flow: () => flow,
70
70
  identity: () => identity,
71
- isNonEmptyList: () => isNonEmptyList,
72
71
  juxt: () => juxt,
73
72
  memoize: () => memoize,
74
73
  memoizeWeak: () => memoizeWeak,
@@ -411,9 +410,6 @@ var Brand;
411
410
  Brand2.unwrap = (branded) => branded;
412
411
  })(Brand || (Brand = {}));
413
412
 
414
- // src/Types/NonEmptyList.ts
415
- var isNonEmptyList = (list) => list.length > 0;
416
-
417
413
  // src/Types/Duration.ts
418
414
  var Duration;
419
415
  ((Duration2) => {
@@ -480,7 +476,7 @@ function tap(f) {
480
476
  };
481
477
  tap2.async = (fn, options) => (a) => {
482
478
  const onError = options?.onError ?? console.error;
483
- fn(a).catch((err2) => {
479
+ Promise.resolve(fn(a)).catch((err2) => {
484
480
  onError(err2);
485
481
  });
486
482
  return a;
@@ -496,7 +492,7 @@ function tap(f) {
496
492
  };
497
493
  try {
498
494
  const res = fn(a);
499
- if (res instanceof Promise) {
495
+ if (res !== null && (typeof res === "object" || typeof res === "function") && typeof res.then === "function") {
500
496
  res.then(() => {
501
497
  const duration = Duration.milliseconds(performance.now() - start);
502
498
  triggerFinish(duration);
@@ -2104,6 +2100,162 @@ var State;
2104
2100
  )(data);
2105
2101
  })(State || (State = {}));
2106
2102
 
2103
+ // src/Core/TaskMaybe.ts
2104
+ var TaskMaybe;
2105
+ ((TaskMaybe2) => {
2106
+ TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
2107
+ TaskMaybe2.none = () => Task.resolve(Maybe.none());
2108
+ TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
2109
+ TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
2110
+ TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
2111
+ TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
2112
+ TaskMaybe2.tryCatch = (f) => Task.from((signal) => Promise.resolve(f(signal)).then(Maybe.some).catch(() => Maybe.none()));
2113
+ TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
2114
+ TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
2115
+ TaskMaybe2.ap = (arg) => (data) => Task.from(
2116
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2117
+ ([of_, oa]) => Maybe.ap(oa)(of_)
2118
+ )
2119
+ );
2120
+ TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
2121
+ TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
2122
+ TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
2123
+ TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
2124
+ TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
2125
+ TaskMaybe2.toResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
2126
+ TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
2127
+ TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
2128
+ (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
2129
+ )(data);
2130
+ TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.isNone(maybe) ? fallback() : Task.resolve(maybe))(data);
2131
+ TaskMaybe2.struct = (fields) => Task.from((signal) => {
2132
+ const keys = Object.keys(fields);
2133
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2134
+ return Promise.all(promises).then((results) => {
2135
+ const record = {};
2136
+ for (let i = 0; i < keys.length; i++) {
2137
+ const res = results[i];
2138
+ if (Maybe.isNone(res)) {
2139
+ return res;
2140
+ }
2141
+ record[keys[i]] = res.value;
2142
+ }
2143
+ return Maybe.some(record);
2144
+ });
2145
+ });
2146
+ })(TaskMaybe || (TaskMaybe = {}));
2147
+
2148
+ // src/Core/TaskResult.ts
2149
+ var TaskResult;
2150
+ ((TaskResult2) => {
2151
+ TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
2152
+ TaskResult2.err = (error) => Task.resolve(Result.err(error));
2153
+ TaskResult2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
2154
+ TaskResult2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
2155
+ TaskResult2.fromResult = (result) => Task.resolve(result);
2156
+ TaskResult2.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
2157
+ TaskResult2.tryCatch = (f, onError) => Task.from((signal) => Promise.resolve(f(signal)).then(Result.ok).catch((error) => Result.err(onError(error))));
2158
+ TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
2159
+ TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
2160
+ TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
2161
+ data
2162
+ );
2163
+ TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
2164
+ TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
2165
+ TaskResult2.recover = (fallback) => (data) => Task.chain(
2166
+ (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
2167
+ )(data);
2168
+ TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
2169
+ TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
2170
+ TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
2171
+ TaskResult2.ap = (arg) => (data) => Task.from(
2172
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2173
+ ([of_, oa]) => Result.ap(oa)(of_)
2174
+ )
2175
+ );
2176
+ TaskResult2.run = (signal) => (task) => task(signal);
2177
+ TaskResult2.bindTo = (key) => (data) => (0, TaskResult2.map)((a) => ({ [key]: a }))(data);
2178
+ TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
2179
+ (a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
2180
+ )(data);
2181
+ TaskResult2.struct = (fields) => Task.from((signal) => {
2182
+ const keys = Object.keys(fields);
2183
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2184
+ return Promise.all(promises).then((results) => {
2185
+ const record = {};
2186
+ for (let i = 0; i < keys.length; i++) {
2187
+ const res = results[i];
2188
+ if (Result.isErr(res)) {
2189
+ return res;
2190
+ }
2191
+ record[keys[i]] = res.value;
2192
+ }
2193
+ return Result.ok(record);
2194
+ });
2195
+ });
2196
+ })(TaskResult || (TaskResult = {}));
2197
+
2198
+ // src/internal/InternalTypes.ts
2199
+ var isNonEmptyArr = (list) => list.length > 0;
2200
+
2201
+ // src/Core/TaskValidation.ts
2202
+ var TaskValidation;
2203
+ ((TaskValidation2) => {
2204
+ TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
2205
+ TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
2206
+ TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
2207
+ TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
2208
+ TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
2209
+ TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
2210
+ TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
2211
+ TaskValidation2.tryCatch = (f, onError) => Task.from(
2212
+ (signal) => Promise.resolve(f(signal)).then(Validation.passed).catch((error) => Validation.failed(onError(error)))
2213
+ );
2214
+ TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
2215
+ TaskValidation2.ap = (arg) => (data) => Task.from(
2216
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2217
+ ([vf, va]) => Validation.ap(va)(vf)
2218
+ )
2219
+ );
2220
+ TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
2221
+ TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
2222
+ TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
2223
+ TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
2224
+ TaskValidation2.recover = (fallback) => (data) => Task.chain(
2225
+ (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
2226
+ )(data);
2227
+ TaskValidation2.product = (first, second) => Task.from(
2228
+ (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
2229
+ ([va, vb]) => Validation.product(va, vb)
2230
+ )
2231
+ );
2232
+ TaskValidation2.productAll = (data) => Task.from(
2233
+ (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then((results) => {
2234
+ const [first, ...rest] = results;
2235
+ return Validation.productAll([first, ...rest]);
2236
+ })
2237
+ );
2238
+ TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
2239
+ TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
2240
+ TaskValidation2.struct = (fields) => Task.from((signal) => {
2241
+ const keys = Object.keys(fields);
2242
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2243
+ return Promise.all(promises).then((results) => {
2244
+ const record = {};
2245
+ const errors = [];
2246
+ for (let i = 0; i < keys.length; i++) {
2247
+ const res = results[i];
2248
+ if (Validation.isPassed(res)) {
2249
+ record[keys[i]] = res.value;
2250
+ } else {
2251
+ errors.push(...res.errors);
2252
+ }
2253
+ }
2254
+ return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
2255
+ });
2256
+ });
2257
+ })(TaskValidation || (TaskValidation = {}));
2258
+
2107
2259
  // src/Core/Task.ts
2108
2260
  var toPromise = (task, signal) => Deferred.toPromise(task(signal));
2109
2261
  var getMs2 = (duration) => Duration.toMilliseconds(duration);
@@ -2260,14 +2412,16 @@ var Task;
2260
2412
  Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
2261
2413
  const controller = new AbortController();
2262
2414
  let timerId;
2263
- function cleanUp() {
2264
- clearTimeout(timerId);
2265
- outerSignal?.removeEventListener("abort", onOuterAbort);
2266
- }
2267
- function onOuterAbort() {
2415
+ let cleanUp = () => {
2416
+ };
2417
+ const onOuterAbort = () => {
2268
2418
  cleanUp();
2269
2419
  controller.abort();
2270
- }
2420
+ };
2421
+ cleanUp = () => {
2422
+ clearTimeout(timerId);
2423
+ outerSignal?.removeEventListener("abort", onOuterAbort);
2424
+ };
2271
2425
  if (outerSignal) {
2272
2426
  if (outerSignal.aborted) {
2273
2427
  controller.abort();
@@ -2312,123 +2466,11 @@ var Task;
2312
2466
  Task2.bind = (key, f) => (data) => (0, Task2.chain)(
2313
2467
  (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
2314
2468
  )(data);
2469
+ Task2.Maybe = TaskMaybe;
2470
+ Task2.Result = TaskResult;
2471
+ Task2.Validation = TaskValidation;
2315
2472
  })(Task || (Task = {}));
2316
2473
 
2317
- // src/Core/TaskMaybe.ts
2318
- var TaskMaybe;
2319
- ((TaskMaybe2) => {
2320
- TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
2321
- TaskMaybe2.none = () => Task.resolve(Maybe.none());
2322
- TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
2323
- TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
2324
- TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
2325
- TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
2326
- TaskMaybe2.tryCatch = (f) => Task.from((signal) => f(signal).then(Maybe.some).catch(() => Maybe.none()));
2327
- TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
2328
- TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
2329
- TaskMaybe2.ap = (arg) => (data) => Task.from(
2330
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2331
- ([of_, oa]) => Maybe.ap(oa)(of_)
2332
- )
2333
- );
2334
- TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
2335
- TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
2336
- TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
2337
- TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
2338
- TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
2339
- TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
2340
- TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
2341
- TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
2342
- (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
2343
- )(data);
2344
- })(TaskMaybe || (TaskMaybe = {}));
2345
-
2346
- // src/Core/TaskResult.ts
2347
- var TaskResult3;
2348
- ((TaskResult4) => {
2349
- TaskResult4.ok = (value) => Task.resolve(Result.ok(value));
2350
- TaskResult4.err = (error) => Task.resolve(Result.err(error));
2351
- TaskResult4.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
2352
- TaskResult4.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
2353
- TaskResult4.fromResult = (result) => Task.resolve(result);
2354
- TaskResult4.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
2355
- TaskResult4.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Result.ok).catch((error) => Result.err(onError(error))));
2356
- TaskResult4.map = (f) => (data) => Task.map(Result.map(f))(data);
2357
- TaskResult4.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
2358
- TaskResult4.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
2359
- data
2360
- );
2361
- TaskResult4.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
2362
- TaskResult4.match = (cases) => (data) => Task.map(Result.match(cases))(data);
2363
- TaskResult4.recover = (fallback) => (data) => Task.chain(
2364
- (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
2365
- )(data);
2366
- TaskResult4.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
2367
- TaskResult4.tap = (f) => (data) => Task.map(Result.tap(f))(data);
2368
- TaskResult4.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
2369
- TaskResult4.ap = (arg) => (data) => Task.from(
2370
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2371
- ([of_, oa]) => Result.ap(oa)(of_)
2372
- )
2373
- );
2374
- TaskResult4.run = (signal) => (task) => task(signal);
2375
- TaskResult4.bindTo = (key) => (data) => (0, TaskResult4.map)((a) => ({ [key]: a }))(data);
2376
- TaskResult4.bind = (key, f) => (data) => (0, TaskResult4.chain)(
2377
- (a) => (0, TaskResult4.map)((b) => ({ ...a, [key]: b }))(f(a))
2378
- )(data);
2379
- TaskResult4.struct = (fields) => Task.from((signal) => {
2380
- const keys = Object.keys(fields);
2381
- const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2382
- return Promise.all(promises).then((results) => {
2383
- const record = {};
2384
- for (let i = 0; i < keys.length; i++) {
2385
- const res = results[i];
2386
- if (Result.isErr(res)) {
2387
- return res;
2388
- }
2389
- record[keys[i]] = res.value;
2390
- }
2391
- return Result.ok(record);
2392
- });
2393
- });
2394
- })(TaskResult3 || (TaskResult3 = {}));
2395
-
2396
- // src/Core/TaskValidation.ts
2397
- var TaskValidation;
2398
- ((TaskValidation2) => {
2399
- TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
2400
- TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
2401
- TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
2402
- TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
2403
- TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
2404
- TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
2405
- TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
2406
- TaskValidation2.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Validation.passed).catch((error) => Validation.failed(onError(error))));
2407
- TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
2408
- TaskValidation2.ap = (arg) => (data) => Task.from(
2409
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2410
- ([vf, va]) => Validation.ap(va)(vf)
2411
- )
2412
- );
2413
- TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
2414
- TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
2415
- TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
2416
- TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
2417
- TaskValidation2.recover = (fallback) => (data) => Task.chain(
2418
- (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
2419
- )(data);
2420
- TaskValidation2.product = (first, second) => Task.from(
2421
- (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
2422
- ([va, vb]) => Validation.product(va, vb)
2423
- )
2424
- );
2425
- TaskValidation2.productAll = (data) => Task.from(
2426
- (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then(
2427
- (results) => Validation.productAll(results)
2428
- )
2429
- );
2430
- })(TaskValidation || (TaskValidation = {}));
2431
-
2432
2474
  // src/Core/These.ts
2433
2475
  var These;
2434
2476
  ((These2) => {
@@ -2551,11 +2593,10 @@ var Validation;
2551
2593
  Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
2552
2594
  Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
2553
2595
  Validation2.ap = (arg) => (data) => {
2554
- if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
2555
- return (0, Validation2.passed)(data.value(arg.value));
2596
+ if ((0, Validation2.isPassed)(data)) {
2597
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.passed)(data.value(arg.value)) : (0, Validation2.failedAll)(arg.errors);
2556
2598
  }
2557
- const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
2558
- return (0, Validation2.failedAll)(errors);
2599
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.failedAll)(data.errors) : (0, Validation2.failedAll)([...data.errors, ...arg.errors]);
2559
2600
  };
2560
2601
  Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
2561
2602
  Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
@@ -2578,11 +2619,10 @@ var Validation;
2578
2619
  Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
2579
2620
  Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
2580
2621
  Validation2.product = (first, second) => {
2581
- if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
2582
- return (0, Validation2.passed)([first.value, second.value]);
2622
+ if ((0, Validation2.isPassed)(first)) {
2623
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.passed)([first.value, second.value]) : (0, Validation2.failedAll)(second.errors);
2583
2624
  }
2584
- const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
2585
- return (0, Validation2.failedAll)(errors);
2625
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.failedAll)(first.errors) : (0, Validation2.failedAll)([...first.errors, ...second.errors]);
2586
2626
  };
2587
2627
  Validation2.productAll = (data) => {
2588
2628
  const values = [];
@@ -2594,7 +2634,7 @@ var Validation;
2594
2634
  errors.push(...v.errors);
2595
2635
  }
2596
2636
  }
2597
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2637
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2598
2638
  };
2599
2639
  Validation2.struct = (fields) => {
2600
2640
  const record = {};
@@ -2609,11 +2649,73 @@ var Validation;
2609
2649
  }
2610
2650
  }
2611
2651
  }
2612
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2652
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2613
2653
  };
2614
2654
  })(Validation || (Validation = {}));
2615
2655
 
2616
2656
  // src/Data/Arr.ts
2657
+ var ArrMaybe;
2658
+ ((ArrMaybe2) => {
2659
+ ArrMaybe2.traverse = (f) => (data) => {
2660
+ const n = data.length;
2661
+ const result = new Array(n);
2662
+ for (let i = 0; i < n; i++) {
2663
+ const mapped = f(data[i]);
2664
+ if (mapped.kind === "None") {
2665
+ return Maybe.none();
2666
+ }
2667
+ result[i] = mapped.value;
2668
+ }
2669
+ return Maybe.some(result);
2670
+ };
2671
+ ArrMaybe2.sequence = (data) => (0, ArrMaybe2.traverse)((a) => a)(data);
2672
+ })(ArrMaybe || (ArrMaybe = {}));
2673
+ var ArrResult;
2674
+ ((ArrResult2) => {
2675
+ ArrResult2.traverse = (f) => (data) => {
2676
+ const n = data.length;
2677
+ const result = new Array(n);
2678
+ for (let i = 0; i < n; i++) {
2679
+ const mapped = f(data[i]);
2680
+ if (mapped.kind === "Err") {
2681
+ return mapped;
2682
+ }
2683
+ result[i] = mapped.value;
2684
+ }
2685
+ return Result.ok(result);
2686
+ };
2687
+ ArrResult2.sequence = (data) => (0, ArrResult2.traverse)((a) => a)(data);
2688
+ })(ArrResult || (ArrResult = {}));
2689
+ var ArrTaskResult;
2690
+ ((ArrTaskResult2) => {
2691
+ ArrTaskResult2.traverse = (f) => (data) => Task.from(async () => {
2692
+ const result = [];
2693
+ for (const a of data) {
2694
+ const r = await Deferred.toPromise(f(a)());
2695
+ if (Result.isErr(r)) {
2696
+ return r;
2697
+ }
2698
+ result.push(r.value);
2699
+ }
2700
+ return Result.ok(result);
2701
+ });
2702
+ ArrTaskResult2.sequence = (data) => (0, ArrTaskResult2.traverse)((a) => a)(data);
2703
+ })(ArrTaskResult || (ArrTaskResult = {}));
2704
+ var ArrTask;
2705
+ ((ArrTask2) => {
2706
+ ArrTask2.traverse = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
2707
+ ArrTask2.sequence = (data) => (0, ArrTask2.traverse)((a) => a)(data);
2708
+ ArrTask2.Result = ArrTaskResult;
2709
+ })(ArrTask || (ArrTask = {}));
2710
+ var ArrNonEmpty;
2711
+ ((ArrNonEmpty2) => {
2712
+ ArrNonEmpty2.singleton = (value) => [value];
2713
+ ArrNonEmpty2.fromArray = (data) => isNonEmptyArr(data) ? Maybe.some(data) : Maybe.none();
2714
+ ArrNonEmpty2.head = (data) => data[0];
2715
+ ArrNonEmpty2.last = (data) => data[data.length - 1];
2716
+ ArrNonEmpty2.tail = (data) => data.slice(1);
2717
+ ArrNonEmpty2.reduce = (f) => (data) => data.reduce(f);
2718
+ })(ArrNonEmpty || (ArrNonEmpty = {}));
2617
2719
  var Arr;
2618
2720
  ((Arr2) => {
2619
2721
  Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
@@ -2787,6 +2889,7 @@ var Arr;
2787
2889
  }
2788
2890
  return result;
2789
2891
  };
2892
+ Arr2.concat = (other) => (data) => [...data, ...other];
2790
2893
  Arr2.chunksOf = (n) => (data) => {
2791
2894
  if (n <= 0) {
2792
2895
  return [];
@@ -2827,47 +2930,12 @@ var Arr;
2827
2930
  return result;
2828
2931
  };
2829
2932
  Arr2.reduce = (initial, f) => (data) => data.reduce(f, initial);
2830
- Arr2.traverse = (f) => (data) => {
2831
- const n = data.length;
2832
- const result = new Array(n);
2833
- for (let i = 0; i < n; i++) {
2834
- const mapped = f(data[i]);
2835
- if (mapped.kind === "None") {
2836
- return Maybe.none();
2837
- }
2838
- result[i] = mapped.value;
2839
- }
2840
- return Maybe.some(result);
2841
- };
2842
- Arr2.traverseResult = (f) => (data) => {
2843
- const n = data.length;
2844
- const result = new Array(n);
2845
- for (let i = 0; i < n; i++) {
2846
- const mapped = f(data[i]);
2847
- if (mapped.kind === "Err") {
2848
- return mapped;
2849
- }
2850
- result[i] = mapped.value;
2851
- }
2852
- return Result.ok(result);
2853
- };
2854
- Arr2.traverseTask = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
2855
- Arr2.sequence = (data) => (0, Arr2.traverse)((a) => a)(data);
2856
- Arr2.sequenceResult = (data) => (0, Arr2.traverseResult)((a) => a)(data);
2857
- Arr2.sequenceTask = (data) => (0, Arr2.traverseTask)((a) => a)(data);
2858
- Arr2.traverseTaskResult = (f) => (data) => Task.from(async () => {
2859
- const result = [];
2860
- for (const a of data) {
2861
- const r = await Deferred.toPromise(f(a)());
2862
- if (Result.isErr(r)) {
2863
- return r;
2864
- }
2865
- result.push(r.value);
2866
- }
2867
- return Result.ok(result);
2868
- });
2869
- Arr2.sequenceTaskResult = (data) => (0, Arr2.traverseTaskResult)((a) => a)(data);
2870
- Arr2.isNonEmpty = (data) => isNonEmptyList(data);
2933
+ Arr2.Maybe = ArrMaybe;
2934
+ Arr2.Result = ArrResult;
2935
+ Arr2.Task = ArrTask;
2936
+ Arr2.isNonEmpty = (data) => isNonEmptyArr(data);
2937
+ Arr2.prepend = (value) => (data) => [value, ...data];
2938
+ Arr2.append = (value) => (data) => [...data, value];
2871
2939
  Arr2.size = (data) => data.length;
2872
2940
  Arr2.some = (predicate) => (data) => {
2873
2941
  const n = data.length;
@@ -2943,6 +3011,7 @@ var Arr;
2943
3011
  const i = Math.max(0, index);
2944
3012
  return [data.slice(0, i), data.slice(i)];
2945
3013
  };
3014
+ Arr2.NonEmpty = ArrNonEmpty;
2946
3015
  })(Arr || (Arr = {}));
2947
3016
 
2948
3017
  // src/Data/Dict.ts
@@ -3152,25 +3221,78 @@ var Num;
3152
3221
  })(Num || (Num = {}));
3153
3222
 
3154
3223
  // src/Data/Rec.ts
3224
+ var _isNonEmpty = (data) => Object.keys(data).length > 0;
3225
+ var RecMaybe;
3226
+ ((RecMaybe2) => {
3227
+ RecMaybe2.traverse = (f) => (data) => {
3228
+ const recordKeys = Object.keys(data);
3229
+ const result = {};
3230
+ for (let i = 0; i < recordKeys.length; i++) {
3231
+ const key = recordKeys[i];
3232
+ const maybeVal = f(data[key]);
3233
+ if (maybeVal.kind === "None") {
3234
+ return maybeVal;
3235
+ }
3236
+ Object.defineProperty(result, key, { value: maybeVal.value, writable: true, enumerable: true, configurable: true });
3237
+ }
3238
+ return { kind: "Some", value: result };
3239
+ };
3240
+ RecMaybe2.sequence = (data) => (0, RecMaybe2.traverse)((a) => a)(data);
3241
+ })(RecMaybe || (RecMaybe = {}));
3242
+ var RecResult;
3243
+ ((RecResult2) => {
3244
+ RecResult2.traverse = (f) => (data) => {
3245
+ const recordKeys = Object.keys(data);
3246
+ const result = {};
3247
+ for (let i = 0; i < recordKeys.length; i++) {
3248
+ const key = recordKeys[i];
3249
+ const res = f(data[key]);
3250
+ if (res.kind === "Err") {
3251
+ return res;
3252
+ }
3253
+ Object.defineProperty(result, key, { value: res.value, writable: true, enumerable: true, configurable: true });
3254
+ }
3255
+ return { kind: "Ok", value: result };
3256
+ };
3257
+ RecResult2.sequence = (data) => (0, RecResult2.traverse)((a) => a)(data);
3258
+ })(RecResult || (RecResult = {}));
3259
+ var RecNonEmpty;
3260
+ ((RecNonEmpty2) => {
3261
+ RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
3262
+ RecNonEmpty2.fromRecord = (data) => _isNonEmpty(data) ? Maybe.some(data) : Maybe.none();
3263
+ RecNonEmpty2.keys = (data) => Object.keys(data);
3264
+ RecNonEmpty2.values = (data) => Object.values(data);
3265
+ RecNonEmpty2.entries = (data) => Object.entries(data);
3266
+ RecNonEmpty2.reduce = (f) => (data) => {
3267
+ const recordVals = Object.values(data);
3268
+ return recordVals.reduce(f);
3269
+ };
3270
+ })(RecNonEmpty || (RecNonEmpty = {}));
3155
3271
  var Rec;
3156
3272
  ((Rec2) => {
3157
- Rec2.map = (f) => (data) => {
3158
- const keys2 = Object.keys(data);
3159
- const vals = Object.values(data);
3273
+ Rec2.isNonEmpty = _isNonEmpty;
3274
+ Rec2.map = (f) => ((data) => {
3275
+ const recordKeys = Object.keys(data);
3276
+ const recordValues = Object.values(data);
3160
3277
  const result = Object.create(Object.getPrototypeOf(data));
3161
- for (let i = 0; i < keys2.length; i++) {
3162
- Object.defineProperty(result, keys2[i], { value: f(vals[i]), writable: true, enumerable: true, configurable: true });
3278
+ for (let i = 0; i < recordKeys.length; i++) {
3279
+ Object.defineProperty(result, recordKeys[i], {
3280
+ value: f(recordValues[i]),
3281
+ writable: true,
3282
+ enumerable: true,
3283
+ configurable: true
3284
+ });
3163
3285
  }
3164
3286
  return result;
3165
- };
3287
+ });
3166
3288
  Rec2.filterMap = (f) => (data) => {
3167
- const keys2 = Object.keys(data);
3168
- const vals = Object.values(data);
3289
+ const recordKeys = Object.keys(data);
3290
+ const recordValues = Object.values(data);
3169
3291
  const result = Object.create(Object.getPrototypeOf(data));
3170
- for (let i = 0; i < keys2.length; i++) {
3171
- const maybeVal = f(vals[i]);
3292
+ for (let i = 0; i < recordKeys.length; i++) {
3293
+ const maybeVal = f(recordValues[i]);
3172
3294
  if (maybeVal.kind === "Some") {
3173
- Object.defineProperty(result, keys2[i], {
3295
+ Object.defineProperty(result, recordKeys[i], {
3174
3296
  value: maybeVal.value,
3175
3297
  writable: true,
3176
3298
  enumerable: true,
@@ -3180,27 +3302,32 @@ var Rec;
3180
3302
  }
3181
3303
  return result;
3182
3304
  };
3183
- Rec2.mapWithKey = (f) => (data) => {
3184
- const keys2 = Object.keys(data);
3185
- const vals = Object.values(data);
3305
+ Rec2.mapWithKey = (f) => ((data) => {
3306
+ const recordKeys = Object.keys(data);
3307
+ const recordValues = Object.values(data);
3186
3308
  const result = Object.create(Object.getPrototypeOf(data));
3187
- for (let i = 0; i < keys2.length; i++) {
3188
- Object.defineProperty(result, keys2[i], {
3189
- value: f(keys2[i], vals[i]),
3309
+ for (let i = 0; i < recordKeys.length; i++) {
3310
+ Object.defineProperty(result, recordKeys[i], {
3311
+ value: f(recordKeys[i], recordValues[i]),
3190
3312
  writable: true,
3191
3313
  enumerable: true,
3192
3314
  configurable: true
3193
3315
  });
3194
3316
  }
3195
3317
  return result;
3196
- };
3318
+ });
3197
3319
  Rec2.filter = (predicate) => (data) => {
3198
- const keys2 = Object.keys(data);
3199
- const vals = Object.values(data);
3320
+ const recordKeys = Object.keys(data);
3321
+ const recordValues = Object.values(data);
3200
3322
  const result = Object.create(Object.getPrototypeOf(data));
3201
- for (let i = 0; i < keys2.length; i++) {
3202
- if (predicate(vals[i])) {
3203
- Object.defineProperty(result, keys2[i], { value: vals[i], writable: true, enumerable: true, configurable: true });
3323
+ for (let i = 0; i < recordKeys.length; i++) {
3324
+ if (predicate(recordValues[i])) {
3325
+ Object.defineProperty(result, recordKeys[i], {
3326
+ value: recordValues[i],
3327
+ writable: true,
3328
+ enumerable: true,
3329
+ configurable: true
3330
+ });
3204
3331
  }
3205
3332
  }
3206
3333
  return result;
@@ -3277,6 +3404,9 @@ var Rec;
3277
3404
  }
3278
3405
  return result;
3279
3406
  };
3407
+ Rec2.Maybe = RecMaybe;
3408
+ Rec2.Result = RecResult;
3409
+ Rec2.NonEmpty = RecNonEmpty;
3280
3410
  })(Rec || (Rec = {}));
3281
3411
 
3282
3412
  // src/Data/Str.ts
@@ -3488,7 +3618,6 @@ var Uniq;
3488
3618
  flip,
3489
3619
  flow,
3490
3620
  identity,
3491
- isNonEmptyList,
3492
3621
  juxt,
3493
3622
  memoize,
3494
3623
  memoizeWeak,