@nlozgachev/pipelined 0.42.0 → 0.43.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
@@ -45,9 +45,6 @@ __export(src_exports, {
45
45
  State: () => State,
46
46
  Str: () => Str,
47
47
  Task: () => Task,
48
- TaskMaybe: () => TaskMaybe,
49
- TaskResult: () => TaskResult3,
50
- TaskValidation: () => TaskValidation,
51
48
  These: () => These,
52
49
  Tuple: () => Tuple,
53
50
  Uniq: () => Uniq,
@@ -68,7 +65,6 @@ __export(src_exports, {
68
65
  flip: () => flip,
69
66
  flow: () => flow,
70
67
  identity: () => identity,
71
- isNonEmptyList: () => isNonEmptyList,
72
68
  juxt: () => juxt,
73
69
  memoize: () => memoize,
74
70
  memoizeWeak: () => memoizeWeak,
@@ -411,9 +407,6 @@ var Brand;
411
407
  Brand2.unwrap = (branded) => branded;
412
408
  })(Brand || (Brand = {}));
413
409
 
414
- // src/Types/NonEmptyList.ts
415
- var isNonEmptyList = (list) => list.length > 0;
416
-
417
410
  // src/Types/Duration.ts
418
411
  var Duration;
419
412
  ((Duration2) => {
@@ -480,7 +473,7 @@ function tap(f) {
480
473
  };
481
474
  tap2.async = (fn, options) => (a) => {
482
475
  const onError = options?.onError ?? console.error;
483
- fn(a).catch((err2) => {
476
+ Promise.resolve(fn(a)).catch((err2) => {
484
477
  onError(err2);
485
478
  });
486
479
  return a;
@@ -496,7 +489,7 @@ function tap(f) {
496
489
  };
497
490
  try {
498
491
  const res = fn(a);
499
- if (res instanceof Promise) {
492
+ if (res !== null && (typeof res === "object" || typeof res === "function") && typeof res.then === "function") {
500
493
  res.then(() => {
501
494
  const duration = Duration.milliseconds(performance.now() - start);
502
495
  triggerFinish(duration);
@@ -2104,6 +2097,162 @@ var State;
2104
2097
  )(data);
2105
2098
  })(State || (State = {}));
2106
2099
 
2100
+ // src/Core/TaskMaybe.ts
2101
+ var TaskMaybe;
2102
+ ((TaskMaybe2) => {
2103
+ TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
2104
+ TaskMaybe2.none = () => Task.resolve(Maybe.none());
2105
+ TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
2106
+ TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
2107
+ TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
2108
+ TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
2109
+ TaskMaybe2.tryCatch = (f) => Task.from((signal) => Promise.resolve(f(signal)).then(Maybe.some).catch(() => Maybe.none()));
2110
+ TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
2111
+ TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
2112
+ TaskMaybe2.ap = (arg) => (data) => Task.from(
2113
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2114
+ ([of_, oa]) => Maybe.ap(oa)(of_)
2115
+ )
2116
+ );
2117
+ TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
2118
+ TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
2119
+ TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
2120
+ TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
2121
+ TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
2122
+ TaskMaybe2.toResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
2123
+ TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
2124
+ TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
2125
+ (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
2126
+ )(data);
2127
+ TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.isNone(maybe) ? fallback() : Task.resolve(maybe))(data);
2128
+ TaskMaybe2.struct = (fields) => Task.from((signal) => {
2129
+ const keys = Object.keys(fields);
2130
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2131
+ return Promise.all(promises).then((results) => {
2132
+ const record = {};
2133
+ for (let i = 0; i < keys.length; i++) {
2134
+ const res = results[i];
2135
+ if (Maybe.isNone(res)) {
2136
+ return res;
2137
+ }
2138
+ record[keys[i]] = res.value;
2139
+ }
2140
+ return Maybe.some(record);
2141
+ });
2142
+ });
2143
+ })(TaskMaybe || (TaskMaybe = {}));
2144
+
2145
+ // src/Core/TaskResult.ts
2146
+ var TaskResult;
2147
+ ((TaskResult2) => {
2148
+ TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
2149
+ TaskResult2.err = (error) => Task.resolve(Result.err(error));
2150
+ TaskResult2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
2151
+ TaskResult2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
2152
+ TaskResult2.fromResult = (result) => Task.resolve(result);
2153
+ TaskResult2.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
2154
+ TaskResult2.tryCatch = (f, onError) => Task.from((signal) => Promise.resolve(f(signal)).then(Result.ok).catch((error) => Result.err(onError(error))));
2155
+ TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
2156
+ TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
2157
+ TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
2158
+ data
2159
+ );
2160
+ TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
2161
+ TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
2162
+ TaskResult2.recover = (fallback) => (data) => Task.chain(
2163
+ (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
2164
+ )(data);
2165
+ TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
2166
+ TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
2167
+ TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
2168
+ TaskResult2.ap = (arg) => (data) => Task.from(
2169
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2170
+ ([of_, oa]) => Result.ap(oa)(of_)
2171
+ )
2172
+ );
2173
+ TaskResult2.run = (signal) => (task) => task(signal);
2174
+ TaskResult2.bindTo = (key) => (data) => (0, TaskResult2.map)((a) => ({ [key]: a }))(data);
2175
+ TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
2176
+ (a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
2177
+ )(data);
2178
+ TaskResult2.struct = (fields) => Task.from((signal) => {
2179
+ const keys = Object.keys(fields);
2180
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2181
+ return Promise.all(promises).then((results) => {
2182
+ const record = {};
2183
+ for (let i = 0; i < keys.length; i++) {
2184
+ const res = results[i];
2185
+ if (Result.isErr(res)) {
2186
+ return res;
2187
+ }
2188
+ record[keys[i]] = res.value;
2189
+ }
2190
+ return Result.ok(record);
2191
+ });
2192
+ });
2193
+ })(TaskResult || (TaskResult = {}));
2194
+
2195
+ // src/internal/InternalTypes.ts
2196
+ var isNonEmptyArr = (list) => list.length > 0;
2197
+
2198
+ // src/Core/TaskValidation.ts
2199
+ var TaskValidation;
2200
+ ((TaskValidation2) => {
2201
+ TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
2202
+ TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
2203
+ TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
2204
+ TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
2205
+ TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
2206
+ TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
2207
+ TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
2208
+ TaskValidation2.tryCatch = (f, onError) => Task.from(
2209
+ (signal) => Promise.resolve(f(signal)).then(Validation.passed).catch((error) => Validation.failed(onError(error)))
2210
+ );
2211
+ TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
2212
+ TaskValidation2.ap = (arg) => (data) => Task.from(
2213
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2214
+ ([vf, va]) => Validation.ap(va)(vf)
2215
+ )
2216
+ );
2217
+ TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
2218
+ TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
2219
+ TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
2220
+ TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
2221
+ TaskValidation2.recover = (fallback) => (data) => Task.chain(
2222
+ (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
2223
+ )(data);
2224
+ TaskValidation2.product = (first, second) => Task.from(
2225
+ (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
2226
+ ([va, vb]) => Validation.product(va, vb)
2227
+ )
2228
+ );
2229
+ TaskValidation2.productAll = (data) => Task.from(
2230
+ (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then((results) => {
2231
+ const [first, ...rest] = results;
2232
+ return Validation.productAll([first, ...rest]);
2233
+ })
2234
+ );
2235
+ TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
2236
+ TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
2237
+ TaskValidation2.struct = (fields) => Task.from((signal) => {
2238
+ const keys = Object.keys(fields);
2239
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2240
+ return Promise.all(promises).then((results) => {
2241
+ const record = {};
2242
+ const errors = [];
2243
+ for (let i = 0; i < keys.length; i++) {
2244
+ const res = results[i];
2245
+ if (Validation.isPassed(res)) {
2246
+ record[keys[i]] = res.value;
2247
+ } else {
2248
+ errors.push(...res.errors);
2249
+ }
2250
+ }
2251
+ return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
2252
+ });
2253
+ });
2254
+ })(TaskValidation || (TaskValidation = {}));
2255
+
2107
2256
  // src/Core/Task.ts
2108
2257
  var toPromise = (task, signal) => Deferred.toPromise(task(signal));
2109
2258
  var getMs2 = (duration) => Duration.toMilliseconds(duration);
@@ -2260,14 +2409,16 @@ var Task;
2260
2409
  Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
2261
2410
  const controller = new AbortController();
2262
2411
  let timerId;
2263
- function cleanUp() {
2264
- clearTimeout(timerId);
2265
- outerSignal?.removeEventListener("abort", onOuterAbort);
2266
- }
2267
- function onOuterAbort() {
2412
+ let cleanUp = () => {
2413
+ };
2414
+ const onOuterAbort = () => {
2268
2415
  cleanUp();
2269
2416
  controller.abort();
2270
- }
2417
+ };
2418
+ cleanUp = () => {
2419
+ clearTimeout(timerId);
2420
+ outerSignal?.removeEventListener("abort", onOuterAbort);
2421
+ };
2271
2422
  if (outerSignal) {
2272
2423
  if (outerSignal.aborted) {
2273
2424
  controller.abort();
@@ -2312,123 +2463,11 @@ var Task;
2312
2463
  Task2.bind = (key, f) => (data) => (0, Task2.chain)(
2313
2464
  (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
2314
2465
  )(data);
2466
+ Task2.Maybe = TaskMaybe;
2467
+ Task2.Result = TaskResult;
2468
+ Task2.Validation = TaskValidation;
2315
2469
  })(Task || (Task = {}));
2316
2470
 
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
2471
  // src/Core/These.ts
2433
2472
  var These;
2434
2473
  ((These2) => {
@@ -2551,11 +2590,10 @@ var Validation;
2551
2590
  Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
2552
2591
  Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
2553
2592
  Validation2.ap = (arg) => (data) => {
2554
- if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
2555
- return (0, Validation2.passed)(data.value(arg.value));
2593
+ if ((0, Validation2.isPassed)(data)) {
2594
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.passed)(data.value(arg.value)) : (0, Validation2.failedAll)(arg.errors);
2556
2595
  }
2557
- const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
2558
- return (0, Validation2.failedAll)(errors);
2596
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.failedAll)(data.errors) : (0, Validation2.failedAll)([...data.errors, ...arg.errors]);
2559
2597
  };
2560
2598
  Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
2561
2599
  Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
@@ -2578,11 +2616,10 @@ var Validation;
2578
2616
  Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
2579
2617
  Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
2580
2618
  Validation2.product = (first, second) => {
2581
- if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
2582
- return (0, Validation2.passed)([first.value, second.value]);
2619
+ if ((0, Validation2.isPassed)(first)) {
2620
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.passed)([first.value, second.value]) : (0, Validation2.failedAll)(second.errors);
2583
2621
  }
2584
- const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
2585
- return (0, Validation2.failedAll)(errors);
2622
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.failedAll)(first.errors) : (0, Validation2.failedAll)([...first.errors, ...second.errors]);
2586
2623
  };
2587
2624
  Validation2.productAll = (data) => {
2588
2625
  const values = [];
@@ -2594,7 +2631,7 @@ var Validation;
2594
2631
  errors.push(...v.errors);
2595
2632
  }
2596
2633
  }
2597
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2634
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2598
2635
  };
2599
2636
  Validation2.struct = (fields) => {
2600
2637
  const record = {};
@@ -2609,11 +2646,73 @@ var Validation;
2609
2646
  }
2610
2647
  }
2611
2648
  }
2612
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2649
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2613
2650
  };
2614
2651
  })(Validation || (Validation = {}));
