@nlozgachev/pipelined 0.41.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;
@@ -490,13 +483,13 @@ function tap(f) {
490
483
  const triggerFinish = (duration) => {
491
484
  if (config.label !== void 0) {
492
485
  console.log(`[${config.label}]: ${Duration.toMilliseconds(duration)}ms`);
493
- } else if (config.onFinish) {
486
+ } else {
494
487
  config.onFinish(duration);
495
488
  }
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);
@@ -2128,9 +2277,7 @@ var Task;
2128
2277
  (signal) => new Promise((res) => {
2129
2278
  let timerId;
2130
2279
  const onAbort = () => {
2131
- if (timerId !== void 0) {
2132
- clearTimeout(timerId);
2133
- }
2280
+ clearTimeout(timerId);
2134
2281
  res(toPromise(data, signal));
2135
2282
  };
2136
2283
  if (signal) {
@@ -2151,27 +2298,20 @@ var Task;
2151
2298
  return Promise.resolve([]);
2152
2299
  }
2153
2300
  const results = [];
2154
- const wait = () => {
2155
- if (signal?.aborted) {
2156
- return Promise.resolve();
2301
+ const wait = () => new Promise((r) => {
2302
+ let timerId;
2303
+ const onAbort = () => {
2304
+ clearTimeout(timerId);
2305
+ r();
2306
+ };
2307
+ if (signal) {
2308
+ signal.addEventListener("abort", onAbort, { once: true });
2157
2309
  }
2158
- return new Promise((r) => {
2159
- let timerId;
2160
- const onAbort = () => {
2161
- if (timerId !== void 0) {
2162
- clearTimeout(timerId);
2163
- }
2164
- r();
2165
- };
2166
- if (signal) {
2167
- signal.addEventListener("abort", onAbort, { once: true });
2168
- }
2169
- timerId = setTimeout(() => {
2170
- signal?.removeEventListener("abort", onAbort);
2171
- r();
2172
- }, delayDuration ? getMs2(delayDuration) : 0);
2173
- });
2174
- };
2310
+ timerId = setTimeout(() => {
2311
+ signal?.removeEventListener("abort", onAbort);
2312
+ r();
2313
+ }, delayDuration ? getMs2(delayDuration) : 0);
2314
+ });
2175
2315
  const run2 = (left) => {
2176
2316
  if (signal?.aborted) {
2177
2317
  return Promise.resolve(results);
@@ -2188,27 +2328,20 @@ var Task;
2188
2328
  });
2189
2329
  Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
2190
2330
  const { when: predicate, delay: delayDuration, maxAttempts } = options;
2191
- const wait = () => {
2192
- if (signal?.aborted) {
2193
- return Promise.resolve();
2331
+ const wait = () => new Promise((r) => {
2332
+ let timerId;
2333
+ const onAbort = () => {
2334
+ clearTimeout(timerId);
2335
+ r();
2336
+ };
2337
+ if (signal) {
2338
+ signal.addEventListener("abort", onAbort, { once: true });
2194
2339
  }
2195
- return new Promise((r) => {
2196
- let timerId;
2197
- const onAbort = () => {
2198
- if (timerId !== void 0) {
2199
- clearTimeout(timerId);
2200
- }
2201
- r();
2202
- };
2203
- if (signal) {
2204
- signal.addEventListener("abort", onAbort, { once: true });
2205
- }
2206
- timerId = setTimeout(() => {
2207
- signal?.removeEventListener("abort", onAbort);
2208
- r();
2209
- }, delayDuration ? getMs2(delayDuration) : 0);
2210
- });
2211
- };
2340
+ timerId = setTimeout(() => {
2341
+ signal?.removeEventListener("abort", onAbort);
2342
+ r();
2343
+ }, delayDuration ? getMs2(delayDuration) : 0);
2344
+ });
2212
2345
  const run2 = (attempt, lastValue) => {
2213
2346
  if (signal?.aborted && lastValue !== void 0) {
2214
2347
  return Promise.resolve(lastValue);
@@ -2276,16 +2409,16 @@ var Task;
2276
2409
  Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
2277
2410
  const controller = new AbortController();
2278
2411
  let timerId;
2279
- function cleanUp() {
2280
- if (timerId !== void 0) {
2281
- clearTimeout(timerId);
2282
- }
2283
- outerSignal?.removeEventListener("abort", onOuterAbort);
2284
- }
2285
- function onOuterAbort() {
2412
+ let cleanUp = () => {
2413
+ };
2414
+ const onOuterAbort = () => {
2286
2415
  cleanUp();
2287
2416
  controller.abort();
2288
- }
2417
+ };
2418
+ cleanUp = () => {
2419
+ clearTimeout(timerId);
2420
+ outerSignal?.removeEventListener("abort", onOuterAbort);
2421
+ };
2289
2422
  if (outerSignal) {
2290
2423
  if (outerSignal.aborted) {
2291
2424
  controller.abort();
@@ -2330,123 +2463,11 @@ var Task;
2330
2463
  Task2.bind = (key, f) => (data) => (0, Task2.chain)(
2331
2464
  (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
2332
2465
  )(data);
2466
+ Task2.Maybe = TaskMaybe;
2467
+ Task2.Result = TaskResult;
2468
+ Task2.Validation = TaskValidation;
2333
2469
  })(Task || (Task = {}));
2334
2470
 
2335
- // src/Core/TaskMaybe.ts
2336
- var TaskMaybe;
2337
- ((TaskMaybe2) => {
2338
- TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
2339
- TaskMaybe2.none = () => Task.resolve(Maybe.none());
2340
- TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
2341
- TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
2342
- TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
2343
- TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
2344
- TaskMaybe2.tryCatch = (f) => Task.from((signal) => f(signal).then(Maybe.some).catch(() => Maybe.none()));
2345
- TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
2346
- TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
2347
- TaskMaybe2.ap = (arg) => (data) => Task.from(
2348
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2349
- ([of_, oa]) => Maybe.ap(oa)(of_)
2350
- )
2351
- );
2352
- TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
2353
- TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
2354
- TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
2355
- TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
2356
- TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
2357
- TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
2358
- TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
2359
- TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
2360
- (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
2361
- )(data);
2362
- })(TaskMaybe || (TaskMaybe = {}));
2363
-
2364
- // src/Core/TaskResult.ts
2365
- var TaskResult3;
2366
- ((TaskResult4) => {
2367
- TaskResult4.ok = (value) => Task.resolve(Result.ok(value));
2368
- TaskResult4.err = (error) => Task.resolve(Result.err(error));
2369
- TaskResult4.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
2370
- TaskResult4.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
2371
- TaskResult4.fromResult = (result) => Task.resolve(result);
2372
- TaskResult4.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
2373
- TaskResult4.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Result.ok).catch((error) => Result.err(onError(error))));
2374
- TaskResult4.map = (f) => (data) => Task.map(Result.map(f))(data);
2375
- TaskResult4.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
2376
- TaskResult4.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
2377
- data
2378
- );
2379
- TaskResult4.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
2380
- TaskResult4.match = (cases) => (data) => Task.map(Result.match(cases))(data);
2381
- TaskResult4.recover = (fallback) => (data) => Task.chain(
2382
- (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
2383
- )(data);
2384
- TaskResult4.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
2385
- TaskResult4.tap = (f) => (data) => Task.map(Result.tap(f))(data);
2386
- TaskResult4.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
2387
- TaskResult4.ap = (arg) => (data) => Task.from(
2388
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2389
- ([of_, oa]) => Result.ap(oa)(of_)
2390
- )
2391
- );
2392
- TaskResult4.run = (signal) => (task) => task(signal);
2393
- TaskResult4.bindTo = (key) => (data) => (0, TaskResult4.map)((a) => ({ [key]: a }))(data);
2394
- TaskResult4.bind = (key, f) => (data) => (0, TaskResult4.chain)(
2395
- (a) => (0, TaskResult4.map)((b) => ({ ...a, [key]: b }))(f(a))
2396
- )(data);
2397
- TaskResult4.struct = (fields) => Task.from((signal) => {
2398
- const keys = Object.keys(fields);
2399
- const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
2400
- return Promise.all(promises).then((results) => {
2401
- const record = {};
2402
- for (let i = 0; i < keys.length; i++) {
2403
- const res = results[i];
2404
- if (Result.isErr(res)) {
2405
- return res;
2406
- }
2407
- record[keys[i]] = res.value;
2408
- }
2409
- return Result.ok(record);
2410
- });
2411
- });
2412
- })(TaskResult3 || (TaskResult3 = {}));
2413
-
2414
- // src/Core/TaskValidation.ts
2415
- var TaskValidation;
2416
- ((TaskValidation2) => {
2417
- TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
2418
- TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
2419
- TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
2420
- TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
2421
- TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
2422
- TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
2423
- TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
2424
- TaskValidation2.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Validation.passed).catch((error) => Validation.failed(onError(error))));
2425
- TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
2426
- TaskValidation2.ap = (arg) => (data) => Task.from(
2427
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
2428
- ([vf, va]) => Validation.ap(va)(vf)
2429
- )
2430
- );
2431
- TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
2432
- TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
2433
- TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
2434
- TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
2435
- TaskValidation2.recover = (fallback) => (data) => Task.chain(
2436
- (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
2437
- )(data);
2438
- TaskValidation2.product = (first, second) => Task.from(
2439
- (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
2440
- ([va, vb]) => Validation.product(va, vb)
2441
- )
2442
- );
2443
- TaskValidation2.productAll = (data) => Task.from(
2444
- (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then(
2445
- (results) => Validation.productAll(results)
2446
- )
2447
- );
2448
- })(TaskValidation || (TaskValidation = {}));
2449
-
2450
2471
  // src/Core/These.ts
2451
2472
  var These;
2452
2473
  ((These2) => {
@@ -2569,11 +2590,10 @@ var Validation;
2569
2590
  Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
2570
2591
  Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
2571
2592
  Validation2.ap = (arg) => (data) => {
2572
- if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
2573
- 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);
2574
2595
  }
2575
- const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
2576
- return (0, Validation2.failedAll)(errors);
2596
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.failedAll)(data.errors) : (0, Validation2.failedAll)([...data.errors, ...arg.errors]);
2577
2597
  };
2578
2598
  Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
2579
2599
  Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
@@ -2596,11 +2616,10 @@ var Validation;
2596
2616
  Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
2597
2617
  Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
2598
2618
  Validation2.product = (first, second) => {
2599
- if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
2600
- 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);
2601
2621
  }
2602
- const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
2603
- return (0, Validation2.failedAll)(errors);
2622
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.failedAll)(first.errors) : (0, Validation2.failedAll)([...first.errors, ...second.errors]);
2604
2623
  };
