@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/utils.js CHANGED
@@ -111,74 +111,227 @@ var Duration;
111
111
  Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
112
112
  })(Duration || (Duration = {}));
113
113
 
114
- // src/Types/NonEmptyList.ts
115
- var isNonEmptyList = (list) => list.length > 0;
116
-
117
114
  // src/Core/Result.ts
118
115
  var Result;
119
- ((Result2) => {
120
- Result2.ok = (value) => ({ kind: "Ok", value });
121
- Result2.err = (e) => ({ kind: "Err", error: e });
122
- Result2.isOk = (data) => data.kind === "Ok";
123
- Result2.isErr = (data) => data.kind === "Err";
124
- Result2.tryCatch = (f, onError) => {
116
+ ((Result3) => {
117
+ Result3.ok = (value) => ({ kind: "Ok", value });
118
+ Result3.err = (e) => ({ kind: "Err", error: e });
119
+ Result3.isOk = (data) => data.kind === "Ok";
120
+ Result3.isErr = (data) => data.kind === "Err";
121
+ Result3.tryCatch = (f, onError) => {
125
122
  try {
126
- return (0, Result2.ok)(f());
123
+ return (0, Result3.ok)(f());
127
124
  } catch (error) {
128
- return (0, Result2.err)(onError(error));
125
+ return (0, Result3.err)(onError(error));
129
126
  }
130
127
  };
131
- Result2.map = (f) => (data) => (0, Result2.isOk)(data) ? (0, Result2.ok)(f(data.value)) : data;
132
- Result2.mapError = (f) => (data) => (0, Result2.isErr)(data) ? (0, Result2.err)(f(data.error)) : data;
133
- Result2.chain = (f) => (data) => (0, Result2.isOk)(data) ? f(data.value) : data;
134
- Result2.fold = (onErr, onOk) => (data) => (0, Result2.isOk)(data) ? onOk(data.value) : onErr(data.error);
135
- Result2.match = (cases) => (data) => (0, Result2.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
136
- Result2.getOrElse = (defaultValue) => (data) => (0, Result2.isOk)(data) ? data.value : defaultValue();
137
- Result2.tap = (f) => (data) => {
138
- if ((0, Result2.isOk)(data)) {
128
+ Result3.map = (f) => (data) => (0, Result3.isOk)(data) ? (0, Result3.ok)(f(data.value)) : data;
129
+ Result3.mapError = (f) => (data) => (0, Result3.isErr)(data) ? (0, Result3.err)(f(data.error)) : data;
130
+ Result3.chain = (f) => (data) => (0, Result3.isOk)(data) ? f(data.value) : data;
131
+ Result3.fold = (onErr, onOk) => (data) => (0, Result3.isOk)(data) ? onOk(data.value) : onErr(data.error);
132
+ Result3.match = (cases) => (data) => (0, Result3.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
133
+ Result3.getOrElse = (defaultValue) => (data) => (0, Result3.isOk)(data) ? data.value : defaultValue();
134
+ Result3.tap = (f) => (data) => {
135
+ if ((0, Result3.isOk)(data)) {
139
136
  f(data.value);
140
137
  }
141
138
  return data;
142
139
  };
143
- Result2.tapError = (f) => (data) => {
144
- if ((0, Result2.isErr)(data)) {
140
+ Result3.tapError = (f) => (data) => {
141
+ if ((0, Result3.isErr)(data)) {
145
142
  f(data.error);
146
143
  }
147
144
  return data;
148
145
  };
149
- Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.err)(onFalse(a));
150
- Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.err)(onNull()) : (0, Result2.ok)(value);
151
- Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.err)(onNone()) : (0, Result2.ok)(maybe.value);
152
- Result2.fromThrowable = (f, onError) => (...args) => {
146
+ Result3.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result3.ok)(a) : (0, Result3.err)(onFalse(a));
147
+ Result3.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result3.err)(onNull()) : (0, Result3.ok)(value);
148
+ Result3.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result3.err)(onNone()) : (0, Result3.ok)(maybe.value);
149
+ Result3.fromThrowable = (f, onError) => (...args) => {
153
150
  try {
154
- return (0, Result2.ok)(f(...args));
151
+ return (0, Result3.ok)(f(...args));
155
152
  } catch (error) {
156
- return (0, Result2.err)(onError(error));
153
+ return (0, Result3.err)(onError(error));
157
154
  }
158
155
  };
159
- Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
160
- Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
161
- Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
162
- Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.isErr)(data) ? data : arg;
163
- Result2.bindTo = (key) => (data) => (0, Result2.map)((a) => ({ [key]: a }))(data);
164
- Result2.bind = (key, f) => (data) => (0, Result2.chain)(
165
- (a) => (0, Result2.map)((b) => ({ ...a, [key]: b }))(f(a))
156
+ Result3.recover = (fallback) => (data) => (0, Result3.isOk)(data) ? data : fallback(data.error);
157
+ Result3.recoverUnless = (isBlocked, fallback) => (data) => (0, Result3.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
158
+ Result3.toMaybe = (data) => (0, Result3.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
159
+ Result3.ap = (arg) => (data) => (0, Result3.isOk)(data) && (0, Result3.isOk)(arg) ? (0, Result3.ok)(data.value(arg.value)) : (0, Result3.isErr)(data) ? data : arg;
160
+ Result3.bindTo = (key) => (data) => (0, Result3.map)((a) => ({ [key]: a }))(data);
161
+ Result3.bind = (key, f) => (data) => (0, Result3.chain)(
162
+ (a) => (0, Result3.map)((b) => ({ ...a, [key]: b }))(f(a))
166
163
  )(data);
167
- Result2.struct = (fields) => {
164
+ Result3.struct = (fields) => {
168
165
  const result = {};
169
166
  for (const key in fields) {
170
167
  if (Object.hasOwn(fields, key)) {
171
168
  const res = fields[key];
172
- if ((0, Result2.isErr)(res)) {
169
+ if ((0, Result3.isErr)(res)) {
173
170
  return res;
174
171
  }
175
172
  result[key] = res.value;
176
173
  }
177
174
  }
178
- return (0, Result2.ok)(result);
175
+ return (0, Result3.ok)(result);
179
176
  };
180
177
  })(Result || (Result = {}));
181
178
 
179
+ // src/Core/TaskMaybe.ts
180
+ var TaskMaybe;
181
+ ((TaskMaybe2) => {
182
+ TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
183
+ TaskMaybe2.none = () => Task.resolve(Maybe.none());
184
+ TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
185
+ TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
186
+ TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
187
+ TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
188
+ TaskMaybe2.tryCatch = (f) => Task.from((signal) => Promise.resolve(f(signal)).then(Maybe.some).catch(() => Maybe.none()));
189
+ TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
190
+ TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
191
+ TaskMaybe2.ap = (arg) => (data) => Task.from(
192
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
193
+ ([of_, oa]) => Maybe.ap(oa)(of_)
194
+ )
195
+ );
196
+ TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
197
+ TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
198
+ TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
199
+ TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
200
+ TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
201
+ TaskMaybe2.toResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
202
+ TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
203
+ TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
204
+ (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
205
+ )(data);
206
+ TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.isNone(maybe) ? fallback() : Task.resolve(maybe))(data);
207
+ TaskMaybe2.struct = (fields) => Task.from((signal) => {
208
+ const keys = Object.keys(fields);
209
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
210
+ return Promise.all(promises).then((results) => {
211
+ const record = {};
212
+ for (let i = 0; i < keys.length; i++) {
213
+ const res = results[i];
214
+ if (Maybe.isNone(res)) {
215
+ return res;
216
+ }
217
+ record[keys[i]] = res.value;
218
+ }
219
+ return Maybe.some(record);
220
+ });
221
+ });
222
+ })(TaskMaybe || (TaskMaybe = {}));
223
+
224
+ // src/Core/TaskResult.ts
225
+ var TaskResult;
226
+ ((TaskResult2) => {
227
+ TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
228
+ TaskResult2.err = (error) => Task.resolve(Result.err(error));
229
+ TaskResult2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
230
+ TaskResult2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
231
+ TaskResult2.fromResult = (result) => Task.resolve(result);
232
+ TaskResult2.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
233
+ TaskResult2.tryCatch = (f, onError) => Task.from((signal) => Promise.resolve(f(signal)).then(Result.ok).catch((error) => Result.err(onError(error))));
234
+ TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
235
+ TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
236
+ TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
237
+ data
238
+ );
239
+ TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
240
+ TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
241
+ TaskResult2.recover = (fallback) => (data) => Task.chain(
242
+ (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
243
+ )(data);
244
+ TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
245
+ TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
246
+ TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
247
+ TaskResult2.ap = (arg) => (data) => Task.from(
248
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
249
+ ([of_, oa]) => Result.ap(oa)(of_)
250
+ )
251
+ );
252
+ TaskResult2.run = (signal) => (task) => task(signal);
253
+ TaskResult2.bindTo = (key) => (data) => (0, TaskResult2.map)((a) => ({ [key]: a }))(data);
254
+ TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
255
+ (a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
256
+ )(data);
257
+ TaskResult2.struct = (fields) => Task.from((signal) => {
258
+ const keys = Object.keys(fields);
259
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
260
+ return Promise.all(promises).then((results) => {
261
+ const record = {};
262
+ for (let i = 0; i < keys.length; i++) {
263
+ const res = results[i];
264
+ if (Result.isErr(res)) {
265
+ return res;
266
+ }
267
+ record[keys[i]] = res.value;
268
+ }
269
+ return Result.ok(record);
270
+ });
271
+ });
272
+ })(TaskResult || (TaskResult = {}));
273
+
274
+ // src/internal/InternalTypes.ts
275
+ var isNonEmptyArr = (list) => list.length > 0;
276
+
277
+ // src/Core/TaskValidation.ts
278
+ var TaskValidation;
279
+ ((TaskValidation2) => {
280
+ TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
281
+ TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
282
+ TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
283
+ TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
284
+ TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
285
+ TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
286
+ TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
287
+ TaskValidation2.tryCatch = (f, onError) => Task.from(
288
+ (signal) => Promise.resolve(f(signal)).then(Validation.passed).catch((error) => Validation.failed(onError(error)))
289
+ );
290
+ TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
291
+ TaskValidation2.ap = (arg) => (data) => Task.from(
292
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
293
+ ([vf, va]) => Validation.ap(va)(vf)
294
+ )
295
+ );
296
+ TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
297
+ TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
298
+ TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
299
+ TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
300
+ TaskValidation2.recover = (fallback) => (data) => Task.chain(
301
+ (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
302
+ )(data);
303
+ TaskValidation2.product = (first, second) => Task.from(
304
+ (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
305
+ ([va, vb]) => Validation.product(va, vb)
306
+ )
307
+ );
308
+ TaskValidation2.productAll = (data) => Task.from(
309
+ (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then((results) => {
310
+ const [first, ...rest] = results;
311
+ return Validation.productAll([first, ...rest]);
312
+ })
313
+ );
314
+ TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
315
+ TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
316
+ TaskValidation2.struct = (fields) => Task.from((signal) => {
317
+ const keys = Object.keys(fields);
318
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
319
+ return Promise.all(promises).then((results) => {
320
+ const record = {};
321
+ const errors = [];
322
+ for (let i = 0; i < keys.length; i++) {
323
+ const res = results[i];
324
+ if (Validation.isPassed(res)) {
325
+ record[keys[i]] = res.value;
326
+ } else {
327
+ errors.push(...res.errors);
328
+ }
329
+ }
330
+ return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
331
+ });
332
+ });
333
+ })(TaskValidation || (TaskValidation = {}));
334
+
182
335
  // src/Core/Task.ts
183
336
  var toPromise = (task, signal) => Deferred.toPromise(task(signal));
184
337
  var getMs = (duration) => Duration.toMilliseconds(duration);
@@ -335,14 +488,16 @@ var Task;
335
488
  Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
336
489
  const controller = new AbortController();
337
490
  let timerId;
338
- function cleanUp() {
339
- clearTimeout(timerId);
340
- outerSignal?.removeEventListener("abort", onOuterAbort);
341
- }
342
- function onOuterAbort() {
491
+ let cleanUp = () => {
492
+ };
493
+ const onOuterAbort = () => {
343
494
  cleanUp();
344
495
  controller.abort();
345
- }
496
+ };
497
+ cleanUp = () => {
498
+ clearTimeout(timerId);
499
+ outerSignal?.removeEventListener("abort", onOuterAbort);
500
+ };
346
501
  if (outerSignal) {
347
502
  if (outerSignal.aborted) {
348
503
  controller.abort();
@@ -387,9 +542,148 @@ var Task;
387
542
  Task2.bind = (key, f) => (data) => (0, Task2.chain)(
388
543
  (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
389
544
  )(data);
545
+ Task2.Maybe = TaskMaybe;
546
+ Task2.Result = TaskResult;
547
+ Task2.Validation = TaskValidation;
390
548
  })(Task || (Task = {}));
391
549
 
550
+ // src/Core/Validation.ts
551
+ var Validation;
552
+ ((Validation2) => {
553
+ Validation2.passed = (value) => ({ kind: "Passed", value });
554
+ Validation2.failed = (error) => ({ kind: "Failed", errors: [error] });
555
+ Validation2.failedAll = (errors) => ({ kind: "Failed", errors });
556
+ Validation2.isPassed = (data) => data.kind === "Passed";
557
+ Validation2.isFailed = (data) => data.kind === "Failed";
558
+ Validation2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Validation2.passed)(a) : (0, Validation2.failed)(onFalse(a));
559
+ Validation2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Validation2.failed)(onNull()) : (0, Validation2.passed)(value);
560
+ Validation2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Validation2.failed)(onNone()) : (0, Validation2.passed)(maybe.value);
561
+ Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
562
+ Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
563
+ Validation2.ap = (arg) => (data) => {
564
+ if ((0, Validation2.isPassed)(data)) {
565
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.passed)(data.value(arg.value)) : (0, Validation2.failedAll)(arg.errors);
566
+ }
567
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.failedAll)(data.errors) : (0, Validation2.failedAll)([...data.errors, ...arg.errors]);
568
+ };
569
+ Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
570
+ Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
571
+ Validation2.getOrElse = (defaultValue) => (data) => (0, Validation2.isPassed)(data) ? data.value : defaultValue();
572
+ Validation2.tap = (f) => (data) => {
573
+ if ((0, Validation2.isPassed)(data)) {
574
+ f(data.value);
575
+ }
576
+ return data;
577
+ };
578
+ Validation2.tapError = (f) => (data) => {
579
+ if ((0, Validation2.isFailed)(data)) {
580
+ f(data.errors);
581
+ }
582
+ return data;
583
+ };
584
+ Validation2.recover = (fallback) => (data) => (0, Validation2.isPassed)(data) ? data : fallback(data.errors);
585
+ Validation2.recoverUnless = (isBlocked, fallback) => (data) => (0, Validation2.isFailed)(data) && !data.errors.some(isBlocked) ? fallback() : data;
586
+ Validation2.toResult = (data) => (0, Validation2.isPassed)(data) ? Result.ok(data.value) : Result.err(data.errors);
587
+ Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
588
+ Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
589
+ Validation2.product = (first, second) => {
590
+ if ((0, Validation2.isPassed)(first)) {
591
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.passed)([first.value, second.value]) : (0, Validation2.failedAll)(second.errors);
592
+ }
593
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.failedAll)(first.errors) : (0, Validation2.failedAll)([...first.errors, ...second.errors]);
594
+ };
595
+ Validation2.productAll = (data) => {
596
+ const values = [];
597
+ const errors = [];
598
+ for (const v of data) {
599
+ if ((0, Validation2.isPassed)(v)) {
600
+ values.push(v.value);
601
+ } else {
602
+ errors.push(...v.errors);
603
+ }
604
+ }
605
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
606
+ };
607
+ Validation2.struct = (fields) => {
608
+ const record = {};
609
+ const errors = [];
610
+ for (const key in fields) {
611
+ if (Object.hasOwn(fields, key)) {
612
+ const val = fields[key];
613
+ if ((0, Validation2.isPassed)(val)) {
614
+ record[key] = val.value;
615
+ } else {
616
+ errors.push(...val.errors);
617
+ }
618
+ }
619
+ }
620
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
621
+ };
622
+ })(Validation || (Validation = {}));
623
+
392
624
  // src/Data/Arr.ts
