@onrails/result 0.4.2 → 0.5.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/DESIGN.md +12 -1
- package/README.md +45 -1
- package/dist/compat/neverthrow.cjs +234 -48
- package/dist/compat/neverthrow.cjs.map +1 -1
- package/dist/compat/neverthrow.d.cts +38 -4
- package/dist/compat/neverthrow.d.ts +38 -4
- package/dist/compat/neverthrow.js +230 -49
- package/dist/compat/neverthrow.js.map +1 -1
- package/dist/extra.cjs +43 -2
- package/dist/extra.cjs.map +1 -1
- package/dist/extra.js +43 -2
- package/dist/extra.js.map +1 -1
- package/dist/fluent.cjs +88 -14
- package/dist/fluent.cjs.map +1 -1
- package/dist/fluent.js +88 -14
- package/dist/fluent.js.map +1 -1
- package/dist/index.cjs +120 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +120 -38
- package/dist/index.js.map +1 -1
- package/dist/internal/ctor.d.cts +8 -8
- package/dist/internal/ctor.d.ts +8 -8
- package/dist/internal/proto.d.cts +3 -0
- package/dist/internal/proto.d.ts +3 -0
- package/dist/railway.cjs +105 -31
- package/dist/railway.cjs.map +1 -1
- package/dist/railway.js +105 -31
- package/dist/railway.js.map +1 -1
- package/dist/try-gen.cjs +43 -6
- package/dist/try-gen.cjs.map +1 -1
- package/dist/try-gen.js +43 -6
- package/dist/try-gen.js.map +1 -1
- package/dist/types.d.cts +67 -9
- package/dist/types.d.ts +67 -9
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1,12 +1,86 @@
|
|
|
1
|
-
// src/internal/
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
// src/internal/proto.ts
|
|
2
|
+
var INSPECT = /* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom");
|
|
3
|
+
var OkImpl = class _OkImpl {
|
|
4
|
+
_tag;
|
|
5
|
+
value;
|
|
6
|
+
// explicit assignment order keeps `_tag` first, so JSON key order matches the plain-data shape
|
|
7
|
+
constructor(value) {
|
|
8
|
+
this._tag = "Ok";
|
|
9
|
+
this.value = value;
|
|
10
|
+
}
|
|
11
|
+
[INSPECT](_depth, options, inspect) {
|
|
12
|
+
return `Ok(${inspect(this.value, options)})`;
|
|
13
|
+
}
|
|
14
|
+
map(fn) {
|
|
15
|
+
return new _OkImpl(fn(this.value));
|
|
16
|
+
}
|
|
17
|
+
mapErr(_fn) {
|
|
18
|
+
return new _OkImpl(this.value);
|
|
19
|
+
}
|
|
20
|
+
flatMap(fn) {
|
|
21
|
+
return fn(this.value);
|
|
22
|
+
}
|
|
23
|
+
andThen(fn) {
|
|
24
|
+
return fn(this.value);
|
|
25
|
+
}
|
|
26
|
+
recover(_fn) {
|
|
27
|
+
return new _OkImpl(this.value);
|
|
28
|
+
}
|
|
29
|
+
tap(fn) {
|
|
30
|
+
fn(this.value);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
tapErr(_fn) {
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
match(onOk, _onErr) {
|
|
37
|
+
return onOk(this.value);
|
|
38
|
+
}
|
|
39
|
+
unwrapOr(_defaultValue) {
|
|
40
|
+
return this.value;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
var ErrImpl = class _ErrImpl {
|
|
44
|
+
_tag;
|
|
45
|
+
error;
|
|
46
|
+
constructor(error) {
|
|
47
|
+
this._tag = "Err";
|
|
48
|
+
this.error = error;
|
|
49
|
+
}
|
|
50
|
+
[INSPECT](_depth, options, inspect) {
|
|
51
|
+
return `Err(${inspect(this.error, options)})`;
|
|
52
|
+
}
|
|
53
|
+
map(_fn) {
|
|
54
|
+
return new _ErrImpl(this.error);
|
|
55
|
+
}
|
|
56
|
+
mapErr(fn) {
|
|
57
|
+
return new _ErrImpl(fn(this.error));
|
|
58
|
+
}
|
|
59
|
+
flatMap(_fn) {
|
|
60
|
+
return new _ErrImpl(this.error);
|
|
61
|
+
}
|
|
62
|
+
andThen(_fn) {
|
|
63
|
+
return new _ErrImpl(this.error);
|
|
64
|
+
}
|
|
65
|
+
recover(fn) {
|
|
66
|
+
return fn(this.error);
|
|
67
|
+
}
|
|
68
|
+
tap(_fn) {
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
tapErr(fn) {
|
|
72
|
+
fn(this.error);
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
match(_onOk, onErr) {
|
|
76
|
+
return onErr(this.error);
|
|
77
|
+
}
|
|
78
|
+
unwrapOr(defaultValue) {
|
|
79
|
+
return defaultValue;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
var newOk = (value) => new OkImpl(value);
|
|
83
|
+
var newErr = (error) => new ErrImpl(error);
|
|
10
84
|
|
|
11
85
|
// src/internal/dual.ts
|
|
12
86
|
var dual = (arity, body) => {
|
|
@@ -20,33 +94,33 @@ var toError = (error) => error instanceof Error ? error : new Error(String(error
|
|
|
20
94
|
|
|
21
95
|
// src/result.ts
|
|
22
96
|
function ok(value) {
|
|
23
|
-
return
|
|
97
|
+
return newOk(value);
|
|
24
98
|
}
|
|
25
99
|
var of = ok;
|
|
26
100
|
function err(error) {
|
|
27
|
-
return
|
|
101
|
+
return newErr(error);
|
|
28
102
|
}
|
|
29
103
|
var isOk = (result) => result._tag === "Ok";
|
|
30
104
|
var isErr = (result) => result._tag === "Err";
|
|
31
105
|
var map = dual(
|
|
32
106
|
2,
|
|
33
|
-
(result, fn) => isOk(result) ?
|
|
107
|
+
(result, fn) => isOk(result) ? newOk(fn(result.value)) : newErr(result.error)
|
|
34
108
|
);
|
|
35
109
|
var mapErr = dual(
|
|
36
110
|
2,
|
|
37
|
-
(result, fn) => isErr(result) ?
|
|
111
|
+
(result, fn) => isErr(result) ? newErr(fn(result.error)) : newOk(result.value)
|
|
38
112
|
);
|
|
39
113
|
var bimap = dual(
|
|
40
114
|
3,
|
|
41
|
-
(result, onOk, onErr) => isOk(result) ?
|
|
115
|
+
(result, onOk, onErr) => isOk(result) ? newOk(onOk(result.value)) : newErr(onErr(result.error))
|
|
42
116
|
);
|
|
43
117
|
var flatMap = dual(
|
|
44
118
|
2,
|
|
45
|
-
(result, fn) => isOk(result) ? fn(result.value) :
|
|
119
|
+
(result, fn) => isOk(result) ? fn(result.value) : newErr(result.error)
|
|
46
120
|
);
|
|
47
121
|
var recover = dual(
|
|
48
122
|
2,
|
|
49
|
-
(result, fn) => isErr(result) ? fn(result.error) :
|
|
123
|
+
(result, fn) => isErr(result) ? fn(result.error) : newOk(result.value)
|
|
50
124
|
);
|
|
51
125
|
var tap = dual(2, (result, fn) => {
|
|
52
126
|
if (isOk(result)) fn(result.value);
|
|
@@ -76,17 +150,17 @@ function unwrapErr(result) {
|
|
|
76
150
|
function fromThrowable(fn, onThrow) {
|
|
77
151
|
return (...args) => {
|
|
78
152
|
try {
|
|
79
|
-
return
|
|
153
|
+
return newOk(fn(...args));
|
|
80
154
|
} catch (error) {
|
|
81
|
-
return
|
|
155
|
+
return newErr(onThrow(error));
|
|
82
156
|
}
|
|
83
157
|
};
|
|
84
158
|
}
|
|
85
159
|
function trySync(fn, onThrow) {
|
|
86
160
|
try {
|
|
87
|
-
return
|
|
161
|
+
return newOk(fn());
|
|
88
162
|
} catch (error) {
|
|
89
|
-
return
|
|
163
|
+
return newErr(onThrow ? onThrow(error) : toError(error));
|
|
90
164
|
}
|
|
91
165
|
}
|
|
92
166
|
var printPayload = (payload) => {
|
|
@@ -99,6 +173,13 @@ var printPayload = (payload) => {
|
|
|
99
173
|
var show = (result) => isOk(result) ? `Ok(${printPayload(result.value)})` : `Err(${printPayload(result.error)})`;
|
|
100
174
|
|
|
101
175
|
// src/types.ts
|
|
176
|
+
var Result = {
|
|
177
|
+
from: (data) => {
|
|
178
|
+
if (data._tag === "Ok") return newOk(data.value);
|
|
179
|
+
if (data._tag === "Err") return newErr(data.error);
|
|
180
|
+
throw new TypeError(`Result.from: unknown _tag ${String(data._tag)}`);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
102
183
|
var UnexpectedError = class extends Error {
|
|
103
184
|
constructor(message, cause) {
|
|
104
185
|
super(message);
|
|
@@ -113,11 +194,11 @@ var sequenceSettled = (settled) => {
|
|
|
113
194
|
const values = [];
|
|
114
195
|
for (const result of settled) {
|
|
115
196
|
if (isErr(result)) {
|
|
116
|
-
return
|
|
197
|
+
return newErr(result.error);
|
|
117
198
|
}
|
|
118
199
|
values.push(result.value);
|
|
119
200
|
}
|
|
120
|
-
return
|
|
201
|
+
return newOk(values);
|
|
121
202
|
};
|
|
122
203
|
var ResultAsync = class _ResultAsync {
|
|
123
204
|
constructor(run) {
|
|
@@ -154,9 +235,9 @@ var ResultAsync = class _ResultAsync {
|
|
|
154
235
|
static fromPromise(promise, onReject) {
|
|
155
236
|
return new _ResultAsync(async () => {
|
|
156
237
|
try {
|
|
157
|
-
return
|
|
238
|
+
return newOk(await promise);
|
|
158
239
|
} catch (error) {
|
|
159
|
-
return
|
|
240
|
+
return newErr(onReject(error));
|
|
160
241
|
}
|
|
161
242
|
});
|
|
162
243
|
}
|
|
@@ -170,7 +251,7 @@ var ResultAsync = class _ResultAsync {
|
|
|
170
251
|
* ```
|
|
171
252
|
*/
|
|
172
253
|
static fromSafePromise(promise) {
|
|
173
|
-
return new _ResultAsync(async () =>
|
|
254
|
+
return new _ResultAsync(async () => newOk(await promise));
|
|
174
255
|
}
|
|
175
256
|
/**
|
|
176
257
|
* Defers work until {@link resolve}. Unlike {@link fromPromise}, the factory
|
|
@@ -188,13 +269,13 @@ var ResultAsync = class _ResultAsync {
|
|
|
188
269
|
return new _ResultAsync(fn);
|
|
189
270
|
}
|
|
190
271
|
static ok(value) {
|
|
191
|
-
return new _ResultAsync(async () =>
|
|
272
|
+
return new _ResultAsync(async () => newOk(value));
|
|
192
273
|
}
|
|
193
274
|
static of(value) {
|
|
194
275
|
return _ResultAsync.ok(value);
|
|
195
276
|
}
|
|
196
277
|
static err(error) {
|
|
197
|
-
return new _ResultAsync(async () =>
|
|
278
|
+
return new _ResultAsync(async () => newErr(error));
|
|
198
279
|
}
|
|
199
280
|
/**
|
|
200
281
|
* Lifts an existing `Promise<Result<T, E>>` (e.g. from interop code) into a
|
|
@@ -212,7 +293,7 @@ var ResultAsync = class _ResultAsync {
|
|
|
212
293
|
try {
|
|
213
294
|
return await promise;
|
|
214
295
|
} catch (error) {
|
|
215
|
-
return
|
|
296
|
+
return newErr(mapDefect(error));
|
|
216
297
|
}
|
|
217
298
|
});
|
|
218
299
|
}
|
|
@@ -234,11 +315,11 @@ var ResultAsync = class _ResultAsync {
|
|
|
234
315
|
for (const ra of results) {
|
|
235
316
|
const result = await ra.resolve();
|
|
236
317
|
if (isErr(result)) {
|
|
237
|
-
return
|
|
318
|
+
return newErr(result.error);
|
|
238
319
|
}
|
|
239
320
|
values.push(result.value);
|
|
240
321
|
}
|
|
241
|
-
return
|
|
322
|
+
return newOk(values);
|
|
242
323
|
});
|
|
243
324
|
}
|
|
244
325
|
/**
|
|
@@ -333,7 +414,7 @@ var ResultAsync = class _ResultAsync {
|
|
|
333
414
|
return new _ResultAsync(async () => {
|
|
334
415
|
const first = await this.resolve();
|
|
335
416
|
if (isErr(first)) {
|
|
336
|
-
return first;
|
|
417
|
+
return newErr(first.error);
|
|
337
418
|
}
|
|
338
419
|
const next = fn(first.value);
|
|
339
420
|
return next instanceof _ResultAsync ? next.resolve() : next;
|
|
@@ -365,7 +446,7 @@ var ResultAsync = class _ResultAsync {
|
|
|
365
446
|
return new _ResultAsync(async () => {
|
|
366
447
|
const first = await this.resolve();
|
|
367
448
|
if (!isErr(first)) {
|
|
368
|
-
return first;
|
|
449
|
+
return newOk(first.value);
|
|
369
450
|
}
|
|
370
451
|
const next = fn(first.error);
|
|
371
452
|
return next instanceof _ResultAsync ? next.resolve() : next;
|
|
@@ -501,13 +582,14 @@ function tryAsync(promise, onReject) {
|
|
|
501
582
|
var combine = (results) => {
|
|
502
583
|
const values = [];
|
|
503
584
|
for (const result of results) {
|
|
504
|
-
if (isErr(result)) return
|
|
585
|
+
if (isErr(result)) return newErr(result.error);
|
|
505
586
|
values.push(result.value);
|
|
506
587
|
}
|
|
507
|
-
return
|
|
588
|
+
return newOk(values);
|
|
508
589
|
};
|
|
509
590
|
var combineTuple = (results, ..._guard) => (
|
|
510
591
|
// Runtime identical to combine; the cast restores per-index tuple types.
|
|
592
|
+
// `unknown` hop: the tuple type is computed from R, which TS cannot relate to the runtime array.
|
|
511
593
|
combine(results)
|
|
512
594
|
);
|
|
513
595
|
function validateAll(results, combineErrors) {
|
|
@@ -520,8 +602,8 @@ function validateAll(results, combineErrors) {
|
|
|
520
602
|
values.push(result.value);
|
|
521
603
|
}
|
|
522
604
|
}
|
|
523
|
-
if (errors.length === 0) return
|
|
524
|
-
return
|
|
605
|
+
if (errors.length === 0) return newOk(values);
|
|
606
|
+
return newErr(combineErrors ? errors.reduce(combineErrors) : errors);
|
|
525
607
|
}
|
|
526
608
|
function validateTuple(results, ...rest) {
|
|
527
609
|
const combineErrors = rest[0];
|
|
@@ -566,12 +648,12 @@ var tryGen = (fn) => {
|
|
|
566
648
|
return fn();
|
|
567
649
|
} catch (error) {
|
|
568
650
|
if (error instanceof ErrSignal) {
|
|
569
|
-
return
|
|
651
|
+
return newErr(error.error);
|
|
570
652
|
}
|
|
571
653
|
throw error;
|
|
572
654
|
}
|
|
573
655
|
};
|
|
574
656
|
|
|
575
|
-
export { $, ResultAsync, UnexpectedError, asyncAfter, bimap, combine, combineTuple, err, errAsync, flatMap, flow, fromAsync, fromPromise, fromResult, fromSafePromise, fromThrowable, isErr, isOk, map, mapErr, match, of, ok, okAsync, pipe, recover, show, tap, tapErr, tryAsync, tryGen, trySync, unwrap, unwrapErr, unwrapOk, unwrapOr, validateAll, validateTuple, yieldResult };
|
|
657
|
+
export { $, Result, ResultAsync, UnexpectedError, asyncAfter, bimap, combine, combineTuple, err, errAsync, flatMap, flow, fromAsync, fromPromise, fromResult, fromSafePromise, fromThrowable, isErr, isOk, map, mapErr, match, of, ok, okAsync, pipe, recover, show, tap, tapErr, tryAsync, tryGen, trySync, unwrap, unwrapErr, unwrapOk, unwrapOr, validateAll, validateTuple, yieldResult };
|
|
576
658
|
//# sourceMappingURL=index.js.map
|
|
577
659
|
//# sourceMappingURL=index.js.map
|