@nlozgachev/pipelined 0.44.0 → 0.46.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 +12 -6
- package/dist/{InternalTypes-BL23H8Qr.d.mts → InternalTypes-CLE7qlOc.d.mts} +33 -28
- package/dist/{InternalTypes-7o9-yrHq.d.ts → InternalTypes-Mssktd7z.d.ts} +33 -28
- package/dist/{Validation-DM2eh6wj.d.ts → Validation-BMsvixWH.d.ts} +475 -443
- package/dist/{Validation-Dz70wtcG.d.mts → Validation-v38R0qH-.d.mts} +475 -443
- package/dist/{chunk-X6XQX3OZ.mjs → chunk-KOYYDQH4.mjs} +2 -2
- package/dist/{chunk-ND476266.mjs → chunk-VSU36S2K.mjs} +432 -309
- package/dist/{chunk-LKTOK5IT.mjs → chunk-W2L244AS.mjs} +188 -73
- package/dist/{chunk-74JKKJ4R.mjs → chunk-XTVF5R6R.mjs} +8 -5
- package/dist/composition.d.mts +10 -10
- package/dist/composition.d.ts +10 -10
- package/dist/composition.js +9 -6
- package/dist/composition.mjs +2 -2
- package/dist/core.d.mts +453 -402
- package/dist/core.d.ts +453 -402
- package/dist/core.js +439 -313
- package/dist/core.mjs +2 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +627 -386
- package/dist/index.mjs +4 -4
- package/dist/types.d.mts +23 -21
- package/dist/types.d.ts +23 -21
- package/dist/types.js +8 -5
- package/dist/types.mjs +1 -1
- package/dist/utils.d.mts +522 -370
- package/dist/utils.d.ts +522 -370
- package/dist/utils.js +434 -243
- package/dist/utils.mjs +3 -3
- package/package.json +15 -5
package/dist/utils.js
CHANGED
|
@@ -32,57 +32,75 @@ module.exports = __toCommonJS(Data_exports);
|
|
|
32
32
|
// src/Core/Deferred.ts
|
|
33
33
|
var Deferred;
|
|
34
34
|
((Deferred2) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
let from;
|
|
36
|
+
((from2) => {
|
|
37
|
+
from2.Promise = (p) => (
|
|
38
|
+
// eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
|
|
39
|
+
{ then: ((f) => p.then(f)) }
|
|
40
|
+
);
|
|
41
|
+
})(from = Deferred2.from || (Deferred2.from = {}));
|
|
42
|
+
let to;
|
|
43
|
+
((to2) => {
|
|
44
|
+
to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
|
|
45
|
+
})(to = Deferred2.to || (Deferred2.to = {}));
|
|
40
46
|
})(Deferred || (Deferred = {}));
|
|
41
47
|
|
|
42
48
|
// src/Core/Maybe.ts
|
|
43
49
|
var _none = { kind: "None" };
|
|
44
50
|
var Maybe;
|
|
45
|
-
((
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
51
|
+
((Maybe3) => {
|
|
52
|
+
let make;
|
|
53
|
+
((make2) => {
|
|
54
|
+
make2.some = (value) => ({ kind: "Some", value });
|
|
55
|
+
make2.none = () => _none;
|
|
56
|
+
})(make = Maybe3.make || (Maybe3.make = {}));
|
|
57
|
+
let is;
|
|
58
|
+
((is2) => {
|
|
59
|
+
is2.some = (data) => data.kind === "Some";
|
|
60
|
+
is2.none = (data) => data.kind === "None";
|
|
61
|
+
})(is = Maybe3.is || (Maybe3.is = {}));
|
|
62
|
+
let to;
|
|
63
|
+
((to2) => {
|
|
64
|
+
to2.nullable = (data) => is.some(data) ? data.value : null;
|
|
65
|
+
to2.undefined = (data) => is.some(data) ? data.value : globalThis.undefined;
|
|
66
|
+
to2.Result = (onNone) => (data) => is.some(data) ? Result.make.ok(data.value) : Result.make.err(onNone());
|
|
67
|
+
})(to = Maybe3.to || (Maybe3.to = {}));
|
|
68
|
+
let from;
|
|
69
|
+
((from2) => {
|
|
70
|
+
from2.nullable = (value) => value === null || value === void 0 ? make.none() : make.some(value);
|
|
71
|
+
from2.Predicate = (pred) => (a) => pred(a) ? make.some(a) : make.none();
|
|
72
|
+
from2.Result = (data) => Result.is.ok(data) ? make.some(data.value) : make.none();
|
|
73
|
+
})(from = Maybe3.from || (Maybe3.from = {}));
|
|
74
|
+
Maybe3.map = (f) => (data) => is.some(data) ? make.some(f(data.value)) : data;
|
|
75
|
+
Maybe3.chain = (f) => (data) => is.some(data) ? f(data.value) : data;
|
|
76
|
+
Maybe3.fold = (onNone, onSome) => (data) => is.some(data) ? onSome(data.value) : onNone();
|
|
77
|
+
Maybe3.match = (cases) => (data) => is.some(data) ? cases.some(data.value) : cases.none();
|
|
78
|
+
Maybe3.getOrElse = (defaultValue) => (data) => is.some(data) ? data.value : defaultValue();
|
|
79
|
+
Maybe3.tap = (f) => (data) => {
|
|
80
|
+
if (is.some(data)) {
|
|
63
81
|
f(data.value);
|
|
64
82
|
}
|
|
65
83
|
return data;
|
|
66
84
|
};
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
(a) => (0,
|
|
85
|
+
Maybe3.filter = (predicate) => (data) => is.some(data) ? predicate(data.value) ? data : make.none() : data;
|
|
86
|
+
Maybe3.recover = (fallback) => (data) => is.some(data) ? data : fallback();
|
|
87
|
+
Maybe3.ap = (arg) => (data) => is.some(data) && is.some(arg) ? make.some(data.value(arg.value)) : make.none();
|
|
88
|
+
Maybe3.bindTo = (key) => (data) => (0, Maybe3.map)((a) => ({ [key]: a }))(data);
|
|
89
|
+
Maybe3.bind = (key, f) => (data) => (0, Maybe3.chain)(
|
|
90
|
+
(a) => (0, Maybe3.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
73
91
|
)(data);
|
|
74
|
-
|
|
92
|
+
Maybe3.struct = (fields) => {
|
|
75
93
|
const result = {};
|
|
76
94
|
for (const key in fields) {
|
|
77
95
|
if (Object.hasOwn(fields, key)) {
|
|
78
96
|
const res = fields[key];
|
|
79
|
-
if (
|
|
97
|
+
if (is.none(res)) {
|
|
80
98
|
return res;
|
|
81
99
|
}
|
|
82
100
|
result[key] = res.value;
|
|
83
101
|
}
|
|
84
102
|
}
|
|
85
|
-
return
|
|
103
|
+
return make.some(result);
|
|
86
104
|
};
|
|
87
105
|
})(Maybe || (Maybe = {}));
|
|
88
106
|
|
|
@@ -102,11 +120,14 @@ var Duration;
|
|
|
102
120
|
Duration2.minutes = (m) => wrap(m * 60 * 1e3);
|
|
103
121
|
Duration2.hours = (h) => wrap(h * 60 * 60 * 1e3);
|
|
104
122
|
Duration2.days = (d) => wrap(d * 24 * 60 * 60 * 1e3);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
123
|
+
let to;
|
|
124
|
+
((to2) => {
|
|
125
|
+
to2.milliseconds = (d) => Brand.unwrap(d);
|
|
126
|
+
to2.seconds = (d) => Brand.unwrap(d) / 1e3;
|
|
127
|
+
to2.minutes = (d) => Brand.unwrap(d) / (60 * 1e3);
|
|
128
|
+
to2.hours = (d) => Brand.unwrap(d) / (60 * 60 * 1e3);
|
|
129
|
+
to2.days = (d) => Brand.unwrap(d) / (24 * 60 * 60 * 1e3);
|
|
130
|
+
})(to = Duration2.to || (Duration2.to = {}));
|
|
110
131
|
Duration2.add = (other) => (self) => wrap(Brand.unwrap(self) + Brand.unwrap(other));
|
|
111
132
|
Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
|
|
112
133
|
})(Duration || (Duration = {}));
|
|
@@ -114,49 +135,61 @@ var Duration;
|
|
|
114
135
|
// src/Core/Result.ts
|
|
115
136
|
var Result;
|
|
116
137
|
((Result3) => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
138
|
+
let make;
|
|
139
|
+
((make2) => {
|
|
140
|
+
make2.ok = (value) => ({ kind: "Ok", value });
|
|
141
|
+
make2.err = (e) => ({ kind: "Err", error: e });
|
|
142
|
+
})(make = Result3.make || (Result3.make = {}));
|
|
143
|
+
let is;
|
|
144
|
+
((is2) => {
|
|
145
|
+
is2.ok = (data) => data.kind === "Ok";
|
|
146
|
+
is2.err = (data) => data.kind === "Err";
|
|
147
|
+
})(is = Result3.is || (Result3.is = {}));
|
|
121
148
|
Result3.tryCatch = (f, onError) => {
|
|
122
149
|
try {
|
|
123
|
-
return
|
|
150
|
+
return make.ok(f());
|
|
124
151
|
} catch (error) {
|
|
125
|
-
return
|
|
152
|
+
return make.err(onError(error));
|
|
126
153
|
}
|
|
127
154
|
};
|
|
128
|
-
Result3.map = (f) => (data) =>
|
|
129
|
-
Result3.mapError = (f) => (data) =>
|
|
130
|
-
Result3.chain = (f) => (data) =>
|
|
131
|
-
Result3.fold = (onErr, onOk) => (data) =>
|
|
132
|
-
Result3.match = (cases) => (data) =>
|
|
133
|
-
Result3.getOrElse = (defaultValue) => (data) =>
|
|
155
|
+
Result3.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
|
|
156
|
+
Result3.mapError = (f) => (data) => is.err(data) ? make.err(f(data.error)) : data;
|
|
157
|
+
Result3.chain = (f) => (data) => is.ok(data) ? f(data.value) : data;
|
|
158
|
+
Result3.fold = (onErr, onOk) => (data) => is.ok(data) ? onOk(data.value) : onErr(data.error);
|
|
159
|
+
Result3.match = (cases) => (data) => is.ok(data) ? cases.ok(data.value) : cases.err(data.error);
|
|
160
|
+
Result3.getOrElse = (defaultValue) => (data) => is.ok(data) ? data.value : defaultValue();
|
|
134
161
|
Result3.tap = (f) => (data) => {
|
|
135
|
-
if (
|
|
162
|
+
if (is.ok(data)) {
|
|
136
163
|
f(data.value);
|
|
137
164
|
}
|
|
138
165
|
return data;
|
|
139
166
|
};
|
|
140
167
|
Result3.tapError = (f) => (data) => {
|
|
141
|
-
if (
|
|
168
|
+
if (is.err(data)) {
|
|
142
169
|
f(data.error);
|
|
143
170
|
}
|
|
144
171
|
return data;
|
|
145
172
|
};
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Result3.
|
|
173
|
+
let from;
|
|
174
|
+
((from2) => {
|
|
175
|
+
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
|
|
176
|
+
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
|
|
177
|
+
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
|
|
178
|
+
from2.throwable = (f, onError) => (...args) => {
|
|
179
|
+
try {
|
|
180
|
+
return make.ok(f(...args));
|
|
181
|
+
} catch (error) {
|
|
182
|
+
return make.err(onError(error));
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
})(from = Result3.from || (Result3.from = {}));
|
|
186
|
+
Result3.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
|
|
187
|
+
Result3.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
|
|
188
|
+
let to;
|
|
189
|
+
((to2) => {
|
|
190
|
+
to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
191
|
+
})(to = Result3.to || (Result3.to = {}));
|
|
192
|
+
Result3.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
|
|
160
193
|
Result3.bindTo = (key) => (data) => (0, Result3.map)((a) => ({ [key]: a }))(data);
|
|
161
194
|
Result3.bind = (key, f) => (data) => (0, Result3.chain)(
|
|
162
195
|
(a) => (0, Result3.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
@@ -166,30 +199,37 @@ var Result;
|
|
|
166
199
|
for (const key in fields) {
|
|
167
200
|
if (Object.hasOwn(fields, key)) {
|
|
168
201
|
const res = fields[key];
|
|
169
|
-
if (
|
|
202
|
+
if (is.err(res)) {
|
|
170
203
|
return res;
|
|
171
204
|
}
|
|
172
205
|
result[key] = res.value;
|
|
173
206
|
}
|
|
174
207
|
}
|
|
175
|
-
return
|
|
208
|
+
return make.ok(result);
|
|
176
209
|
};
|
|
177
210
|
})(Result || (Result = {}));
|
|
178
211
|
|
|
179
212
|
// src/Core/TaskMaybe.ts
|
|
180
213
|
var TaskMaybe;
|
|
181
214
|
((TaskMaybe2) => {
|
|
182
|
-
TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
|
|
183
|
-
TaskMaybe2.none = () => Task.resolve(Maybe.none());
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
215
|
+
TaskMaybe2.some = (value) => Task.resolve(Maybe.make.some(value));
|
|
216
|
+
TaskMaybe2.none = () => Task.resolve(Maybe.make.none());
|
|
217
|
+
let from;
|
|
218
|
+
((from2) => {
|
|
219
|
+
from2.Maybe = (option) => Task.resolve(option);
|
|
220
|
+
from2.nullable = (value) => Task.resolve(Maybe.from.nullable(value));
|
|
221
|
+
from2.Result = (result) => Task.resolve(Result.to.Maybe(result));
|
|
222
|
+
from2.Task = (task) => Task.map(Maybe.make.some)(task);
|
|
223
|
+
})(from = TaskMaybe2.from || (TaskMaybe2.from = {}));
|
|
224
|
+
TaskMaybe2.tryCatch = (f) => Task.from.Promise(
|
|
225
|
+
(signal) => Promise.resolve(f(signal)).then(Maybe.make.some).catch(() => Maybe.make.none())
|
|
226
|
+
);
|
|
189
227
|
TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
|
|
190
|
-
TaskMaybe2.chain = (f) => (data) => Task.chain(
|
|
191
|
-
|
|
192
|
-
|
|
228
|
+
TaskMaybe2.chain = (f) => (data) => Task.chain(
|
|
229
|
+
(option) => Maybe.is.some(option) ? f(option.value) : Task.resolve(Maybe.make.none())
|
|
230
|
+
)(data);
|
|
231
|
+
TaskMaybe2.ap = (arg) => (data) => Task.from.Promise(
|
|
232
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
193
233
|
([of_, oa]) => Maybe.ap(oa)(of_)
|
|
194
234
|
)
|
|
195
235
|
);
|
|
@@ -198,25 +238,30 @@ var TaskMaybe;
|
|
|
198
238
|
TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
|
|
199
239
|
TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
|
|
200
240
|
TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
|
|
201
|
-
|
|
241
|
+
let to;
|
|
242
|
+
((to2) => {
|
|
243
|
+
to2.Result = (onNone) => (data) => Task.map(Maybe.to.Result(onNone))(data);
|
|
244
|
+
})(to = TaskMaybe2.to || (TaskMaybe2.to = {}));
|
|
202
245
|
TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
|
|
203
246
|
TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
|
|
204
247
|
(a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
205
248
|
)(data);
|
|
206
|
-
TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.
|
|
207
|
-
|
|
249
|
+
TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.is.none(maybe) ? fallback() : Task.resolve(maybe))(
|
|
250
|
+
data
|
|
251
|
+
);
|
|
252
|
+
TaskMaybe2.struct = (fields) => Task.from.Promise((signal) => {
|
|
208
253
|
const keys = Object.keys(fields);
|
|
209
|
-
const promises = keys.map((key) => Deferred.
|
|
254
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
210
255
|
return Promise.all(promises).then((results) => {
|
|
211
256
|
const record = {};
|
|
212
257
|
for (let i = 0; i < keys.length; i++) {
|
|
213
258
|
const res = results[i];
|
|
214
|
-
if (Maybe.
|
|
259
|
+
if (Maybe.is.none(res)) {
|
|
215
260
|
return res;
|
|
216
261
|
}
|
|
217
262
|
record[keys[i]] = res.value;
|
|
218
263
|
}
|
|
219
|
-
return Maybe.some(record);
|
|
264
|
+
return Maybe.make.some(record);
|
|
220
265
|
});
|
|
221
266
|
});
|
|
222
267
|
})(TaskMaybe || (TaskMaybe = {}));
|
|
@@ -224,28 +269,35 @@ var TaskMaybe;
|
|
|
224
269
|
// src/Core/TaskResult.ts
|
|
225
270
|
var TaskResult;
|
|
226
271
|
((TaskResult2) => {
|
|
227
|
-
TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
|
|
228
|
-
TaskResult2.err = (error) => Task.resolve(Result.err(error));
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
272
|
+
TaskResult2.ok = (value) => Task.resolve(Result.make.ok(value));
|
|
273
|
+
TaskResult2.err = (error) => Task.resolve(Result.make.err(error));
|
|
274
|
+
let from;
|
|
275
|
+
((from2) => {
|
|
276
|
+
from2.nullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.make.err(onNull()) : Result.make.ok(value));
|
|
277
|
+
from2.Maybe = (onNone) => (maybe) => Task.resolve(Maybe.is.none(maybe) ? Result.make.err(onNone()) : Result.make.ok(maybe.value));
|
|
278
|
+
from2.Result = (result) => Task.resolve(result);
|
|
279
|
+
from2.throwable = (f, onError) => (...args) => Task.from.Promise(
|
|
280
|
+
() => f(...args).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
281
|
+
);
|
|
282
|
+
})(from = TaskResult2.from || (TaskResult2.from = {}));
|
|
283
|
+
TaskResult2.tryCatch = (f, onError) => Task.from.Promise(
|
|
284
|
+
(signal) => Promise.resolve(f(signal)).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
285
|
+
);
|
|
234
286
|
TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
|
|
235
287
|
TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
|
|
236
|
-
TaskResult2.chain = (f) => (data) => Task.chain(
|
|
237
|
-
|
|
238
|
-
);
|
|
288
|
+
TaskResult2.chain = (f) => (data) => Task.chain(
|
|
289
|
+
(result) => Result.is.ok(result) ? f(result.value) : Task.resolve(Result.make.err(result.error))
|
|
290
|
+
)(data);
|
|
239
291
|
TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
|
|
240
292
|
TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
|
|
241
293
|
TaskResult2.recover = (fallback) => (data) => Task.chain(
|
|
242
|
-
(result) => Result.
|
|
294
|
+
(result) => Result.is.err(result) ? fallback(result.error) : Task.resolve(result)
|
|
243
295
|
)(data);
|
|
244
296
|
TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
|
|
245
297
|
TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
|
|
246
298
|
TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
|
|
247
|
-
TaskResult2.ap = (arg) => (data) => Task.from(
|
|
248
|
-
(signal) => Promise.all([Deferred.
|
|
299
|
+
TaskResult2.ap = (arg) => (data) => Task.from.Promise(
|
|
300
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
249
301
|
([of_, oa]) => Result.ap(oa)(of_)
|
|
250
302
|
)
|
|
251
303
|
);
|
|
@@ -254,19 +306,19 @@ var TaskResult;
|
|
|
254
306
|
TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
|
|
255
307
|
(a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
256
308
|
)(data);
|
|
257
|
-
TaskResult2.struct = (fields) => Task.from((signal) => {
|
|
309
|
+
TaskResult2.struct = (fields) => Task.from.Promise((signal) => {
|
|
258
310
|
const keys = Object.keys(fields);
|
|
259
|
-
const promises = keys.map((key) => Deferred.
|
|
311
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
260
312
|
return Promise.all(promises).then((results) => {
|
|
261
313
|
const record = {};
|
|
262
314
|
for (let i = 0; i < keys.length; i++) {
|
|
263
315
|
const res = results[i];
|
|
264
|
-
if (Result.
|
|
316
|
+
if (Result.is.err(res)) {
|
|
265
317
|
return res;
|
|
266
318
|
}
|
|
267
319
|
record[keys[i]] = res.value;
|
|
268
320
|
}
|
|
269
|
-
return Result.ok(record);
|
|
321
|
+
return Result.make.ok(record);
|
|
270
322
|
});
|
|
271
323
|
});
|
|
272
324
|
})(TaskResult || (TaskResult = {}));
|
|
@@ -277,19 +329,28 @@ var isNonEmptyArr = (list) => list.length > 0;
|
|
|
277
329
|
// src/Core/TaskValidation.ts
|
|
278
330
|
var TaskValidation;
|
|
279
331
|
((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
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
332
|
+
TaskValidation2.passed = (value) => Task.resolve(Validation.make.passed(value));
|
|
333
|
+
TaskValidation2.failed = (error) => Task.resolve(Validation.make.failed(error));
|
|
334
|
+
TaskValidation2.failedAll = (errors) => Task.resolve(Validation.make.failedAll(errors));
|
|
335
|
+
let from;
|
|
336
|
+
((from2) => {
|
|
337
|
+
from2.Validation = (validation) => Task.resolve(validation);
|
|
338
|
+
from2.nullable = (onNull) => (value) => Task.resolve(
|
|
339
|
+
value === null || value === void 0 ? Validation.make.failed(onNull()) : Validation.make.passed(value)
|
|
340
|
+
);
|
|
341
|
+
from2.Maybe = (onNone) => (maybe) => Task.resolve(
|
|
342
|
+
Maybe.is.none(maybe) ? Validation.make.failed(onNone()) : Validation.make.passed(maybe.value)
|
|
343
|
+
);
|
|
344
|
+
from2.Result = (result) => Task.resolve(Validation.from.Result(result));
|
|
345
|
+
})(from = TaskValidation2.from || (TaskValidation2.from = {}));
|
|
346
|
+
TaskValidation2.tryCatch = (f, onError) => Task.from.Promise(
|
|
347
|
+
(signal) => Promise.resolve(f(signal)).then(Validation.make.passed).catch(
|
|
348
|
+
(error) => Validation.make.failed(onError(error))
|
|
349
|
+
)
|
|
289
350
|
);
|
|
290
351
|
TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
|
|
291
|
-
TaskValidation2.ap = (arg) => (data) => Task.from(
|
|
292
|
-
(signal) => Promise.all([Deferred.
|
|
352
|
+
TaskValidation2.ap = (arg) => (data) => Task.from.Promise(
|
|
353
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
293
354
|
([vf, va]) => Validation.ap(va)(vf)
|
|
294
355
|
)
|
|
295
356
|
);
|
|
@@ -298,61 +359,64 @@ var TaskValidation;
|
|
|
298
359
|
TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
|
|
299
360
|
TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
|
|
300
361
|
TaskValidation2.recover = (fallback) => (data) => Task.chain(
|
|
301
|
-
(validation) => Validation.
|
|
362
|
+
(validation) => Validation.is.passed(validation) ? Task.resolve(validation) : fallback(validation.errors)
|
|
302
363
|
)(data);
|
|
303
|
-
TaskValidation2.product = (first, second) => Task.from(
|
|
304
|
-
(signal) => Promise.all([Deferred.
|
|
364
|
+
TaskValidation2.product = (first, second) => Task.from.Promise(
|
|
365
|
+
(signal) => Promise.all([Deferred.to.Promise(first(signal)), Deferred.to.Promise(second(signal))]).then(
|
|
305
366
|
([va, vb]) => Validation.product(va, vb)
|
|
306
367
|
)
|
|
307
368
|
);
|
|
308
|
-
TaskValidation2.productAll = (data) => Task.from(
|
|
309
|
-
(signal) => Promise.all(data.map((t) => Deferred.
|
|
369
|
+
TaskValidation2.productAll = (data) => Task.from.Promise(
|
|
370
|
+
(signal) => Promise.all(data.map((t) => Deferred.to.Promise(t(signal)))).then((results) => {
|
|
310
371
|
const [first, ...rest] = results;
|
|
311
372
|
return Validation.productAll([first, ...rest]);
|
|
312
373
|
})
|
|
313
374
|
);
|
|
314
375
|
TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
|
|
315
376
|
TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
|
|
316
|
-
TaskValidation2.struct = (fields) => Task.from((signal) => {
|
|
377
|
+
TaskValidation2.struct = (fields) => Task.from.Promise((signal) => {
|
|
317
378
|
const keys = Object.keys(fields);
|
|
318
|
-
const promises = keys.map((key) => Deferred.
|
|
379
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
319
380
|
return Promise.all(promises).then((results) => {
|
|
320
381
|
const record = {};
|
|
321
382
|
const errors = [];
|
|
322
383
|
for (let i = 0; i < keys.length; i++) {
|
|
323
384
|
const res = results[i];
|
|
324
|
-
if (Validation.
|
|
385
|
+
if (Validation.is.passed(res)) {
|
|
325
386
|
record[keys[i]] = res.value;
|
|
326
387
|
} else {
|
|
327
388
|
errors.push(...res.errors);
|
|
328
389
|
}
|
|
329
390
|
}
|
|
330
|
-
return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
|
|
391
|
+
return isNonEmptyArr(errors) ? Validation.make.failedAll(errors) : Validation.make.passed(record);
|
|
331
392
|
});
|
|
332
393
|
});
|
|
333
394
|
})(TaskValidation || (TaskValidation = {}));
|
|
334
395
|
|
|
335
396
|
// src/Core/Task.ts
|
|
336
|
-
var toPromise = (task, signal) => Deferred.
|
|
337
|
-
var getMs = (duration) => Duration.
|
|
397
|
+
var toPromise = (task, signal) => Deferred.to.Promise(task(signal));
|
|
398
|
+
var getMs = (duration) => Duration.to.milliseconds(duration);
|
|
338
399
|
var Task;
|
|
339
400
|
((Task2) => {
|
|
340
|
-
Task2.resolve = (value) => () => Deferred.
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
Task2.
|
|
401
|
+
Task2.resolve = (value) => () => Deferred.from.Promise(globalThis.Promise.resolve(value));
|
|
402
|
+
let from;
|
|
403
|
+
((from2) => {
|
|
404
|
+
from2.Promise = (f) => (signal) => Deferred.from.Promise(f(signal));
|
|
405
|
+
from2.sync = (f) => () => Deferred.from.Promise(globalThis.Promise.resolve(f()));
|
|
406
|
+
})(from = Task2.from || (Task2.from = {}));
|
|
407
|
+
Task2.map = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then(f));
|
|
408
|
+
Task2.chain = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
|
|
409
|
+
Task2.ap = (arg) => (data) => from.Promise((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
|
|
410
|
+
Task2.tap = (f) => (data) => from.Promise(
|
|
347
411
|
(signal) => toPromise(data, signal).then((a) => {
|
|
348
412
|
f(a);
|
|
349
413
|
return a;
|
|
350
414
|
})
|
|
351
415
|
);
|
|
352
|
-
Task2.all = (tasks) =>
|
|
416
|
+
Task2.all = (tasks) => from.Promise(
|
|
353
417
|
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
354
418
|
);
|
|
355
|
-
Task2.delay = (duration) => (data) =>
|
|
419
|
+
Task2.delay = (duration) => (data) => from.Promise(
|
|
356
420
|
(signal) => new Promise((res) => {
|
|
357
421
|
let timerId;
|
|
358
422
|
const onAbort = () => {
|
|
@@ -371,7 +435,7 @@ var Task;
|
|
|
371
435
|
}, getMs(duration));
|
|
372
436
|
})
|
|
373
437
|
);
|
|
374
|
-
Task2.repeat = (options) => (task) =>
|
|
438
|
+
Task2.repeat = (options) => (task) => from.Promise((signal) => {
|
|
375
439
|
const { times, delay: delayDuration } = options;
|
|
376
440
|
if (times <= 0) {
|
|
377
441
|
return Promise.resolve([]);
|
|
@@ -405,7 +469,7 @@ var Task;
|
|
|
405
469
|
};
|
|
406
470
|
return run2(times);
|
|
407
471
|
});
|
|
408
|
-
Task2.repeatUntil = (options) => (task) =>
|
|
472
|
+
Task2.repeatUntil = (options) => (task) => from.Promise((signal) => {
|
|
409
473
|
const { when: predicate, delay: delayDuration, maxAttempts } = options;
|
|
410
474
|
const wait = () => new Promise((r) => {
|
|
411
475
|
let timerId;
|
|
@@ -442,10 +506,10 @@ var Task;
|
|
|
442
506
|
});
|
|
443
507
|
Task2.race = (tasks) => {
|
|
444
508
|
if (tasks.length === 0) {
|
|
445
|
-
return () => Deferred.
|
|
509
|
+
return () => Deferred.from.Promise(new Promise(() => {
|
|
446
510
|
}));
|
|
447
511
|
}
|
|
448
|
-
return
|
|
512
|
+
return from.Promise((outerSignal) => {
|
|
449
513
|
const controllers = tasks.map(() => new AbortController());
|
|
450
514
|
const onOuterAbort = () => {
|
|
451
515
|
for (const ctrl of controllers) {
|
|
@@ -474,8 +538,8 @@ var Task;
|
|
|
474
538
|
return Promise.race(promises);
|
|
475
539
|
});
|
|
476
540
|
};
|
|
477
|
-
Task2.sequence = (tasks) =>
|
|
478
|
-
Task2.sequential = (tasks) =>
|
|
541
|
+
Task2.sequence = (tasks) => from.Promise((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
|
|
542
|
+
Task2.sequential = (tasks) => from.Promise(async (signal) => {
|
|
479
543
|
const results = [];
|
|
480
544
|
for (const task of tasks) {
|
|
481
545
|
if (signal?.aborted) {
|
|
@@ -485,7 +549,7 @@ var Task;
|
|
|
485
549
|
}
|
|
486
550
|
return results;
|
|
487
551
|
});
|
|
488
|
-
Task2.timeout = (duration, onTimeout) => (task) =>
|
|
552
|
+
Task2.timeout = (duration, onTimeout) => (task) => from.Promise((outerSignal) => {
|
|
489
553
|
const controller = new AbortController();
|
|
490
554
|
let timerId;
|
|
491
555
|
let cleanUp = () => {
|
|
@@ -508,13 +572,13 @@ var Task;
|
|
|
508
572
|
return Promise.race([
|
|
509
573
|
toPromise(task, controller.signal).then((a) => {
|
|
510
574
|
cleanUp();
|
|
511
|
-
return Result.ok(a);
|
|
575
|
+
return Result.make.ok(a);
|
|
512
576
|
}),
|
|
513
577
|
new Promise((res) => {
|
|
514
578
|
timerId = setTimeout(() => {
|
|
515
579
|
controller.abort();
|
|
516
580
|
cleanUp();
|
|
517
|
-
res(Result.err(onTimeout()));
|
|
581
|
+
res(Result.make.err(onTimeout()));
|
|
518
582
|
}, getMs(duration));
|
|
519
583
|
})
|
|
520
584
|
]);
|
|
@@ -533,7 +597,7 @@ var Task;
|
|
|
533
597
|
outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
|
|
534
598
|
}
|
|
535
599
|
}
|
|
536
|
-
return Deferred.
|
|
600
|
+
return Deferred.from.Promise(factory(controller.signal));
|
|
537
601
|
};
|
|
538
602
|
return { task, abort };
|
|
539
603
|
};
|
|
@@ -550,59 +614,71 @@ var Task;
|
|
|
550
614
|
// src/Core/Validation.ts
|
|
551
615
|
var Validation;
|
|
552
616
|
((Validation2) => {
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
617
|
+
let make;
|
|
618
|
+
((make2) => {
|
|
619
|
+
make2.passed = (value) => ({ kind: "Passed", value });
|
|
620
|
+
make2.failed = (error) => ({ kind: "Failed", errors: [error] });
|
|
621
|
+
make2.failedAll = (errors) => ({ kind: "Failed", errors });
|
|
622
|
+
})(make = Validation2.make || (Validation2.make = {}));
|
|
623
|
+
let is;
|
|
624
|
+
((is2) => {
|
|
625
|
+
is2.passed = (data) => data.kind === "Passed";
|
|
626
|
+
is2.failed = (data) => data.kind === "Failed";
|
|
627
|
+
})(is = Validation2.is || (Validation2.is = {}));
|
|
628
|
+
let from;
|
|
629
|
+
((from2) => {
|
|
630
|
+
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
|
|
631
|
+
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.failed(onNull()) : make.passed(value);
|
|
632
|
+
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.failed(onNone()) : make.passed(maybe.value);
|
|
633
|
+
from2.Result = (data) => data.kind === "Ok" ? make.passed(data.value) : make.failed(data.error);
|
|
634
|
+
})(from = Validation2.from || (Validation2.from = {}));
|
|
635
|
+
Validation2.map = (f) => (data) => is.passed(data) ? make.passed(f(data.value)) : data;
|
|
636
|
+
Validation2.mapError = (f) => (data) => is.failed(data) ? make.failedAll(data.errors.map(f)) : data;
|
|
563
637
|
Validation2.ap = (arg) => (data) => {
|
|
564
|
-
if (
|
|
565
|
-
return
|
|
638
|
+
if (is.passed(data)) {
|
|
639
|
+
return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
|
|
566
640
|
}
|
|
567
|
-
return
|
|
641
|
+
return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
|
|
568
642
|
};
|
|
569
|
-
Validation2.fold = (onFailed, onPassed) => (data) =>
|
|
570
|
-
Validation2.match = (cases) => (data) =>
|
|
571
|
-
Validation2.getOrElse = (defaultValue) => (data) =>
|
|
643
|
+
Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
|
|
644
|
+
Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
|
|
645
|
+
Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
|
|
572
646
|
Validation2.tap = (f) => (data) => {
|
|
573
|
-
if (
|
|
647
|
+
if (is.passed(data)) {
|
|
574
648
|
f(data.value);
|
|
575
649
|
}
|
|
576
650
|
return data;
|
|
577
651
|
};
|
|
578
652
|
Validation2.tapError = (f) => (data) => {
|
|
579
|
-
if (
|
|
653
|
+
if (is.failed(data)) {
|
|
580
654
|
f(data.errors);
|
|
581
655
|
}
|
|
582
656
|
return data;
|
|
583
657
|
};
|
|
584
|
-
Validation2.recover = (fallback) => (data) =>
|
|
585
|
-
Validation2.recoverUnless = (isBlocked, fallback) => (data) =>
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
658
|
+
Validation2.recover = (fallback) => (data) => is.passed(data) ? data : fallback(data.errors);
|
|
659
|
+
Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
|
|
660
|
+
let to;
|
|
661
|
+
((to2) => {
|
|
662
|
+
to2.Result = (data) => is.passed(data) ? Result.make.ok(data.value) : Result.make.err(data.errors);
|
|
663
|
+
to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
664
|
+
})(to = Validation2.to || (Validation2.to = {}));
|
|
589
665
|
Validation2.product = (first, second) => {
|
|
590
|
-
if (
|
|
591
|
-
return
|
|
666
|
+
if (is.passed(first)) {
|
|
667
|
+
return is.passed(second) ? make.passed([first.value, second.value]) : make.failedAll(second.errors);
|
|
592
668
|
}
|
|
593
|
-
return
|
|
669
|
+
return is.passed(second) ? make.failedAll(first.errors) : make.failedAll([...first.errors, ...second.errors]);
|
|
594
670
|
};
|
|
595
671
|
Validation2.productAll = (data) => {
|
|
596
672
|
const values = [];
|
|
597
673
|
const errors = [];
|
|
598
674
|
for (const v of data) {
|
|
599
|
-
if (
|
|
675
|
+
if (is.passed(v)) {
|
|
600
676
|
values.push(v.value);
|
|
601
677
|
} else {
|
|
602
678
|
errors.push(...v.errors);
|
|
603
679
|
}
|
|
604
680
|
}
|
|
605
|
-
return isNonEmptyArr(errors) ?
|
|
681
|
+
return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(values);
|
|
606
682
|
};
|
|
607
683
|
Validation2.struct = (fields) => {
|
|
608
684
|
const record = {};
|
|
@@ -610,14 +686,14 @@ var Validation;
|
|
|
610
686
|
for (const key in fields) {
|
|
611
687
|
if (Object.hasOwn(fields, key)) {
|
|
612
688
|
const val = fields[key];
|
|
613
|
-
if (
|
|
689
|
+
if (is.passed(val)) {
|
|
614
690
|
record[key] = val.value;
|
|
615
691
|
} else {
|
|
616
692
|
errors.push(...val.errors);
|
|
617
693
|
}
|
|
618
694
|
}
|
|
619
695
|
}
|
|
620
|
-
return isNonEmptyArr(errors) ?
|
|
696
|
+
return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(record);
|
|
621
697
|
};
|
|
622
698
|
})(Validation || (Validation = {}));
|
|
623
699
|
|
|
@@ -630,11 +706,11 @@ var ArrMaybe;
|
|
|
630
706
|
for (let i = 0; i < n; i++) {
|
|
631
707
|
const mapped = f(data[i]);
|
|
632
708
|
if (mapped.kind === "None") {
|
|
633
|
-
return Maybe.none();
|
|
709
|
+
return Maybe.make.none();
|
|
634
710
|
}
|
|
635
711
|
result[i] = mapped.value;
|
|
636
712
|
}
|
|
637
|
-
return Maybe.some(result);
|
|
713
|
+
return Maybe.make.some(result);
|
|
638
714
|
};
|
|
639
715
|
ArrMaybe2.sequence = (data) => (0, ArrMaybe2.traverse)((a) => a)(data);
|
|
640
716
|
})(ArrMaybe || (ArrMaybe = {}));
|
|
@@ -650,61 +726,69 @@ var ArrResult;
|
|
|
650
726
|
}
|
|
651
727
|
result[i] = mapped.value;
|
|
652
728
|
}
|
|
653
|
-
return Result.ok(result);
|
|
729
|
+
return Result.make.ok(result);
|
|
654
730
|
};
|
|
655
731
|
ArrResult2.sequence = (data) => (0, ArrResult2.traverse)((a) => a)(data);
|
|
656
732
|
})(ArrResult || (ArrResult = {}));
|
|
657
733
|
var ArrTaskResult;
|
|
658
734
|
((ArrTaskResult2) => {
|
|
659
|
-
ArrTaskResult2.traverse = (f) => (data) => Task.from(async () => {
|
|
735
|
+
ArrTaskResult2.traverse = (f) => (data) => Task.from.Promise(async () => {
|
|
660
736
|
const result = [];
|
|
661
737
|
for (const a of data) {
|
|
662
|
-
const r = await Deferred.
|
|
663
|
-
if (Result.
|
|
738
|
+
const r = await Deferred.to.Promise(f(a)());
|
|
739
|
+
if (Result.is.err(r)) {
|
|
664
740
|
return r;
|
|
665
741
|
}
|
|
666
742
|
result.push(r.value);
|
|
667
743
|
}
|
|
668
|
-
return Result.ok(result);
|
|
744
|
+
return Result.make.ok(result);
|
|
669
745
|
});
|
|
670
746
|
ArrTaskResult2.sequence = (data) => (0, ArrTaskResult2.traverse)((a) => a)(data);
|
|
671
747
|
})(ArrTaskResult || (ArrTaskResult = {}));
|
|
672
748
|
var ArrTask;
|
|
673
749
|
((ArrTask2) => {
|
|
674
|
-
ArrTask2.traverse = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.
|
|
750
|
+
ArrTask2.traverse = (f) => (data) => Task.from.Promise(() => Promise.all(data.map((a) => Deferred.to.Promise(f(a)()))));
|
|
675
751
|
ArrTask2.sequence = (data) => (0, ArrTask2.traverse)((a) => a)(data);
|
|
676
752
|
ArrTask2.Result = ArrTaskResult;
|
|
677
753
|
})(ArrTask || (ArrTask = {}));
|
|
678
754
|
var ArrNonEmpty;
|
|
679
755
|
((ArrNonEmpty2) => {
|
|
680
756
|
ArrNonEmpty2.singleton = (value) => [value];
|
|
681
|
-
|
|
757
|
+
let from;
|
|
758
|
+
((from2) => {
|
|
759
|
+
from2.Array = (data) => isNonEmptyArr(data) ? Maybe.make.some(data) : Maybe.make.none();
|
|
760
|
+
})(from = ArrNonEmpty2.from || (ArrNonEmpty2.from = {}));
|
|
682
761
|
ArrNonEmpty2.head = (data) => data[0];
|
|
683
762
|
ArrNonEmpty2.last = (data) => data[data.length - 1];
|
|
684
763
|
ArrNonEmpty2.tail = (data) => data.slice(1);
|
|
685
764
|
ArrNonEmpty2.reduce = (f) => (data) => data.reduce(f);
|
|
765
|
+
ArrNonEmpty2.map = (f) => (data) => Arr.map(f)(data);
|
|
766
|
+
ArrNonEmpty2.mapWithIndex = (f) => (data) => Arr.mapWithIndex(f)(data);
|
|
767
|
+
ArrNonEmpty2.intersperse = (sep) => (data) => Arr.intersperse(sep)(data);
|
|
768
|
+
ArrNonEmpty2.concat = (other) => (data) => Arr.concat(other)(data);
|
|
769
|
+
ArrNonEmpty2.reverse = (data) => Arr.reverse(data);
|
|
686
770
|
})(ArrNonEmpty || (ArrNonEmpty = {}));
|
|
687
771
|
var Arr;
|
|
688
772
|
((Arr2) => {
|
|
689
|
-
Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
|
|
690
|
-
Arr2.last = (data) => data.length > 0 ? Maybe.some(data[data.length - 1]) : Maybe.none();
|
|
691
|
-
Arr2.tail = (data) => data.length > 0 ? Maybe.some(data.slice(1)) : Maybe.none();
|
|
692
|
-
Arr2.init = (data) => data.length > 0 ? Maybe.some(data.slice(0, -1)) : Maybe.none();
|
|
773
|
+
Arr2.head = (data) => data.length > 0 ? Maybe.make.some(data[0]) : Maybe.make.none();
|
|
774
|
+
Arr2.last = (data) => data.length > 0 ? Maybe.make.some(data[data.length - 1]) : Maybe.make.none();
|
|
775
|
+
Arr2.tail = (data) => data.length > 0 ? Maybe.make.some(data.slice(1)) : Maybe.make.none();
|
|
776
|
+
Arr2.init = (data) => data.length > 0 ? Maybe.make.some(data.slice(0, -1)) : Maybe.make.none();
|
|
693
777
|
Arr2.findFirst = (predicate) => (data) => {
|
|
694
778
|
const idx = data.findIndex(predicate);
|
|
695
|
-
return idx !== -1 ? Maybe.some(data[idx]) : Maybe.none();
|
|
779
|
+
return idx !== -1 ? Maybe.make.some(data[idx]) : Maybe.make.none();
|
|
696
780
|
};
|
|
697
781
|
Arr2.findLast = (predicate) => (data) => {
|
|
698
782
|
for (let i = data.length - 1; i >= 0; i--) {
|
|
699
783
|
if (predicate(data[i])) {
|
|
700
|
-
return Maybe.some(data[i]);
|
|
784
|
+
return Maybe.make.some(data[i]);
|
|
701
785
|
}
|
|
702
786
|
}
|
|
703
|
-
return Maybe.none();
|
|
787
|
+
return Maybe.make.none();
|
|
704
788
|
};
|
|
705
789
|
Arr2.findIndex = (predicate) => (data) => {
|
|
706
790
|
const idx = data.findIndex(predicate);
|
|
707
|
-
return idx !== -1 ? Maybe.some(idx) : Maybe.none();
|
|
791
|
+
return idx !== -1 ? Maybe.make.some(idx) : Maybe.make.none();
|
|
708
792
|
};
|
|
709
793
|
Arr2.map = (f) => (data) => {
|
|
710
794
|
const n = data.length;
|
|
@@ -898,10 +982,29 @@ var Arr;
|
|
|
898
982
|
return result;
|
|
899
983
|
};
|
|
900
984
|
Arr2.reduce = (initial, f) => (data) => data.reduce(f, initial);
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
985
|
+
const _traverseTask = Object.assign((f) => ArrTask.traverse(f), {
|
|
986
|
+
Result: ArrTaskResult.traverse
|
|
987
|
+
});
|
|
988
|
+
const _sequenceTask = Object.assign((data) => ArrTask.sequence(data), {
|
|
989
|
+
Result: ArrTaskResult.sequence
|
|
990
|
+
});
|
|
991
|
+
let traverse;
|
|
992
|
+
((traverse2) => {
|
|
993
|
+
traverse2.Maybe = ArrMaybe.traverse;
|
|
994
|
+
traverse2.Result = ArrResult.traverse;
|
|
995
|
+
traverse2.Task = _traverseTask;
|
|
996
|
+
})(traverse = Arr2.traverse || (Arr2.traverse = {}));
|
|
997
|
+
let sequence;
|
|
998
|
+
((sequence2) => {
|
|
999
|
+
sequence2.Maybe = ArrMaybe.sequence;
|
|
1000
|
+
sequence2.Result = ArrResult.sequence;
|
|
1001
|
+
sequence2.Task = _sequenceTask;
|
|
1002
|
+
})(sequence = Arr2.sequence || (Arr2.sequence = {}));
|
|
1003
|
+
let is;
|
|
1004
|
+
((is2) => {
|
|
1005
|
+
is2.empty = (data) => data.length === 0;
|
|
1006
|
+
is2.nonEmpty = (data) => isNonEmptyArr(data);
|
|
1007
|
+
})(is = Arr2.is || (Arr2.is = {}));
|
|
905
1008
|
Arr2.prepend = (value) => (data) => [value, ...data];
|
|
906
1009
|
Arr2.append = (value) => (data) => [...data, value];
|
|
907
1010
|
Arr2.size = (data) => data.length;
|
|
@@ -983,12 +1086,34 @@ var Arr;
|
|
|
983
1086
|
})(Arr || (Arr = {}));
|
|
984
1087
|
|
|
985
1088
|
// src/Data/Dict.ts
|
|
1089
|
+
var DictNonEmpty;
|
|
1090
|
+
((DictNonEmpty2) => {
|
|
1091
|
+
DictNonEmpty2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
1092
|
+
let from;
|
|
1093
|
+
((from2) => {
|
|
1094
|
+
from2.Map = (m) => m.size > 0 ? Maybe.make.some(m) : Maybe.make.none();
|
|
1095
|
+
})(from = DictNonEmpty2.from || (DictNonEmpty2.from = {}));
|
|
1096
|
+
DictNonEmpty2.keys = (m) => Dict.keys(m);
|
|
1097
|
+
DictNonEmpty2.values = (m) => Dict.values(m);
|
|
1098
|
+
DictNonEmpty2.entries = (m) => Dict.entries(m);
|
|
1099
|
+
DictNonEmpty2.reduce = (f) => (m) => (0, DictNonEmpty2.values)(m).reduce(f);
|
|
1100
|
+
DictNonEmpty2.map = (f) => (m) => Dict.map(f)(m);
|
|
1101
|
+
DictNonEmpty2.mapWithKey = (f) => (m) => Dict.mapWithKey(f)(m);
|
|
1102
|
+
})(DictNonEmpty || (DictNonEmpty = {}));
|
|
986
1103
|
var Dict;
|
|
987
1104
|
((Dict2) => {
|
|
1105
|
+
let is;
|
|
1106
|
+
((is2) => {
|
|
1107
|
+
is2.empty = (m) => m.size === 0;
|
|
1108
|
+
is2.nonEmpty = (m) => m.size > 0;
|
|
1109
|
+
})(is = Dict2.is || (Dict2.is = {}));
|
|
988
1110
|
Dict2.empty = () => new globalThis.Map();
|
|
989
1111
|
Dict2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
990
|
-
|
|
991
|
-
|
|
1112
|
+
let from;
|
|
1113
|
+
((from2) => {
|
|
1114
|
+
from2.entries = (entries3) => new globalThis.Map(entries3);
|
|
1115
|
+
from2.Record = (rec) => new globalThis.Map(Object.entries(rec));
|
|
1116
|
+
})(from = Dict2.from || (Dict2.from = {}));
|
|
992
1117
|
Dict2.groupBy = (keyFn) => (items) => {
|
|
993
1118
|
const result = new globalThis.Map();
|
|
994
1119
|
for (const item of items) {
|
|
@@ -1003,9 +1128,8 @@ var Dict;
|
|
|
1003
1128
|
return result;
|
|
1004
1129
|
};
|
|
1005
1130
|
Dict2.has = (key) => (m) => m.has(key);
|
|
1006
|
-
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.some(m.get(key)) : Maybe.none();
|
|
1131
|
+
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.make.some(m.get(key)) : Maybe.make.none();
|
|
1007
1132
|
Dict2.size = (m) => m.size;
|
|
1008
|
-
Dict2.isEmpty = (m) => m.size === 0;
|
|
1009
1133
|
Dict2.keys = (m) => [...m.keys()];
|
|
1010
1134
|
Dict2.values = (m) => [...m.values()];
|
|
1011
1135
|
Dict2.entries = (m) => [...m.entries()];
|
|
@@ -1117,7 +1241,11 @@ var Dict;
|
|
|
1117
1241
|
}
|
|
1118
1242
|
return acc;
|
|
1119
1243
|
};
|
|
1120
|
-
|
|
1244
|
+
let to;
|
|
1245
|
+
((to2) => {
|
|
1246
|
+
to2.Record = (m) => Object.fromEntries(m);
|
|
1247
|
+
})(to = Dict2.to || (Dict2.to = {}));
|
|
1248
|
+
Dict2.NonEmpty = DictNonEmpty;
|
|
1121
1249
|
})(Dict || (Dict = {}));
|
|
1122
1250
|
|
|
1123
1251
|
// src/Data/Num.ts
|
|
@@ -1139,21 +1267,21 @@ var Num;
|
|
|
1139
1267
|
Num2.inRange = (start, end) => (n) => n >= start && n < end;
|
|
1140
1268
|
Num2.parse = (s) => {
|
|
1141
1269
|
if (s.trim() === "") {
|
|
1142
|
-
return Maybe.none();
|
|
1270
|
+
return Maybe.make.none();
|
|
1143
1271
|
}
|
|
1144
1272
|
const n = Number(s);
|
|
1145
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
1273
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
1146
1274
|
};
|
|
1147
1275
|
Num2.add = (b) => (a) => a + b;
|
|
1148
1276
|
Num2.subtract = (b) => (a) => a - b;
|
|
1149
1277
|
Num2.multiply = (b) => (a) => a * b;
|
|
1150
|
-
Num2.divide = (b) => (a) => b === 0 ? Maybe.none() : Maybe.some(a / b);
|
|
1278
|
+
Num2.divide = (b) => (a) => b === 0 ? Maybe.make.none() : Maybe.make.some(a / b);
|
|
1151
1279
|
Num2.abs = (n) => Math.abs(n);
|
|
1152
1280
|
Num2.negate = (n) => -n;
|
|
1153
1281
|
Num2.round = (n) => Math.round(n);
|
|
1154
1282
|
Num2.floor = (n) => Math.floor(n);
|
|
1155
1283
|
Num2.ceil = (n) => Math.ceil(n);
|
|
1156
|
-
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.none() : Maybe.some(n % divisor);
|
|
1284
|
+
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.make.none() : Maybe.make.some(n % divisor);
|
|
1157
1285
|
Num2.sum = (ns) => {
|
|
1158
1286
|
let result = 0;
|
|
1159
1287
|
for (let i = 0; i < ns.length; i++) {
|
|
@@ -1161,10 +1289,10 @@ var Num;
|
|
|
1161
1289
|
}
|
|
1162
1290
|
return result;
|
|
1163
1291
|
};
|
|
1164
|
-
Num2.mean = (ns) => ns.length === 0 ? Maybe.none() : Maybe.some((0, Num2.sum)(ns) / ns.length);
|
|
1292
|
+
Num2.mean = (ns) => ns.length === 0 ? Maybe.make.none() : Maybe.make.some((0, Num2.sum)(ns) / ns.length);
|
|
1165
1293
|
Num2.min = (ns) => {
|
|
1166
1294
|
if (ns.length === 0) {
|
|
1167
|
-
return Maybe.none();
|
|
1295
|
+
return Maybe.make.none();
|
|
1168
1296
|
}
|
|
1169
1297
|
let [result] = ns;
|
|
1170
1298
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -1172,11 +1300,11 @@ var Num;
|
|
|
1172
1300
|
result = ns[i];
|
|
1173
1301
|
}
|
|
1174
1302
|
}
|
|
1175
|
-
return Maybe.some(result);
|
|
1303
|
+
return Maybe.make.some(result);
|
|
1176
1304
|
};
|
|
1177
1305
|
Num2.max = (ns) => {
|
|
1178
1306
|
if (ns.length === 0) {
|
|
1179
|
-
return Maybe.none();
|
|
1307
|
+
return Maybe.make.none();
|
|
1180
1308
|
}
|
|
1181
1309
|
let [result] = ns;
|
|
1182
1310
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -1184,7 +1312,7 @@ var Num;
|
|
|
1184
1312
|
result = ns[i];
|
|
1185
1313
|
}
|
|
1186
1314
|
}
|
|
1187
|
-
return Maybe.some(result);
|
|
1315
|
+
return Maybe.make.some(result);
|
|
1188
1316
|
};
|
|
1189
1317
|
})(Num || (Num = {}));
|
|
1190
1318
|
|
|
@@ -1227,32 +1355,43 @@ var RecResult;
|
|
|
1227
1355
|
var RecNonEmpty;
|
|
1228
1356
|
((RecNonEmpty2) => {
|
|
1229
1357
|
RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
RecNonEmpty2.
|
|
1234
|
-
RecNonEmpty2.
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1358
|
+
let from;
|
|
1359
|
+
((from2) => {
|
|
1360
|
+
from2.Record = (data) => _isNonEmpty(data) ? Maybe.make.some(data) : Maybe.make.none();
|
|
1361
|
+
})(from = RecNonEmpty2.from || (RecNonEmpty2.from = {}));
|
|
1362
|
+
RecNonEmpty2.keys = (data) => Rec.keys(data);
|
|
1363
|
+
RecNonEmpty2.values = (data) => Rec.values(data);
|
|
1364
|
+
RecNonEmpty2.entries = (data) => Rec.entries(data);
|
|
1365
|
+
RecNonEmpty2.reduce = (f) => (data) => (0, RecNonEmpty2.values)(data).reduce(f);
|
|
1366
|
+
RecNonEmpty2.map = (f) => (data) => Rec.map(f)(data);
|
|
1367
|
+
RecNonEmpty2.mapWithKey = (f) => (data) => Rec.mapWithKey(f)(data);
|
|
1238
1368
|
})(RecNonEmpty || (RecNonEmpty = {}));
|
|
1239
1369
|
var Rec;
|
|
1240
1370
|
((Rec2) => {
|
|
1241
|
-
|
|
1242
|
-
|
|
1371
|
+
let is;
|
|
1372
|
+
((is2) => {
|
|
1373
|
+
is2.empty = (data) => Object.keys(data).length === 0;
|
|
1374
|
+
is2.nonEmpty = _isNonEmpty;
|
|
1375
|
+
})(is = Rec2.is || (Rec2.is = {}));
|
|
1376
|
+
Rec2.map = (f) => (data) => {
|
|
1243
1377
|
const recordKeys = Object.keys(data);
|
|
1244
1378
|
const recordValues = Object.values(data);
|
|
1245
1379
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
1246
1380
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1381
|
+
const key = recordKeys[i];
|
|
1382
|
+
if (key === "__proto__") {
|
|
1383
|
+
Object.defineProperty(result, "__proto__", {
|
|
1384
|
+
value: f(recordValues[i]),
|
|
1385
|
+
writable: true,
|
|
1386
|
+
enumerable: true,
|
|
1387
|
+
configurable: true
|
|
1388
|
+
});
|
|
1389
|
+
} else {
|
|
1390
|
+
result[key] = f(recordValues[i]);
|
|
1391
|
+
}
|
|
1253
1392
|
}
|
|
1254
1393
|
return result;
|
|
1255
|
-
}
|
|
1394
|
+
};
|
|
1256
1395
|
Rec2.filterMap = (f) => (data) => {
|
|
1257
1396
|
const recordKeys = Object.keys(data);
|
|
1258
1397
|
const recordValues = Object.values(data);
|
|
@@ -1270,20 +1409,25 @@ var Rec;
|
|
|
1270
1409
|
}
|
|
1271
1410
|
return result;
|
|
1272
1411
|
};
|
|
1273
|
-
Rec2.mapWithKey = (f) => (
|
|
1412
|
+
Rec2.mapWithKey = (f) => (data) => {
|
|
1274
1413
|
const recordKeys = Object.keys(data);
|
|
1275
1414
|
const recordValues = Object.values(data);
|
|
1276
1415
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
1277
1416
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1417
|
+
const key = recordKeys[i];
|
|
1418
|
+
if (key === "__proto__") {
|
|
1419
|
+
Object.defineProperty(result, "__proto__", {
|
|
1420
|
+
value: f(key, recordValues[i]),
|
|
1421
|
+
writable: true,
|
|
1422
|
+
enumerable: true,
|
|
1423
|
+
configurable: true
|
|
1424
|
+
});
|
|
1425
|
+
} else {
|
|
1426
|
+
result[key] = f(key, recordValues[i]);
|
|
1427
|
+
}
|
|
1284
1428
|
}
|
|
1285
1429
|
return result;
|
|
1286
|
-
}
|
|
1430
|
+
};
|
|
1287
1431
|
Rec2.filter = (predicate) => (data) => {
|
|
1288
1432
|
const recordKeys = Object.keys(data);
|
|
1289
1433
|
const recordValues = Object.values(data);
|
|
@@ -1313,7 +1457,10 @@ var Rec;
|
|
|
1313
1457
|
Rec2.keys = (data) => Object.keys(data);
|
|
1314
1458
|
Rec2.values = (data) => Object.values(data);
|
|
1315
1459
|
Rec2.entries = (data) => Object.entries(data);
|
|
1316
|
-
|
|
1460
|
+
let from;
|
|
1461
|
+
((from2) => {
|
|
1462
|
+
from2.entries = (data) => Object.fromEntries(data);
|
|
1463
|
+
})(from = Rec2.from || (Rec2.from = {}));
|
|
1317
1464
|
Rec2.groupBy = (keyFn) => (items) => {
|
|
1318
1465
|
const result = {};
|
|
1319
1466
|
for (const item of items) {
|
|
@@ -1354,7 +1501,6 @@ var Rec;
|
|
|
1354
1501
|
...data,
|
|
1355
1502
|
...other
|
|
1356
1503
|
});
|
|
1357
|
-
Rec2.isEmpty = (data) => Object.keys(data).length === 0;
|
|
1358
1504
|
Rec2.size = (data) => Object.keys(data).length;
|
|
1359
1505
|
Rec2.mapKeys = (f) => (data) => {
|
|
1360
1506
|
const result = {};
|
|
@@ -1372,14 +1518,34 @@ var Rec;
|
|
|
1372
1518
|
}
|
|
1373
1519
|
return result;
|
|
1374
1520
|
};
|
|
1375
|
-
|
|
1376
|
-
|
|
1521
|
+
let traverse;
|
|
1522
|
+
((traverse2) => {
|
|
1523
|
+
traverse2.Maybe = RecMaybe.traverse;
|
|
1524
|
+
traverse2.Result = RecResult.traverse;
|
|
1525
|
+
})(traverse = Rec2.traverse || (Rec2.traverse = {}));
|
|
1526
|
+
let sequence;
|
|
1527
|
+
((sequence2) => {
|
|
1528
|
+
sequence2.Maybe = RecMaybe.sequence;
|
|
1529
|
+
sequence2.Result = RecResult.sequence;
|
|
1530
|
+
})(sequence = Rec2.sequence || (Rec2.sequence = {}));
|
|
1377
1531
|
Rec2.NonEmpty = RecNonEmpty;
|
|
1378
1532
|
})(Rec || (Rec = {}));
|
|
1379
1533
|
|
|
1380
1534
|
// src/Data/Str.ts
|
|
1535
|
+
var StrNonEmpty;
|
|
1536
|
+
((StrNonEmpty2) => {
|
|
1537
|
+
let from;
|
|
1538
|
+
((from2) => {
|
|
1539
|
+
from2.String = (s) => s.length > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
1540
|
+
})(from = StrNonEmpty2.from || (StrNonEmpty2.from = {}));
|
|
1541
|
+
})(StrNonEmpty || (StrNonEmpty = {}));
|
|
1381
1542
|
var Str;
|
|
1382
1543
|
((Str2) => {
|
|
1544
|
+
let is;
|
|
1545
|
+
((is2) => {
|
|
1546
|
+
is2.empty = (s) => s.length === 0;
|
|
1547
|
+
is2.nonEmpty = (s) => s.length > 0;
|
|
1548
|
+
})(is = Str2.is || (Str2.is = {}));
|
|
1383
1549
|
Str2.split = (separator) => (s) => s.split(separator);
|
|
1384
1550
|
Str2.trim = (s) => s.trim();
|
|
1385
1551
|
Str2.includes = (substring) => (s) => s.includes(substring);
|
|
@@ -1392,7 +1558,6 @@ var Str;
|
|
|
1392
1558
|
Str2.capitalize = (s) => s.length === 0 ? "" : s.charAt(0).toUpperCase() + s.slice(1);
|
|
1393
1559
|
Str2.lines = (s) => s.split(/\r?\n|\r/);
|
|
1394
1560
|
Str2.words = (s) => s.trim().split(/\s+/).filter(Boolean);
|
|
1395
|
-
Str2.isEmpty = (s) => s.length === 0;
|
|
1396
1561
|
Str2.isBlank = (s) => s.trim().length === 0;
|
|
1397
1562
|
Str2.length = (s) => s.length;
|
|
1398
1563
|
Str2.slice = (start, end) => (s) => s.slice(start, end);
|
|
@@ -1411,7 +1576,7 @@ var Str;
|
|
|
1411
1576
|
*/
|
|
1412
1577
|
int: (s) => {
|
|
1413
1578
|
const n = parseInt(s, 10);
|
|
1414
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
1579
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
1415
1580
|
},
|
|
1416
1581
|
/**
|
|
1417
1582
|
* Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
|
|
@@ -1425,27 +1590,49 @@ var Str;
|
|
|
1425
1590
|
*/
|
|
1426
1591
|
float: (s) => {
|
|
1427
1592
|
const n = parseFloat(s);
|
|
1428
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
1593
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
1429
1594
|
}
|
|
1430
1595
|
};
|
|
1431
1596
|
Str2.parseJson = (s) => {
|
|
1432
1597
|
try {
|
|
1433
|
-
return Result.ok(JSON.parse(s));
|
|
1598
|
+
return Result.make.ok(JSON.parse(s));
|
|
1434
1599
|
} catch (error) {
|
|
1435
|
-
return Result.err(error);
|
|
1600
|
+
return Result.make.err(error);
|
|
1436
1601
|
}
|
|
1437
1602
|
};
|
|
1603
|
+
Str2.NonEmpty = StrNonEmpty;
|
|
1438
1604
|
})(Str || (Str = {}));
|
|
1439
1605
|
|
|
1440
1606
|
// src/Data/Uniq.ts
|
|
1607
|
+
var UniqNonEmpty;
|
|
1608
|
+
((UniqNonEmpty2) => {
|
|
1609
|
+
UniqNonEmpty2.singleton = (item) => new globalThis.Set([item]);
|
|
1610
|
+
let from;
|
|
1611
|
+
((from2) => {
|
|
1612
|
+
from2.Set = (s) => s.size > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
1613
|
+
})(from = UniqNonEmpty2.from || (UniqNonEmpty2.from = {}));
|
|
1614
|
+
UniqNonEmpty2.reduce = (f) => (s) => to.Array(s).reduce(f);
|
|
1615
|
+
UniqNonEmpty2.map = (f) => (s) => Uniq.map(f)(s);
|
|
1616
|
+
let to;
|
|
1617
|
+
((to2) => {
|
|
1618
|
+
to2.Array = (s) => Uniq.to.Array(s);
|
|
1619
|
+
})(to = UniqNonEmpty2.to || (UniqNonEmpty2.to = {}));
|
|
1620
|
+
})(UniqNonEmpty || (UniqNonEmpty = {}));
|
|
1441
1621
|
var Uniq;
|
|
1442
1622
|
((Uniq2) => {
|
|
1623
|
+
let is;
|
|
1624
|
+
((is2) => {
|
|
1625
|
+
is2.empty = (s) => s.size === 0;
|
|
1626
|
+
is2.nonEmpty = (s) => s.size > 0;
|
|
1627
|
+
})(is = Uniq2.is || (Uniq2.is = {}));
|
|
1443
1628
|
Uniq2.empty = () => new globalThis.Set();
|
|
1444
1629
|
Uniq2.singleton = (item) => new globalThis.Set([item]);
|
|
1445
|
-
|
|
1630
|
+
let from;
|
|
1631
|
+
((from2) => {
|
|
1632
|
+
from2.Array = (arr) => new globalThis.Set(arr);
|
|
1633
|
+
})(from = Uniq2.from || (Uniq2.from = {}));
|
|
1446
1634
|
Uniq2.has = (item) => (s) => s.has(item);
|
|
1447
1635
|
Uniq2.size = (s) => s.size;
|
|
1448
|
-
Uniq2.isEmpty = (s) => s.size === 0;
|
|
1449
1636
|
Uniq2.isSubsetOf = (other) => (s) => {
|
|
1450
1637
|
const set = s;
|
|
1451
1638
|
if (typeof set.isSubsetOf === "function") {
|
|
@@ -1534,7 +1721,11 @@ var Uniq;
|
|
|
1534
1721
|
}
|
|
1535
1722
|
return acc;
|
|
1536
1723
|
};
|
|
1537
|
-
|
|
1724
|
+
let to;
|
|
1725
|
+
((to2) => {
|
|
1726
|
+
to2.Array = (s) => [...s];
|
|
1727
|
+
})(to = Uniq2.to || (Uniq2.to = {}));
|
|
1728
|
+
Uniq2.NonEmpty = UniqNonEmpty;
|
|
1538
1729
|
})(Uniq || (Uniq = {}));
|
|
1539
1730
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1540
1731
|
0 && (module.exports = {
|