2615
2652
 
2616
2653
  // src/Data/Arr.ts
2654
+ var ArrMaybe;
2655
+ ((ArrMaybe2) => {
2656
+ ArrMaybe2.traverse = (f) => (data) => {
2657
+ const n = data.length;
2658
+ const result = new Array(n);
2659
+ for (let i = 0; i < n; i++) {
2660
+ const mapped = f(data[i]);
2661
+ if (mapped.kind === "None") {
2662
+ return Maybe.none();
2663
+ }
2664
+ result[i] = mapped.value;
2665
+ }
2666
+ return Maybe.some(result);
2667
+ };
2668
+ ArrMaybe2.sequence = (data) => (0, ArrMaybe2.traverse)((a) => a)(data);
2669
+ })(ArrMaybe || (ArrMaybe = {}));
2670
+ var ArrResult;
2671
+ ((ArrResult2) => {
2672
+ ArrResult2.traverse = (f) => (data) => {
2673
+ const n = data.length;
2674
+ const result = new Array(n);
2675
+ for (let i = 0; i < n; i++) {
2676
+ const mapped = f(data[i]);
2677
+ if (mapped.kind === "Err") {
2678
+ return mapped;
2679
+ }
2680
+ result[i] = mapped.value;
2681
+ }
2682
+ return Result.ok(result);
2683
+ };
2684
+ ArrResult2.sequence = (data) => (0, ArrResult2.traverse)((a) => a)(data);
2685
+ })(ArrResult || (ArrResult = {}));
2686
+ var ArrTaskResult;
2687
+ ((ArrTaskResult2) => {
2688
+ ArrTaskResult2.traverse = (f) => (data) => Task.from(async () => {
2689
+ const result = [];
2690
+ for (const a of data) {
2691
+ const r = await Deferred.toPromise(f(a)());
2692
+ if (Result.isErr(r)) {
2693
+ return r;
2694
+ }
2695
+ result.push(r.value);
2696
+ }
2697
+ return Result.ok(result);
2698
+ });
2699
+ ArrTaskResult2.sequence = (data) => (0, ArrTaskResult2.traverse)((a) => a)(data);
2700
+ })(ArrTaskResult || (ArrTaskResult = {}));
2701
+ var ArrTask;
2702
+ ((ArrTask2) => {
2703
+ ArrTask2.traverse = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
2704
+ ArrTask2.sequence = (data) => (0, ArrTask2.traverse)((a) => a)(data);
2705
+ ArrTask2.Result = ArrTaskResult;
2706
+ })(ArrTask || (ArrTask = {}));
2707
+ var ArrNonEmpty;
2708
+ ((ArrNonEmpty2) => {
2709
+ ArrNonEmpty2.singleton = (value) => [value];
2710
+ ArrNonEmpty2.fromArray = (data) => isNonEmptyArr(data) ? Maybe.some(data) : Maybe.none();
2711
+ ArrNonEmpty2.head = (data) => data[0];
2712
+ ArrNonEmpty2.last = (data) => data[data.length - 1];
2713
+ ArrNonEmpty2.tail = (data) => data.slice(1);
2714
+ ArrNonEmpty2.reduce = (f) => (data) => data.reduce(f);
2715
+ })(ArrNonEmpty || (ArrNonEmpty = {}));
2617
2716
  var Arr;