2605
2624
  Validation2.productAll = (data) => {
2606
2625
  const values = [];
@@ -2612,7 +2631,7 @@ var Validation;
2612
2631
  errors.push(...v.errors);
2613
2632
  }
2614
2633
  }
2615
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2634
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2616
2635
  };
2617
2636
  Validation2.struct = (fields) => {
2618
2637
  const record = {};
@@ -2627,11 +2646,73 @@ var Validation;
2627
2646
  }
2628
2647
  }
2629
2648
  }
2630
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2649
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2631
2650
  };
2632
2651
  })(Validation || (Validation = {}));
2633
2652
 
2634
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 = {}));
2635
2716
  var Arr;
2636
2717
  ((Arr2) => {
2637
2718
  Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
@@ -2805,6 +2886,7 @@ var Arr;
2805
2886
  }
2806
2887
  return result;
2807
2888
  };
2889
+ Arr2.concat = (other) => (data) => [...data, ...other];
2808
2890
  Arr2.chunksOf = (n) => (data) => {
2809
2891
  if (n <= 0) {
2810
2892
  return [];
@@ -2845,47 +2927,12 @@ var Arr;
2845
2927
  return result;
2846
2928
  };
2847
2929
  Arr2.reduce = (initial, f) => (data) => data.reduce(f, initial);
2848
- Arr2.traverse = (f) => (data) => {
2849
- const n = data.length;
2850
- const result = new Array(n);
2851
- for (let i = 0; i < n; i++) {
2852
- const mapped = f(data[i]);
2853
- if (mapped.kind === "None") {
2854
- return Maybe.none();
2855
- }
2856
- result[i] = mapped.value;
2857
- }
2858
- return Maybe.some(result);
2859
- };
2860
- Arr2.traverseResult = (f) => (data) => {
2861
- const n = data.length;
2862
- const result = new Array(n);
2863
- for (let i = 0; i < n; i++) {
2864
- const mapped = f(data[i]);
2865
- if (mapped.kind === "Err") {
2866
- return mapped;
2867
- }
2868
- result[i] = mapped.value;
2869
- }
2870
- return Result.ok(result);
2871
- };
2872
- Arr2.traverseTask = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
2873
- Arr2.sequence = (data) => (0, Arr2.traverse)((a) => a)(data);
2874
- Arr2.sequenceResult = (data) => (0, Arr2.traverseResult)((a) => a)(data);
2875
- Arr2.sequenceTask = (data) => (0, Arr2.traverseTask)((a) => a)(data);
2876
- Arr2.traverseTaskResult = (f) => (data) => Task.from(async () => {
2877
- const result = [];
2878
- for (const a of data) {
2879
- const r = await Deferred.toPromise(f(a)());
2880
- if (Result.isErr(r)) {
2881
- return r;
2882
- }
2883
- result.push(r.value);
2884
- }
2885
- return Result.ok(result);
2886
- });
2887
- Arr2.sequenceTaskResult = (data) => (0, Arr2.traverseTaskResult)((a) => a)(data);
2888
- 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];
2889
2936
  Arr2.size = (data) => data.length;
