@nlozgachev/pipelined 0.58.0 → 0.60.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.
@@ -1,9 +1,264 @@
1
- import {
2
- Deferred,
3
- Maybe,
4
- Result,
5
- isNonEmptyArr
6
- } from "./chunk-VYHAA4KO.js";
1
+ // src/Core/Deferred.ts
2
+ var Deferred;
3
+ ((Deferred2) => {
4
+ let from;
5
+ ((from2) => {
6
+ from2.Promise = (p) => (
7
+ // eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
8
+ { then: ((f) => p.then(f)) }
9
+ );
10
+ })(from = Deferred2.from || (Deferred2.from = {}));
11
+ let to;
12
+ ((to2) => {
13
+ to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
14
+ })(to = Deferred2.to || (Deferred2.to = {}));
15
+ Deferred2.all = (deferreds) => from.Promise(globalThis.Promise.all(deferreds.map((d) => to.Promise(d))));
16
+ Deferred2.race = (deferreds) => from.Promise(globalThis.Promise.race(deferreds.map((d) => to.Promise(d))));
17
+ })(Deferred || (Deferred = {}));
18
+
19
+ // src/Core/Maybe.ts
20
+ var _none = { kind: "None" };
21
+ var Maybe;
22
+ ((Maybe2) => {
23
+ let make;
24
+ ((make2) => {
25
+ make2.some = (value) => ({ kind: "Some", value });
26
+ make2.none = () => _none;
27
+ })(make = Maybe2.make || (Maybe2.make = {}));
28
+ let is;
29
+ ((is2) => {
30
+ is2.some = (data) => data.kind === "Some";
31
+ is2.none = (data) => data.kind === "None";
32
+ })(is = Maybe2.is || (Maybe2.is = {}));
33
+ let to;
34
+ ((to2) => {
35
+ to2.nullable = (data) => is.some(data) ? data.value : null;
36
+ to2.undefined = (data) => is.some(data) ? data.value : globalThis.undefined;
37
+ to2.Result = (onNone) => (data) => is.some(data) ? Result.make.ok(data.value) : Result.make.err(onNone());
38
+ })(to = Maybe2.to || (Maybe2.to = {}));
39
+ let from;
40
+ ((from2) => {
41
+ from2.nullable = (value) => value === null || value === void 0 ? make.none() : make.some(value);
42
+ from2.Predicate = (pred) => (a) => pred(a) ? make.some(a) : make.none();
43
+ from2.Result = (data) => Result.is.ok(data) ? make.some(data.value) : make.none();
44
+ })(from = Maybe2.from || (Maybe2.from = {}));
45
+ Maybe2.map = (f) => (data) => is.some(data) ? make.some(f(data.value)) : data;
46
+ Maybe2.chain = (f) => (data) => is.some(data) ? f(data.value) : data;
47
+ Maybe2.fold = (onNone, onSome) => (data) => is.some(data) ? onSome(data.value) : onNone();
48
+ Maybe2.match = (cases) => (data) => is.some(data) ? cases.some(data.value) : cases.none();
49
+ Maybe2.getOrElse = (defaultValue) => (data) => is.some(data) ? data.value : defaultValue();
50
+ Maybe2.tap = (f) => (data) => {
51
+ if (is.some(data)) {
52
+ f(data.value);
53
+ }
54
+ return data;
55
+ };
56
+ Maybe2.filter = (predicate) => (data) => is.some(data) ? predicate(data.value) ? data : make.none() : data;
57
+ Maybe2.recover = (fallback) => (data) => is.some(data) ? data : fallback();
58
+ Maybe2.ap = (arg) => (data) => is.some(data) && is.some(arg) ? make.some(data.value(arg.value)) : make.none();
59
+ Maybe2.bindTo = (key) => (data) => (0, Maybe2.map)((a) => ({ [key]: a }))(data);
60
+ Maybe2.bind = (key, f) => (data) => (0, Maybe2.chain)(
61
+ (a) => (0, Maybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
62
+ )(data);
63
+ Maybe2.struct = (fields) => {
64
+ const result = {};
65
+ for (const key in fields) {
66
+ if (Object.hasOwn(fields, key)) {
67
+ const res = fields[key];
68
+ if (is.none(res)) {
69
+ return res;
70
+ }
71
+ result[key] = res.value;
72
+ }
73
+ }
74
+ return make.some(result);
75
+ };
76
+ Maybe2.transposeResult = (data) => is.none(data) ? Result.make.ok(make.none()) : Result.is.ok(data.value) ? Result.make.ok(make.some(data.value.value)) : Result.make.err(data.value.error);
77
+ })(Maybe || (Maybe = {}));
78
+
79
+ // src/Core/Result.ts
80
+ var Result;
81
+ ((Result2) => {
82
+ let make;
83
+ ((make2) => {
84
+ make2.ok = (value) => ({ kind: "Ok", value });
85
+ make2.err = (e) => ({ kind: "Err", error: e });
86
+ })(make = Result2.make || (Result2.make = {}));
87
+ let is;
88
+ ((is2) => {
89
+ is2.ok = (data) => data.kind === "Ok";
90
+ is2.err = (data) => data.kind === "Err";
91
+ })(is = Result2.is || (Result2.is = {}));
92
+ Result2.tryCatch = (f, options) => {
93
+ try {
94
+ return make.ok(f());
95
+ } catch (error) {
96
+ return make.err(options.onError(error));
97
+ }
98
+ };
99
+ Result2.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
100
+ Result2.mapError = (f) => (data) => is.err(data) ? make.err(f(data.error)) : data;
101
+ Result2.chain = (f) => (data) => is.ok(data) ? f(data.value) : data;
102
+ Result2.fold = (onErr, onOk) => (data) => is.ok(data) ? onOk(data.value) : onErr(data.error);
103
+ Result2.match = (cases) => (data) => is.ok(data) ? cases.ok(data.value) : cases.err(data.error);
104
+ Result2.getOrElse = (defaultValue) => (data) => is.ok(data) ? data.value : defaultValue();
105
+ Result2.tap = (f) => (data) => {
106
+ if (is.ok(data)) {
107
+ f(data.value);
108
+ }
109
+ return data;
110
+ };
111
+ Result2.tapError = (f) => (data) => {
112
+ if (is.err(data)) {
113
+ f(data.error);
114
+ }
115
+ return data;
116
+ };
117
+ let from;
118
+ ((from2) => {
119
+ from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
120
+ from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
121
+ from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
122
+ from2.Validation = (combineErrors) => (val) => Validation.is.passed(val) ? make.ok(val.value) : make.err(combineErrors(val.errors));
123
+ })(from = Result2.from || (Result2.from = {}));
124
+ Result2.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
125
+ Result2.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
126
+ let to;
127
+ ((to2) => {
128
+ to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
129
+ to2.Validation = (data) => Validation.from.Result(data);
130
+ })(to = Result2.to || (Result2.to = {}));
131
+ Result2.transposeMaybe = (data) => is.err(data) ? Maybe.make.some(data) : Maybe.is.some(data.value) ? Maybe.make.some(make.ok(data.value.value)) : Maybe.make.none();
132
+ Result2.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
133
+ Result2.bindTo = (key) => (data) => (0, Result2.map)((a) => ({ [key]: a }))(data);
134
+ Result2.bind = (key, f) => (data) => (0, Result2.chain)(
135
+ (a) => (0, Result2.map)((b) => ({ ...a, [key]: b }))(f(a))
136
+ )(data);
137
+ Result2.struct = (fields) => {
138
+ const result = {};
139
+ for (const key in fields) {
140
+ if (Object.hasOwn(fields, key)) {
141
+ const res = fields[key];
142
+ if (is.err(res)) {
143
+ return res;
144
+ }
145
+ result[key] = res.value;
146
+ }
147
+ }
148
+ return make.ok(result);
149
+ };
150
+ Result2.ensure = (predicate, onFail) => (data) => is.err(data) ? data : predicate(data.value) ? data : make.err(onFail(data.value));
151
+ Result2.bimap = (onErr, onOk) => (data) => is.ok(data) ? make.ok(onOk(data.value)) : make.err(onErr(data.error));
152
+ })(Result || (Result = {}));
153
+
154
+ // src/internal/InternalTypes.ts
155
+ var isNonEmptyArr = (list) => list.length > 0;
156
+
157
+ // src/Core/Validation.ts
158
+ var Validation;
159
+ ((Validation2) => {
160
+ let make;
161
+ ((make2) => {
162
+ make2.passed = (value) => ({ kind: "Passed", value });
163
+ make2.failed = (error) => ({ kind: "Failed", errors: [error] });
164
+ make2.failedAll = (errors) => ({ kind: "Failed", errors });
165
+ })(make = Validation2.make || (Validation2.make = {}));
166
+ let is;
167
+ ((is2) => {
168
+ is2.passed = (data) => data.kind === "Passed";
169
+ is2.failed = (data) => data.kind === "Failed";
170
+ })(is = Validation2.is || (Validation2.is = {}));
171
+ Validation2.tryCatch = (f, options) => {
172
+ try {
173
+ return make.passed(f());
174
+ } catch (error) {
175
+ return make.failed(options.onError(error));
176
+ }
177
+ };
178
+ let from;
179
+ ((from2) => {
180
+ from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
181
+ from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.failed(onNull()) : make.passed(value);
182
+ from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.failed(onNone()) : make.passed(maybe.value);
183
+ from2.Result = (data) => data.kind === "Ok" ? make.passed(data.value) : make.failed(data.error);
184
+ })(from = Validation2.from || (Validation2.from = {}));
185
+ Validation2.map = (f) => (data) => is.passed(data) ? make.passed(f(data.value)) : data;
186
+ Validation2.mapError = (f) => (data) => is.failed(data) ? make.failedAll(data.errors.map(f)) : data;
187
+ Validation2.ap = (arg) => (data) => {
188
+ if (is.passed(data)) {
189
+ return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
190
+ }
191
+ return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
192
+ };
193
+ Validation2.apCustom = (concat) => (arg) => (data) => {
194
+ if (is.passed(data)) {
195
+ return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
196
+ }
197
+ return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll(concat(data.errors, arg.errors));
198
+ };
199
+ Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
200
+ Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
201
+ Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
202
+ Validation2.tap = (f) => (data) => {
203
+ if (is.passed(data)) {
204
+ f(data.value);
205
+ }
206
+ return data;
207
+ };
208
+ Validation2.tapError = (f) => (data) => {
209
+ if (is.failed(data)) {
210
+ f(data.errors);
211
+ }
212
+ return data;
213
+ };
214
+ Validation2.recover = (fallback) => (data) => is.passed(data) ? data : fallback(data.errors);
215
+ Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
216
+ let to;
217
+ ((to2) => {
218
+ function Result2(arg) {
219
+ if (typeof arg === "function") {
220
+ const combine = arg;
221
+ return (val) => is.passed(val) ? Result.make.ok(val.value) : Result.make.err(combine(val.errors));
222
+ }
223
+ return is.passed(arg) ? Result.make.ok(arg.value) : Result.make.err(arg.errors);
224
+ }
225
+ to2.Result = Result2;
226
+ to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
227
+ })(to = Validation2.to || (Validation2.to = {}));
228
+ Validation2.product = (first, second) => {
229
+ if (is.passed(first)) {
230
+ return is.passed(second) ? make.passed([first.value, second.value]) : make.failedAll(second.errors);
231
+ }
232
+ return is.passed(second) ? make.failedAll(first.errors) : make.failedAll([...first.errors, ...second.errors]);
233
+ };
234
+ Validation2.productAll = (data) => {
235
+ const values = [];
236
+ const errors = [];
237
+ for (const v of data) {
238
+ if (is.passed(v)) {
239
+ values.push(v.value);
240
+ } else {
241
+ errors.push(...v.errors);
242
+ }
243
+ }
244
+ return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(values);
245
+ };
246
+ Validation2.struct = (fields) => {
247
+ const record = {};
248
+ const errors = [];
249
+ for (const key in fields) {
250
+ if (Object.hasOwn(fields, key)) {
251
+ const val = fields[key];
252
+ if (is.passed(val)) {
253
+ record[key] = val.value;
254
+ } else {
255
+ errors.push(...val.errors);
256
+ }
257
+ }
258
+ }
259
+ return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(record);
260
+ };
261
+ })(Validation || (Validation = {}));
7
262
 
8
263
  // src/Data/Arr.ts
9
264
  var ArrMaybe;
@@ -187,7 +442,7 @@ var Arr;
187
442
  }