2618
2717
  ((Arr2) => {
2619
2718
  Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
@@ -2787,6 +2886,7 @@ var Arr;
2787
2886
  }
2788
2887
  return result;
2789
2888
  };
2889
+ Arr2.concat = (other) => (data) => [...data, ...other];
2790
2890
  Arr2.chunksOf = (n) => (data) => {
2791
2891
  if (n <= 0) {
2792
2892
  return [];
@@ -2827,47 +2927,12 @@ var Arr;
2827
2927
  return result;
2828
2928
  };
2829
2929
  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);
2930
+ Arr2.Maybe = ArrMaybe;
2931
+ Arr2.Result = ArrResult;
2932
+ Arr2.Task = ArrTask;
2933
+ Arr2.isNonEmpty = (data) => isNonEmptyArr(data);
2934
+ Arr2.prepend = (value) => (data) => [value, ...data];
2935
+ Arr2.append = (value) => (data) => [...data, value];
2871
2936
  Arr2.size = (data) => data.length;
2872
2937
  Arr2.some = (predicate) => (data) => {
2873
2938
  const n = data.length;
@@ -2943,6 +3008,7 @@ var Arr;
2943
3008
  const i = Math.max(0, index);
2944
3009
  return [data.slice(0, i), data.slice(i)];
2945
3010
  };