625
+ var ArrMaybe;
626
+ ((ArrMaybe2) => {
627
+ ArrMaybe2.traverse = (f) => (data) => {
628
+ const n = data.length;
629
+ const result = new Array(n);
630
+ for (let i = 0; i < n; i++) {
631
+ const mapped = f(data[i]);
632
+ if (mapped.kind === "None") {
633
+ return Maybe.none();
634
+ }
635
+ result[i] = mapped.value;
636
+ }
637
+ return Maybe.some(result);
638
+ };
639
+ ArrMaybe2.sequence = (data) => (0, ArrMaybe2.traverse)((a) => a)(data);
640
+ })(ArrMaybe || (ArrMaybe = {}));
641
+ var ArrResult;
642
+ ((ArrResult2) => {
643
+ ArrResult2.traverse = (f) => (data) => {
644
+ const n = data.length;
645
+ const result = new Array(n);
646
+ for (let i = 0; i < n; i++) {
647
+ const mapped = f(data[i]);
648
+ if (mapped.kind === "Err") {
649
+ return mapped;
650
+ }
651
+ result[i] = mapped.value;
652
+ }
653
+ return Result.ok(result);
654
+ };
655
+ ArrResult2.sequence = (data) => (0, ArrResult2.traverse)((a) => a)(data);
656
+ })(ArrResult || (ArrResult = {}));
657
+ var ArrTaskResult;
658
+ ((ArrTaskResult2) => {
659
+ ArrTaskResult2.traverse = (f) => (data) => Task.from(async () => {
660
+ const result = [];
661
+ for (const a of data) {
662
+ const r = await Deferred.toPromise(f(a)());
663
+ if (Result.isErr(r)) {
664
+ return r;
665
+ }
666
+ result.push(r.value);
667
+ }
668
+ return Result.ok(result);
669
+ });
670
+ ArrTaskResult2.sequence = (data) => (0, ArrTaskResult2.traverse)((a) => a)(data);
671
+ })(ArrTaskResult || (ArrTaskResult = {}));
672
+ var ArrTask;
673
+ ((ArrTask2) => {
674
+ ArrTask2.traverse = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
675
+ ArrTask2.sequence = (data) => (0, ArrTask2.traverse)((a) => a)(data);
676
+ ArrTask2.Result = ArrTaskResult;
677
+ })(ArrTask || (ArrTask = {}));
678
+ var ArrNonEmpty;
679
+ ((ArrNonEmpty2) => {
680
+ ArrNonEmpty2.singleton = (value) => [value];
681
+ ArrNonEmpty2.fromArray = (data) => isNonEmptyArr(data) ? Maybe.some(data) : Maybe.none();
682
+ ArrNonEmpty2.head = (data) => data[0];
683
+ ArrNonEmpty2.last = (data) => data[data.length - 1];
684
+ ArrNonEmpty2.tail = (data) => data.slice(1);
685
+ ArrNonEmpty2.reduce = (f) => (data) => data.reduce(f);
686
+ })(ArrNonEmpty || (ArrNonEmpty = {}));
393
687
  var Arr;
