@igorjs/pure-ts 0.7.4 → 0.7.7
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 +39 -745
- package/dist/async/cache.d.ts +1 -6
- package/dist/async/cache.d.ts.map +1 -1
- package/dist/async/cache.js.map +1 -1
- package/dist/async/circuit-breaker.d.ts +1 -6
- package/dist/async/circuit-breaker.d.ts.map +1 -1
- package/dist/async/circuit-breaker.js.map +1 -1
- package/dist/async/index.d.ts +56 -12
- package/dist/async/index.d.ts.map +1 -1
- package/dist/async/index.js +41 -12
- package/dist/async/index.js.map +1 -1
- package/dist/async/lazy.d.ts +6 -42
- package/dist/async/lazy.d.ts.map +1 -1
- package/dist/async/lazy.js.map +1 -1
- package/dist/async/pool.d.ts +1 -5
- package/dist/async/pool.d.ts.map +1 -1
- package/dist/async/pool.js +3 -3
- package/dist/async/pool.js.map +1 -1
- package/dist/async/rate-limiter.d.ts +1 -6
- package/dist/async/rate-limiter.d.ts.map +1 -1
- package/dist/async/rate-limiter.js.map +1 -1
- package/dist/async/retry.d.ts +7 -9
- package/dist/async/retry.d.ts.map +1 -1
- package/dist/async/retry.js.map +1 -1
- package/dist/async/semaphore.d.ts +2 -7
- package/dist/async/semaphore.d.ts.map +1 -1
- package/dist/async/semaphore.js.map +1 -1
- package/dist/async/stream.d.ts +1 -5
- package/dist/async/stream.d.ts.map +1 -1
- package/dist/async/stream.js +6 -6
- package/dist/async/stream.js.map +1 -1
- package/dist/async/task-like.d.ts +30 -0
- package/dist/async/task-like.d.ts.map +1 -0
- package/dist/async/task-like.js +13 -0
- package/dist/async/task-like.js.map +1 -0
- package/dist/async/task.d.ts +8 -62
- package/dist/async/task.d.ts.map +1 -1
- package/dist/async/task.js +1 -1
- package/dist/async/task.js.map +1 -1
- package/dist/async/timer.d.ts +1 -6
- package/dist/async/timer.d.ts.map +1 -1
- package/dist/async/timer.js +4 -4
- package/dist/async/timer.js.map +1 -1
- package/dist/client.d.ts +6 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/core/index.d.ts +21 -9
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +21 -9
- package/dist/core/index.js.map +1 -1
- package/dist/core/option.d.ts +26 -68
- package/dist/core/option.d.ts.map +1 -1
- package/dist/core/option.js +7 -20
- package/dist/core/option.js.map +1 -1
- package/dist/core/pipe.d.ts +13 -0
- package/dist/core/pipe.d.ts.map +1 -1
- package/dist/core/pipe.js.map +1 -1
- package/dist/core/result.d.ts +45 -90
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +9 -65
- package/dist/core/result.js.map +1 -1
- package/dist/data/adt.d.ts +1 -2
- package/dist/data/adt.d.ts.map +1 -1
- package/dist/data/codec.d.ts +4 -3
- package/dist/data/codec.d.ts.map +1 -1
- package/dist/data/codec.js.map +1 -1
- package/dist/data/index.d.ts +24 -5
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +11 -3
- package/dist/data/index.js.map +1 -1
- package/dist/data/internals.d.ts +2 -2
- package/dist/data/internals.d.ts.map +1 -1
- package/dist/data/list.d.ts +1 -1
- package/dist/data/non-empty-list.d.ts +1 -1
- package/dist/data/record.d.ts +1 -2
- package/dist/data/record.d.ts.map +1 -1
- package/dist/data/record.js.map +1 -1
- package/dist/data/stable-vec.d.ts +116 -0
- package/dist/data/stable-vec.d.ts.map +1 -0
- package/dist/data/stable-vec.js +184 -0
- package/dist/data/stable-vec.js.map +1 -0
- package/dist/index.d.ts +162 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/io/compression.d.ts +1 -6
- package/dist/io/compression.d.ts.map +1 -1
- package/dist/io/compression.js +3 -3
- package/dist/io/compression.js.map +1 -1
- package/dist/io/crypto.d.ts +1 -5
- package/dist/io/crypto.d.ts.map +1 -1
- package/dist/io/crypto.js +2 -2
- package/dist/io/crypto.js.map +1 -1
- package/dist/io/dns.d.ts +3 -7
- package/dist/io/dns.d.ts.map +1 -1
- package/dist/io/dns.js +3 -3
- package/dist/io/dns.js.map +1 -1
- package/dist/io/file.d.ts +1 -5
- package/dist/io/file.d.ts.map +1 -1
- package/dist/io/file.js +13 -13
- package/dist/io/file.js.map +1 -1
- package/dist/io/index.d.ts +36 -11
- package/dist/io/index.d.ts.map +1 -1
- package/dist/io/index.js +26 -10
- package/dist/io/index.js.map +1 -1
- package/dist/io/net.d.ts +1 -6
- package/dist/io/net.d.ts.map +1 -1
- package/dist/io/net.js +6 -6
- package/dist/io/net.js.map +1 -1
- package/dist/io/subprocess.d.ts +1 -6
- package/dist/io/subprocess.d.ts.map +1 -1
- package/dist/io/subprocess.js +4 -4
- package/dist/io/subprocess.js.map +1 -1
- package/dist/program.d.ts +137 -25
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +23 -5
- package/dist/program.js.map +1 -1
- package/dist/runtime/config.d.ts +4 -5
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +23 -2
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +7 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/logger.d.ts +22 -6
- package/dist/runtime/logger.d.ts.map +1 -1
- package/dist/runtime/logger.js.map +1 -1
- package/dist/runtime/platform.d.ts +2 -2
- package/dist/runtime/platform.d.ts.map +1 -1
- package/dist/runtime/platform.js.map +1 -1
- package/dist/runtime/process.d.ts +4 -2
- package/dist/runtime/process.d.ts.map +1 -1
- package/dist/runtime/process.js.map +1 -1
- package/dist/types/error.d.ts +34 -61
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/error.js.map +1 -1
- package/dist/types/index.d.ts +15 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/nominal.d.ts +1 -3
- package/dist/types/nominal.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/core/index.d.ts
CHANGED
|
@@ -12,20 +12,32 @@
|
|
|
12
12
|
* const result = pipe(Ok(42), r => r.map(n => n * 2));
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
|
-
/** Typed equality comparison. */
|
|
15
|
+
/** Typed equality comparison typeclass. */
|
|
16
16
|
export { Eq } from "./eq.js";
|
|
17
|
-
/**
|
|
17
|
+
/** Lossless bidirectional transformation between two types. */
|
|
18
|
+
/** Total optic for reading and updating a value that always exists in the source. */
|
|
19
|
+
/** Partial optic for reading and updating a value that may not exist in the source. */
|
|
20
|
+
/** Optic focusing on a variant of a sum type via getOption and reverseGet. */
|
|
21
|
+
/** Optic focusing on multiple targets within a data structure. */
|
|
18
22
|
export { Iso, Lens, LensOptional, Prism, Traversal } from "./lens.js";
|
|
19
|
-
/** Exhaustive pattern matching with compile-time coverage. */
|
|
23
|
+
/** Exhaustive pattern matching builder with compile-time coverage checking. */
|
|
20
24
|
export { Match } from "./match.js";
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
/**
|
|
25
|
+
/** Absent variant of Option, representing no value. */
|
|
26
|
+
/** Discriminated union representing a value that may or may not exist. */
|
|
27
|
+
/** Pattern-match arms for Option.match. */
|
|
28
|
+
/** Present variant constructor: wrap a value in Option. */
|
|
29
|
+
export { None, type NoneVariant, Option, type OptionMatcher, Some, type SomeVariant, } from "./option.js";
|
|
30
|
+
/** Typed ordering and comparison typeclass. */
|
|
24
31
|
export { Ord } from "./ord.js";
|
|
25
|
-
/**
|
|
32
|
+
/** Compose functions left-to-right into a new function (point-free). */
|
|
33
|
+
/** Pass a value through a sequence of unary functions left-to-right. */
|
|
26
34
|
export { flow, pipe } from "./pipe.js";
|
|
27
|
-
/**
|
|
35
|
+
/** Create a failed Result wrapping an error value. */
|
|
36
|
+
/** Create a successful Result wrapping a value. */
|
|
37
|
+
/** Discriminated union representing success (Ok) or failure (Err). */
|
|
38
|
+
/** Pattern-match arms for Result.match. */
|
|
39
|
+
/** Execute a function in try/catch, returning Result instead of throwing. */
|
|
28
40
|
export { Err, Ok, Result, type ResultMatcher, tryCatch } from "./result.js";
|
|
29
|
-
/** Pure state monad for threading state through computations. */
|
|
41
|
+
/** Pure state monad for threading state through a sequence of computations. */
|
|
30
42
|
export { State } from "./state.js";
|
|
31
43
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,2CAA2C;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,+DAA+D;AAC/D,qFAAqF;AACrF,uFAAuF;AACvF,8EAA8E;AAC9E,kEAAkE;AAClE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtE,+EAA+E;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,uDAAuD;AACvD,0EAA0E;AAC1E,2CAA2C;AAC3C,2DAA2D;AAC3D,OAAO,EACL,IAAI,EACJ,KAAK,WAAW,EAChB,MAAM,EACN,KAAK,aAAa,EAClB,IAAI,EACJ,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,+CAA+C;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,wEAAwE;AACxE,wEAAwE;AACxE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,sDAAsD;AACtD,mDAAmD;AACnD,sEAAsE;AACtE,2CAA2C;AAC3C,6EAA6E;AAC7E,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5E,+EAA+E;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -12,20 +12,32 @@
|
|
|
12
12
|
* const result = pipe(Ok(42), r => r.map(n => n * 2));
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
|
-
/** Typed equality comparison. */
|
|
15
|
+
/** Typed equality comparison typeclass. */
|
|
16
16
|
export { Eq } from "./eq.js";
|
|
17
|
-
/**
|
|
17
|
+
/** Lossless bidirectional transformation between two types. */
|
|
18
|
+
/** Total optic for reading and updating a value that always exists in the source. */
|
|
19
|
+
/** Partial optic for reading and updating a value that may not exist in the source. */
|
|
20
|
+
/** Optic focusing on a variant of a sum type via getOption and reverseGet. */
|
|
21
|
+
/** Optic focusing on multiple targets within a data structure. */
|
|
18
22
|
export { Iso, Lens, LensOptional, Prism, Traversal } from "./lens.js";
|
|
19
|
-
/** Exhaustive pattern matching with compile-time coverage. */
|
|
23
|
+
/** Exhaustive pattern matching builder with compile-time coverage checking. */
|
|
20
24
|
export { Match } from "./match.js";
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
/**
|
|
25
|
+
/** Absent variant of Option, representing no value. */
|
|
26
|
+
/** Discriminated union representing a value that may or may not exist. */
|
|
27
|
+
/** Pattern-match arms for Option.match. */
|
|
28
|
+
/** Present variant constructor: wrap a value in Option. */
|
|
29
|
+
export { None, Option, Some, } from "./option.js";
|
|
30
|
+
/** Typed ordering and comparison typeclass. */
|
|
24
31
|
export { Ord } from "./ord.js";
|
|
25
|
-
/**
|
|
32
|
+
/** Compose functions left-to-right into a new function (point-free). */
|
|
33
|
+
/** Pass a value through a sequence of unary functions left-to-right. */
|
|
26
34
|
export { flow, pipe } from "./pipe.js";
|
|
27
|
-
/**
|
|
35
|
+
/** Create a failed Result wrapping an error value. */
|
|
36
|
+
/** Create a successful Result wrapping a value. */
|
|
37
|
+
/** Discriminated union representing success (Ok) or failure (Err). */
|
|
38
|
+
/** Pattern-match arms for Result.match. */
|
|
39
|
+
/** Execute a function in try/catch, returning Result instead of throwing. */
|
|
28
40
|
export { Err, Ok, Result, tryCatch } from "./result.js";
|
|
29
|
-
/** Pure state monad for threading state through computations. */
|
|
41
|
+
/** Pure state monad for threading state through a sequence of computations. */
|
|
30
42
|
export { State } from "./state.js";
|
|
31
43
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,2CAA2C;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,+DAA+D;AAC/D,qFAAqF;AACrF,uFAAuF;AACvF,8EAA8E;AAC9E,kEAAkE;AAClE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtE,+EAA+E;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,uDAAuD;AACvD,0EAA0E;AAC1E,2CAA2C;AAC3C,2DAA2D;AAC3D,OAAO,EACL,IAAI,EAEJ,MAAM,EAEN,IAAI,GAEL,MAAM,aAAa,CAAC;AACrB,+CAA+C;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,wEAAwE;AACxE,wEAAwE;AACxE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,sDAAsD;AACtD,mDAAmD;AACnD,sEAAsE;AACtE,2CAA2C;AAC3C,6EAA6E;AAC7E,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAsB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5E,+EAA+E;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/core/option.d.ts
CHANGED
|
@@ -5,26 +5,14 @@
|
|
|
5
5
|
* with a chainable monad. This forces callers to handle absence rather than
|
|
6
6
|
* silently propagating `undefined` through pipelines.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
8
|
+
* The public API exposes two variant interfaces (`SomeVariant`, `NoneVariant`)
|
|
9
|
+
* whose union forms `Option<T>`. Private implementation classes back them at
|
|
10
|
+
* runtime. `None` is a singleton to avoid unnecessary allocations.
|
|
10
11
|
*
|
|
11
12
|
* The `Option` const/type merge provides `Option.fromNullable()` in value
|
|
12
13
|
* position and `Option<T>` in type position, paralleling `Result`.
|
|
13
14
|
*/
|
|
14
15
|
import type { Result } from "./result.js";
|
|
15
|
-
/**
|
|
16
|
-
* A discriminated union representing a value that may or may not exist.
|
|
17
|
-
*
|
|
18
|
-
* `Some<T>` wraps a present value; `None` signals absence. Use this instead
|
|
19
|
-
* of `null` / `undefined` to make optionality explicit and chainable.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* const name: Option<string> = fromNullable(input);
|
|
24
|
-
* const upper = name.map(s => s.toUpperCase()).unwrapOr('ANON');
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export type Option<T> = SomeImpl<T> | NoneImpl<T>;
|
|
28
16
|
/** Pattern-match arms for {@link Option.match}. */
|
|
29
17
|
export interface OptionMatcher<T, U> {
|
|
30
18
|
/** Handler for the Some variant. */
|
|
@@ -32,65 +20,23 @@ export interface OptionMatcher<T, U> {
|
|
|
32
20
|
/** Handler for the None variant. */
|
|
33
21
|
readonly None: () => U;
|
|
34
22
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Shared contract for both `Some` and `None` variants.
|
|
37
|
-
*
|
|
38
|
-
* Ensures both classes expose identical method signatures so callers can
|
|
39
|
-
* chain operations without narrowing first. `None` methods are no-ops
|
|
40
|
-
* that propagate absence.
|
|
41
|
-
*/
|
|
42
|
-
interface OptionMethods<T> {
|
|
43
|
-
/** Transform the value if present. */
|
|
44
|
-
map<U>(fn: (value: T) => U): Option<U>;
|
|
45
|
-
/** Chain into a dependent computation that may produce None. */
|
|
46
|
-
flatMap<U>(fn: (value: T) => Option<U>): Option<U>;
|
|
47
|
-
/** Keep the value only if the predicate holds. */
|
|
48
|
-
filter(predicate: (value: T) => boolean): Option<T>;
|
|
49
|
-
/** Run a side-effect on the value without altering the Option. */
|
|
50
|
-
tap(fn: (value: T) => void): Option<T>;
|
|
51
|
-
/** Extract the value or throw if None. */
|
|
52
|
-
unwrap(): T;
|
|
53
|
-
/** Extract the value or return the fallback. */
|
|
54
|
-
unwrapOr(_fallback: T): T;
|
|
55
|
-
/** Extract the value or compute a fallback. */
|
|
56
|
-
unwrapOrElse(_fn: () => T): T;
|
|
57
|
-
/** Pattern match on Some or None. */
|
|
58
|
-
match<U>(m: OptionMatcher<T, U>): U;
|
|
59
|
-
/** Convert to Result: Some becomes Ok, None becomes Err with the given error. */
|
|
60
|
-
toResult<E>(_error: E): Result<T, E>;
|
|
61
|
-
/** Pair this value with another Option's value. */
|
|
62
|
-
zip<U>(other: Option<U>): Option<[T, U]>;
|
|
63
|
-
/** Apply a wrapped function to this value. */
|
|
64
|
-
ap<U>(fnOption: Option<(value: T) => U>): Option<U>;
|
|
65
|
-
/** Return this Option if Some, otherwise the other. */
|
|
66
|
-
or(_other: Option<T>): Option<T>;
|
|
67
|
-
/** Serialize to a JSON-safe tagged object. */
|
|
68
|
-
toJSON(): {
|
|
69
|
-
tag: "Some";
|
|
70
|
-
value: T;
|
|
71
|
-
} | {
|
|
72
|
-
tag: "None";
|
|
73
|
-
};
|
|
74
|
-
/** Human-readable string representation. */
|
|
75
|
-
toString(): string;
|
|
76
|
-
}
|
|
77
23
|
/**
|
|
78
24
|
* The present variant of {@link Option}.
|
|
79
25
|
*
|
|
80
26
|
* Wraps a value of type `T`. Provides monadic chaining (`map`, `flatMap`),
|
|
81
27
|
* safe extraction (`unwrap`, `unwrapOr`), and pattern matching (`match`).
|
|
82
28
|
*
|
|
83
|
-
* Construct via the {@link Some} factory rather than
|
|
29
|
+
* Construct via the {@link Some} factory rather than instantiating directly.
|
|
84
30
|
*/
|
|
85
|
-
export
|
|
86
|
-
readonly value: T;
|
|
31
|
+
export interface SomeVariant<T> {
|
|
87
32
|
/** Discriminant tag for pattern matching. */
|
|
88
33
|
readonly tag: "Some";
|
|
89
|
-
|
|
34
|
+
/** The wrapped value. */
|
|
35
|
+
readonly value: T;
|
|
90
36
|
/** Whether this is a Some variant. Always true. */
|
|
91
|
-
|
|
37
|
+
readonly isSome: true;
|
|
92
38
|
/** Whether this is a None variant. Always false. */
|
|
93
|
-
|
|
39
|
+
readonly isNone: false;
|
|
94
40
|
/** Apply `fn` to the value, returning a new `Some`. */
|
|
95
41
|
map<U>(fn: (value: T) => U): Option<U>;
|
|
96
42
|
/** Chain into a dependent computation that may produce `None`. */
|
|
@@ -134,15 +80,15 @@ export declare class SomeImpl<T> implements OptionMethods<T> {
|
|
|
134
80
|
* All value-channel operations (`map`, `flatMap`, `unwrap`) short-circuit,
|
|
135
81
|
* preserving the `None`.
|
|
136
82
|
*
|
|
137
|
-
* Use the singleton {@link None} constant rather than
|
|
83
|
+
* Use the singleton {@link None} constant rather than instantiating directly.
|
|
138
84
|
*/
|
|
139
|
-
export
|
|
85
|
+
export interface NoneVariant<T> {
|
|
140
86
|
/** Discriminant tag for pattern matching. */
|
|
141
87
|
readonly tag: "None";
|
|
142
88
|
/** Whether this is a Some variant. Always false. */
|
|
143
|
-
|
|
89
|
+
readonly isSome: false;
|
|
144
90
|
/** Whether this is a None variant. Always true. */
|
|
145
|
-
|
|
91
|
+
readonly isNone: true;
|
|
146
92
|
/** No-op on `None`. */
|
|
147
93
|
map<U>(_fn: (value: T) => U): Option<U>;
|
|
148
94
|
/** No-op on `None`. */
|
|
@@ -174,6 +120,19 @@ export declare class NoneImpl<T> implements OptionMethods<T> {
|
|
|
174
120
|
/** Human-readable string representation. */
|
|
175
121
|
toString(): string;
|
|
176
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* A discriminated union representing a value that may or may not exist.
|
|
125
|
+
*
|
|
126
|
+
* `Some<T>` wraps a present value; `None` signals absence. Use this instead
|
|
127
|
+
* of `null` / `undefined` to make optionality explicit and chainable.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* const name: Option<string> = fromNullable(input);
|
|
132
|
+
* const upper = name.map(s => s.toUpperCase()).unwrapOr('ANON');
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export type Option<T> = SomeVariant<T> | NoneVariant<T>;
|
|
177
136
|
/**
|
|
178
137
|
* Wrap a value in `Some`.
|
|
179
138
|
*
|
|
@@ -237,5 +196,4 @@ export declare const Option: {
|
|
|
237
196
|
/** Type guard for Option values. */
|
|
238
197
|
readonly is: (value: unknown) => value is Option<unknown>;
|
|
239
198
|
};
|
|
240
|
-
export {};
|
|
241
199
|
//# sourceMappingURL=option.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../src/core/option.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../src/core/option.ts"],"names":[],"mappings":"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"}
|
package/dist/core/option.js
CHANGED
|
@@ -5,22 +5,16 @@
|
|
|
5
5
|
* with a chainable monad. This forces callers to handle absence rather than
|
|
6
6
|
* silently propagating `undefined` through pipelines.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
8
|
+
* The public API exposes two variant interfaces (`SomeVariant`, `NoneVariant`)
|
|
9
|
+
* whose union forms `Option<T>`. Private implementation classes back them at
|
|
10
|
+
* runtime. `None` is a singleton to avoid unnecessary allocations.
|
|
10
11
|
*
|
|
11
12
|
* The `Option` const/type merge provides `Option.fromNullable()` in value
|
|
12
13
|
* position and `Option<T>` in type position, paralleling `Result`.
|
|
13
14
|
*/
|
|
14
15
|
import { Err, Ok } from "./result.js";
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
*
|
|
18
|
-
* Wraps a value of type `T`. Provides monadic chaining (`map`, `flatMap`),
|
|
19
|
-
* safe extraction (`unwrap`, `unwrapOr`), and pattern matching (`match`).
|
|
20
|
-
*
|
|
21
|
-
* Construct via the {@link Some} factory rather than `new SomeImpl(...)`.
|
|
22
|
-
*/
|
|
23
|
-
export class SomeImpl {
|
|
16
|
+
/** @internal Runtime backing class for {@link SomeVariant}. */
|
|
17
|
+
class SomeImpl {
|
|
24
18
|
value;
|
|
25
19
|
/** Discriminant tag for pattern matching. */
|
|
26
20
|
tag = "Some";
|
|
@@ -98,15 +92,8 @@ export class SomeImpl {
|
|
|
98
92
|
return `Some(${String(this.value)})`;
|
|
99
93
|
}
|
|
100
94
|
}
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
-
*
|
|
104
|
-
* All value-channel operations (`map`, `flatMap`, `unwrap`) short-circuit,
|
|
105
|
-
* preserving the `None`.
|
|
106
|
-
*
|
|
107
|
-
* Use the singleton {@link None} constant rather than `new NoneImpl()`.
|
|
108
|
-
*/
|
|
109
|
-
export class NoneImpl {
|
|
95
|
+
/** @internal Runtime backing class for {@link NoneVariant}. */
|
|
96
|
+
class NoneImpl {
|
|
110
97
|
/** Discriminant tag for pattern matching. */
|
|
111
98
|
tag = "None";
|
|
112
99
|
/** Whether this is a Some variant. Always false. */
|
package/dist/core/option.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option.js","sourceRoot":"","sources":["../../src/core/option.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"option.js","sourceRoot":"","sources":["../../src/core/option.ts"],"names":[],"mappings":"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"}
|
package/dist/core/pipe.d.ts
CHANGED
|
@@ -32,13 +32,21 @@
|
|
|
32
32
|
*/
|
|
33
33
|
/** Pass a value through a sequence of unary functions left-to-right. */
|
|
34
34
|
export declare function pipe<A>(a: A): A;
|
|
35
|
+
/** Pipe a value through 1 function. */
|
|
35
36
|
export declare function pipe<A, B>(a: A, ab: (a: A) => B): B;
|
|
37
|
+
/** Pipe a value through 2 functions. */
|
|
36
38
|
export declare function pipe<A, B, C>(a: A, ab: (a: A) => B, bc: (b: B) => C): C;
|
|
39
|
+
/** Pipe a value through 3 functions. */
|
|
37
40
|
export declare function pipe<A, B, C, D>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D): D;
|
|
41
|
+
/** Pipe a value through 4 functions. */
|
|
38
42
|
export declare function pipe<A, B, C, D, E>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E): E;
|
|
43
|
+
/** Pipe a value through 5 functions. */
|
|
39
44
|
export declare function pipe<A, B, C, D, E, F>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F): F;
|
|
45
|
+
/** Pipe a value through 6 functions. */
|
|
40
46
|
export declare function pipe<A, B, C, D, E, F, G>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G): G;
|
|
47
|
+
/** Pipe a value through 7 functions. */
|
|
41
48
|
export declare function pipe<A, B, C, D, E, F, G, H>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H): H;
|
|
49
|
+
/** Pipe a value through 8 functions. */
|
|
42
50
|
export declare function pipe<A, B, C, D, E, F, G, H, I>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I): I;
|
|
43
51
|
/**
|
|
44
52
|
* Point-free function composition. Left-to-right.
|
|
@@ -54,9 +62,14 @@ export declare function pipe<A, B, C, D, E, F, G, H, I>(a: A, ab: (a: A) => B, b
|
|
|
54
62
|
*/
|
|
55
63
|
/** Compose functions left-to-right, returning a new function. */
|
|
56
64
|
export declare function flow<A, B>(ab: (a: A) => B): (a: A) => B;
|
|
65
|
+
/** Compose 2 functions left-to-right. */
|
|
57
66
|
export declare function flow<A, B, C>(ab: (a: A) => B, bc: (b: B) => C): (a: A) => C;
|
|
67
|
+
/** Compose 3 functions left-to-right. */
|
|
58
68
|
export declare function flow<A, B, C, D>(ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D): (a: A) => D;
|
|
69
|
+
/** Compose 4 functions left-to-right. */
|
|
59
70
|
export declare function flow<A, B, C, D, E>(ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E): (a: A) => E;
|
|
71
|
+
/** Compose 5 functions left-to-right. */
|
|
60
72
|
export declare function flow<A, B, C, D, E, F>(ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F): (a: A) => F;
|
|
73
|
+
/** Compose 6 functions left-to-right. */
|
|
61
74
|
export declare function flow<A, B, C, D, E, F, G>(ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G): (a: A) => G;
|
|
62
75
|
//# sourceMappingURL=pipe.d.ts.map
|
package/dist/core/pipe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../src/core/pipe.ts"],"names":[],"mappings":"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E,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GACd,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACf,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACf,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GACd,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../src/core/pipe.ts"],"names":[],"mappings":"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"}
|
package/dist/core/pipe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/core/pipe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/core/pipe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA6EH,MAAM,UAAU,IAAI,CAAC,OAAgB,EAAE,GAAG,GAAkC;IAC1E,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,sFAAsF;IACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC;AA4CD,MAAM,UAAU,IAAI,CAAC,GAAG,GAAkC;IACxD,OAAO,OAAO,CAAC,EAAE;QACf,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,sFAAsF;QACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/core/result.d.ts
CHANGED
|
@@ -5,28 +5,15 @@
|
|
|
5
5
|
* `Result<T, E>` instead of throwing. This eliminates invisible control
|
|
6
6
|
* flow (try/catch) and makes error paths explicit in the type system.
|
|
7
7
|
*
|
|
8
|
-
* Two
|
|
9
|
-
* (`
|
|
10
|
-
* their payload, keeping GC pressure
|
|
8
|
+
* Two public interfaces (`Ok`, `Err`) define the contract. Module-private
|
|
9
|
+
* classes (`OkImpl`, `ErrImpl`) provide the implementation. Methods live
|
|
10
|
+
* on prototypes so instances carry only their payload, keeping GC pressure
|
|
11
|
+
* low.
|
|
11
12
|
*
|
|
12
13
|
* The `Result` const/type merge lets callers use `Result.tryCatch()` in
|
|
13
14
|
* value position and `Result<T, E>` in type position, mirroring Rust.
|
|
14
15
|
*/
|
|
15
16
|
import type { Option } from "./option.js";
|
|
16
|
-
/**
|
|
17
|
-
* A discriminated union representing either success (`Ok<T>`) or failure (`Err<E>`).
|
|
18
|
-
*
|
|
19
|
-
* Result is the primary error-handling primitive in pure-ts: errors are values,
|
|
20
|
-
* never thrown. Use `.isOk` / `.isErr` to narrow, or `.match()` for exhaustive
|
|
21
|
-
* pattern matching.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* const parsed: Result<number, string> = parseAge(input);
|
|
26
|
-
* const age = parsed.unwrapOr(0);
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export type Result<T, E> = OkImpl<T, E> | ErrImpl<T, E>;
|
|
30
17
|
/** Pattern-match arms for {@link Result.match}. */
|
|
31
18
|
export interface ResultMatcher<T, E, U> {
|
|
32
19
|
/** Handler for the Ok variant. */
|
|
@@ -34,84 +21,39 @@ export interface ResultMatcher<T, E, U> {
|
|
|
34
21
|
/** Handler for the Err variant. */
|
|
35
22
|
readonly Err: (error: E) => U;
|
|
36
23
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Shared contract for both `Ok` and `Err` variants.
|
|
39
|
-
*
|
|
40
|
-
* This interface exists so `OkImpl` and `ErrImpl` are guaranteed to expose
|
|
41
|
-
* the same set of methods, enabling exhaustive pattern matching and safe
|
|
42
|
-
* narrowing via `.isOk` / `.isErr` without casting.
|
|
43
|
-
*/
|
|
44
|
-
interface ResultMethods<T, E> {
|
|
45
|
-
/** Transform the success value. */
|
|
46
|
-
map<U>(fn: (value: T) => U): Result<U, E>;
|
|
47
|
-
/** Transform the error value. */
|
|
48
|
-
mapErr<F>(_fn: (error: E) => F): Result<T, F>;
|
|
49
|
-
/** Chain into a dependent computation that may fail. */
|
|
50
|
-
flatMap<U>(fn: (value: T) => Result<U, E>): Result<U, E>;
|
|
51
|
-
/** Run a side-effect on the success value without altering the Result. */
|
|
52
|
-
tap(fn: (value: T) => void): Result<T, E>;
|
|
53
|
-
/** Run a side-effect on the error without altering the Result. */
|
|
54
|
-
tapErr(_fn: (error: E) => void): Result<T, E>;
|
|
55
|
-
/** Extract the value or throw if Err. */
|
|
56
|
-
unwrap(): T;
|
|
57
|
-
/** Extract the value or return the fallback. */
|
|
58
|
-
unwrapOr(_fallback: T): T;
|
|
59
|
-
/** Extract the value or compute a fallback from the error. */
|
|
60
|
-
unwrapOrElse(_fn: (error: E) => T): T;
|
|
61
|
-
/** Extract the error or throw if Ok. */
|
|
62
|
-
unwrapErr(): never | E;
|
|
63
|
-
/** Pattern match on Ok or Err. */
|
|
64
|
-
match<U>(m: ResultMatcher<T, E, U>): U;
|
|
65
|
-
/** Convert to Option: Ok becomes Some, Err becomes None. */
|
|
66
|
-
toOption(): Option<T>;
|
|
67
|
-
/** Pair this value with another Result's value. */
|
|
68
|
-
zip<U>(other: Result<U, E>): Result<[T, U], E>;
|
|
69
|
-
/** Apply a wrapped function to this value. */
|
|
70
|
-
ap<U>(fnResult: Result<(value: T) => U, E>): Result<U, E>;
|
|
71
|
-
/** Serialize to a JSON-safe tagged object. */
|
|
72
|
-
toJSON(): {
|
|
73
|
-
tag: "Ok";
|
|
74
|
-
value: T;
|
|
75
|
-
} | {
|
|
76
|
-
tag: "Err";
|
|
77
|
-
error: E;
|
|
78
|
-
};
|
|
79
|
-
/** Human-readable string representation. */
|
|
80
|
-
toString(): string;
|
|
81
|
-
}
|
|
82
24
|
/**
|
|
83
25
|
* The success variant of {@link Result}.
|
|
84
26
|
*
|
|
85
27
|
* Wraps a value of type `T` and provides monadic chaining (`map`, `flatMap`),
|
|
86
28
|
* safe extraction (`unwrap`, `unwrapOr`), and pattern matching (`match`).
|
|
87
29
|
*
|
|
88
|
-
* Construct via the {@link Ok} factory
|
|
30
|
+
* Construct via the {@link Ok} factory: `Ok(42)`.
|
|
89
31
|
*/
|
|
90
|
-
export
|
|
91
|
-
readonly value: T;
|
|
32
|
+
export interface Ok<T, E> {
|
|
92
33
|
/** Discriminant tag for pattern matching. */
|
|
93
34
|
readonly tag: "Ok";
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
35
|
+
/** Whether this is an Ok variant. Always `true`. */
|
|
36
|
+
readonly isOk: true;
|
|
37
|
+
/** Whether this is an Err variant. Always `false`. */
|
|
38
|
+
readonly isErr: false;
|
|
39
|
+
/** The wrapped success value. */
|
|
40
|
+
readonly value: T;
|
|
99
41
|
/** Apply `fn` to the success value, returning a new `Ok`. */
|
|
100
42
|
map<U>(fn: (value: T) => U): Result<U, E>;
|
|
101
43
|
/** No-op on `Ok`: the error channel is empty. */
|
|
102
|
-
mapErr<F>(
|
|
44
|
+
mapErr<F>(fn: (error: E) => F): Result<T, F>;
|
|
103
45
|
/** Chain into a dependent computation that may fail. */
|
|
104
46
|
flatMap<U>(fn: (value: T) => Result<U, E>): Result<U, E>;
|
|
105
47
|
/** Run a side-effect on the success value without altering the Result. */
|
|
106
48
|
tap(fn: (value: T) => void): Result<T, E>;
|
|
107
49
|
/** No-op on `Ok`: no error to tap. */
|
|
108
|
-
tapErr(
|
|
50
|
+
tapErr(fn: (error: E) => void): Result<T, E>;
|
|
109
51
|
/** Extract the success value. */
|
|
110
52
|
unwrap(): T;
|
|
111
53
|
/** Return the success value, ignoring the fallback. */
|
|
112
|
-
unwrapOr(
|
|
54
|
+
unwrapOr(fallback: T): T;
|
|
113
55
|
/** Return the success value, ignoring the recovery function. */
|
|
114
|
-
unwrapOrElse(
|
|
56
|
+
unwrapOrElse(fn: (error: E) => T): T;
|
|
115
57
|
/** Throws: there is no error to extract from `Ok`. */
|
|
116
58
|
unwrapErr(): never;
|
|
117
59
|
/** Exhaustively handle both variants. */
|
|
@@ -141,25 +83,25 @@ export declare class OkImpl<T, E> implements ResultMethods<T, E> {
|
|
|
141
83
|
* Wraps an error of type `E`. All value-channel operations (`map`, `flatMap`,
|
|
142
84
|
* `unwrap`) short-circuit, preserving the error.
|
|
143
85
|
*
|
|
144
|
-
* Construct via the {@link Err} factory
|
|
86
|
+
* Construct via the {@link Err} factory: `Err('not found')`.
|
|
145
87
|
*/
|
|
146
|
-
export
|
|
147
|
-
readonly error: E;
|
|
88
|
+
export interface Err<T, E> {
|
|
148
89
|
/** Discriminant tag for pattern matching. */
|
|
149
90
|
readonly tag: "Err";
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
91
|
+
/** Whether this is an Ok variant. Always `false`. */
|
|
92
|
+
readonly isOk: false;
|
|
93
|
+
/** Whether this is an Err variant. Always `true`. */
|
|
94
|
+
readonly isErr: true;
|
|
95
|
+
/** The wrapped error value. */
|
|
96
|
+
readonly error: E;
|
|
155
97
|
/** No-op on `Err`: the value channel is empty. */
|
|
156
|
-
map<U>(
|
|
98
|
+
map<U>(fn: (value: T) => U): Result<U, E>;
|
|
157
99
|
/** Apply `fn` to the error, returning a new `Err`. */
|
|
158
100
|
mapErr<F>(fn: (error: E) => F): Result<T, F>;
|
|
159
101
|
/** Short-circuit: propagate this `Err` without calling `fn`. */
|
|
160
|
-
flatMap<U>(
|
|
102
|
+
flatMap<U>(fn: (value: T) => Result<U, E>): Result<U, E>;
|
|
161
103
|
/** No-op on `Err`: no value to tap. */
|
|
162
|
-
tap(
|
|
104
|
+
tap(fn: (value: T) => void): Result<T, E>;
|
|
163
105
|
/** Run a side-effect on the error without altering the Result. */
|
|
164
106
|
tapErr(fn: (error: E) => void): Result<T, E>;
|
|
165
107
|
/** Throws: there is no success value to extract from `Err`. */
|
|
@@ -175,9 +117,9 @@ export declare class ErrImpl<T, E> implements ResultMethods<T, E> {
|
|
|
175
117
|
/** Convert to `None` (the success value is absent). */
|
|
176
118
|
toOption(): Option<T>;
|
|
177
119
|
/** Short-circuit: propagate this `Err`. */
|
|
178
|
-
zip<U>(
|
|
120
|
+
zip<U>(other: Result<U, E>): Result<[T, U], E>;
|
|
179
121
|
/** Short-circuit: propagate this `Err`. */
|
|
180
|
-
ap<U>(
|
|
122
|
+
ap<U>(fnResult: Result<(value: T) => U, E>): Result<U, E>;
|
|
181
123
|
/** Serialize as `{ tag: 'Err', error: E }`. */
|
|
182
124
|
toJSON(): {
|
|
183
125
|
tag: "Err";
|
|
@@ -186,10 +128,24 @@ export declare class ErrImpl<T, E> implements ResultMethods<T, E> {
|
|
|
186
128
|
/** Human-readable string representation. */
|
|
187
129
|
toString(): string;
|
|
188
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* A discriminated union representing either success (`Ok<T>`) or failure (`Err<E>`).
|
|
133
|
+
*
|
|
134
|
+
* Result is the primary error-handling primitive in pure-ts: errors are values,
|
|
135
|
+
* never thrown. Use `.isOk` / `.isErr` to narrow, or `.match()` for exhaustive
|
|
136
|
+
* pattern matching.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const parsed: Result<number, string> = parseAge(input);
|
|
141
|
+
* const age = parsed.unwrapOr(0);
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export type Result<T, E> = Ok<T, E> | Err<T, E>;
|
|
189
145
|
/** Widen the value-type of an Err result. Returns Result<never, E>. */
|
|
190
|
-
export declare const castErr: <T, E>(r:
|
|
146
|
+
export declare const castErr: <T, E>(r: Err<T, E>) => Result<never, E>;
|
|
191
147
|
/** Widen the error-type of an Ok result. Returns Result<T, never>. */
|
|
192
|
-
export declare const castOk: <T, E>(r:
|
|
148
|
+
export declare const castOk: <T, E>(r: Ok<T, E>) => Result<T, never>;
|
|
193
149
|
/**
|
|
194
150
|
* Create a successful {@link Result} wrapping `value`.
|
|
195
151
|
*
|
|
@@ -261,5 +217,4 @@ export declare const Result: {
|
|
|
261
217
|
/** Type guard for Result values. */
|
|
262
218
|
readonly is: (value: unknown) => value is Result<unknown, unknown>;
|
|
263
219
|
};
|
|
264
|
-
export {};
|
|
265
220
|
//# sourceMappingURL=result.d.ts.map
|