2890
2937
  Arr2.some = (predicate) => (data) => {
2891
2938
  const n = data.length;
@@ -2961,6 +3008,7 @@ var Arr;
2961
3008
  const i = Math.max(0, index);
2962
3009
  return [data.slice(0, i), data.slice(i)];
2963
3010
  };
3011
+ Arr2.NonEmpty = ArrNonEmpty;
2964
3012
  })(Arr || (Arr = {}));
2965
3013
 
2966
3014
  // src/Data/Dict.ts
@@ -3170,25 +3218,78 @@ var Num;
3170
3218
  })(Num || (Num = {}));
3171
3219
 
3172
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 = {}));
3173
3268
  var Rec;
3174
3269
  ((Rec2) => {
3175
- Rec2.map = (f) => (data) => {
3176
- const keys2 = Object.keys(data);
3177
- 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);
3178
3274
  const result = Object.create(Object.getPrototypeOf(data));
3179
- for (let i = 0; i < keys2.length; i++) {
3180
- 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
+ });
3181
3282
  }
3182
3283
  return result;
3183
- };
3284
+ });
3184
3285
  Rec2.filterMap = (f) => (data) => {
3185
- const keys2 = Object.keys(data);
3186
- const vals = Object.values(data);
3286
+ const recordKeys = Object.keys(data);
3287
+ const recordValues = Object.values(data);
3187
3288
  const result = Object.create(Object.getPrototypeOf(data));
3188
- for (let i = 0; i < keys2.length; i++) {
3189
- const maybeVal = f(vals[i]);
3289
+ for (let i = 0; i < recordKeys.length; i++) {
3290
+ const maybeVal = f(recordValues[i]);
3190
3291
  if (maybeVal.kind === "Some") {
3191
- Object.defineProperty(result, keys2[i], {
3292
+ Object.defineProperty(result, recordKeys[i], {
3192
3293
  value: maybeVal.value,
3193
3294
  writable: true,
3194
3295
  enumerable: true,
@@ -3198,27 +3299,32 @@ var Rec;
3198
3299
  }
3199
3300
  return result;
3200
3301
  };
3201
- Rec2.mapWithKey = (f) => (data) => {
3202
- const keys2 = Object.keys(data);
3203
- const vals = Object.values(data);
3302
+ Rec2.mapWithKey = (f) => ((data) => {
3303
+ const recordKeys = Object.keys(data);
3304
+ const recordValues = Object.values(data);
3204
3305
  const result = Object.create(Object.getPrototypeOf(data));
3205
- for (let i = 0; i < keys2.length; i++) {
3206
- Object.defineProperty(result, keys2[i], {
3207
- 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]),
3208
3309
  writable: true,
3209
3310
  enumerable: true,
3210
3311
  configurable: true
3211
3312
  });
3212
3313
  }
3213
3314
  return result;
3214
- };
3315
+ });
3215
3316
  Rec2.filter = (predicate) => (data) => {
3216
- const keys2 = Object.keys(data);
3217
- const vals = Object.values(data);
3317
+ const recordKeys = Object.keys(data);
3318
+ const recordValues = Object.values(data);
3218
3319
  const result = Object.create(Object.getPrototypeOf(data));
3219
- for (let i = 0; i < keys2.length; i++) {
3220
- if (predicate(vals[i])) {
3221
- 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
+ });
3222
3328
  }
3223
3329
  }
3224
3330
  return result;
@@ -3295,6 +3401,9 @@ var Rec;
3295
3401
  }
3296
3402
  return result;
3297
3403
  };
3404
+ Rec2.Maybe = RecMaybe;
3405
+ Rec2.Result = RecResult;
3406
+ Rec2.NonEmpty = RecNonEmpty;
3298
3407
  })(Rec || (Rec = {}));
3299
3408
 
3300
3409
  // src/Data/Str.ts
@@ -3483,9 +3592,6 @@ var Uniq;
3483
3592
  State,
3484
3593
  Str,
3485
3594
  Task,
3486
- TaskMaybe,
3487
- TaskResult,
3488
- TaskValidation,
3489
3595
  These,
3490
3596
  Tuple,
3491
3597
  Uniq,
@@ -3506,7 +3612,6 @@ var Uniq;
3506
3612
  flip,
3507
3613
  flow,
3508
3614
  identity,
3509
- isNonEmptyList,
3510
3615
  juxt,
3511
3616
  memoize,
3512
3617
  memoizeWeak,