3011
+ Arr2.NonEmpty = ArrNonEmpty;
2946
3012
  })(Arr || (Arr = {}));
2947
3013
 
2948
3014
  // src/Data/Dict.ts
@@ -3152,25 +3218,78 @@ var Num;
3152
3218
  })(Num || (Num = {}));
3153
3219
 
3154
3220
  // src/Data/Rec.ts
3221
+ var _isNonEmpty = (data) => Object.keys(data).length > 0;
3222
+ var RecMaybe;
3223
+ ((RecMaybe2) => {
3224
+ RecMaybe2.traverse = (f) => (data) => {
3225
+ const recordKeys = Object.keys(data);
3226
+ const result = {};
3227
+ for (let i = 0; i < recordKeys.length; i++) {
3228
+ const key = recordKeys[i];
3229
+ const maybeVal = f(data[key]);
3230
+ if (maybeVal.kind === "None") {
3231
+ return maybeVal;
3232
+ }
3233
+ Object.defineProperty(result, key, { value: maybeVal.value, writable: true, enumerable: true, configurable: true });
3234
+ }
3235
+ return { kind: "Some", value: result };
3236
+ };
3237
+ RecMaybe2.sequence = (data) => (0, RecMaybe2.traverse)((a) => a)(data);
3238
+ })(RecMaybe || (RecMaybe = {}));
3239
+ var RecResult;
3240
+ ((RecResult2) => {
3241
+ RecResult2.traverse = (f) => (data) => {
3242
+ const recordKeys = Object.keys(data);
3243
+ const result = {};
3244
+ for (let i = 0; i < recordKeys.length; i++) {
3245
+ const key = recordKeys[i];
3246
+ const res = f(data[key]);
3247
+ if (res.kind === "Err") {
3248
+ return res;
3249
+ }
3250
+ Object.defineProperty(result, key, { value: res.value, writable: true, enumerable: true, configurable: true });
3251
+ }
3252
+ return { kind: "Ok", value: result };
3253
+ };
3254
+ RecResult2.sequence = (data) => (0, RecResult2.traverse)((a) => a)(data);
3255
+ })(RecResult || (RecResult = {}));
3256
+ var RecNonEmpty;
3257
+ ((RecNonEmpty2) => {
3258
+ RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
3259
+ RecNonEmpty2.fromRecord = (data) => _isNonEmpty(data) ? Maybe.some(data) : Maybe.none();
3260
+ RecNonEmpty2.keys = (data) => Object.keys(data);
3261
+ RecNonEmpty2.values = (data) => Object.values(data);
3262
+ RecNonEmpty2.entries = (data) => Object.entries(data);
3263
+ RecNonEmpty2.reduce = (f) => (data) => {
3264
+ const recordVals = Object.values(data);
3265
+ return recordVals.reduce(f);
3266
+ };
3267
+ })(RecNonEmpty || (RecNonEmpty = {}));
3155
3268
  var Rec;