394
688
  ((Arr2) => {
395
689
  Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
@@ -563,6 +857,7 @@ var Arr;
563
857
  }
564
858
  return result;
565
859
  };
860
+ Arr2.concat = (other) => (data) => [...data, ...other];
566
861
  Arr2.chunksOf = (n) => (data) => {
567
862
  if (n <= 0) {
568
863
  return [];
@@ -603,47 +898,12 @@ var Arr;
603
898
  return result;
604
899
  };
605
900
  Arr2.reduce = (initial, f) => (data) => data.reduce(f, initial);
606
- Arr2.traverse = (f) => (data) => {
607
- const n = data.length;
608
- const result = new Array(n);
609
- for (let i = 0; i < n; i++) {
610
- const mapped = f(data[i]);
611
- if (mapped.kind === "None") {
612
- return Maybe.none();
613
- }
614
- result[i] = mapped.value;
615
- }
616
- return Maybe.some(result);
617
- };
618
- Arr2.traverseResult = (f) => (data) => {
619
- const n = data.length;
620
- const result = new Array(n);
621
- for (let i = 0; i < n; i++) {
622
- const mapped = f(data[i]);
623
- if (mapped.kind === "Err") {
624
- return mapped;
625
- }
626
- result[i] = mapped.value;
627
- }
628
- return Result.ok(result);
629
- };
630
- Arr2.traverseTask = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
631
- Arr2.sequence = (data) => (0, Arr2.traverse)((a) => a)(data);
632
- Arr2.sequenceResult = (data) => (0, Arr2.traverseResult)((a) => a)(data);
633
- Arr2.sequenceTask = (data) => (0, Arr2.traverseTask)((a) => a)(data);
634
- Arr2.traverseTaskResult = (f) => (data) => Task.from(async () => {
635
- const result = [];
636
- for (const a of data) {
637
- const r = await Deferred.toPromise(f(a)());
638
- if (Result.isErr(r)) {
639
- return r;
640
- }
641
- result.push(r.value);
642
- }
643
- return Result.ok(result);
644
- });
645
- Arr2.sequenceTaskResult = (data) => (0, Arr2.traverseTaskResult)((a) => a)(data);
646
- Arr2.isNonEmpty = (data) => isNonEmptyList(data);
901
+ Arr2.Maybe = ArrMaybe;
902
+ Arr2.Result = ArrResult;
903
+ Arr2.Task = ArrTask;
904
+ Arr2.isNonEmpty = (data) => isNonEmptyArr(data);
905
+ Arr2.prepend = (value) => (data) => [value, ...data];
906
+ Arr2.append = (value) => (data) => [...data, value];
647
907
  Arr2.size = (data) => data.length;
648
908
  Arr2.some = (predicate) => (data) => {
649
909
  const n = data.length;
@@ -719,6 +979,7 @@ var Arr;
719
979
  const i = Math.max(0, index);
720
980
  return [data.slice(0, i), data.slice(i)];
721
981
  };
982
+ Arr2.NonEmpty = ArrNonEmpty;
722
983
  })(Arr || (Arr = {}));