188
443
  return result;
189
444
  };
190
- Arr2.uniq = (data) => [...new Set(data)];
445
+ Arr2.uniq = (data) => data.length <= 1 ? data : [...new Set(data)];
191
446
  Arr2.uniqBy = (f) => (data) => {
192
447
  const seen = /* @__PURE__ */ new Set();
193
448
  const result = [];
@@ -842,10 +1097,20 @@ var Num;
842
1097
 
843
1098
  // src/Data/Rec.ts
844
1099
  var _isNonEmpty = (data) => Object.keys(data).length > 0;
1100
+ var _setKey = (record, key, value) => {
1101
+ if (key === "__proto__") {
1102
+ Object.defineProperty(record, key, { value, writable: true, enumerable: true, configurable: true });
1103
+ } else {
1104
+ record[key] = value;
1105
+ }
1106
+ };
845
1107
  var RecMaybe;
846
1108
  ((RecMaybe2) => {
847
1109
  RecMaybe2.traverse = (f) => (data) => {
848
1110
  const recordKeys = Object.keys(data);
1111
+ if (recordKeys.length === 0) {
1112
+ return { kind: "Some", value: {} };
1113
+ }
849
1114
  const result = {};
850
1115
  for (let i = 0; i < recordKeys.length; i++) {
851
1116
  const key = recordKeys[i];
@@ -853,7 +1118,7 @@ var RecMaybe;
853
1118
  if (maybeVal.kind === "None") {
854
1119
  return maybeVal;
855
1120
  }
856
- Object.defineProperty(result, key, { value: maybeVal.value, writable: true, enumerable: true, configurable: true });
1121
+ _setKey(result, key, maybeVal.value);
857
1122
  }
858
1123
  return { kind: "Some", value: result };
859
1124
  };
@@ -870,7 +1135,7 @@ var RecResult;
870
1135
  if (res.kind === "Err") {
871
1136
  return res;
872
1137
  }
873
- Object.defineProperty(result, key, { value: res.value, writable: true, enumerable: true, configurable: true });
1138
+ _setKey(result, key, res.value);
874
1139
  }
875
1140
  return { kind: "Ok", value: result };
876
1141
  };
@@ -923,12 +1188,7 @@ var Rec;
923
1188
  for (let i = 0; i < recordKeys.length; i++) {
924
1189
  const maybeVal = f(recordValues[i]);
925
1190
  if (maybeVal.kind === "Some") {
926
- Object.defineProperty(result, recordKeys[i], {
927
- value: maybeVal.value,
928
- writable: true,
929
- enumerable: true,
930
- configurable: true
931
- });
1191
+ _setKey(result, recordKeys[i], maybeVal.value);
932
1192
  }
933
1193
  }
934
1194
  return result;
@@ -939,16 +1199,7 @@ var Rec;
939
1199
  const result = Object.create(Object.getPrototypeOf(data));
940
1200
  for (let i = 0; i < recordKeys.length; i++) {
941
1201
  const key = recordKeys[i];
942
- if (key === "__proto__") {
943
- Object.defineProperty(result, "__proto__", {
944
- value: f(key, recordValues[i]),
945
- writable: true,
946
- enumerable: true,
947
- configurable: true
948
- });
949
- } else {
950
- result[key] = f(key, recordValues[i]);
951
- }
1202
+ _setKey(result, key, f(key, recordValues[i]));
952
1203
  }
953
1204
  return result;
954
1205
  };
