@nlozgachev/pipelined 0.43.0 → 0.45.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 +17 -16
- package/dist/{InternalTypes-DsCqxWZm.d.mts → InternalTypes-CLE7qlOc.d.mts} +33 -28
- package/dist/{InternalTypes-DuzMFAfJ.d.ts → InternalTypes-Mssktd7z.d.ts} +33 -28
- package/dist/{Validation-BOPLiDqa.d.ts → Validation-BMsvixWH.d.ts} +586 -554
- package/dist/{Validation-Do6uWLLZ.d.mts → Validation-v38R0qH-.d.mts} +586 -554
- package/dist/{chunk-W6RWKBDX.mjs → chunk-2LKJF45J.mjs} +160 -68
- package/dist/{chunk-X6XQX3OZ.mjs → chunk-KOYYDQH4.mjs} +2 -2
- package/dist/{chunk-CHRXZIJU.mjs → chunk-VSU36S2K.mjs} +435 -309
- 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 +445 -313
- package/dist/core.mjs +8 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +605 -381
- package/dist/index.mjs +10 -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 +468 -218
- package/dist/utils.d.ts +468 -218
- package/dist/utils.js +406 -238
- package/dist/utils.mjs +3 -3
- package/package.json +5 -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;
|
|
@@ -901,7 +985,11 @@ var Arr;
|
|
|
901
985
|
Arr2.Maybe = ArrMaybe;
|
|
902
986
|
Arr2.Result = ArrResult;
|
|
903
987
|
Arr2.Task = ArrTask;
|
|
904
|
-
|
|
988
|
+
let is;
|
|
989
|
+
((is2) => {
|
|
990
|
+
is2.empty = (data) => data.length === 0;
|
|
991
|
+
is2.nonEmpty = (data) => isNonEmptyArr(data);
|
|
992
|
+
})(is = Arr2.is || (Arr2.is = {}));
|
|
905
993
|
Arr2.prepend = (value) => (data) => [value, ...data];
|
|
906
994
|
Arr2.append = (value) => (data) => [...data, value];
|
|
907
995
|
Arr2.size = (data) => data.length;
|
|
@@ -983,12 +1071,34 @@ var Arr;
|
|
|
983
1071
|
})(Arr || (Arr = {}));
|
|
984
1072
|
|
|
985
1073
|
// src/Data/Dict.ts
|
|
1074
|
+
var DictNonEmpty;
|
|
1075
|
+
((DictNonEmpty2) => {
|
|
1076
|
+
DictNonEmpty2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
1077
|
+
let from;
|
|
1078
|
+
((from2) => {
|
|
1079
|
+
from2.Map = (m) => m.size > 0 ? Maybe.make.some(m) : Maybe.make.none();
|
|
1080
|
+
})(from = DictNonEmpty2.from || (DictNonEmpty2.from = {}));
|
|
1081
|
+
DictNonEmpty2.keys = (m) => Dict.keys(m);
|
|
1082
|
+
DictNonEmpty2.values = (m) => Dict.values(m);
|
|
1083
|
+
DictNonEmpty2.entries = (m) => Dict.entries(m);
|
|
1084
|
+
DictNonEmpty2.reduce = (f) => (m) => (0, DictNonEmpty2.values)(m).reduce(f);
|
|
1085
|
+
DictNonEmpty2.map = (f) => (m) => Dict.map(f)(m);
|
|
1086
|
+
DictNonEmpty2.mapWithKey = (f) => (m) => Dict.mapWithKey(f)(m);
|
|
1087
|
+
})(DictNonEmpty || (DictNonEmpty = {}));
|
|
986
1088
|
var Dict;
|
|
987
1089
|
((Dict2) => {
|
|
1090
|
+
let is;
|
|
1091
|
+
((is2) => {
|
|
1092
|
+
is2.empty = (m) => m.size === 0;
|
|
1093
|
+
is2.nonEmpty = (m) => m.size > 0;
|
|
1094
|
+
})(is = Dict2.is || (Dict2.is = {}));
|
|
988
1095
|
Dict2.empty = () => new globalThis.Map();
|
|
989
1096
|
Dict2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
990
|
-
|
|
991
|
-
|
|
1097
|
+
let from;
|
|
1098
|
+
((from2) => {
|
|
1099
|
+
from2.entries = (entries3) => new globalThis.Map(entries3);
|
|
1100
|
+
from2.Record = (rec) => new globalThis.Map(Object.entries(rec));
|
|
1101
|
+
})(from = Dict2.from || (Dict2.from = {}));
|
|
992
1102
|
Dict2.groupBy = (keyFn) => (items) => {
|
|
993
1103
|
const result = new globalThis.Map();
|
|
994
1104
|
for (const item of items) {
|
|
@@ -1003,9 +1113,8 @@ var Dict;
|
|
|
1003
1113
|
return result;
|
|
1004
1114
|
};
|
|
1005
1115
|
Dict2.has = (key) => (m) => m.has(key);
|
|
1006
|
-
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.some(m.get(key)) : Maybe.none();
|
|
1116
|
+
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.make.some(m.get(key)) : Maybe.make.none();
|
|
1007
1117
|
Dict2.size = (m) => m.size;
|
|
1008
|
-
Dict2.isEmpty = (m) => m.size === 0;
|
|
1009
1118
|
Dict2.keys = (m) => [...m.keys()];
|
|
1010
1119
|
Dict2.values = (m) => [...m.values()];
|
|
1011
1120
|
Dict2.entries = (m) => [...m.entries()];
|
|
@@ -1117,7 +1226,11 @@ var Dict;
|
|
|
1117
1226
|
}
|
|
1118
1227
|
return acc;
|
|
1119
1228
|
};
|
|
1120
|
-
|
|
1229
|
+
let to;
|
|
1230
|
+
((to2) => {
|
|
1231
|
+
to2.Record = (m) => Object.fromEntries(m);
|
|
1232
|
+
})(to = Dict2.to || (Dict2.to = {}));
|
|
1233
|
+
Dict2.NonEmpty = DictNonEmpty;
|
|
1121
1234
|
})(Dict || (Dict = {}));
|
|
1122
1235
|
|
|
1123
1236
|
// src/Data/Num.ts
|
|
@@ -1139,21 +1252,21 @@ var Num;
|
|
|
1139
1252
|
Num2.inRange = (start, end) => (n) => n >= start && n < end;
|
|
1140
1253
|
Num2.parse = (s) => {
|
|
1141
1254
|
if (s.trim() === "") {
|
|
1142
|
-
return Maybe.none();
|
|
1255
|
+
return Maybe.make.none();
|
|
1143
1256
|
}
|
|
1144
1257
|
const n = Number(s);
|
|
1145
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
1258
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
1146
1259
|
};
|
|
1147
1260
|
Num2.add = (b) => (a) => a + b;
|
|
1148
1261
|
Num2.subtract = (b) => (a) => a - b;
|
|
1149
1262
|
Num2.multiply = (b) => (a) => a * b;
|
|
1150
|
-
Num2.divide = (b) => (a) => b === 0 ? Maybe.none() : Maybe.some(a / b);
|
|
1263
|
+
Num2.divide = (b) => (a) => b === 0 ? Maybe.make.none() : Maybe.make.some(a / b);
|
|
1151
1264
|
Num2.abs = (n) => Math.abs(n);
|
|
1152
1265
|
Num2.negate = (n) => -n;
|
|
1153
1266
|
Num2.round = (n) => Math.round(n);
|
|
1154
1267
|
Num2.floor = (n) => Math.floor(n);
|
|
1155
1268
|
Num2.ceil = (n) => Math.ceil(n);
|
|
1156
|
-
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.none() : Maybe.some(n % divisor);
|
|
1269
|
+
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.make.none() : Maybe.make.some(n % divisor);
|
|
1157
1270
|
Num2.sum = (ns) => {
|
|
1158
1271
|
let result = 0;
|
|
1159
1272
|
for (let i = 0; i < ns.length; i++) {
|
|
@@ -1161,10 +1274,10 @@ var Num;
|
|
|
1161
1274
|
}
|
|
1162
1275
|
return result;
|
|
1163
1276
|
};
|
|
1164
|
-
Num2.mean = (ns) => ns.length === 0 ? Maybe.none() : Maybe.some((0, Num2.sum)(ns) / ns.length);
|
|
1277
|
+
Num2.mean = (ns) => ns.length === 0 ? Maybe.make.none() : Maybe.make.some((0, Num2.sum)(ns) / ns.length);
|
|
1165
1278
|
Num2.min = (ns) => {
|
|
1166
1279
|
if (ns.length === 0) {
|
|
1167
|
-
return Maybe.none();
|
|
1280
|
+
return Maybe.make.none();
|
|
1168
1281
|
}
|
|
1169
1282
|
let [result] = ns;
|
|
1170
1283
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -1172,11 +1285,11 @@ var Num;
|
|
|
1172
1285
|
result = ns[i];
|
|
1173
1286
|
}
|
|
1174
1287
|
}
|
|
1175
|
-
return Maybe.some(result);
|
|
1288
|
+
return Maybe.make.some(result);
|
|
1176
1289
|
};
|
|
1177
1290
|
Num2.max = (ns) => {
|
|
1178
1291
|
if (ns.length === 0) {
|
|
1179
|
-
return Maybe.none();
|
|
1292
|
+
return Maybe.make.none();
|
|
1180
1293
|
}
|
|
1181
1294
|
let [result] = ns;
|
|
1182
1295
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -1184,7 +1297,7 @@ var Num;
|
|
|
1184
1297
|
result = ns[i];
|
|
1185
1298
|
}
|
|
1186
1299
|
}
|
|
1187
|
-
return Maybe.some(result);
|
|
1300
|
+
return Maybe.make.some(result);
|
|
1188
1301
|
};
|
|
1189
1302
|
})(Num || (Num = {}));
|
|
1190
1303
|
|
|
@@ -1227,32 +1340,43 @@ var RecResult;
|
|
|
1227
1340
|
var RecNonEmpty;
|
|
1228
1341
|
((RecNonEmpty2) => {
|
|
1229
1342
|
RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
RecNonEmpty2.
|
|
1234
|
-
RecNonEmpty2.
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1343
|
+
let from;
|
|
1344
|
+
((from2) => {
|
|
1345
|
+
from2.Record = (data) => _isNonEmpty(data) ? Maybe.make.some(data) : Maybe.make.none();
|
|
1346
|
+
})(from = RecNonEmpty2.from || (RecNonEmpty2.from = {}));
|
|
1347
|
+
RecNonEmpty2.keys = (data) => Rec.keys(data);
|
|
1348
|
+
RecNonEmpty2.values = (data) => Rec.values(data);
|
|
1349
|
+
RecNonEmpty2.entries = (data) => Rec.entries(data);
|
|
1350
|
+
RecNonEmpty2.reduce = (f) => (data) => (0, RecNonEmpty2.values)(data).reduce(f);
|
|
1351
|
+
RecNonEmpty2.map = (f) => (data) => Rec.map(f)(data);
|
|
1352
|
+
RecNonEmpty2.mapWithKey = (f) => (data) => Rec.mapWithKey(f)(data);
|
|
1238
1353
|
})(RecNonEmpty || (RecNonEmpty = {}));
|
|
1239
1354
|
var Rec;
|
|
1240
1355
|
((Rec2) => {
|
|
1241
|
-
|
|
1242
|
-
|
|
1356
|
+
let is;
|
|
1357
|
+
((is2) => {
|
|
1358
|
+
is2.empty = (data) => Object.keys(data).length === 0;
|
|
1359
|
+
is2.nonEmpty = _isNonEmpty;
|
|
1360
|
+
})(is = Rec2.is || (Rec2.is = {}));
|
|
1361
|
+
Rec2.map = (f) => (data) => {
|
|
1243
1362
|
const recordKeys = Object.keys(data);
|
|
1244
1363
|
const recordValues = Object.values(data);
|
|
1245
1364
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
1246
1365
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1366
|
+
const key = recordKeys[i];
|
|
1367
|
+
if (key === "__proto__") {
|
|
1368
|
+
Object.defineProperty(result, "__proto__", {
|
|
1369
|
+
value: f(recordValues[i]),
|
|
1370
|
+
writable: true,
|
|
1371
|
+
enumerable: true,
|
|
1372
|
+
configurable: true
|
|
1373
|
+
});
|
|
1374
|
+
} else {
|
|
1375
|
+
result[key] = f(recordValues[i]);
|
|
1376
|
+
}
|
|
1253
1377
|
}
|
|
1254
1378
|
return result;
|
|
1255
|
-
}
|
|
1379
|
+
};
|
|
1256
1380
|
Rec2.filterMap = (f) => (data) => {
|
|
1257
1381
|
const recordKeys = Object.keys(data);
|
|
1258
1382
|
const recordValues = Object.values(data);
|
|
@@ -1270,20 +1394,25 @@ var Rec;
|
|
|
1270
1394
|
}
|
|
1271
1395
|
return result;
|
|
1272
1396
|
};
|
|
1273
|
-
Rec2.mapWithKey = (f) => (
|
|
1397
|
+
Rec2.mapWithKey = (f) => (data) => {
|
|
1274
1398
|
const recordKeys = Object.keys(data);
|
|
1275
1399
|
const recordValues = Object.values(data);
|
|
1276
1400
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
1277
1401
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1402
|
+
const key = recordKeys[i];
|
|
1403
|
+
if (key === "__proto__") {
|
|
1404
|
+
Object.defineProperty(result, "__proto__", {
|
|
1405
|
+
value: f(key, recordValues[i]),
|
|
1406
|
+
writable: true,
|
|
1407
|
+
enumerable: true,
|
|
1408
|
+
configurable: true
|
|
1409
|
+
});
|
|
1410
|
+
} else {
|
|
1411
|
+
result[key] = f(key, recordValues[i]);
|
|
1412
|
+
}
|
|
1284
1413
|
}
|
|
1285
1414
|
return result;
|
|
1286
|
-
}
|
|
1415
|
+
};
|
|
1287
1416
|
Rec2.filter = (predicate) => (data) => {
|
|
1288
1417
|
const recordKeys = Object.keys(data);
|
|
1289
1418
|
const recordValues = Object.values(data);
|
|
@@ -1313,7 +1442,10 @@ var Rec;
|
|
|
1313
1442
|
Rec2.keys = (data) => Object.keys(data);
|
|
1314
1443
|
Rec2.values = (data) => Object.values(data);
|
|
1315
1444
|
Rec2.entries = (data) => Object.entries(data);
|
|
1316
|
-
|
|
1445
|
+
let from;
|
|
1446
|
+
((from2) => {
|
|
1447
|
+
from2.entries = (data) => Object.fromEntries(data);
|
|
1448
|
+
})(from = Rec2.from || (Rec2.from = {}));
|
|
1317
1449
|
Rec2.groupBy = (keyFn) => (items) => {
|
|
1318
1450
|
const result = {};
|
|
1319
1451
|
for (const item of items) {
|
|
@@ -1354,7 +1486,6 @@ var Rec;
|
|
|
1354
1486
|
...data,
|
|
1355
1487
|
...other
|
|
1356
1488
|
});
|
|
1357
|
-
Rec2.isEmpty = (data) => Object.keys(data).length === 0;
|
|
1358
1489
|
Rec2.size = (data) => Object.keys(data).length;
|
|
1359
1490
|
Rec2.mapKeys = (f) => (data) => {
|
|
1360
1491
|
const result = {};
|
|
@@ -1378,8 +1509,20 @@ var Rec;
|
|
|
1378
1509
|
})(Rec || (Rec = {}));
|
|
1379
1510
|
|
|
1380
1511
|
// src/Data/Str.ts
|
|
1512
|
+
var StrNonEmpty;
|
|
1513
|
+
((StrNonEmpty2) => {
|
|
1514
|
+
let from;
|
|
1515
|
+
((from2) => {
|
|
1516
|
+
from2.String = (s) => s.length > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
1517
|
+
})(from = StrNonEmpty2.from || (StrNonEmpty2.from = {}));
|
|
1518
|
+
})(StrNonEmpty || (StrNonEmpty = {}));
|
|
1381
1519
|
var Str;
|
|
1382
1520
|
((Str2) => {
|
|
1521
|
+
let is;
|
|
1522
|
+
((is2) => {
|
|
1523
|
+
is2.empty = (s) => s.length === 0;
|
|
1524
|
+
is2.nonEmpty = (s) => s.length > 0;
|
|
1525
|
+
})(is = Str2.is || (Str2.is = {}));
|
|
1383
1526
|
Str2.split = (separator) => (s) => s.split(separator);
|
|
1384
1527
|
Str2.trim = (s) => s.trim();
|
|
1385
1528
|
Str2.includes = (substring) => (s) => s.includes(substring);
|
|
@@ -1392,7 +1535,6 @@ var Str;
|
|
|
1392
1535
|
Str2.capitalize = (s) => s.length === 0 ? "" : s.charAt(0).toUpperCase() + s.slice(1);
|
|
1393
1536
|
Str2.lines = (s) => s.split(/\r?\n|\r/);
|
|
1394
1537
|
Str2.words = (s) => s.trim().split(/\s+/).filter(Boolean);
|
|
1395
|
-
Str2.isEmpty = (s) => s.length === 0;
|
|
1396
1538
|
Str2.isBlank = (s) => s.trim().length === 0;
|
|
1397
1539
|
Str2.length = (s) => s.length;
|
|
1398
1540
|
Str2.slice = (start, end) => (s) => s.slice(start, end);
|
|
@@ -1411,7 +1553,7 @@ var Str;
|
|
|
1411
1553
|
*/
|
|
1412
1554
|
int: (s) => {
|
|
1413
1555
|
const n = parseInt(s, 10);
|
|
1414
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
1556
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
1415
1557
|
},
|
|
1416
1558
|
/**
|
|
1417
1559
|
* Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
|
|
@@ -1425,27 +1567,49 @@ var Str;
|
|
|
1425
1567
|
*/
|
|
1426
1568
|
float: (s) => {
|
|
1427
1569
|
const n = parseFloat(s);
|
|
1428
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
1570
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
1429
1571
|
}
|
|
1430
1572
|
};
|
|
1431
1573
|
Str2.parseJson = (s) => {
|
|
1432
1574
|
try {
|
|
1433
|
-
return Result.ok(JSON.parse(s));
|
|
1575
|
+
return Result.make.ok(JSON.parse(s));
|
|
1434
1576
|
} catch (error) {
|
|
1435
|
-
return Result.err(error);
|
|
1577
|
+
return Result.make.err(error);
|
|
1436
1578
|
}
|
|
1437
1579
|
};
|
|
1580
|
+
Str2.NonEmpty = StrNonEmpty;
|
|
1438
1581
|
})(Str || (Str = {}));
|
|
1439
1582
|
|
|
1440
1583
|
// src/Data/Uniq.ts
|
|
1584
|
+
var UniqNonEmpty;
|
|
1585
|
+
((UniqNonEmpty2) => {
|
|
1586
|
+
UniqNonEmpty2.singleton = (item) => new globalThis.Set([item]);
|
|
1587
|
+
let from;
|
|
1588
|
+
((from2) => {
|
|
1589
|
+
from2.Set = (s) => s.size > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
1590
|
+
})(from = UniqNonEmpty2.from || (UniqNonEmpty2.from = {}));
|
|
1591
|
+
UniqNonEmpty2.reduce = (f) => (s) => to.Array(s).reduce(f);
|
|
1592
|
+
UniqNonEmpty2.map = (f) => (s) => Uniq.map(f)(s);
|
|
1593
|
+
let to;
|
|
1594
|
+
((to2) => {
|
|
1595
|
+
to2.Array = (s) => Uniq.to.Array(s);
|
|
1596
|
+
})(to = UniqNonEmpty2.to || (UniqNonEmpty2.to = {}));
|
|
1597
|
+
})(UniqNonEmpty || (UniqNonEmpty = {}));
|
|
1441
1598
|
var Uniq;
|
|
1442
1599
|
((Uniq2) => {
|
|
1600
|
+
let is;
|
|
1601
|
+
((is2) => {
|
|
1602
|
+
is2.empty = (s) => s.size === 0;
|
|
1603
|
+
is2.nonEmpty = (s) => s.size > 0;
|
|
1604
|
+
})(is = Uniq2.is || (Uniq2.is = {}));
|
|
1443
1605
|
Uniq2.empty = () => new globalThis.Set();
|
|
1444
1606
|
Uniq2.singleton = (item) => new globalThis.Set([item]);
|
|
1445
|
-
|
|
1607
|
+
let from;
|
|
1608
|
+
((from2) => {
|
|
1609
|
+
from2.Array = (arr) => new globalThis.Set(arr);
|
|
1610
|
+
})(from = Uniq2.from || (Uniq2.from = {}));
|
|
1446
1611
|
Uniq2.has = (item) => (s) => s.has(item);
|
|
1447
1612
|
Uniq2.size = (s) => s.size;
|
|
1448
|
-
Uniq2.isEmpty = (s) => s.size === 0;
|
|
1449
1613
|
Uniq2.isSubsetOf = (other) => (s) => {
|
|
1450
1614
|
const set = s;
|
|
1451
1615
|
if (typeof set.isSubsetOf === "function") {
|
|
@@ -1534,7 +1698,11 @@ var Uniq;
|
|
|
1534
1698
|
}
|
|
1535
1699
|
return acc;
|
|
1536
1700
|
};
|
|
1537
|
-
|
|
1701
|
+
let to;
|
|
1702
|
+
((to2) => {
|
|
1703
|
+
to2.Array = (s) => [...s];
|
|
1704
|
+
})(to = Uniq2.to || (Uniq2.to = {}));
|
|
1705
|
+
Uniq2.NonEmpty = UniqNonEmpty;
|
|
1538
1706
|
})(Uniq || (Uniq = {}));
|
|
1539
1707
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1540
1708
|
0 && (module.exports = {
|