723
984
 
724
985
  // src/Data/Dict.ts
@@ -928,25 +1189,78 @@ var Num;
928
1189
  })(Num || (Num = {}));
929
1190
 
930
1191
  // src/Data/Rec.ts
1192
+ var _isNonEmpty = (data) => Object.keys(data).length > 0;
1193
+ var RecMaybe;
1194
+ ((RecMaybe2) => {
1195
+ RecMaybe2.traverse = (f) => (data) => {
1196
+ const recordKeys = Object.keys(data);
1197
+ const result = {};
1198
+ for (let i = 0; i < recordKeys.length; i++) {
1199
+ const key = recordKeys[i];
1200
+ const maybeVal = f(data[key]);
1201
+ if (maybeVal.kind === "None") {
1202
+ return maybeVal;
1203
+ }
1204
+ Object.defineProperty(result, key, { value: maybeVal.value, writable: true, enumerable: true, configurable: true });
1205
+ }
1206
+ return { kind: "Some", value: result };
1207
+ };
1208
+ RecMaybe2.sequence = (data) => (0, RecMaybe2.traverse)((a) => a)(data);
1209
+ })(RecMaybe || (RecMaybe = {}));
1210
+ var RecResult;
1211
+ ((RecResult2) => {
1212
+ RecResult2.traverse = (f) => (data) => {
1213
+ const recordKeys = Object.keys(data);
1214
+ const result = {};
1215
+ for (let i = 0; i < recordKeys.length; i++) {
1216
+ const key = recordKeys[i];
1217
+ const res = f(data[key]);
1218
+ if (res.kind === "Err") {
1219
+ return res;
1220
+ }
1221
+ Object.defineProperty(result, key, { value: res.value, writable: true, enumerable: true, configurable: true });
1222
+ }
1223
+ return { kind: "Ok", value: result };
1224
+ };
1225
+ RecResult2.sequence = (data) => (0, RecResult2.traverse)((a) => a)(data);
1226
+ })(RecResult || (RecResult = {}));
1227
+ var RecNonEmpty;
1228
+ ((RecNonEmpty2) => {
1229
+ RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
1230
+ RecNonEmpty2.fromRecord = (data) => _isNonEmpty(data) ? Maybe.some(data) : Maybe.none();
1231
+ RecNonEmpty2.keys = (data) => Object.keys(data);
1232
+ RecNonEmpty2.values = (data) => Object.values(data);
1233
+ RecNonEmpty2.entries = (data) => Object.entries(data);
1234
+ RecNonEmpty2.reduce = (f) => (data) => {
1235
+ const recordVals = Object.values(data);
1236
+ return recordVals.reduce(f);
1237
+ };
1238
+ })(RecNonEmpty || (RecNonEmpty = {}));
931
1239
  var Rec;