@@ -958,12 +1209,7 @@ var Rec;
958
1209
  const result = Object.create(Object.getPrototypeOf(data));
959
1210
  for (let i = 0; i < recordKeys.length; i++) {
960
1211
  if (predicate(recordValues[i])) {
961
- Object.defineProperty(result, recordKeys[i], {
962
- value: recordValues[i],
963
- writable: true,
964
- enumerable: true,
965
- configurable: true
966
- });
1212
+ _setKey(result, recordKeys[i], recordValues[i]);
967
1213
  }
968
1214
  }
969
1215
  return result;
@@ -972,7 +1218,7 @@ var Rec;
972
1218
  const result = {};
973
1219
  for (const [k, v] of Object.entries(data)) {
974
1220
  if (predicate(k, v)) {
975
- Object.defineProperty(result, k, { value: v, writable: true, enumerable: true, configurable: true });
1221
+ _setKey(result, k, v);
976
1222
  }
977
1223
  }
978
1224
  return result;
@@ -992,7 +1238,7 @@ var Rec;
992
1238
  if (Object.hasOwn(result, key)) {
993
1239
  result[key].push(item);
994
1240
  } else {
995
- Object.defineProperty(result, key, { value: [item], writable: true, enumerable: true, configurable: true });
1241
+ _setKey(result, key, [item]);
996
1242
  }