3156
3269
  ((Rec2) => {
3157
- Rec2.map = (f) => (data) => {
3158
- const keys2 = Object.keys(data);
3159
- const vals = Object.values(data);
3270
+ Rec2.isNonEmpty = _isNonEmpty;
3271
+ Rec2.map = (f) => ((data) => {
3272
+ const recordKeys = Object.keys(data);
3273
+ const recordValues = Object.values(data);
3160
3274
  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 });
3275
+ for (let i = 0; i < recordKeys.length; i++) {
3276
+ Object.defineProperty(result, recordKeys[i], {
3277
+ value: f(recordValues[i]),
3278
+ writable: true,
3279
+ enumerable: true,
3280
+ configurable: true
3281
+ });
3163
3282
  }
3164
3283
  return result;
3165
- };
3284
+ });
3166
3285
  Rec2.filterMap = (f) => (data) => {
3167
- const keys2 = Object.keys(data);
3168
- const vals = Object.values(data);
3286
+ const recordKeys = Object.keys(data);
3287
+ const recordValues = Object.values(data);
3169
3288
  const result = Object.create(Object.getPrototypeOf(data));
3170
- for (let i = 0; i < keys2.length; i++) {
3171
- const maybeVal = f(vals[i]);
3289
+ for (let i = 0; i < recordKeys.length; i++) {
3290
+ const maybeVal = f(recordValues[i]);
3172
3291
  if (maybeVal.kind === "Some") {
3173
- Object.defineProperty(result, keys2[i], {
3292
+ Object.defineProperty(result, recordKeys[i], {
3174
3293
  value: maybeVal.value,
3175
3294
  writable: true,
3176
3295
  enumerable: true,
@@ -3180,27 +3299,32 @@ var Rec;
3180
3299
  }
3181
3300
  return result;
3182
3301
  };
3183
- Rec2.mapWithKey = (f) => (data) => {
3184
- const keys2 = Object.keys(data);
3185
- const vals = Object.values(data);
3302
+ Rec2.mapWithKey = (f) => ((data) => {
3303
+ const recordKeys = Object.keys(data);
3304
+ const recordValues = Object.values(data);
3186
3305
  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]),
3306
+ for (let i = 0; i < recordKeys.length; i++) {
3307
+ Object.defineProperty(result, recordKeys[i], {
3308
+ value: f(recordKeys[i], recordValues[i]),
3190
3309
  writable: true,
3191
3310
  enumerable: true,
3192
3311
  configurable: true
3193
3312
  });
3194
3313
  }
3195
3314
  return result;
3196
- };
3315
+ });
3197
3316
  Rec2.filter = (predicate) => (data) => {
3198
- const keys2 = Object.keys(data);
3199
- const vals = Object.values(data);
3317
+ const recordKeys = Object.keys(data);
3318
+ const recordValues = Object.values(data);
3200
3319
  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 });
3320
+ for (let i = 0; i < recordKeys.length; i++) {
3321
+ if (predicate(recordValues[i])) {
3322
+ Object.defineProperty(result, recordKeys[i], {
3323
+ value: recordValues[i],
3324
+ writable: true,
3325
+ enumerable: true,
3326
+ configurable: true
3327
+ });
3204
3328
  }
3205
3329
  }
3206
3330
  return result;
@@ -3277,6 +3401,9 @@ var Rec;
3277
3401
  }
3278
3402
  return result;
3279
3403
  };
3404
+ Rec2.Maybe = RecMaybe;
3405
+ Rec2.Result = RecResult;
3406
+ Rec2.NonEmpty = RecNonEmpty;
3280
3407
  })(Rec || (Rec = {}));
3281
3408
 
3282
3409
  // src/Data/Str.ts
@@ -3465,9 +3592,6 @@ var Uniq;
3465
3592
  State,
3466
3593
  Str,
3467
3594
  Task,
3468
- TaskMaybe,
3469
- TaskResult,
3470
- TaskValidation,
3471
3595
  These,
3472
3596
  Tuple,
3473
3597
  Uniq,
@@ -3488,7 +3612,6 @@ var Uniq;
3488
3612
  flip,
3489
3613
  flow,
3490
3614
  identity,
3491
- isNonEmptyList,
3492
3615
  juxt,
3493
3616
  memoize,
3494
3617
  memoizeWeak,