@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.
- package/README.md +4 -4
- package/dist/composition.cjs +13 -1
- package/dist/composition.d.cts +9 -0
- package/dist/composition.d.ts +9 -0
- package/dist/{chunk-JSG7SFXS.js → composition.mjs} +56 -19
- package/dist/core.cjs +13 -1
- package/dist/core.d.cts +7 -0
- package/dist/core.d.ts +7 -0
- package/dist/{chunk-VYHAA4KO.js → core.mjs} +41 -7
- package/dist/data.cjs +53 -45
- package/dist/{chunk-FVWJMPQI.js → data.mjs} +314 -52
- package/dist/index.cjs +79 -47
- package/dist/index.mjs +4464 -0
- package/dist/{chunk-OIIOGDHK.js → types.mjs} +2 -3
- package/package.json +41 -21
- package/dist/composition.js +0 -65
- package/dist/core.js +0 -49
- package/dist/data.js +0 -22
- package/dist/index.js +0 -136
- package/dist/types.js +0 -10
|
@@ -1,9 +1,264 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
1062
|
-
|
|
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 (
|
|
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
|
-
|
|
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 (
|
|
1078
|
-
const
|
|
1079
|
-
|
|
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
|
-
|
|
1152
|
-
|
|
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
|
-
|
|
1166
|
-
|
|
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,
|