932
1240
  ((Rec2) => {
933
- Rec2.map = (f) => (data) => {
934
- const keys2 = Object.keys(data);
935
- const vals = Object.values(data);
1241
+ Rec2.isNonEmpty = _isNonEmpty;
1242
+ Rec2.map = (f) => ((data) => {
1243
+ const recordKeys = Object.keys(data);
1244
+ const recordValues = Object.values(data);
936
1245
  const result = Object.create(Object.getPrototypeOf(data));
937
- for (let i = 0; i < keys2.length; i++) {
938
- Object.defineProperty(result, keys2[i], { value: f(vals[i]), writable: true, enumerable: true, configurable: true });
1246
+ for (let i = 0; i < recordKeys.length; i++) {
1247
+ Object.defineProperty(result, recordKeys[i], {
1248
+ value: f(recordValues[i]),
1249
+ writable: true,
1250
+ enumerable: true,
1251
+ configurable: true
1252
+ });
939
1253
  }
940
1254
  return result;
941
- };
1255
+ });
942
1256
  Rec2.filterMap = (f) => (data) => {
943
- const keys2 = Object.keys(data);
944
- const vals = Object.values(data);
1257
+ const recordKeys = Object.keys(data);
1258
+ const recordValues = Object.values(data);
945
1259
  const result = Object.create(Object.getPrototypeOf(data));
946
- for (let i = 0; i < keys2.length; i++) {
947
- const maybeVal = f(vals[i]);
1260
+ for (let i = 0; i < recordKeys.length; i++) {
1261
+ const maybeVal = f(recordValues[i]);
948
1262
  if (maybeVal.kind === "Some") {
949
- Object.defineProperty(result, keys2[i], {
1263
+ Object.defineProperty(result, recordKeys[i], {
950
1264
  value: maybeVal.value,
951
1265
  writable: true,
952
1266
  enumerable: true,
@@ -956,27 +1270,32 @@ var Rec;
956
1270
  }
957
1271
  return result;
958
1272
  };
959
- Rec2.mapWithKey = (f) => (data) => {
960
- const keys2 = Object.keys(data);
961
- const vals = Object.values(data);
1273
+ Rec2.mapWithKey = (f) => ((data) => {
1274
+ const recordKeys = Object.keys(data);
1275
+ const recordValues = Object.values(data);
962
1276
  const result = Object.create(Object.getPrototypeOf(data));
963
- for (let i = 0; i < keys2.length; i++) {
964
- Object.defineProperty(result, keys2[i], {
965
- value: f(keys2[i], vals[i]),
1277
+ for (let i = 0; i < recordKeys.length; i++) {
1278
+ Object.defineProperty(result, recordKeys[i], {
1279
+ value: f(recordKeys[i], recordValues[i]),
966
1280
  writable: true,
967
1281
  enumerable: true,
968
1282
  configurable: true
969
1283
  });
970
1284
  }
971
1285
  return result;
972
- };
1286
+ });
973
1287
  Rec2.filter = (predicate) => (data) => {
974
- const keys2 = Object.keys(data);
975
- const vals = Object.values(data);
1288
+ const recordKeys = Object.keys(data);
1289
+ const recordValues = Object.values(data);
976
1290
  const result = Object.create(Object.getPrototypeOf(data));
977
- for (let i = 0; i < keys2.length; i++) {
978
- if (predicate(vals[i])) {
979
- Object.defineProperty(result, keys2[i], { value: vals[i], writable: true, enumerable: true, configurable: true });
1291
+ for (let i = 0; i < recordKeys.length; i++) {
1292
+ if (predicate(recordValues[i])) {
1293
+ Object.defineProperty(result, recordKeys[i], {
1294
+ value: recordValues[i],
1295
+ writable: true,
1296
+ enumerable: true,
1297
+ configurable: true
1298
+ });
980
1299
  }
981
1300
  }
982
1301
  return result;
@@ -1053,6 +1372,9 @@ var Rec;
1053
1372
  }
1054
1373
  return result;
1055
1374
  };
1375
+ Rec2.Maybe = RecMaybe;
1376
+ Rec2.Result = RecResult;
1377
+ Rec2.NonEmpty = RecNonEmpty;
1056
1378
  })(Rec || (Rec = {}));
1057
1379
 
1058
1380
  // src/Data/Str.ts
package/dist/utils.mjs CHANGED
@@ -5,9 +5,9 @@ import {
5
5
  Rec,
6
6
  Str,
7
7
  Uniq
8
- } from "./chunk-6VYLZTAM.mjs";
9
- import "./chunk-OAP765G3.mjs";
10
- import "./chunk-GBB6LVLI.mjs";
8
+ } from "./chunk-W6RWKBDX.mjs";
9
+ import "./chunk-CHRXZIJU.mjs";
10
+ import "./chunk-74JKKJ4R.mjs";
11
11
  export {
12
12
  Arr,
13
13
  Dict,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlozgachev/pipelined",
3
- "version": "0.42.0",
3
+ "version": "0.43.0",
4
4
  "description": "Opinionated functional abstractions for TypeScript",
5
5
  "license": "BSD-3-Clause",
6
6
  "homepage": "https://pipelined.lozgachev.dev",
@@ -77,5 +77,5 @@
77
77
  "typescript": "6.0.3",
78
78
  "vitest": "4.1.7"
79
79
  },
80
- "packageManager": "pnpm@11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f"
80
+ "packageManager": "pnpm@11.6.0+sha512.9a36518224080c6fe5165afdcfe79bfa118c29be703f3f462b1e32efe1e98e47e8750b148e08286250aad4113cc7993ca413c4e2cd447752708c2ee5751bc95f"
81
81
  }