997
1243
  }
998
1244
  return result;
@@ -1001,7 +1247,7 @@ var Rec;
1001
1247
  const result = {};
1002
1248
  for (const key of pickedKeys) {
1003
1249
  if (Object.hasOwn(data, key)) {
1004
- Object.defineProperty(result, key, { value: data[key], writable: true, enumerable: true, configurable: true });
1250
+ _setKey(result, key, data[key]);
1005
1251
  }
1006
1252
  }
1007
1253
  return result;
@@ -1011,12 +1257,7 @@ var Rec;
1011
1257
  const result = {};
1012
1258
  for (const key of Object.keys(data)) {
1013
1259
  if (!omitSet.has(key)) {
1014
- Object.defineProperty(result, key, {
1015
- value: data[key],
1016
- writable: true,
1017
- enumerable: true,
1018
- configurable: true
1019
- });
1260
+ _setKey(result, key, data[key]);
1020
1261
  }
1021
1262
  }
1022
1263
  return result;
@@ -1057,26 +1298,42 @@ var Rec;
1057
1298
  Rec2.mergeWith = mergeWith;
1058
1299
  Rec2.size = (data) => Object.keys(data).length;
1059
1300
  Rec2.mapKeys = (f) => (data) => {
1301
+ const keys2 = Object.keys(data);
1302
+ if (keys2.length === 0) {
1303
+ return data;
1304
+ }
1060
1305
  const result = {};
1061
- for (const [k, v] of Object.entries(data)) {
1062
- Object.defineProperty(result, f(k), { value: v, writable: true, enumerable: true, configurable: true });
1306
+ for (let i = 0; i < keys2.length; i++) {
1307
+ const k = keys2[i];
1308
+ _setKey(result, f(k), data[k]);
1063
1309
  }
1064
1310
  return result;
1065
1311
  };
1066
1312
  Rec2.compact = (data) => {
1313
+ const keys2 = Object.keys(data);
1314
+ if (keys2.length === 0) {
1315
+ return {};
1316
+ }
1067
1317
  const result = {};
1068
- for (const [k, v] of Object.entries(data)) {
1318
+ for (let i = 0; i < keys2.length; i++) {
1319
+ const k = keys2[i];
1320
+ const v = data[k];
1069
1321
  if (v.kind === "Some") {
1070
- Object.defineProperty(result, k, { value: v.value, writable: true, enumerable: true, configurable: true });
1322
+ _setKey(result, k, v.value);
1071
1323
  }
1072
1324
  }
1073
1325
  return result;
1074
1326
  };
1075
1327
  Rec2.mapEntries = (f) => (data) => {
1328
+ const keys2 = Object.keys(data);
1329
+ if (keys2.length === 0) {
1330
+ return {};
1331
+ }
1076
1332
  const result = {};
1077
- for (const [k, v] of Object.entries(data)) {
1078
- const [newKey, newVal] = f(k, v);
1079
- Object.defineProperty(result, newKey, { value: newVal, writable: true, enumerable: true, configurable: true });
1333
+ for (let i = 0; i < keys2.length; i++) {
1334
+ const k = keys2[i];
1335
+ const [newKey, newVal] = f(k, data[k]);
1336
+ _setKey(result, newKey, newVal);
1080
1337
  }
1081
1338
  return result;
1082
1339
  };
@@ -1148,8 +1405,11 @@ var Str;
1148
1405
  * ```
1149
1406
  */
1150
1407
  int: (s) => {
1151
- const n = parseInt(s, 10);
1152
- return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
1408
+ if (s.length === 0) {
1409
+ return Maybe.make.none();
1410
+ }
1411
+ const n = Number.parseInt(s, 10);
1412
+ return Number.isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
1153
1413
  },
1154
1414
  /**
1155
1415
  * Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
@@ -1162,8 +1422,11 @@ var Str;
1162
1422
  * ```
1163
1423
  */
1164
1424
  float: (s) => {
1165
- const n = parseFloat(s);
1166
- return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
1425
+ if (s.length === 0) {
1426
+ return Maybe.make.none();
1427
+ }
1428
+ const n = Number.parseFloat(s);
1429
+ return Number.isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
1167
1430
  }
1168
1431
  };
1169
1432
  Str2.parseJson = (s) => {
@@ -1311,7 +1574,6 @@ var Uniq;
1311
1574
  })(to = Uniq2.to || (Uniq2.to = {}));
1312
1575
  Uniq2.NonEmpty = UniqNonEmpty;
1313
1576
  })(Uniq || (Uniq = {}));
1314
-
1315
1577
  export {
1316
1578
  Arr,
1317
1579
  BigNum,