@nlozgachev/pipelined 0.53.0 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/data.js CHANGED
@@ -1,2139 +1,4 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/Data/index.ts
21
- var Data_exports = {};
22
- __export(Data_exports, {
23
- Arr: () => Arr,
24
- BigNum: () => BigNum,
25
- Dict: () => Dict,
26
- Json: () => Json,
27
- Num: () => Num,
28
- Rec: () => Rec,
29
- Str: () => Str,
30
- Uniq: () => Uniq
31
- });
32
- module.exports = __toCommonJS(Data_exports);
33
-
34
- // src/Core/Deferred.ts
35
- var Deferred;
36
- ((Deferred2) => {
37
- let from;
38
- ((from2) => {
39
- from2.Promise = (p) => (
40
- // eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
41
- { then: ((f) => p.then(f)) }
42
- );
43
- })(from = Deferred2.from || (Deferred2.from = {}));
44
- let to;
45
- ((to2) => {
46
- to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
47
- })(to = Deferred2.to || (Deferred2.to = {}));
48
- Deferred2.all = (deferreds) => from.Promise(globalThis.Promise.all(deferreds.map((d) => to.Promise(d))));
49
- Deferred2.race = (deferreds) => from.Promise(globalThis.Promise.race(deferreds.map((d) => to.Promise(d))));
50
- })(Deferred || (Deferred = {}));
51
-
52
- // src/Core/Maybe.ts
53
- var _none = { kind: "None" };
54
- var Maybe;
55
- ((Maybe3) => {
56
- let make;
57
- ((make2) => {
58
- make2.some = (value) => ({ kind: "Some", value });
59
- make2.none = () => _none;
60
- })(make = Maybe3.make || (Maybe3.make = {}));
61
- let is;
62
- ((is2) => {
63
- is2.some = (data) => data.kind === "Some";
64
- is2.none = (data) => data.kind === "None";
65
- })(is = Maybe3.is || (Maybe3.is = {}));
66
- let to;
67
- ((to2) => {
68
- to2.nullable = (data) => is.some(data) ? data.value : null;
69
- to2.undefined = (data) => is.some(data) ? data.value : globalThis.undefined;
70
- to2.Result = (onNone) => (data) => is.some(data) ? Result.make.ok(data.value) : Result.make.err(onNone());
71
- })(to = Maybe3.to || (Maybe3.to = {}));
72
- let from;
73
- ((from2) => {
74
- from2.nullable = (value) => value === null || value === void 0 ? make.none() : make.some(value);
75
- from2.Predicate = (pred) => (a) => pred(a) ? make.some(a) : make.none();
76
- from2.Result = (data) => Result.is.ok(data) ? make.some(data.value) : make.none();
77
- })(from = Maybe3.from || (Maybe3.from = {}));
78
- Maybe3.map = (f) => (data) => is.some(data) ? make.some(f(data.value)) : data;
79
- Maybe3.chain = (f) => (data) => is.some(data) ? f(data.value) : data;
80
- Maybe3.fold = (onNone, onSome) => (data) => is.some(data) ? onSome(data.value) : onNone();
81
- Maybe3.match = (cases) => (data) => is.some(data) ? cases.some(data.value) : cases.none();
82
- Maybe3.getOrElse = (defaultValue) => (data) => is.some(data) ? data.value : defaultValue();
83
- Maybe3.tap = (f) => (data) => {
84
- if (is.some(data)) {
85
- f(data.value);
86
- }
87
- return data;
88
- };
89
- Maybe3.filter = (predicate) => (data) => is.some(data) ? predicate(data.value) ? data : make.none() : data;
90
- Maybe3.recover = (fallback) => (data) => is.some(data) ? data : fallback();
91
- Maybe3.ap = (arg) => (data) => is.some(data) && is.some(arg) ? make.some(data.value(arg.value)) : make.none();
92
- Maybe3.bindTo = (key) => (data) => (0, Maybe3.map)((a) => ({ [key]: a }))(data);
93
- Maybe3.bind = (key, f) => (data) => (0, Maybe3.chain)(
94
- (a) => (0, Maybe3.map)((b) => ({ ...a, [key]: b }))(f(a))
95
- )(data);
96
- Maybe3.struct = (fields) => {
97
- const result = {};
98
- for (const key in fields) {
99
- if (Object.hasOwn(fields, key)) {
100
- const res = fields[key];
101
- if (is.none(res)) {
102
- return res;
103
- }
104
- result[key] = res.value;
105
- }
106
- }
107
- return make.some(result);
108
- };
109
- Maybe3.transposeResult = (data) => is.none(data) ? Result.make.ok(make.none()) : Result.is.ok(data.value) ? Result.make.ok(make.some(data.value.value)) : Result.make.err(data.value.error);
110
- })(Maybe || (Maybe = {}));
111
-
112
- // src/Types/Brand.ts
113
- var Brand;
114
- ((Brand2) => {
115
- Brand2.wrap = () => (value) => value;
116
- Brand2.unwrap = (branded) => branded;
117
- })(Brand || (Brand = {}));
118
-
119
- // src/Types/Duration.ts
120
- var Duration;
121
- ((Duration2) => {
122
- const wrap = Brand.wrap();
123
- Duration2.milliseconds = (ms) => wrap(ms);
124
- Duration2.seconds = (s) => wrap(s * 1e3);
125
- Duration2.minutes = (m) => wrap(m * 60 * 1e3);
126
- Duration2.hours = (h) => wrap(h * 60 * 60 * 1e3);
127
- Duration2.days = (d) => wrap(d * 24 * 60 * 60 * 1e3);
128
- let to;
129
- ((to2) => {
130
- to2.milliseconds = (d) => Brand.unwrap(d);
131
- to2.seconds = (d) => Brand.unwrap(d) / 1e3;
132
- to2.minutes = (d) => Brand.unwrap(d) / (60 * 1e3);
133
- to2.hours = (d) => Brand.unwrap(d) / (60 * 60 * 1e3);
134
- to2.days = (d) => Brand.unwrap(d) / (24 * 60 * 60 * 1e3);
135
- })(to = Duration2.to || (Duration2.to = {}));
136
- Duration2.add = (other) => (self) => wrap(Brand.unwrap(self) + Brand.unwrap(other));
137
- Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
138
- })(Duration || (Duration = {}));
139
-
140
- // src/Core/Result.ts
141
- var Result;
142
- ((Result3) => {
143
- let make;
144
- ((make2) => {
145
- make2.ok = (value) => ({ kind: "Ok", value });
146
- make2.err = (e) => ({ kind: "Err", error: e });
147
- })(make = Result3.make || (Result3.make = {}));
148
- let is;
149
- ((is2) => {
150
- is2.ok = (data) => data.kind === "Ok";
151
- is2.err = (data) => data.kind === "Err";
152
- })(is = Result3.is || (Result3.is = {}));
153
- Result3.tryCatch = (f, options) => {
154
- try {
155
- return make.ok(f());
156
- } catch (error) {
157
- return make.err(options.onError(error));
158
- }
159
- };
160
- Result3.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
161
- Result3.mapError = (f) => (data) => is.err(data) ? make.err(f(data.error)) : data;
162
- Result3.chain = (f) => (data) => is.ok(data) ? f(data.value) : data;
163
- Result3.fold = (onErr, onOk) => (data) => is.ok(data) ? onOk(data.value) : onErr(data.error);
164
- Result3.match = (cases) => (data) => is.ok(data) ? cases.ok(data.value) : cases.err(data.error);
165
- Result3.getOrElse = (defaultValue) => (data) => is.ok(data) ? data.value : defaultValue();
166
- Result3.tap = (f) => (data) => {
167
- if (is.ok(data)) {
168
- f(data.value);
169
- }
170
- return data;
171
- };
172
- Result3.tapError = (f) => (data) => {
173
- if (is.err(data)) {
174
- f(data.error);
175
- }
176
- return data;
177
- };
178
- let from;
179
- ((from2) => {
180
- from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
181
- from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
182
- from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
183
- from2.throwable = (f, options) => (...args) => {
184
- try {
185
- return make.ok(f(...args));
186
- } catch (error) {
187
- return make.err(options.onError(error));
188
- }
189
- };
190
- from2.Validation = (combineErrors) => (val) => Validation.is.passed(val) ? make.ok(val.value) : make.err(combineErrors(val.errors));
191
- })(from = Result3.from || (Result3.from = {}));
192
- Result3.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
193
- Result3.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
194
- let to;
195
- ((to2) => {
196
- to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
197
- to2.Validation = (data) => Validation.from.Result(data);
198
- })(to = Result3.to || (Result3.to = {}));
199
- Result3.transposeMaybe = (data) => is.err(data) ? Maybe.make.some(data) : Maybe.is.some(data.value) ? Maybe.make.some(make.ok(data.value.value)) : Maybe.make.none();
200
- Result3.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
201
- Result3.bindTo = (key) => (data) => (0, Result3.map)((a) => ({ [key]: a }))(data);
202
- Result3.bind = (key, f) => (data) => (0, Result3.chain)(
203
- (a) => (0, Result3.map)((b) => ({ ...a, [key]: b }))(f(a))
204
- )(data);
205
- Result3.struct = (fields) => {
206
- const result = {};
207
- for (const key in fields) {
208
- if (Object.hasOwn(fields, key)) {
209
- const res = fields[key];
210
- if (is.err(res)) {
211
- return res;
212
- }
213
- result[key] = res.value;
214
- }
215
- }
216
- return make.ok(result);
217
- };
218
- Result3.ensure = (predicate, onFail) => (data) => is.err(data) ? data : predicate(data.value) ? data : make.err(onFail(data.value));
219
- Result3.bimap = (onErr, onOk) => (data) => is.ok(data) ? make.ok(onOk(data.value)) : make.err(onErr(data.error));
220
- })(Result || (Result = {}));
221
-
222
- // src/Core/TaskMaybe.ts
223
- var TaskMaybe;
224
- ((TaskMaybe2) => {
225
- let make;
226
- ((make2) => {
227
- make2.some = (value) => Task.resolve(Maybe.make.some(value));
228
- make2.none = () => Task.resolve(Maybe.make.none());
229
- })(make = TaskMaybe2.make || (TaskMaybe2.make = {}));
230
- ({ some: TaskMaybe2.some } = make);
231
- ({ none: TaskMaybe2.none } = make);
232
- let from;
233
- ((from2) => {
234
- from2.Maybe = (option) => Task.resolve(option);
235
- from2.nullable = (value) => Task.resolve(Maybe.from.nullable(value));
236
- from2.Result = (result) => Task.resolve(Result.to.Maybe(result));
237
- from2.Task = (task) => Task.map(Maybe.make.some)(task);
238
- })(from = TaskMaybe2.from || (TaskMaybe2.from = {}));
239
- TaskMaybe2.tryCatch = (f) => Task.from.Promise(
240
- (signal) => Promise.resolve(f(signal)).then(Maybe.make.some).catch(() => Maybe.make.none())
241
- );
242
- TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
243
- TaskMaybe2.chain = (f) => (data) => Task.chain(
244
- (option) => Maybe.is.some(option) ? f(option.value) : Task.resolve(Maybe.make.none())
245
- )(data);
246
- TaskMaybe2.ap = (arg) => (data) => Task.from.Promise(
247
- (signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
248
- ([of_, oa]) => Maybe.ap(oa)(of_)
249
- )
250
- );
251
- TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
252
- TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
253
- TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
254
- TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
255
- TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
256
- let to;
257
- ((to2) => {
258
- to2.Result = (onNone) => (data) => Task.map(Maybe.to.Result(onNone))(data);
259
- })(to = TaskMaybe2.to || (TaskMaybe2.to = {}));
260
- TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
261
- TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
262
- (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
263
- )(data);
264
- TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.is.none(maybe) ? fallback() : Task.resolve(maybe))(
265
- data
266
- );
267
- TaskMaybe2.struct = (fields) => Task.from.Promise((signal) => {
268
- const keys = Object.keys(fields);
269
- const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
270
- return Promise.all(promises).then((results) => {
271
- const record = {};
272
- for (let i = 0; i < keys.length; i++) {
273
- const res = results[i];
274
- if (Maybe.is.none(res)) {
275
- return res;
276
- }
277
- record[keys[i]] = res.value;
278
- }
279
- return Maybe.make.some(record);
280
- });
281
- });
282
- })(TaskMaybe || (TaskMaybe = {}));
283
-
284
- // src/Core/TaskResult.ts
285
- var TaskResult;
286
- ((TaskResult2) => {
287
- let make;
288
- ((make2) => {
289
- make2.ok = (value) => Task.resolve(Result.make.ok(value));
290
- make2.err = (error) => Task.resolve(Result.make.err(error));
291
- })(make = TaskResult2.make || (TaskResult2.make = {}));
292
- ({ ok: TaskResult2.ok } = make);
293
- ({ err: TaskResult2.err } = make);
294
- let from;
295
- ((from2) => {
296
- from2.nullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.make.err(onNull()) : Result.make.ok(value));
297
- from2.Maybe = (onNone) => (maybe) => Task.resolve(Maybe.is.none(maybe) ? Result.make.err(onNone()) : Result.make.ok(maybe.value));
298
- from2.Result = (result) => Task.resolve(result);
299
- from2.throwable = (f, options) => (...args) => Task.from.Promise(
300
- () => f(...args).then(Result.make.ok).catch((error) => Result.make.err(options.onError(error)))
301
- );
302
- })(from = TaskResult2.from || (TaskResult2.from = {}));
303
- let to;
304
- ((to2) => {
305
- to2.Maybe = (data) => Task.map(Result.to.Maybe)(data);
306
- })(to = TaskResult2.to || (TaskResult2.to = {}));
307
- TaskResult2.tryCatch = (f, options) => Task.from.Promise(
308
- (signal) => Promise.resolve(f(signal)).then(Result.make.ok).catch((error) => Result.make.err(options.onError(error)))
309
- );
310
- TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
311
- TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
312
- TaskResult2.chain = (f) => (data) => Task.chain(
313
- (result) => Result.is.ok(result) ? f(result.value) : Task.resolve(Result.make.err(result.error))
314
- )(data);
315
- TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
316
- TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
317
- TaskResult2.recover = (fallback) => (data) => Task.chain(
318
- (result) => Result.is.err(result) ? fallback(result.error) : Task.resolve(result)
319
- )(data);
320
- TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
321
- TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
322
- TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
323
- TaskResult2.ap = (arg) => (data) => Task.from.Promise(
324
- (signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
325
- ([of_, oa]) => Result.ap(oa)(of_)
326
- )
327
- );
328
- TaskResult2.run = (signal) => (task) => task(signal);
329
- TaskResult2.bindTo = (key) => (data) => (0, TaskResult2.map)((a) => ({ [key]: a }))(data);
330
- TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
331
- (a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
332
- )(data);
333
- TaskResult2.struct = (fields) => Task.from.Promise((signal) => {
334
- const keys = Object.keys(fields);
335
- const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
336
- return Promise.all(promises).then((results) => {
337
- const record = {};
338
- for (let i = 0; i < keys.length; i++) {
339
- const res = results[i];
340
- if (Result.is.err(res)) {
341
- return res;
342
- }
343
- record[keys[i]] = res.value;
344
- }
345
- return Result.make.ok(record);
346
- });
347
- });
348
- TaskResult2.retry = (policy) => (task) => Task.from.Promise((signal) => {
349
- const { attempts } = policy;
350
- const wait = (duration) => new Promise((res) => {
351
- let timerId;
352
- const onAbort = () => {
353
- clearTimeout(timerId);
354
- res();
355
- };
356
- if (signal) {
357
- if (signal.aborted) {
358
- return res();
359
- }
360
- signal.addEventListener("abort", onAbort, { once: true });
361
- }
362
- timerId = setTimeout(() => {
363
- signal?.removeEventListener("abort", onAbort);
364
- res();
365
- }, Duration.to.milliseconds(duration));
366
- });
367
- const executeAttempt = (attempt) => Deferred.to.Promise(task(signal)).then((res) => {
368
- if (Result.is.ok(res) || attempt >= attempts || signal?.aborted) {
369
- return res;
370
- }
371
- const delay = policy.getDelay(attempt);
372
- return wait(delay).then(() => executeAttempt(attempt + 1));
373
- });
374
- return executeAttempt(1);
375
- });
376
- TaskResult2.memoize = (task) => Task.memoize(task);
377
- TaskResult2.timeout = (options) => (task) => Task.from.Promise((signal) => {
378
- const ms = Duration.to.milliseconds(options.duration);
379
- return new Promise((resolve) => {
380
- let timerId;
381
- const onAbort = () => {
382
- clearTimeout(timerId);
383
- };
384
- if (signal) {
385
- if (signal.aborted) {
386
- return Deferred.to.Promise(task(signal)).then(resolve);
387
- }
388
- signal.addEventListener("abort", onAbort, { once: true });
389
- }
390
- timerId = setTimeout(() => {
391
- signal?.removeEventListener("abort", onAbort);
392
- resolve(Result.make.err(options.onTimeout()));
393
- }, ms);
394
- Deferred.to.Promise(task(signal)).then((res) => {
395
- clearTimeout(timerId);
396
- signal?.removeEventListener("abort", onAbort);
397
- resolve(res);
398
- });
399
- });
400
- });
401
- TaskResult2.allSettled = (tasks) => Task.from.Promise((signal) => Promise.all(tasks.map((task) => Deferred.to.Promise(task(signal)))));
402
- })(TaskResult || (TaskResult = {}));
403
-
404
- // src/internal/InternalTypes.ts
405
- var isNonEmptyArr = (list) => list.length > 0;
406
-
407
- // src/Core/TaskValidation.ts
408
- var TaskValidation;
409
- ((TaskValidation2) => {
410
- let make;
411
- ((make2) => {
412
- make2.passed = (value) => Task.resolve(Validation.make.passed(value));
413
- make2.failed = (error) => Task.resolve(Validation.make.failed(error));
414
- make2.failedAll = (errors) => Task.resolve(Validation.make.failedAll(errors));
415
- })(make = TaskValidation2.make || (TaskValidation2.make = {}));
416
- ({ passed: TaskValidation2.passed } = make);
417
- ({ failed: TaskValidation2.failed } = make);
418
- ({ failedAll: TaskValidation2.failedAll } = make);
419
- let from;
420
- ((from2) => {
421
- from2.Validation = (validation) => Task.resolve(validation);
422
- from2.nullable = (onNull) => (value) => Task.resolve(
423
- value === null || value === void 0 ? Validation.make.failed(onNull()) : Validation.make.passed(value)
424
- );
425
- from2.Maybe = (onNone) => (maybe) => Task.resolve(
426
- Maybe.is.none(maybe) ? Validation.make.failed(onNone()) : Validation.make.passed(maybe.value)
427
- );
428
- from2.Result = (result) => Task.resolve(Validation.from.Result(result));
429
- })(from = TaskValidation2.from || (TaskValidation2.from = {}));
430
- TaskValidation2.tryCatch = (f, onError) => Task.from.Promise(
431
- (signal) => Promise.resolve(f(signal)).then(Validation.make.passed).catch(
432
- (error) => Validation.make.failed(onError(error))
433
- )
434
- );
435
- TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
436
- TaskValidation2.ap = (arg) => (data) => Task.from.Promise(
437
- (signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
438
- ([vf, va]) => Validation.ap(va)(vf)
439
- )
440
- );
441
- TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
442
- TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
443
- TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
444
- TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
445
- TaskValidation2.recover = (fallback) => (data) => Task.chain(
446
- (validation) => Validation.is.passed(validation) ? Task.resolve(validation) : fallback(validation.errors)
447
- )(data);
448
- TaskValidation2.product = (first, second) => Task.from.Promise(
449
- (signal) => Promise.all([Deferred.to.Promise(first(signal)), Deferred.to.Promise(second(signal))]).then(
450
- ([va, vb]) => Validation.product(va, vb)
451
- )
452
- );
453
- TaskValidation2.productAll = (data) => Task.from.Promise(
454
- (signal) => Promise.all(data.map((t) => Deferred.to.Promise(t(signal)))).then((results) => {
455
- const [first, ...rest] = results;
456
- return Validation.productAll([first, ...rest]);
457
- })
458
- );
459
- TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
460
- TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
461
- TaskValidation2.struct = (fields) => Task.from.Promise((signal) => {
462
- const keys = Object.keys(fields);
463
- const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
464
- return Promise.all(promises).then((results) => {
465
- const record = {};
466
- const errors = [];
467
- for (let i = 0; i < keys.length; i++) {
468
- const res = results[i];
469
- if (Validation.is.passed(res)) {
470
- record[keys[i]] = res.value;
471
- } else {
472
- errors.push(...res.errors);
473
- }
474
- }
475
- return isNonEmptyArr(errors) ? Validation.make.failedAll(errors) : Validation.make.passed(record);
476
- });
477
- });
478
- })(TaskValidation || (TaskValidation = {}));
479
-
480
- // src/Core/Task.ts
481
- var toPromise = (task, signal) => Deferred.to.Promise(task(signal));
482
- var getMs = (duration) => Duration.to.milliseconds(duration);
483
- var Task;
484
- ((Task2) => {
485
- Task2.resolve = (value) => () => Deferred.from.Promise(globalThis.Promise.resolve(value));
486
- let from;
487
- ((from2) => {
488
- from2.Promise = (f) => (signal) => Deferred.from.Promise(f(signal));
489
- from2.sync = (f) => () => Deferred.from.Promise(globalThis.Promise.resolve(f()));
490
- })(from = Task2.from || (Task2.from = {}));
491
- Task2.map = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then(f));
492
- Task2.chain = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
493
- Task2.ap = (arg) => (data) => from.Promise((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
494
- Task2.tap = (f) => (data) => from.Promise(
495
- (signal) => toPromise(data, signal).then((a) => {
496
- f(a);
497
- return a;
498
- })
499
- );
500
- Task2.all = (tasks) => from.Promise(
501
- (signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
502
- );
503
- Task2.delay = (duration) => (data) => from.Promise(
504
- (signal) => new Promise((res) => {
505
- let timerId;
506
- const onAbort = () => {
507
- clearTimeout(timerId);
508
- res(toPromise(data, signal));
509
- };
510
- if (signal) {
511
- if (signal.aborted) {
512
- return res(toPromise(data, signal));
513
- }
514
- signal.addEventListener("abort", onAbort, { once: true });
515
- }
516
- timerId = setTimeout(() => {
517
- signal?.removeEventListener("abort", onAbort);
518
- res(toPromise(data, signal));
519
- }, getMs(duration));
520
- })
521
- );
522
- Task2.repeat = (options) => (task) => from.Promise((signal) => {
523
- const { times, delay: delayDuration } = options;
524
- if (times <= 0) {
525
- return Promise.resolve([]);
526
- }
527
- const results = [];
528
- const wait = () => new Promise((r) => {
529
- let timerId;
530
- const onAbort = () => {
531
- clearTimeout(timerId);
532
- r();
533
- };
534
- if (signal) {
535
- signal.addEventListener("abort", onAbort, { once: true });
536
- }
537
- timerId = setTimeout(() => {
538
- signal?.removeEventListener("abort", onAbort);
539
- r();
540
- }, delayDuration ? getMs(delayDuration) : 0);
541
- });
542
- const run2 = (left) => {
543
- if (signal?.aborted) {
544
- return Promise.resolve(results);
545
- }
546
- return toPromise(task, signal).then((a) => {
547
- results.push(a);
548
- if (left <= 1 || signal?.aborted) {
549
- return results;
550
- }
551
- return wait().then(() => run2(left - 1));
552
- });
553
- };
554
- return run2(times);
555
- });
556
- Task2.repeatUntil = (options) => (task) => from.Promise((signal) => {
557
- const { when: predicate, delay: delayDuration, maxAttempts } = options;
558
- const wait = () => new Promise((r) => {
559
- let timerId;
560
- const onAbort = () => {
561
- clearTimeout(timerId);
562
- r();
563
- };
564
- if (signal) {
565
- signal.addEventListener("abort", onAbort, { once: true });
566
- }
567
- timerId = setTimeout(() => {
568
- signal?.removeEventListener("abort", onAbort);
569
- r();
570
- }, delayDuration ? getMs(delayDuration) : 0);
571
- });
572
- const run2 = (attempt, lastValue) => {
573
- if (signal?.aborted && lastValue !== void 0) {
574
- return Promise.resolve(lastValue);
575
- }
576
- return toPromise(task, signal).then((a) => {
577
- if (predicate(a)) {
578
- return a;
579
- }
580
- if (maxAttempts !== void 0 && attempt >= maxAttempts) {
581
- return a;
582
- }
583
- if (signal?.aborted) {
584
- return a;
585
- }
586
- return wait().then(() => run2(attempt + 1, a));
587
- });
588
- };
589
- return run2(1);
590
- });
591
- Task2.race = (tasks) => {
592
- if (tasks.length === 0) {
593
- return () => Deferred.from.Promise(new Promise(() => {
594
- }));
595
- }
596
- return from.Promise((outerSignal) => {
597
- const controllers = tasks.map(() => new AbortController());
598
- const onOuterAbort = () => {
599
- for (const ctrl of controllers) {
600
- ctrl.abort();
601
- }
602
- };
603
- if (outerSignal) {
604
- if (outerSignal.aborted) {
605
- onOuterAbort();
606
- } else {
607
- outerSignal.addEventListener("abort", onOuterAbort, { once: true });
608
- }
609
- }
610
- const promises = tasks.map((task, idx) => {
611
- const ctrl = controllers[idx];
612
- return toPromise(task, ctrl.signal).then((result) => {
613
- for (let i = 0; i < controllers.length; i++) {
614
- if (i !== idx) {
615
- controllers[i].abort();
616
- }
617
- }
618
- outerSignal?.removeEventListener("abort", onOuterAbort);
619
- return result;
620
- });
621
- });
622
- return Promise.race(promises);
623
- });
624
- };
625
- Task2.sequence = (tasks) => from.Promise((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
626
- Task2.sequential = (tasks) => from.Promise(async (signal) => {
627
- const results = [];
628
- for (const task of tasks) {
629
- if (signal?.aborted) {
630
- break;
631
- }
632
- results.push(await toPromise(task, signal));
633
- }
634
- return results;
635
- });
636
- Task2.timeout = (options) => (task) => from.Promise((outerSignal) => {
637
- const { duration, onTimeout } = options;
638
- const controller = new AbortController();
639
- let timerId;
640
- let cleanUp = () => {
641
- };
642
- const onOuterAbort = () => {
643
- cleanUp();
644
- controller.abort();
645
- };
646
- cleanUp = () => {
647
- clearTimeout(timerId);
648
- outerSignal?.removeEventListener("abort", onOuterAbort);
649
- };
650
- if (outerSignal) {
651
- if (outerSignal.aborted) {
652
- controller.abort();
653
- } else {
654
- outerSignal.addEventListener("abort", onOuterAbort, { once: true });
655
- }
656
- }
657
- return Promise.race([
658
- toPromise(task, controller.signal).then((a) => {
659
- cleanUp();
660
- return Result.make.ok(a);
661
- }),
662
- new Promise((res) => {
663
- timerId = setTimeout(() => {
664
- controller.abort();
665
- cleanUp();
666
- res(Result.make.err(onTimeout()));
667
- }, getMs(duration));
668
- })
669
- ]);
670
- });
671
- Task2.abortable = (factory) => {
672
- let currentController = null;
673
- const abort = () => currentController?.abort();
674
- const task = (outerSignal) => {
675
- currentController?.abort();
676
- currentController = new AbortController();
677
- const controller = currentController;
678
- if (outerSignal) {
679
- if (outerSignal.aborted) {
680
- controller.abort(outerSignal.reason);
681
- } else {
682
- outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
683
- }
684
- }
685
- return Deferred.from.Promise(factory(controller.signal));
686
- };
687
- return { task, abort };
688
- };
689
- Task2.run = (signal) => (task) => task(signal);
690
- Task2.bindTo = (key) => (data) => (0, Task2.map)((a) => ({ [key]: a }))(data);
691
- Task2.bind = (key, f) => (data) => (0, Task2.chain)(
692
- (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
693
- )(data);
694
- Task2.memoize = (task) => {
695
- let cached = null;
696
- return (signal) => {
697
- if (cached === null) {
698
- cached = task(signal);
699
- }
700
- return cached;
701
- };
702
- };
703
- Task2.withProgress = (onProgress) => (task) => (signal) => {
704
- onProgress(0);
705
- const d = task(signal);
706
- return Deferred.from.Promise(
707
- Deferred.to.Promise(d).then((res) => {
708
- onProgress(1);
709
- return res;
710
- })
711
- );
712
- };
713
- Task2.withLabel = (label) => (task) => {
714
- const fn = ((signal) => task(signal));
715
- Object.defineProperty(fn, "label", { value: label, writable: false, enumerable: true, configurable: true });
716
- return fn;
717
- };
718
- Task2.Maybe = TaskMaybe;
719
- Task2.Result = TaskResult;
720
- Task2.Validation = TaskValidation;
721
- })(Task || (Task = {}));
722
-
723
- // src/Core/Validation.ts
724
- var Validation;
725
- ((Validation2) => {
726
- let make;
727
- ((make2) => {
728
- make2.passed = (value) => ({ kind: "Passed", value });
729
- make2.failed = (error) => ({ kind: "Failed", errors: [error] });
730
- make2.failedAll = (errors) => ({ kind: "Failed", errors });
731
- })(make = Validation2.make || (Validation2.make = {}));
732
- let is;
733
- ((is2) => {
734
- is2.passed = (data) => data.kind === "Passed";
735
- is2.failed = (data) => data.kind === "Failed";
736
- })(is = Validation2.is || (Validation2.is = {}));
737
- Validation2.tryCatch = (f, options) => {
738
- try {
739
- return make.passed(f());
740
- } catch (error) {
741
- return make.failed(options.onError(error));
742
- }
743
- };
744
- let from;
745
- ((from2) => {
746
- from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
747
- from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.failed(onNull()) : make.passed(value);
748
- from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.failed(onNone()) : make.passed(maybe.value);
749
- from2.Result = (data) => data.kind === "Ok" ? make.passed(data.value) : make.failed(data.error);
750
- })(from = Validation2.from || (Validation2.from = {}));
751
- Validation2.map = (f) => (data) => is.passed(data) ? make.passed(f(data.value)) : data;
752
- Validation2.mapError = (f) => (data) => is.failed(data) ? make.failedAll(data.errors.map(f)) : data;
753
- Validation2.ap = (arg) => (data) => {
754
- if (is.passed(data)) {
755
- return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
756
- }
757
- return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
758
- };
759
- Validation2.apCustom = (concat) => (arg) => (data) => {
760
- if (is.passed(data)) {
761
- return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
762
- }
763
- return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll(concat(data.errors, arg.errors));
764
- };
765
- Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
766
- Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
767
- Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
768
- Validation2.tap = (f) => (data) => {
769
- if (is.passed(data)) {
770
- f(data.value);
771
- }
772
- return data;
773
- };
774
- Validation2.tapError = (f) => (data) => {
775
- if (is.failed(data)) {
776
- f(data.errors);
777
- }
778
- return data;
779
- };
780
- Validation2.recover = (fallback) => (data) => is.passed(data) ? data : fallback(data.errors);
781
- Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
782
- let to;
783
- ((to2) => {
784
- function Result3(arg) {
785
- if (typeof arg === "function") {
786
- const combine = arg;
787
- return (val) => is.passed(val) ? Result.make.ok(val.value) : Result.make.err(combine(val.errors));
788
- }
789
- return is.passed(arg) ? Result.make.ok(arg.value) : Result.make.err(arg.errors);
790
- }
791
- to2.Result = Result3;
792
- to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
793
- })(to = Validation2.to || (Validation2.to = {}));
794
- Validation2.product = (first, second) => {
795
- if (is.passed(first)) {
796
- return is.passed(second) ? make.passed([first.value, second.value]) : make.failedAll(second.errors);
797
- }
798
- return is.passed(second) ? make.failedAll(first.errors) : make.failedAll([...first.errors, ...second.errors]);
799
- };
800
- Validation2.productAll = (data) => {
801
- const values = [];
802
- const errors = [];
803
- for (const v of data) {
804
- if (is.passed(v)) {
805
- values.push(v.value);
806
- } else {
807
- errors.push(...v.errors);
808
- }
809
- }
810
- return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(values);
811
- };
812
- Validation2.struct = (fields) => {
813
- const record = {};
814
- const errors = [];
815
- for (const key in fields) {
816
- if (Object.hasOwn(fields, key)) {
817
- const val = fields[key];
818
- if (is.passed(val)) {
819
- record[key] = val.value;
820
- } else {
821
- errors.push(...val.errors);
822
- }
823
- }
824
- }
825
- return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(record);
826
- };
827
- })(Validation || (Validation = {}));
828
-
829
- // src/Data/Arr.ts
830
- var ArrMaybe;
831
- ((ArrMaybe2) => {
832
- ArrMaybe2.traverse = (f) => (data) => {
833
- const n = data.length;
834
- const result = new Array(n);
835
- for (let i = 0; i < n; i++) {
836
- const mapped = f(data[i]);
837
- if (mapped.kind === "None") {
838
- return Maybe.make.none();
839
- }
840
- result[i] = mapped.value;
841
- }
842
- return Maybe.make.some(result);
843
- };
844
- ArrMaybe2.sequence = (data) => (0, ArrMaybe2.traverse)((a) => a)(data);
845
- })(ArrMaybe || (ArrMaybe = {}));
846
- var ArrResult;
847
- ((ArrResult2) => {
848
- ArrResult2.traverse = (f) => (data) => {
849
- const n = data.length;
850
- const result = new Array(n);
851
- for (let i = 0; i < n; i++) {
852
- const mapped = f(data[i]);
853
- if (mapped.kind === "Err") {
854
- return mapped;
855
- }
856
- result[i] = mapped.value;
857
- }
858
- return Result.make.ok(result);
859
- };
860
- ArrResult2.sequence = (data) => (0, ArrResult2.traverse)((a) => a)(data);
861
- })(ArrResult || (ArrResult = {}));
862
- var ArrTaskResult;
863
- ((ArrTaskResult2) => {
864
- ArrTaskResult2.traverse = (f) => (data) => Task.from.Promise(async () => {
865
- const result = [];
866
- for (const a of data) {
867
- const r = await Deferred.to.Promise(f(a)());
868
- if (Result.is.err(r)) {
869
- return r;
870
- }
871
- result.push(r.value);
872
- }
873
- return Result.make.ok(result);
874
- });
875
- ArrTaskResult2.sequence = (data) => (0, ArrTaskResult2.traverse)((a) => a)(data);
876
- })(ArrTaskResult || (ArrTaskResult = {}));
877
- var ArrTask;
878
- ((ArrTask2) => {
879
- ArrTask2.traverse = (f) => (data) => Task.from.Promise(() => Promise.all(data.map((a) => Deferred.to.Promise(f(a)()))));
880
- ArrTask2.sequence = (data) => (0, ArrTask2.traverse)((a) => a)(data);
881
- ArrTask2.Result = ArrTaskResult;
882
- })(ArrTask || (ArrTask = {}));
883
- var ArrNonEmpty;
884
- ((ArrNonEmpty2) => {
885
- ArrNonEmpty2.singleton = (value) => [value];
886
- let from;
887
- ((from2) => {
888
- from2.Array = (data) => isNonEmptyArr(data) ? Maybe.make.some(data) : Maybe.make.none();
889
- })(from = ArrNonEmpty2.from || (ArrNonEmpty2.from = {}));
890
- ArrNonEmpty2.head = (data) => data[0];
891
- ArrNonEmpty2.last = (data) => data[data.length - 1];
892
- ArrNonEmpty2.tail = (data) => data.slice(1);
893
- ArrNonEmpty2.reduce = (f) => (data) => data.reduce(f);
894
- ArrNonEmpty2.map = (f) => (data) => Arr.map(f)(data);
895
- ArrNonEmpty2.mapWithIndex = (f) => (data) => Arr.mapWithIndex(f)(data);
896
- ArrNonEmpty2.intersperse = (sep) => (data) => Arr.intersperse(sep)(data);
897
- ArrNonEmpty2.concat = (other) => (data) => Arr.concat(other)(data);
898
- ArrNonEmpty2.reverse = (data) => Arr.reverse(data);
899
- })(ArrNonEmpty || (ArrNonEmpty = {}));
900
- var Arr;
901
- ((Arr2) => {
902
- Arr2.head = (data) => data.length > 0 ? Maybe.make.some(data[0]) : Maybe.make.none();
903
- Arr2.last = (data) => data.length > 0 ? Maybe.make.some(data[data.length - 1]) : Maybe.make.none();
904
- Arr2.tail = (data) => data.length > 0 ? Maybe.make.some(data.slice(1)) : Maybe.make.none();
905
- Arr2.init = (data) => data.length > 0 ? Maybe.make.some(data.slice(0, -1)) : Maybe.make.none();
906
- Arr2.findFirst = (predicate) => (data) => {
907
- const idx = data.findIndex(predicate);
908
- return idx !== -1 ? Maybe.make.some(data[idx]) : Maybe.make.none();
909
- };
910
- Arr2.findLast = (predicate) => (data) => {
911
- for (let i = data.length - 1; i >= 0; i--) {
912
- if (predicate(data[i])) {
913
- return Maybe.make.some(data[i]);
914
- }
915
- }
916
- return Maybe.make.none();
917
- };
918
- Arr2.findIndex = (predicate) => (data) => {
919
- const idx = data.findIndex(predicate);
920
- return idx !== -1 ? Maybe.make.some(idx) : Maybe.make.none();
921
- };
922
- Arr2.map = (f) => (data) => {
923
- const n = data.length;
924
- const result = new Array(n);
925
- for (let i = 0; i < n; i++) {
926
- result[i] = f(data[i]);
927
- }
928
- return result;
929
- };
930
- Arr2.mapWithIndex = (f) => (data) => {
931
- const n = data.length;
932
- const result = new Array(n);
933
- for (let i = 0; i < n; i++) {
934
- result[i] = f(i, data[i]);
935
- }
936
- return result;
937
- };
938
- Arr2.filter = (predicate) => (data) => {
939
- const n = data.length;
940
- const result = [];
941
- for (let i = 0; i < n; i++) {
942
- if (predicate(data[i])) {
943
- result.push(data[i]);
944
- }
945
- }
946
- return result;
947
- };
948
- Arr2.filterMap = (f) => (data) => {
949
- const result = [];
950
- for (let i = 0; i < data.length; i++) {
951
- const mapped = f(data[i]);
952
- if (mapped.kind === "Some") {
953
- result.push(mapped.value);
954
- }
955
- }
956
- return result;
957
- };
958
- Arr2.partition = (predicate) => (data) => {
959
- const pass = [];
960
- const fail = [];
961
- for (const a of data) {
962
- (predicate(a) ? pass : fail).push(a);
963
- }
964
- return [pass, fail];
965
- };
966
- Arr2.compact = (data) => {
967
- const result = [];
968
- for (const item of data) {
969
- if (item.kind === "Some") {
970
- result.push(item.value);
971
- }
972
- }
973
- return result;
974
- };
975
- Arr2.separate = (data) => {
976
- const errors = [];
977
- const successes = [];
978
- for (const item of data) {
979
- if (item.kind === "Ok") {
980
- successes.push(item.value);
981
- } else {
982
- errors.push(item.error);
983
- }
984
- }
985
- return [errors, successes];
986
- };
987
- Arr2.partitionMap = (f) => (data) => {
988
- const errors = [];
989
- const successes = [];
990
- for (const item of data) {
991
- const mapped = f(item);
992
- if (mapped.kind === "Ok") {
993
- successes.push(mapped.value);
994
- } else {
995
- errors.push(mapped.error);
996
- }
997
- }
998
- return [errors, successes];
999
- };
1000
- Arr2.groupBy = (f) => (data) => {
1001
- const result = {};
1002
- for (const a of data) {
1003
- const key = f(a);
1004
- if (!result[key]) {
1005
- result[key] = [];
1006
- }
1007
- result[key].push(a);
1008
- }
1009
- return result;
1010
- };
1011
- Arr2.uniq = (data) => [...new Set(data)];
1012
- Arr2.uniqBy = (f) => (data) => {
1013
- const seen = /* @__PURE__ */ new Set();
1014
- const result = [];
1015
- for (const a of data) {
1016
- const key = f(a);
1017
- if (!seen.has(key)) {
1018
- seen.add(key);
1019
- result.push(a);
1020
- }
1021
- }
1022
- return result;
1023
- };
1024
- Arr2.uniqWith = (eq) => (data) => {
1025
- const result = [];
1026
- for (const a of data) {
1027
- if (!result.some((x) => eq(x, a))) {
1028
- result.push(a);
1029
- }
1030
- }
1031
- return result;
1032
- };
1033
- Arr2.sortBy = (compare) => (data) => {
1034
- const arr = data;
1035
- if (typeof arr.toSorted === "function") {
1036
- return arr.toSorted(compare);
1037
- }
1038
- return [...data].toSorted(compare);
1039
- };
1040
- Arr2.sortWith = (ord) => (data) => {
1041
- const arr = data;
1042
- if (typeof arr.toSorted === "function") {
1043
- return arr.toSorted(ord);
1044
- }
1045
- return [...data].sort(ord);
1046
- };
1047
- Arr2.zip = (other) => (data) => {
1048
- const len = Math.min(data.length, other.length);
1049
- const result = new Array(len);
1050
- for (let i = 0; i < len; i++) {
1051
- result[i] = [data[i], other[i]];
1052
- }
1053
- return result;
1054
- };
1055
- Arr2.zipWith = (f) => (other) => (data) => {
1056
- const len = Math.min(data.length, other.length);
1057
- const result = new Array(len);
1058
- for (let i = 0; i < len; i++) {
1059
- result[i] = f(data[i], other[i]);
1060
- }
1061
- return result;
1062
- };
1063
- Arr2.intersperse = (sep) => (data) => {
1064
- if (data.length <= 1) {
1065
- return data;
1066
- }
1067
- const result = [data[0]];
1068
- for (let i = 1; i < data.length; i++) {
1069
- result.push(sep, data[i]);
1070
- }
1071
- return result;
1072
- };
1073
- Arr2.concat = (other) => (data) => [...data, ...other];
1074
- Arr2.chunksOf = (n) => (data) => {
1075
- if (n <= 0) {
1076
- return [];
1077
- }
1078
- const result = [];
1079
- for (let i = 0; i < data.length; i += n) {
1080
- result.push(data.slice(i, i + n));
1081
- }
1082
- return result;
1083
- };
1084
- Arr2.flatten = (data) => {
1085
- let totalLen = 0;
1086
- const outerLen = data.length;
1087
- for (let i = 0; i < outerLen; i++) {
1088
- totalLen += data[i].length;
1089
- }
1090
- const result = new Array(totalLen);
1091
- let idx = 0;
1092
- for (let i = 0; i < outerLen; i++) {
1093
- const chunk = data[i];
1094
- const innerLen = chunk.length;
1095
- for (let j = 0; j < innerLen; j++) {
1096
- result[idx++] = chunk[j];
1097
- }
1098
- }
1099
- return result;
1100
- };
1101
- Arr2.flatMap = (f) => (data) => {
1102
- const n = data.length;
1103
- const result = [];
1104
- for (let i = 0; i < n; i++) {
1105
- const chunk = f(data[i]);
1106
- const m = chunk.length;
1107
- for (let j = 0; j < m; j++) {
1108
- result.push(chunk[j]);
1109
- }
1110
- }
1111
- return result;
1112
- };
1113
- Arr2.reduce = (initial, f) => (data) => data.reduce(f, initial);
1114
- const _traverseTask = Object.assign((f) => ArrTask.traverse(f), {
1115
- Result: ArrTaskResult.traverse
1116
- });
1117
- const _sequenceTask = Object.assign((data) => ArrTask.sequence(data), {
1118
- Result: ArrTaskResult.sequence
1119
- });
1120
- let traverse;
1121
- ((traverse2) => {
1122
- traverse2.Maybe = ArrMaybe.traverse;
1123
- traverse2.Result = ArrResult.traverse;
1124
- traverse2.Task = _traverseTask;
1125
- })(traverse = Arr2.traverse || (Arr2.traverse = {}));
1126
- let sequence;
1127
- ((sequence2) => {
1128
- sequence2.Maybe = ArrMaybe.sequence;
1129
- sequence2.Result = ArrResult.sequence;
1130
- sequence2.Task = _sequenceTask;
1131
- })(sequence = Arr2.sequence || (Arr2.sequence = {}));
1132
- let is;
1133
- ((is2) => {
1134
- is2.empty = (data) => data.length === 0;
1135
- is2.nonEmpty = (data) => isNonEmptyArr(data);
1136
- })(is = Arr2.is || (Arr2.is = {}));
1137
- Arr2.prepend = (value) => (data) => [value, ...data];
1138
- Arr2.append = (value) => (data) => [...data, value];
1139
- Arr2.size = (data) => data.length;
1140
- Arr2.some = (predicate) => (data) => {
1141
- const n = data.length;
1142
- for (let i = 0; i < n; i++) {
1143
- if (predicate(data[i])) {
1144
- return true;
1145
- }
1146
- }
1147
- return false;
1148
- };
1149
- Arr2.every = (predicate) => (data) => {
1150
- const n = data.length;
1151
- for (let i = 0; i < n; i++) {
1152
- if (!predicate(data[i])) {
1153
- return false;
1154
- }
1155
- }
1156
- return true;
1157
- };
1158
- Arr2.reverse = (data) => [...data].toReversed();
1159
- Arr2.insertAt = (index, item) => (data) => {
1160
- const i = Math.max(0, Math.min(index, data.length));
1161
- const arr = data;
1162
- if (typeof arr.toSpliced === "function") {
1163
- return arr.toSpliced(i, 0, item);
1164
- }
1165
- const result = [...data];
1166
- result.splice(i, 0, item);
1167
- return result;
1168
- };
1169
- Arr2.removeAt = (index) => (data) => {
1170
- if (index < 0 || index >= data.length) {
1171
- return data;
1172
- }
1173
- const arr = data;
1174
- if (typeof arr.toSpliced === "function") {
1175
- return arr.toSpliced(index, 1);
1176
- }
1177
- const result = [...data];
1178
- result.splice(index, 1);
1179
- return result;
1180
- };
1181
- Arr2.take = (n) => (data) => n <= 0 ? [] : data.slice(0, n);
1182
- Arr2.drop = (n) => (data) => data.slice(n);
1183
- Arr2.takeWhile = (predicate) => (data) => {
1184
- const result = [];
1185
- for (const a of data) {
1186
- if (!predicate(a)) {
1187
- break;
1188
- }
1189
- result.push(a);
1190
- }
1191
- return result;
1192
- };
1193
- Arr2.dropWhile = (predicate) => (data) => {
1194
- let i = 0;
1195
- while (i < data.length && predicate(data[i])) {
1196
- i++;
1197
- }
1198
- return data.slice(i);
1199
- };
1200
- Arr2.scan = (initial, f) => (data) => {
1201
- const n = data.length;
1202
- const result = new Array(n);
1203
- let acc = initial;
1204
- for (let i = 0; i < n; i++) {
1205
- acc = f(acc, data[i]);
1206
- result[i] = acc;
1207
- }
1208
- return result;
1209
- };
1210
- Arr2.splitAt = (index) => (data) => {
1211
- const i = Math.max(0, index);
1212
- return [data.slice(0, i), data.slice(i)];
1213
- };
1214
- Arr2.partitionMaybe = (f) => (data) => {
1215
- const failures = [];
1216
- const successes = [];
1217
- for (let i = 0; i < data.length; i++) {
1218
- const res = f(data[i]);
1219
- if (res.kind === "Some") {
1220
- successes.push(res.value);
1221
- } else {
1222
- failures.push(data[i]);
1223
- }
1224
- }
1225
- return [failures, successes];
1226
- };
1227
- Arr2.at = (index) => (data) => {
1228
- const targetIndex = index < 0 ? data.length + index : index;
1229
- if (targetIndex < 0 || targetIndex >= data.length) {
1230
- return Maybe.make.none();
1231
- }
1232
- return Maybe.make.some(data[targetIndex]);
1233
- };
1234
- Arr2.findMap = (f) => (data) => {
1235
- for (let i = 0; i < data.length; i++) {
1236
- const res = f(data[i]);
1237
- if (res.kind === "Some") {
1238
- return res;
1239
- }
1240
- }
1241
- return Maybe.make.none();
1242
- };
1243
- Arr2.indexBy = (keyFn) => (data) => {
1244
- const map2 = new globalThis.Map();
1245
- for (let i = 0; i < data.length; i++) {
1246
- map2.set(keyFn(data[i]), data[i]);
1247
- }
1248
- return map2;
1249
- };
1250
- Arr2.frequencies = (data) => {
1251
- const map2 = new globalThis.Map();
1252
- for (let i = 0; i < data.length; i++) {
1253
- const item = data[i];
1254
- map2.set(item, (map2.get(item) ?? 0) + 1);
1255
- }
1256
- return map2;
1257
- };
1258
- Arr2.chunkBy = (keyFn) => (data) => {
1259
- if (data.length === 0) {
1260
- return [];
1261
- }
1262
- const result = [];
1263
- let currentChunk = [data[0]];
1264
- let currentKey = keyFn(data[0]);
1265
- for (let i = 1; i < data.length; i++) {
1266
- const item = data[i];
1267
- const key = keyFn(item);
1268
- if (Object.is(key, currentKey)) {
1269
- currentChunk.push(item);
1270
- } else {
1271
- result.push(currentChunk);
1272
- currentChunk = [item];
1273
- currentKey = key;
1274
- }
1275
- }
1276
- result.push(currentChunk);
1277
- return result;
1278
- };
1279
- Arr2.dedupeAdjacent = (eq = (a, b) => Object.is(a, b)) => (data) => {
1280
- if (data.length === 0) {
1281
- return [];
1282
- }
1283
- const result = [data[0]];
1284
- for (let i = 1; i < data.length; i++) {
1285
- if (!eq(data[i], result[result.length - 1])) {
1286
- result.push(data[i]);
1287
- }
1288
- }
1289
- return result;
1290
- };
1291
- Arr2.windowed = (size2, options) => (data) => {
1292
- const step = options?.step ?? 1;
1293
- if (size2 <= 0 || step <= 0 || data.length < size2) {
1294
- return [];
1295
- }
1296
- const result = [];
1297
- for (let i = 0; i <= data.length - size2; i += step) {
1298
- result.push(data.slice(i, i + size2));
1299
- }
1300
- return result;
1301
- };
1302
- Arr2.unfold = (initial, f) => {
1303
- const result = [];
1304
- let currentState = initial;
1305
- while (true) {
1306
- const next = f(currentState);
1307
- if (next.kind === "None") {
1308
- break;
1309
- }
1310
- const [item, nextState] = next.value;
1311
- result.push(item);
1312
- currentState = nextState;
1313
- }
1314
- return result;
1315
- };
1316
- Arr2.NonEmpty = ArrNonEmpty;
1317
- })(Arr || (Arr = {}));
1318
-
1319
- // src/Data/BigNum.ts
1320
- var BigNum;
1321
- ((BigNum2) => {
1322
- let from;
1323
- ((from2) => {
1324
- from2.string = (s) => {
1325
- try {
1326
- if (s.trim() === "") {
1327
- return Maybe.make.none();
1328
- }
1329
- return Maybe.make.some(BigInt(s));
1330
- } catch {
1331
- return Maybe.make.none();
1332
- }
1333
- };
1334
- from2.number = (n) => {
1335
- if (!Number.isInteger(n) || n < Number.MIN_SAFE_INTEGER || n > Number.MAX_SAFE_INTEGER) {
1336
- return Maybe.make.none();
1337
- }
1338
- return Maybe.make.some(BigInt(n));
1339
- };
1340
- })(from = BigNum2.from || (BigNum2.from = {}));
1341
- let to;
1342
- ((to2) => {
1343
- to2.number = (b) => {
1344
- if (b < BigInt(Number.MIN_SAFE_INTEGER) || b > BigInt(Number.MAX_SAFE_INTEGER)) {
1345
- return Maybe.make.none();
1346
- }
1347
- return Maybe.make.some(Number(b));
1348
- };
1349
- })(to = BigNum2.to || (BigNum2.to = {}));
1350
- BigNum2.add = (b) => (a) => a + b;
1351
- BigNum2.sub = (b) => (a) => a - b;
1352
- BigNum2.mul = (b) => (a) => a * b;
1353
- BigNum2.div = (b) => (a) => b === 0n ? Maybe.make.none() : Maybe.make.some(a / b);
1354
- BigNum2.mod = (b) => (a) => b === 0n ? Maybe.make.none() : Maybe.make.some(a % b);
1355
- BigNum2.clamp = (min2, max2) => (a) => a < min2 ? min2 : a > max2 ? max2 : a;
1356
- BigNum2.inRange = (start, end) => (a) => a >= start && a < end;
1357
- BigNum2.abs = (a) => a < 0n ? -a : a;
1358
- BigNum2.min = (b) => (a) => a < b ? a : b;
1359
- BigNum2.max = (b) => (a) => a > b ? a : b;
1360
- })(BigNum || (BigNum = {}));
1361
-
1362
- // src/Data/Dict.ts
1363
- var DictNonEmpty;
1364
- ((DictNonEmpty2) => {
1365
- DictNonEmpty2.singleton = (key, value) => new globalThis.Map([[key, value]]);
1366
- let from;
1367
- ((from2) => {
1368
- from2.Map = (m) => m.size > 0 ? Maybe.make.some(m) : Maybe.make.none();
1369
- })(from = DictNonEmpty2.from || (DictNonEmpty2.from = {}));
1370
- DictNonEmpty2.keys = (m) => Dict.keys(m);
1371
- DictNonEmpty2.values = (m) => Dict.values(m);
1372
- DictNonEmpty2.entries = (m) => Dict.entries(m);
1373
- DictNonEmpty2.reduce = (f) => (m) => (0, DictNonEmpty2.values)(m).reduce(f);
1374
- DictNonEmpty2.map = (f) => (m) => Dict.map(f)(m);
1375
- DictNonEmpty2.mapWithKey = (f) => (m) => Dict.mapWithKey(f)(m);
1376
- })(DictNonEmpty || (DictNonEmpty = {}));
1377
- var Dict;
1378
- ((Dict2) => {
1379
- let is;
1380
- ((is2) => {
1381
- is2.empty = (m) => m.size === 0;
1382
- is2.nonEmpty = (m) => m.size > 0;
1383
- })(is = Dict2.is || (Dict2.is = {}));
1384
- Dict2.empty = () => new globalThis.Map();
1385
- Dict2.singleton = (key, value) => new globalThis.Map([[key, value]]);
1386
- let from;
1387
- ((from2) => {
1388
- from2.entries = (entries3) => new globalThis.Map(entries3);
1389
- from2.Record = (rec) => new globalThis.Map(Object.entries(rec));
1390
- })(from = Dict2.from || (Dict2.from = {}));
1391
- Dict2.groupBy = (keyFn) => (items) => {
1392
- const result = new globalThis.Map();
1393
- for (const item of items) {
1394
- const key = keyFn(item);
1395
- const arr = result.get(key);
1396
- if (arr !== void 0) {
1397
- arr.push(item);
1398
- } else {
1399
- result.set(key, [item]);
1400
- }
1401
- }
1402
- return result;
1403
- };
1404
- Dict2.has = (key) => (m) => m.has(key);
1405
- Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.make.some(m.get(key)) : Maybe.make.none();
1406
- Dict2.size = (m) => m.size;
1407
- Dict2.keys = (m) => [...m.keys()];
1408
- Dict2.values = (m) => [...m.values()];
1409
- Dict2.entries = (m) => [...m.entries()];
1410
- Dict2.insert = (key, value) => (m) => {
1411
- const result = new globalThis.Map(m);
1412
- result.set(key, value);
1413
- return result;
1414
- };
1415
- Dict2.remove = (key) => (m) => {
1416
- if (!m.has(key)) {
1417
- return m;
1418
- }
1419
- const result = new globalThis.Map(m);
1420
- result.delete(key);
1421
- return result;
1422
- };
1423
- Dict2.upsert = (key, f) => (m) => {
1424
- const result = new globalThis.Map(m);
1425
- result.set(key, f((0, Dict2.lookup)(key)(m)));
1426
- return result;
1427
- };
1428
- Dict2.map = (f) => (m) => {
1429
- const result = new globalThis.Map();
1430
- for (const [k, v] of m) {
1431
- result.set(k, f(v));
1432
- }
1433
- return result;
1434
- };
1435
- Dict2.mapWithKey = (f) => (m) => {
1436
- const result = new globalThis.Map();
1437
- for (const [k, v] of m) {
1438
- result.set(k, f(k, v));
1439
- }
1440
- return result;
1441
- };
1442
- Dict2.filter = (predicate) => (m) => {
1443
- const result = new globalThis.Map();
1444
- for (const [k, v] of m) {
1445
- if (predicate(v)) {
1446
- result.set(k, v);
1447
- }
1448
- }
1449
- return result;
1450
- };
1451
- Dict2.filterWithKey = (predicate) => (m) => {
1452
- const result = new globalThis.Map();
1453
- for (const [k, v] of m) {
1454
- if (predicate(k, v)) {
1455
- result.set(k, v);
1456
- }
1457
- }
1458
- return result;
1459
- };
1460
- Dict2.compact = (m) => {
1461
- const result = new globalThis.Map();
1462
- for (const [k, v] of m) {
1463
- if (v.kind === "Some") {
1464
- result.set(k, v.value);
1465
- }
1466
- }
1467
- return result;
1468
- };
1469
- Dict2.filterMap = (f) => (m) => {
1470
- const result = new globalThis.Map();
1471
- for (const [key, value] of m) {
1472
- const mapped = f(value);
1473
- if (mapped.kind === "Some") {
1474
- result.set(key, mapped.value);
1475
- }
1476
- }
1477
- return result;
1478
- };
1479
- Dict2.union = (other) => (m) => {
1480
- const result = new globalThis.Map(m);
1481
- for (const [k, v] of other) {
1482
- result.set(k, v);
1483
- }
1484
- return result;
1485
- };
1486
- Dict2.intersection = (other) => (m) => {
1487
- const result = new globalThis.Map();
1488
- for (const [k, v] of m) {
1489
- if (other.has(k)) {
1490
- result.set(k, v);
1491
- }
1492
- }
1493
- return result;
1494
- };
1495
- Dict2.difference = (other) => (m) => {
1496
- const result = new globalThis.Map();
1497
- for (const [k, v] of m) {
1498
- if (!other.has(k)) {
1499
- result.set(k, v);
1500
- }
1501
- }
1502
- return result;
1503
- };
1504
- Dict2.reduce = (init, f) => (m) => {
1505
- let acc = init;
1506
- for (const v of m.values()) {
1507
- acc = f(acc, v);
1508
- }
1509
- return acc;
1510
- };
1511
- Dict2.reduceWithKey = (init, f) => (m) => {
1512
- let acc = init;
1513
- for (const [k, v] of m) {
1514
- acc = f(acc, v, k);
1515
- }
1516
- return acc;
1517
- };
1518
- function mergeWith(combine) {
1519
- return (arg1, arg2) => {
1520
- if (arg2 !== void 0) {
1521
- const first = arg1;
1522
- const second2 = arg2;
1523
- const res = new globalThis.Map(first);
1524
- for (const [k, v] of second2) {
1525
- if (res.has(k)) {
1526
- res.set(k, combine(res.get(k), v));
1527
- } else {
1528
- res.set(k, v);
1529
- }
1530
- }
1531
- return res;
1532
- }
1533
- const second = arg1;
1534
- return (first) => {
1535
- const res = new globalThis.Map(first);
1536
- for (const [k, v] of second) {
1537
- if (res.has(k)) {
1538
- res.set(k, combine(res.get(k), v));
1539
- } else {
1540
- res.set(k, v);
1541
- }
1542
- }
1543
- return res;
1544
- };
1545
- };
1546
- }
1547
- Dict2.mergeWith = mergeWith;
1548
- let to;
1549
- ((to2) => {
1550
- to2.Record = (m) => Object.fromEntries(m);
1551
- })(to = Dict2.to || (Dict2.to = {}));
1552
- Dict2.mapEntries = (f) => (data) => {
1553
- const res = new globalThis.Map();
1554
- for (const [k, v] of data) {
1555
- const [nk, nv] = f(k, v);
1556
- res.set(nk, nv);
1557
- }
1558
- return res;
1559
- };
1560
- Dict2.mapKeys = (f) => (data) => {
1561
- const res = new globalThis.Map();
1562
- for (const [k, v] of data) {
1563
- res.set(f(k), v);
1564
- }
1565
- return res;
1566
- };
1567
- Dict2.NonEmpty = DictNonEmpty;
1568
- })(Dict || (Dict = {}));
1569
-
1570
- // src/Data/Json.ts
1571
- var isSyntaxError = (err) => typeof err === "object" && err !== null && "name" in err && err.name === "SyntaxError";
1572
- var isTypeError = (err) => typeof err === "object" && err !== null && "name" in err && err.name === "TypeError";
1573
- var Json;
1574
- ((Json2) => {
1575
- Json2.parse = (text) => Result.tryCatch(() => JSON.parse(text), {
1576
- onError: (err) => isSyntaxError(err) ? err : new SyntaxError(String(err))
1577
- });
1578
- Json2.stringify = (value, replacer, space) => Result.tryCatch(() => JSON.stringify(value, replacer, space), {
1579
- onError: (err) => isTypeError(err) ? err : new TypeError(String(err))
1580
- });
1581
- })(Json || (Json = {}));
1582
-
1583
- // src/Data/Num.ts
1584
- var Num;
1585
- ((Num2) => {
1586
- let is;
1587
- ((is2) => {
1588
- is2.zero = (n) => n === 0;
1589
- is2.integer = (n) => Number.isInteger(n);
1590
- is2.float = (n) => Number.isFinite(n) && !Number.isInteger(n);
1591
- is2.finite = (n) => Number.isFinite(n);
1592
- is2.nan = (n) => Number.isNaN(n);
1593
- is2.even = (n) => Number.isInteger(n) && n % 2 === 0;
1594
- is2.odd = (n) => Number.isInteger(n) && n % 2 !== 0;
1595
- is2.positive = (n) => n > 0;
1596
- is2.negative = (n) => n < 0;
1597
- })(is = Num2.is || (Num2.is = {}));
1598
- Num2.range = (from, to, step = 1) => {
1599
- if (step <= 0 || from > to) {
1600
- return [];
1601
- }
1602
- const count = Math.floor((to - from) / step) + 1;
1603
- const result = new Array(count);
1604
- for (let i = 0; i < count; i++) {
1605
- result[i] = from + i * step;
1606
- }
1607
- return result;
1608
- };
1609
- Num2.clamp = (min2, max2) => (n) => Math.min(Math.max(n, min2), max2);
1610
- Num2.between = (min2, max2) => (n) => n >= min2 && n <= max2;
1611
- Num2.inRange = (start, end) => (n) => n >= start && n < end;
1612
- Num2.parse = (s) => {
1613
- if (s.trim() === "") {
1614
- return Maybe.make.none();
1615
- }
1616
- const n = Number(s);
1617
- return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
1618
- };
1619
- Num2.add = (b) => (a) => a + b;
1620
- Num2.subtract = (b) => (a) => a - b;
1621
- Num2.multiply = (b) => (a) => a * b;
1622
- Num2.divide = (b) => (a) => b === 0 ? Maybe.make.none() : Maybe.make.some(a / b);
1623
- Num2.abs = (n) => Math.abs(n);
1624
- Num2.negate = (n) => -n;
1625
- Num2.round = (n) => Math.round(n);
1626
- Num2.floor = (n) => Math.floor(n);
1627
- Num2.ceil = (n) => Math.ceil(n);
1628
- Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.make.none() : Maybe.make.some(n % divisor);
1629
- Num2.sum = (ns) => {
1630
- let result = 0;
1631
- for (let i = 0; i < ns.length; i++) {
1632
- result += ns[i];
1633
- }
1634
- return result;
1635
- };
1636
- Num2.mean = (ns) => ns.length === 0 ? Maybe.make.none() : Maybe.make.some((0, Num2.sum)(ns) / ns.length);
1637
- Num2.min = (ns) => {
1638
- if (ns.length === 0) {
1639
- return Maybe.make.none();
1640
- }
1641
- let [result] = ns;
1642
- for (let i = 1; i < ns.length; i++) {
1643
- if (ns[i] < result) {
1644
- result = ns[i];
1645
- }
1646
- }
1647
- return Maybe.make.some(result);
1648
- };
1649
- Num2.max = (ns) => {
1650
- if (ns.length === 0) {
1651
- return Maybe.make.none();
1652
- }
1653
- let [result] = ns;
1654
- for (let i = 1; i < ns.length; i++) {
1655
- if (ns[i] > result) {
1656
- result = ns[i];
1657
- }
1658
- }
1659
- return Maybe.make.some(result);
1660
- };
1661
- Num2.format = (options, locales) => (n) => !Number.isFinite(n) ? Maybe.make.none() : Maybe.make.some(new Intl.NumberFormat(locales, options).format(n));
1662
- })(Num || (Num = {}));
1663
-
1664
- // src/Data/Rec.ts
1665
- var _isNonEmpty = (data) => Object.keys(data).length > 0;
1666
- var RecMaybe;
1667
- ((RecMaybe2) => {
1668
- RecMaybe2.traverse = (f) => (data) => {
1669
- const recordKeys = Object.keys(data);
1670
- const result = {};
1671
- for (let i = 0; i < recordKeys.length; i++) {
1672
- const key = recordKeys[i];
1673
- const maybeVal = f(data[key]);
1674
- if (maybeVal.kind === "None") {
1675
- return maybeVal;
1676
- }
1677
- Object.defineProperty(result, key, { value: maybeVal.value, writable: true, enumerable: true, configurable: true });
1678
- }
1679
- return { kind: "Some", value: result };
1680
- };
1681
- RecMaybe2.sequence = (data) => (0, RecMaybe2.traverse)((a) => a)(data);
1682
- })(RecMaybe || (RecMaybe = {}));
1683
- var RecResult;
1684
- ((RecResult2) => {
1685
- RecResult2.traverse = (f) => (data) => {
1686
- const recordKeys = Object.keys(data);
1687
- const result = {};
1688
- for (let i = 0; i < recordKeys.length; i++) {
1689
- const key = recordKeys[i];
1690
- const res = f(data[key]);
1691
- if (res.kind === "Err") {
1692
- return res;
1693
- }
1694
- Object.defineProperty(result, key, { value: res.value, writable: true, enumerable: true, configurable: true });
1695
- }
1696
- return { kind: "Ok", value: result };
1697
- };
1698
- RecResult2.sequence = (data) => (0, RecResult2.traverse)((a) => a)(data);
1699
- })(RecResult || (RecResult = {}));
1700
- var RecNonEmpty;
1701
- ((RecNonEmpty2) => {
1702
- RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
1703
- let from;
1704
- ((from2) => {
1705
- from2.Record = (data) => _isNonEmpty(data) ? Maybe.make.some(data) : Maybe.make.none();
1706
- })(from = RecNonEmpty2.from || (RecNonEmpty2.from = {}));
1707
- RecNonEmpty2.keys = (data) => Rec.keys(data);
1708
- RecNonEmpty2.values = (data) => Rec.values(data);
1709
- RecNonEmpty2.entries = (data) => Rec.entries(data);
1710
- RecNonEmpty2.reduce = (f) => (data) => (0, RecNonEmpty2.values)(data).reduce(f);
1711
- RecNonEmpty2.map = (f) => (data) => Rec.map(f)(data);
1712
- RecNonEmpty2.mapWithKey = (f) => (data) => Rec.mapWithKey(f)(data);
1713
- })(RecNonEmpty || (RecNonEmpty = {}));
1714
- var Rec;
1715
- ((Rec2) => {
1716
- let is;
1717
- ((is2) => {
1718
- is2.empty = (data) => Object.keys(data).length === 0;
1719
- is2.nonEmpty = _isNonEmpty;
1720
- })(is = Rec2.is || (Rec2.is = {}));
1721
- Rec2.map = (f) => (data) => {
1722
- const recordKeys = Object.keys(data);
1723
- const recordValues = Object.values(data);
1724
- const result = Object.create(Object.getPrototypeOf(data));
1725
- for (let i = 0; i < recordKeys.length; i++) {
1726
- const key = recordKeys[i];
1727
- if (key === "__proto__") {
1728
- Object.defineProperty(result, "__proto__", {
1729
- value: f(recordValues[i]),
1730
- writable: true,
1731
- enumerable: true,
1732
- configurable: true
1733
- });
1734
- } else {
1735
- result[key] = f(recordValues[i]);
1736
- }
1737
- }
1738
- return result;
1739
- };
1740
- Rec2.filterMap = (f) => (data) => {
1741
- const recordKeys = Object.keys(data);
1742
- const recordValues = Object.values(data);
1743
- const result = Object.create(Object.getPrototypeOf(data));
1744
- for (let i = 0; i < recordKeys.length; i++) {
1745
- const maybeVal = f(recordValues[i]);
1746
- if (maybeVal.kind === "Some") {
1747
- Object.defineProperty(result, recordKeys[i], {
1748
- value: maybeVal.value,
1749
- writable: true,
1750
- enumerable: true,
1751
- configurable: true
1752
- });
1753
- }
1754
- }
1755
- return result;
1756
- };
1757
- Rec2.mapWithKey = (f) => (data) => {
1758
- const recordKeys = Object.keys(data);
1759
- const recordValues = Object.values(data);
1760
- const result = Object.create(Object.getPrototypeOf(data));
1761
- for (let i = 0; i < recordKeys.length; i++) {
1762
- const key = recordKeys[i];
1763
- if (key === "__proto__") {
1764
- Object.defineProperty(result, "__proto__", {
1765
- value: f(key, recordValues[i]),
1766
- writable: true,
1767
- enumerable: true,
1768
- configurable: true
1769
- });
1770
- } else {
1771
- result[key] = f(key, recordValues[i]);
1772
- }
1773
- }
1774
- return result;
1775
- };
1776
- Rec2.filter = (predicate) => (data) => {
1777
- const recordKeys = Object.keys(data);
1778
- const recordValues = Object.values(data);
1779
- const result = Object.create(Object.getPrototypeOf(data));
1780
- for (let i = 0; i < recordKeys.length; i++) {
1781
- if (predicate(recordValues[i])) {
1782
- Object.defineProperty(result, recordKeys[i], {
1783
- value: recordValues[i],
1784
- writable: true,
1785
- enumerable: true,
1786
- configurable: true
1787
- });
1788
- }
1789
- }
1790
- return result;
1791
- };
1792
- Rec2.filterWithKey = (predicate) => (data) => {
1793
- const result = {};
1794
- for (const [k, v] of Object.entries(data)) {
1795
- if (predicate(k, v)) {
1796
- Object.defineProperty(result, k, { value: v, writable: true, enumerable: true, configurable: true });
1797
- }
1798
- }
1799
- return result;
1800
- };
1801
- Rec2.lookup = (key) => (data) => Object.hasOwn(data, key) ? { kind: "Some", value: data[key] } : { kind: "None" };
1802
- Rec2.keys = (data) => Object.keys(data);
1803
- Rec2.values = (data) => Object.values(data);
1804
- Rec2.entries = (data) => Object.entries(data);
1805
- let from;
1806
- ((from2) => {
1807
- from2.entries = (data) => Object.fromEntries(data);
1808
- })(from = Rec2.from || (Rec2.from = {}));
1809
- Rec2.groupBy = (keyFn) => (items) => {
1810
- const result = {};
1811
- for (const item of items) {
1812
- const key = keyFn(item);
1813
- if (Object.hasOwn(result, key)) {
1814
- result[key].push(item);
1815
- } else {
1816
- Object.defineProperty(result, key, { value: [item], writable: true, enumerable: true, configurable: true });
1817
- }
1818
- }
1819
- return result;
1820
- };
1821
- Rec2.pick = (...pickedKeys) => (data) => {
1822
- const result = {};
1823
- for (const key of pickedKeys) {
1824
- if (Object.hasOwn(data, key)) {
1825
- Object.defineProperty(result, key, { value: data[key], writable: true, enumerable: true, configurable: true });
1826
- }
1827
- }
1828
- return result;
1829
- };
1830
- Rec2.omit = (...omittedKeys) => (data) => {
1831
- const omitSet = new Set(omittedKeys);
1832
- const result = {};
1833
- for (const key of Object.keys(data)) {
1834
- if (!omitSet.has(key)) {
1835
- Object.defineProperty(result, key, {
1836
- value: data[key],
1837
- writable: true,
1838
- enumerable: true,
1839
- configurable: true
1840
- });
1841
- }
1842
- }
1843
- return result;
1844
- };
1845
- Rec2.merge = (other) => (data) => ({
1846
- ...data,
1847
- ...other
1848
- });
1849
- function mergeWith(combine) {
1850
- return (arg1, arg2) => {
1851
- if (arg2 !== void 0) {
1852
- const first = arg1;
1853
- const second2 = arg2;
1854
- const result = { ...first };
1855
- for (const [k, v] of Object.entries(second2)) {
1856
- if (Object.hasOwn(result, k)) {
1857
- result[k] = combine(result[k], v);
1858
- } else {
1859
- result[k] = v;
1860
- }
1861
- }
1862
- return result;
1863
- }
1864
- const second = arg1;
1865
- return (first) => {
1866
- const result = { ...first };
1867
- for (const [k, v] of Object.entries(second)) {
1868
- if (Object.hasOwn(result, k)) {
1869
- result[k] = combine(result[k], v);
1870
- } else {
1871
- result[k] = v;
1872
- }
1873
- }
1874
- return result;
1875
- };
1876
- };
1877
- }
1878
- Rec2.mergeWith = mergeWith;
1879
- Rec2.size = (data) => Object.keys(data).length;
1880
- Rec2.mapKeys = (f) => (data) => {
1881
- const result = {};
1882
- for (const [k, v] of Object.entries(data)) {
1883
- Object.defineProperty(result, f(k), { value: v, writable: true, enumerable: true, configurable: true });
1884
- }
1885
- return result;
1886
- };
1887
- Rec2.compact = (data) => {
1888
- const result = {};
1889
- for (const [k, v] of Object.entries(data)) {
1890
- if (v.kind === "Some") {
1891
- Object.defineProperty(result, k, { value: v.value, writable: true, enumerable: true, configurable: true });
1892
- }
1893
- }
1894
- return result;
1895
- };
1896
- Rec2.mapEntries = (f) => (data) => {
1897
- const result = {};
1898
- for (const [k, v] of Object.entries(data)) {
1899
- const [newKey, newVal] = f(k, v);
1900
- Object.defineProperty(result, newKey, { value: newVal, writable: true, enumerable: true, configurable: true });
1901
- }
1902
- return result;
1903
- };
1904
- Rec2.updateIn = (path, f) => (data) => {
1905
- const updateNode = (obj, keys2) => {
1906
- const [head, ...tail] = keys2;
1907
- if (tail.length === 0) {
1908
- return { ...obj, [head]: f(obj?.[head]) };
1909
- }
1910
- const child = obj && typeof obj === "object" && head in obj ? obj[head] : {};
1911
- return { ...obj, [head]: updateNode(child, tail) };
1912
- };
1913
- return updateNode(data, path);
1914
- };
1915
- let traverse;
1916
- ((traverse2) => {
1917
- traverse2.Maybe = RecMaybe.traverse;
1918
- traverse2.Result = RecResult.traverse;
1919
- })(traverse = Rec2.traverse || (Rec2.traverse = {}));
1920
- let sequence;
1921
- ((sequence2) => {
1922
- sequence2.Maybe = RecMaybe.sequence;
1923
- sequence2.Result = RecResult.sequence;
1924
- })(sequence = Rec2.sequence || (Rec2.sequence = {}));
1925
- Rec2.NonEmpty = RecNonEmpty;
1926
- })(Rec || (Rec = {}));
1927
-
1928
- // src/Data/Str.ts
1929
- var StrNonEmpty;
1930
- ((StrNonEmpty2) => {
1931
- let from;
1932
- ((from2) => {
1933
- from2.String = (s) => s.length > 0 ? Maybe.make.some(s) : Maybe.make.none();
1934
- })(from = StrNonEmpty2.from || (StrNonEmpty2.from = {}));
1935
- })(StrNonEmpty || (StrNonEmpty = {}));
1936
- var Str;
1937
- ((Str2) => {
1938
- let is;
1939
- ((is2) => {
1940
- is2.empty = (s) => s.length === 0;
1941
- is2.nonEmpty = (s) => s.length > 0;
1942
- })(is = Str2.is || (Str2.is = {}));
1943
- Str2.split = (separator) => (s) => s.split(separator);
1944
- Str2.trim = (s) => s.trim();
1945
- Str2.includes = (substring) => (s) => s.includes(substring);
1946
- Str2.replace = (pattern, replacement) => (s) => s.replace(pattern, replacement);
1947
- Str2.replaceAll = (pattern, replacement) => (s) => s.replaceAll(pattern, replacement);
1948
- Str2.startsWith = (prefix) => (s) => s.startsWith(prefix);
1949
- Str2.endsWith = (suffix) => (s) => s.endsWith(suffix);
1950
- Str2.toUpperCase = (s) => s.toUpperCase();
1951
- Str2.toLowerCase = (s) => s.toLowerCase();
1952
- Str2.capitalize = (s) => s.length === 0 ? "" : s.charAt(0).toUpperCase() + s.slice(1);
1953
- Str2.lines = (s) => s.split(/\r?\n|\r/);
1954
- Str2.words = (s) => s.trim().split(/\s+/).filter(Boolean);
1955
- Str2.isBlank = (s) => s.trim().length === 0;
1956
- Str2.length = (s) => s.length;
1957
- Str2.slice = (start, end) => (s) => s.slice(start, end);
1958
- Str2.padStart = (maxLength, fillString) => (s) => s.padStart(maxLength, fillString);
1959
- Str2.padEnd = (maxLength, fillString) => (s) => s.padEnd(maxLength, fillString);
1960
- Str2.parse = {
1961
- /**
1962
- * Parses a string as an integer (base 10). Returns `None` if the result is `NaN`.
1963
- *
1964
- * @example
1965
- * ```ts
1966
- * Str.parse.int("42"); // Some(42)
1967
- * Str.parse.int("3.7"); // Some(3)
1968
- * Str.parse.int("abc"); // None
1969
- * ```
1970
- */
1971
- int: (s) => {
1972
- const n = parseInt(s, 10);
1973
- return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
1974
- },
1975
- /**
1976
- * Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
1977
- *
1978
- * @example
1979
- * ```ts
1980
- * Str.parse.float("3.14"); // Some(3.14)
1981
- * Str.parse.float("42"); // Some(42)
1982
- * Str.parse.float("abc"); // None
1983
- * ```
1984
- */
1985
- float: (s) => {
1986
- const n = parseFloat(s);
1987
- return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
1988
- }
1989
- };
1990
- Str2.parseJson = (s) => {
1991
- try {
1992
- return Result.make.ok(JSON.parse(s));
1993
- } catch (error) {
1994
- return Result.make.err(error);
1995
- }
1996
- };
1997
- Str2.uncapitalize = (s) => s.length === 0 ? "" : s.charAt(0).toLowerCase() + s.slice(1);
1998
- Str2.truncate = (options) => (s) => {
1999
- const { length: targetLength, suffix = "..." } = options;
2000
- if (s.length <= targetLength) {
2001
- return s;
2002
- }
2003
- if (targetLength <= suffix.length) {
2004
- return suffix.slice(0, targetLength);
2005
- }
2006
- return s.slice(0, targetLength - suffix.length) + suffix;
2007
- };
2008
- Str2.NonEmpty = StrNonEmpty;
2009
- })(Str || (Str = {}));
2010
-
2011
- // src/Data/Uniq.ts
2012
- var UniqNonEmpty;
2013
- ((UniqNonEmpty2) => {
2014
- UniqNonEmpty2.singleton = (item) => new globalThis.Set([item]);
2015
- let from;
2016
- ((from2) => {
2017
- from2.Set = (s) => s.size > 0 ? Maybe.make.some(s) : Maybe.make.none();
2018
- })(from = UniqNonEmpty2.from || (UniqNonEmpty2.from = {}));
2019
- UniqNonEmpty2.reduce = (f) => (s) => to.Array(s).reduce(f);
2020
- UniqNonEmpty2.map = (f) => (s) => Uniq.map(f)(s);
2021
- let to;
2022
- ((to2) => {
2023
- to2.Array = (s) => Uniq.to.Array(s);
2024
- })(to = UniqNonEmpty2.to || (UniqNonEmpty2.to = {}));
2025
- })(UniqNonEmpty || (UniqNonEmpty = {}));
2026
- var Uniq;
2027
- ((Uniq2) => {
2028
- let is;
2029
- ((is2) => {
2030
- is2.empty = (s) => s.size === 0;
2031
- is2.nonEmpty = (s) => s.size > 0;
2032
- })(is = Uniq2.is || (Uniq2.is = {}));
2033
- Uniq2.empty = () => new globalThis.Set();
2034
- Uniq2.singleton = (item) => new globalThis.Set([item]);
2035
- let from;
2036
- ((from2) => {
2037
- from2.Array = (arr) => new globalThis.Set(arr);
2038
- })(from = Uniq2.from || (Uniq2.from = {}));
2039
- Uniq2.has = (item) => (s) => s.has(item);
2040
- Uniq2.size = (s) => s.size;
2041
- Uniq2.isSubsetOf = (other) => (s) => {
2042
- const set = s;
2043
- if (typeof set.isSubsetOf === "function") {
2044
- return set.isSubsetOf(other);
2045
- }
2046
- for (const item of s) {
2047
- if (!other.has(item)) {
2048
- return false;
2049
- }
2050
- }
2051
- return true;
2052
- };
2053
- Uniq2.insert = (item) => (s) => {
2054
- if (s.has(item)) {
2055
- return s;
2056
- }
2057
- const result = new globalThis.Set(s);
2058
- result.add(item);
2059
- return result;
2060
- };
2061
- Uniq2.remove = (item) => (s) => {
2062
- if (!s.has(item)) {
2063
- return s;
2064
- }
2065
- const result = new globalThis.Set(s);
2066
- result.delete(item);
2067
- return result;
2068
- };
2069
- Uniq2.map = (f) => (s) => {
2070
- const result = new globalThis.Set();
2071
- for (const item of s) {
2072
- result.add(f(item));
2073
- }
2074
- return result;
2075
- };
2076
- Uniq2.filter = (predicate) => (s) => {
2077
- const result = new globalThis.Set();
2078
- for (const item of s) {
2079
- if (predicate(item)) {
2080
- result.add(item);
2081
- }
2082
- }
2083
- return result;
2084
- };
2085
- Uniq2.union = (other) => (s) => {
2086
- const set = s;
2087
- if (typeof set.union === "function") {
2088
- return set.union(other);
2089
- }
2090
- const result = new globalThis.Set(s);
2091
- for (const item of other) {
2092
- result.add(item);
2093
- }
2094
- return result;
2095
- };
2096
- Uniq2.intersection = (other) => (s) => {
2097
- const set = s;
2098
- if (typeof set.intersection === "function") {
2099
- return set.intersection(other);
2100
- }
2101
- const result = new globalThis.Set();
2102
- for (const item of s) {
2103
- if (other.has(item)) {
2104
- result.add(item);
2105
- }
2106
- }
2107
- return result;
2108
- };
2109
- Uniq2.difference = (other) => (s) => {
2110
- const set = s;
2111
- if (typeof set.difference === "function") {
2112
- return set.difference(other);
2113
- }
2114
- const result = new globalThis.Set();
2115
- for (const item of s) {
2116
- if (!other.has(item)) {
2117
- result.add(item);
2118
- }
2119
- }
2120
- return result;
2121
- };
2122
- Uniq2.reduce = (init, f) => (s) => {
2123
- let acc = init;
2124
- for (const item of s) {
2125
- acc = f(acc, item);
2126
- }
2127
- return acc;
2128
- };
2129
- let to;
2130
- ((to2) => {
2131
- to2.Array = (s) => [...s];
2132
- })(to = Uniq2.to || (Uniq2.to = {}));
2133
- Uniq2.NonEmpty = UniqNonEmpty;
2134
- })(Uniq || (Uniq = {}));
2135
- // Annotate the CommonJS export names for ESM import in node:
2136
- 0 && (module.exports = {
1
+ import {
2137
2
  Arr,
2138
3
  BigNum,
2139
4
  Dict,
@@ -2142,4 +7,16 @@ var Uniq;
2142
7
  Rec,
2143
8
  Str,
2144
9
  Uniq
2145
- });
10
+ } from "./chunk-NIE7VVZU.js";
11
+ import "./chunk-MFJXL6J2.js";
12
+ import "./chunk-OIIOGDHK.js";
13
+ export {
14
+ Arr,
15
+ BigNum,
16
+ Dict,
17
+ Json,
18
+ Num,
19
+ Rec,
20
+ Str,
21
+ Uniq
22
+ };