happy-rusty 1.3.2 → 1.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/README.cn.md +9 -28
- package/README.md +9 -28
- package/dist/main.cjs +56 -0
- package/dist/main.cjs.map +1 -1
- package/dist/main.mjs +56 -1
- package/dist/main.mjs.map +1 -1
- package/dist/types.d.ts +93 -11
- package/docs/README.md +5 -0
- package/docs/functions/Err.md +1 -1
- package/docs/functions/Ok.md +30 -6
- package/docs/functions/Some.md +1 -1
- package/docs/functions/isOption.md +1 -1
- package/docs/functions/isResult.md +1 -1
- package/docs/functions/promiseToAsyncResult.md +1 -1
- package/docs/interfaces/None.md +175 -46
- package/docs/interfaces/Option.md +128 -32
- package/docs/interfaces/Result.md +160 -34
- package/docs/type-aliases/AsyncIOResult.md +1 -1
- package/docs/type-aliases/AsyncOption.md +1 -1
- package/docs/type-aliases/AsyncResult.md +1 -1
- package/docs/type-aliases/AsyncVoidIOResult.md +17 -0
- package/docs/type-aliases/AsyncVoidResult.md +23 -0
- package/docs/type-aliases/IOResult.md +1 -1
- package/docs/type-aliases/VoidIOResult.md +17 -0
- package/docs/type-aliases/VoidResult.md +23 -0
- package/docs/variables/None.md +1 -1
- package/docs/variables/RESULT_FALSE.md +1 -1
- package/docs/variables/RESULT_TRUE.md +1 -1
- package/docs/variables/RESULT_VOID.md +17 -0
- package/docs/variables/RESULT_ZERO.md +1 -1
- package/package.json +5 -5
- package/src/enum/constants.ts +6 -1
- package/src/enum/core.ts +69 -3
- package/src/enum/defines.ts +17 -10
- package/src/enum/prelude.ts +89 -14
package/README.cn.md
CHANGED
|
@@ -16,39 +16,18 @@
|
|
|
16
16
|
|
|
17
17
|
## 安装
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
```
|
|
19
|
+
```sh
|
|
20
|
+
# via pnpm
|
|
22
21
|
pnpm add happy-rusty
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
yarn
|
|
26
|
-
|
|
27
|
-
```
|
|
22
|
+
# or via yarn
|
|
28
23
|
yarn add happy-rusty
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
npm
|
|
32
|
-
|
|
33
|
-
```
|
|
24
|
+
# or just from npm
|
|
34
25
|
npm install --save happy-rusty
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
通过 JSR
|
|
38
|
-
|
|
39
|
-
```
|
|
26
|
+
# via JSR
|
|
40
27
|
jsr add @happy-js/happy-rusty
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
通过 deno
|
|
44
|
-
|
|
45
|
-
```
|
|
28
|
+
# for deno
|
|
46
29
|
deno add @happy-js/happy-rusty
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
通过 bun
|
|
50
|
-
|
|
51
|
-
```
|
|
30
|
+
# for bun
|
|
52
31
|
bunx jsr add @happy-js/happy-rusty
|
|
53
32
|
```
|
|
54
33
|
|
|
@@ -61,6 +40,8 @@ import { Some, None, Ok, Err } from 'happy-rusty';
|
|
|
61
40
|
## [示例](examples/main.ts)
|
|
62
41
|
|
|
63
42
|
- [Option](examples/option.ts)
|
|
43
|
+
- [AsyncOption](examples/option.async.ts)
|
|
64
44
|
- [Result](examples/result.ts)
|
|
45
|
+
- [AsyncResult](examples/result.async.ts)
|
|
65
46
|
|
|
66
47
|
## [文档](docs/README.md)
|
package/README.md
CHANGED
|
@@ -20,39 +20,18 @@
|
|
|
20
20
|
|
|
21
21
|
## Installation
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
```
|
|
23
|
+
```sh
|
|
24
|
+
# via pnpm
|
|
26
25
|
pnpm add happy-rusty
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
or via yarn
|
|
30
|
-
|
|
31
|
-
```
|
|
26
|
+
# or via yarn
|
|
32
27
|
yarn add happy-rusty
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
or just from npm
|
|
36
|
-
|
|
37
|
-
```
|
|
28
|
+
# or just from npm
|
|
38
29
|
npm install --save happy-rusty
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
via JSR
|
|
42
|
-
|
|
43
|
-
```
|
|
30
|
+
# via JSR
|
|
44
31
|
jsr add @happy-js/happy-rusty
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
for deno
|
|
48
|
-
|
|
49
|
-
```
|
|
32
|
+
# for deno
|
|
50
33
|
deno add @happy-js/happy-rusty
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
for bun
|
|
54
|
-
|
|
55
|
-
```
|
|
34
|
+
# for bun
|
|
56
35
|
bunx jsr add @happy-js/happy-rusty
|
|
57
36
|
```
|
|
58
37
|
|
|
@@ -67,6 +46,8 @@ Enjoy the happiness.
|
|
|
67
46
|
## [Examples](examples/main.ts)
|
|
68
47
|
|
|
69
48
|
- [Option](examples/option.ts)
|
|
49
|
+
- [AsyncOption](examples/option.async.ts)
|
|
70
50
|
- [Result](examples/result.ts)
|
|
51
|
+
- [AsyncResult](examples/result.async.ts)
|
|
71
52
|
|
|
72
53
|
## [Docs](docs/README.md)
|
package/dist/main.cjs
CHANGED
|
@@ -23,6 +23,9 @@ function Some(value) {
|
|
|
23
23
|
isSomeAnd(predicate) {
|
|
24
24
|
return predicate(value);
|
|
25
25
|
},
|
|
26
|
+
isSomeAndAsync(predicate) {
|
|
27
|
+
return predicate(value);
|
|
28
|
+
},
|
|
26
29
|
expect(_msg) {
|
|
27
30
|
return value;
|
|
28
31
|
},
|
|
@@ -35,6 +38,9 @@ function Some(value) {
|
|
|
35
38
|
unwrapOrElse(_fn) {
|
|
36
39
|
return value;
|
|
37
40
|
},
|
|
41
|
+
unwrapOrElseAsync(_fn) {
|
|
42
|
+
return Promise.resolve(value);
|
|
43
|
+
},
|
|
38
44
|
okOr(_error) {
|
|
39
45
|
return Ok(value);
|
|
40
46
|
},
|
|
@@ -86,12 +92,18 @@ function Some(value) {
|
|
|
86
92
|
andThen(fn) {
|
|
87
93
|
return fn(value);
|
|
88
94
|
},
|
|
95
|
+
andThenAsync(fn) {
|
|
96
|
+
return fn(value);
|
|
97
|
+
},
|
|
89
98
|
or(_other) {
|
|
90
99
|
return some;
|
|
91
100
|
},
|
|
92
101
|
orElse(_fn) {
|
|
93
102
|
return some;
|
|
94
103
|
},
|
|
104
|
+
orElseAsync(_fn) {
|
|
105
|
+
return Promise.resolve(some);
|
|
106
|
+
},
|
|
95
107
|
xor(other) {
|
|
96
108
|
assertOption(other);
|
|
97
109
|
return other.isSome() ? None : some;
|
|
@@ -122,6 +134,9 @@ const None = Object.freeze({
|
|
|
122
134
|
isSomeAnd(_predicate) {
|
|
123
135
|
return false;
|
|
124
136
|
},
|
|
137
|
+
isSomeAndAsync(_predicate) {
|
|
138
|
+
return Promise.resolve(false);
|
|
139
|
+
},
|
|
125
140
|
expect(msg) {
|
|
126
141
|
throw new TypeError(msg);
|
|
127
142
|
},
|
|
@@ -134,6 +149,9 @@ const None = Object.freeze({
|
|
|
134
149
|
unwrapOrElse(fn) {
|
|
135
150
|
return fn();
|
|
136
151
|
},
|
|
152
|
+
unwrapOrElseAsync(fn) {
|
|
153
|
+
return fn();
|
|
154
|
+
},
|
|
137
155
|
okOr(error) {
|
|
138
156
|
return Err(error);
|
|
139
157
|
},
|
|
@@ -173,6 +191,9 @@ const None = Object.freeze({
|
|
|
173
191
|
andThen(_fn) {
|
|
174
192
|
return None;
|
|
175
193
|
},
|
|
194
|
+
andThenAsync(_fn) {
|
|
195
|
+
return Promise.resolve(None);
|
|
196
|
+
},
|
|
176
197
|
or(other) {
|
|
177
198
|
assertOption(other);
|
|
178
199
|
return other;
|
|
@@ -180,6 +201,9 @@ const None = Object.freeze({
|
|
|
180
201
|
orElse(fn) {
|
|
181
202
|
return fn();
|
|
182
203
|
},
|
|
204
|
+
orElseAsync(fn) {
|
|
205
|
+
return fn();
|
|
206
|
+
},
|
|
183
207
|
xor(other) {
|
|
184
208
|
assertOption(other);
|
|
185
209
|
return other.isSome() ? other : None;
|
|
@@ -208,9 +232,15 @@ function Ok(value) {
|
|
|
208
232
|
isOkAnd(predicate) {
|
|
209
233
|
return predicate(value);
|
|
210
234
|
},
|
|
235
|
+
isOkAndAsync(predicate) {
|
|
236
|
+
return predicate(value);
|
|
237
|
+
},
|
|
211
238
|
isErrAnd(_predicate) {
|
|
212
239
|
return false;
|
|
213
240
|
},
|
|
241
|
+
isErrAndAsync(_predicate) {
|
|
242
|
+
return Promise.resolve(false);
|
|
243
|
+
},
|
|
214
244
|
expect(_msg) {
|
|
215
245
|
return value;
|
|
216
246
|
},
|
|
@@ -223,6 +253,9 @@ function Ok(value) {
|
|
|
223
253
|
unwrapOrElse(_fn) {
|
|
224
254
|
return value;
|
|
225
255
|
},
|
|
256
|
+
unwrapOrElseAsync(_fn) {
|
|
257
|
+
return Promise.resolve(value);
|
|
258
|
+
},
|
|
226
259
|
expectErr(msg) {
|
|
227
260
|
throw new TypeError(`${msg}: ${value}`);
|
|
228
261
|
},
|
|
@@ -267,9 +300,15 @@ function Ok(value) {
|
|
|
267
300
|
andThen(fn) {
|
|
268
301
|
return fn(value);
|
|
269
302
|
},
|
|
303
|
+
andThenAsync(fn) {
|
|
304
|
+
return fn(value);
|
|
305
|
+
},
|
|
270
306
|
orElse(_fn) {
|
|
271
307
|
return ok;
|
|
272
308
|
},
|
|
309
|
+
orElseAsync(_fn) {
|
|
310
|
+
return Promise.resolve(ok);
|
|
311
|
+
},
|
|
273
312
|
inspect(fn) {
|
|
274
313
|
fn(value);
|
|
275
314
|
return ok;
|
|
@@ -306,9 +345,15 @@ function Err(error) {
|
|
|
306
345
|
isOkAnd(_predicate) {
|
|
307
346
|
return false;
|
|
308
347
|
},
|
|
348
|
+
isOkAndAsync(_predicate) {
|
|
349
|
+
return Promise.resolve(false);
|
|
350
|
+
},
|
|
309
351
|
isErrAnd(predicate) {
|
|
310
352
|
return predicate(error);
|
|
311
353
|
},
|
|
354
|
+
isErrAndAsync(predicate) {
|
|
355
|
+
return predicate(error);
|
|
356
|
+
},
|
|
312
357
|
expect(msg) {
|
|
313
358
|
throw new TypeError(`${msg}: ${error}`);
|
|
314
359
|
},
|
|
@@ -321,6 +366,9 @@ function Err(error) {
|
|
|
321
366
|
unwrapOrElse(fn) {
|
|
322
367
|
return fn(error);
|
|
323
368
|
},
|
|
369
|
+
unwrapOrElseAsync(fn) {
|
|
370
|
+
return fn(error);
|
|
371
|
+
},
|
|
324
372
|
expectErr(_msg) {
|
|
325
373
|
return error;
|
|
326
374
|
},
|
|
@@ -361,9 +409,15 @@ function Err(error) {
|
|
|
361
409
|
andThen(_fn) {
|
|
362
410
|
return err;
|
|
363
411
|
},
|
|
412
|
+
andThenAsync(_fn) {
|
|
413
|
+
return Promise.resolve(err);
|
|
414
|
+
},
|
|
364
415
|
orElse(fn) {
|
|
365
416
|
return fn(error);
|
|
366
417
|
},
|
|
418
|
+
orElseAsync(fn) {
|
|
419
|
+
return fn(error);
|
|
420
|
+
},
|
|
367
421
|
inspect(_fn) {
|
|
368
422
|
return err;
|
|
369
423
|
},
|
|
@@ -401,6 +455,7 @@ function assertResult(r) {
|
|
|
401
455
|
const RESULT_TRUE = Ok(true);
|
|
402
456
|
const RESULT_FALSE = Ok(false);
|
|
403
457
|
const RESULT_ZERO = Ok(0);
|
|
458
|
+
const RESULT_VOID = Ok();
|
|
404
459
|
|
|
405
460
|
function promiseToAsyncResult(p) {
|
|
406
461
|
return p.then((x) => {
|
|
@@ -415,6 +470,7 @@ exports.None = None;
|
|
|
415
470
|
exports.Ok = Ok;
|
|
416
471
|
exports.RESULT_FALSE = RESULT_FALSE;
|
|
417
472
|
exports.RESULT_TRUE = RESULT_TRUE;
|
|
473
|
+
exports.RESULT_VOID = RESULT_VOID;
|
|
418
474
|
exports.RESULT_ZERO = RESULT_ZERO;
|
|
419
475
|
exports.Some = Some;
|
|
420
476
|
exports.isOption = isOption;
|
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../src/enum/symbols.ts","../src/enum/utils.ts","../src/enum/prelude.ts","../src/enum/constants.ts","../src/enum/extensions.ts"],"sourcesContent":["/**\n * Symbol for Option kind: `Some` or `None`.\n */\nexport const OptionKindSymbol = Symbol('Option kind');\n\n/**\n * Symbol for Result kind: `Ok` or `Err`.\n */\nexport const ResultKindSymbol = Symbol('Result kind');","import type { Option, Result } from './core.ts';\nimport { OptionKindSymbol, ResultKindSymbol } from './symbols.ts';\n\n/**\n * Checks if a value is an `Option`.\n *\n * @typeParam T - The expected type of the value contained within the `Option`.\n * @param o - The value to be checked as an `Option`.\n * @returns `true` if the value is an `Option`, otherwise `false`.\n */\nexport function isOption<T>(o: unknown): o is Option<T> {\n // `Some` and `None` must be an object.\n return o != null && typeof o === 'object' && OptionKindSymbol in o;\n}\n\n/**\n * Checks if a value is a `Result`.\n *\n * @typeParam T - The expected type of the success value contained within the `Result`.\n * @typeParam E - The expected type of the error value contained within the `Result`.\n * @param r - The value to be checked as a `Result`.\n * @returns `true` if the value is a `Result`, otherwise `false`.\n */\nexport function isResult<T, E>(r: unknown): r is Result<T, E> {\n // `Ok` and `Err` must be an object.\n return r != null && typeof r === 'object' && ResultKindSymbol in r;\n}","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { Option, Result } from './core.ts';\nimport { OptionKindSymbol, ResultKindSymbol } from './symbols.ts';\nimport { isOption, isResult } from './utils.ts';\n\n/**\n * Represents the absence of a value, as a specialized `Option` type.\n * The type parameter is set to `never` because `None` does not hold a value.\n */\nexport interface None extends Option<never> {\n /**\n * When using `None` alone, the following overrides can make type inference more accurate.\n */\n\n readonly [OptionKindSymbol]: 'None';\n\n unwrapOr<T>(defaultValue: T): T;\n unwrapOrElse<T>(fn: () => T): T;\n\n transpose(): Result<None, never>;\n\n filter(predicate: (value: never) => boolean): None;\n flatten(): None;\n map<U>(fn: (value: never) => U): None;\n\n zip<U>(other: Option<U>): None;\n zipWith<U, R>(other: Option<U>, fn: (value: never, otherValue: U) => R): None;\n unzip(): [None, None];\n\n and<U>(other: Option<U>): None;\n andThen<U>(fn: (value: never) => Option<U>): None;\n or<T>(other: Option<T>): Option<T>;\n orElse<T>(fn: () => Option<T>): Option<T>;\n xor<T>(other: Option<T>): Option<T>;\n\n eq<T>(other: Option<T>): boolean;\n}\n\n/**\n * Creates an `Option<T>` representing the presence of a value.\n * This function is typically used to construct an `Option` that contains a value, indicating that the operation yielding the value was successful.\n *\n * @typeParam T - The type of the value to be wrapped in a `Some`.\n * @param value - The value to wrap as a `Some` option.\n * @returns An `Option<T>` that contains the provided value, representing the `Some` case.\n *\n * @example\n * ```ts\n * const maybeValue = Some(1); // Option<number> with a value\n * if (maybeValue.isSome()) {\n * console.log(maybeValue.unwrap()); // Outputs: 1\n * }\n * ```\n */\nexport function Some<T>(value: T): Option<T> {\n const some: Option<T> = {\n [Symbol.toStringTag]: 'Option',\n [OptionKindSymbol]: 'Some',\n\n isSome(): true {\n return true;\n },\n isNone(): false {\n return false;\n },\n isSomeAnd(predicate: (value: T) => boolean): boolean {\n return predicate(value);\n },\n\n expect(_msg: string): T {\n return value;\n },\n unwrap(): T {\n return value;\n },\n unwrapOr(_defaultValue: T): T {\n return value;\n },\n unwrapOrElse(_fn: () => T): T {\n return value;\n },\n\n okOr<E>(_error: E): Result<T, E> {\n return Ok(value);\n },\n okOrElse<E>(_err: () => E): Result<T, E> {\n return Ok(value);\n },\n transpose<T, E>(): Result<Option<T>, E> {\n const r = value as unknown as Result<T, E>;\n assertResult(r);\n return r.isOk() ? Ok(Some(r.unwrap())) : Err(r.unwrapErr());\n },\n\n filter(predicate: (value: T) => boolean): Option<T> {\n return predicate(value) ? some : None;\n },\n flatten<T>(): Option<T> {\n const o = value as unknown as Option<T>;\n assertOption(o);\n return o;\n },\n map<U>(fn: (value: T) => U): Option<U> {\n return Some(fn(value));\n },\n\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(value);\n },\n mapOrElse<U>(_defaultFn: () => U, fn: (value: T) => U): U {\n return fn(value);\n },\n\n zip<U>(other: Option<U>): Option<[T, U]> {\n assertOption(other);\n return other.isSome() ? Some([value, other.unwrap()]) : None;\n },\n zipWith<U, R>(other: Option<U>, fn: (value: T, otherValue: U) => R): Option<R> {\n assertOption(other);\n return other.isSome() ? Some(fn(value, other.unwrap())) : None;\n },\n unzip<T, U>(): [Option<T>, Option<U>] {\n const tuple = value as unknown as [T, U];\n\n if (!Array.isArray(tuple) || tuple.length !== 2) {\n throw new TypeError('Unzip format is incorrect.');\n }\n\n const [a, b] = tuple;\n return [Some(a), Some(b)];\n },\n\n and<U>(other: Option<U>): Option<U> {\n assertOption(other);\n return other;\n },\n andThen<U>(fn: (value: T) => Option<U>): Option<U> {\n return fn(value);\n },\n or(_other: Option<T>): Option<T> {\n return some;\n },\n orElse(_fn: () => Option<T>): Option<T> {\n return some;\n },\n xor(other: Option<T>): Option<T> {\n assertOption(other);\n return other.isSome() ? None : some;\n },\n\n inspect(fn: (value: T) => void): Option<T> {\n fn(value);\n return some;\n },\n\n eq(other: Option<T>): boolean {\n assertOption(other);\n return other.isSome() && other.unwrap() === value;\n },\n\n toString(): string {\n return `Some(${ value })`;\n },\n } as const;\n\n return some;\n}\n\n/**\n * A constant representing the `None` case of an `Option`, indicating the absence of a value.\n * This constant is frozen to ensure it is immutable and cannot be altered, preserving the integrity of `None` throughout the application.\n */\nexport const None = Object.freeze<None>({\n [Symbol.toStringTag]: 'Option',\n [OptionKindSymbol]: 'None',\n\n isSome(): false {\n return false;\n },\n isNone(): true {\n return true;\n },\n isSomeAnd(_predicate: (value: never) => boolean): false {\n return false;\n },\n\n expect(msg: string): never {\n throw new TypeError(msg);\n },\n unwrap(): never {\n throw new TypeError('Called `Option::unwrap()` on a `None` value');\n },\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n },\n unwrapOrElse<T>(fn: () => T): T {\n return fn();\n },\n\n okOr<E>(error: E): Result<never, E> {\n return Err(error);\n },\n okOrElse<E>(err: () => E): Result<never, E> {\n return Err(err());\n },\n transpose(): Result<None, never> {\n return Ok(None);\n },\n\n filter(_predicate: (value: never) => boolean): None {\n return None;\n },\n flatten(): None {\n return None;\n },\n map<U>(_fn: (value: never) => U): None {\n return None;\n },\n\n mapOr<U>(defaultValue: U, _fn: (value: never) => U): U {\n return defaultValue;\n },\n mapOrElse<U>(defaultFn: () => U, _fn: (value: never) => U): U {\n return defaultFn();\n },\n\n zip<U>(_other: Option<U>): None {\n return None;\n },\n zipWith<U, R>(_other: Option<U>, _fn: (value: never, otherValue: U) => R): None {\n return None;\n },\n unzip(): [None, None] {\n return [None, None];\n },\n\n and<U>(_other: Option<U>): None {\n return None;\n },\n andThen<U>(_fn: (value: never) => Option<U>): None {\n return None;\n },\n or<T>(other: Option<T>): Option<T> {\n assertOption(other);\n return other;\n },\n orElse<T>(fn: () => Option<T>): Option<T> {\n return fn();\n },\n xor<T>(other: Option<T>): Option<T> {\n assertOption(other);\n return other.isSome() ? other : None;\n },\n\n inspect(_fn: (value: never) => void): None {\n return None;\n },\n\n eq<T>(other: Option<T>): boolean {\n assertOption(other);\n return other === None;\n },\n\n toString(): string {\n return 'None';\n },\n}) as None;\n\n/**\n * Creates a `Result<T, E>` representing a successful outcome containing a value.\n * This function is used to construct a `Result` that signifies the operation was successful by containing the value `T`.\n *\n * @typeParam T - The type of the value to be contained in the `Ok` result.\n * @typeParam E - The type of the error that the result could potentially contain (not used in this case).\n * @param value - The value to wrap as an `Ok` result.\n * @returns A `Result<T, E>` that contains the provided value, representing the `Ok` case.\n *\n * @example\n * ```ts\n * const goodResult = Ok<number, Error>(1); // Result<number, Error> with a value\n * if (goodResult.isOk()) {\n * console.log(goodResult.unwrap()); // Outputs: 1\n * }\n * ```\n */\nexport function Ok<T, E>(value: T): Result<T, E> {\n const ok: Result<T, E> = {\n [Symbol.toStringTag]: 'Result',\n [ResultKindSymbol]: 'Ok',\n\n isOk(): true {\n return true;\n },\n isErr(): false {\n return false;\n },\n isOkAnd(predicate: (value: T) => boolean): boolean {\n return predicate(value);\n },\n isErrAnd(_predicate: (error: E) => boolean): false {\n return false;\n },\n\n expect(_msg: string): T {\n return value;\n },\n unwrap(): T {\n return value;\n },\n unwrapOr(_defaultValue: T): T {\n return value;\n },\n unwrapOrElse(_fn: (error: E) => T): T {\n return value;\n },\n\n expectErr(msg: string): E {\n throw new TypeError(`${ msg }: ${ value }`);\n },\n unwrapErr(): E {\n throw new TypeError('Called `Result::unwrapErr()` on an `Ok` value');\n },\n\n ok(): Option<T> {\n return Some(value);\n },\n err(): None {\n return None;\n },\n transpose<T>(): Option<Result<T, E>> {\n const o = value as Option<T>;\n assertOption(o);\n return o.isSome() ? Some(Ok(o.unwrap())) : None;\n },\n\n map<U>(fn: (value: T) => U): Result<U, E> {\n return Ok(fn(value));\n },\n mapErr<F>(_fn: (error: E) => F): Result<T, F> {\n return Ok(value);\n },\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(value);\n },\n mapOrElse<U>(_defaultFn: (error: E) => U, fn: (value: T) => U): U {\n return fn(value);\n },\n flatten<T>(): Result<T, E> {\n const r = value as Result<T, E>;\n assertResult(r);\n return r;\n },\n\n and<U>(other: Result<U, E>): Result<U, E> {\n assertResult(other);\n return other;\n },\n or<F>(_other: Result<T, F>): Result<T, F> {\n return ok as unknown as Result<T, F>;\n },\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E> {\n return fn(value);\n },\n orElse<F>(_fn: (error: E) => Result<T, F>): Result<T, F> {\n return ok as unknown as Result<T, F>;\n },\n\n inspect(fn: (value: T) => void): Result<T, E> {\n fn(value);\n return ok;\n },\n inspectErr(_fn: (error: E) => void): Result<T, E> {\n return ok;\n },\n\n eq(other: Result<T, E>): boolean {\n assertResult(other);\n return other.isOk() && other.unwrap() === value;\n },\n\n asOk<F>(): Result<T, F> {\n return ok as unknown as Result<T, F>;\n },\n asErr(): never {\n throw new TypeError('Called `Result::asErr()` on an `Ok` value');\n },\n\n toString(): string {\n return `Ok(${ value })`;\n },\n } as const;\n\n return ok;\n}\n\n/**\n * Creates a `Result<T, E>` representing a failed outcome containing an error.\n * This function is used to construct a `Result` that signifies the operation failed by containing the error `E`.\n *\n * @typeParam T - The type of the value that the result could potentially contain (not used in this case).\n * @typeParam E - The type of the error to be wrapped in the `Err` result.\n * @param error - The error to wrap as an `Err` result.\n * @returns A `Result<T, E>` that contains the provided error, representing the `Err` case.\n *\n * @example\n * ```ts\n * const badResult = Err<number, Error>(new Error('Something went wrong'));\n * if (badResult.isErr()) {\n * console.error(badResult.unwrapErr()); // Outputs: Error: Something went wrong\n * }\n * ```\n */\nexport function Err<T, E>(error: E): Result<T, E> {\n const err: Result<T, E> = {\n [Symbol.toStringTag]: 'Result',\n [ResultKindSymbol]: 'Err',\n\n isOk(): false {\n return false;\n },\n isErr(): true {\n return true;\n },\n isOkAnd(_predicate: (value: T) => boolean): false {\n return false;\n },\n isErrAnd(predicate: (error: E) => boolean): boolean {\n return predicate(error);\n },\n\n expect(msg: string): T {\n throw new TypeError(`${ msg }: ${ error }`);\n },\n unwrap(): T {\n throw new TypeError('Called `Result::unwrap()` on an `Err` value');\n },\n unwrapOr(defaultValue: T): T {\n return defaultValue;\n },\n unwrapOrElse(fn: (error: E) => T): T {\n return fn(error);\n },\n\n expectErr(_msg: string): E {\n return error;\n },\n unwrapErr(): E {\n return error;\n },\n\n ok(): None {\n return None;\n },\n err(): Option<E> {\n return Some(error);\n },\n transpose<T>(): Option<Result<T, E>> {\n return Some(err as unknown as Result<T, E>);\n },\n\n map<U>(_fn: (value: T) => U): Result<U, E> {\n return Err(error);\n },\n mapErr<F>(fn: (error: E) => F): Result<T, F> {\n return Err(fn(error));\n },\n mapOr<U>(defaultValue: U, _fn: (value: T) => U): U {\n return defaultValue;\n },\n mapOrElse<U>(defaultFn: (error: E) => U, _fn: (value: T) => U): U {\n return defaultFn(error);\n },\n flatten<T>(): Result<T, E> {\n return err as unknown as Result<T, E>;\n },\n\n and<U>(_other: Result<U, E>): Result<U, E> {\n return err as unknown as Result<U, E>;\n },\n or<F>(other: Result<T, F>): Result<T, F> {\n assertResult(other);\n return other;\n },\n andThen<U>(_fn: (value: T) => Result<U, E>): Result<U, E> {\n return err as unknown as Result<U, E>;\n },\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F> {\n return fn(error);\n },\n\n inspect(_fn: (value: T) => void): Result<T, E> {\n return err;\n },\n inspectErr(fn: (error: E) => void): Result<T, E> {\n fn(error);\n return err;\n },\n\n eq(other: Result<T, E>): boolean {\n assertResult(other);\n return other.isErr() && other.unwrapErr() === error;\n },\n\n asOk(): never {\n throw new TypeError('Called `Result::asOk()` on an `Err` value');\n },\n asErr<U>(): Result<U, E> {\n return err as unknown as Result<U, E>;\n },\n\n toString(): string {\n return `Err(${ error })`;\n },\n } as const;\n\n return err;\n}\n\n/**\n * Asserts that a given value is an `Option`.\n *\n * @typeParam T - The expected type of the value contained within the `Option`.\n * @param o - The value to be checked as an `Option`.\n * @throws {TypeError} If the value is not an `Option`.\n */\nfunction assertOption<T>(o: Option<T>): void {\n if (!isOption(o)) {\n throw new TypeError(`This(${ o }) is not an Option`);\n }\n}\n\n/**\n * Asserts that a given value is a `Result`.\n *\n * @typeParam T - The expected type of the success value contained within the `Result`.\n * @typeParam E - The expected type of the error value contained within the `Result`.\n * @param r - The value to be checked as a `Result`.\n * @throws {TypeError} If the value is not a `Result`.\n */\nfunction assertResult<T, E>(r: Result<T, E>): void {\n if (!isResult(r)) {\n throw new TypeError(`This(${ r }) is not a Result`);\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Result } from './core.ts';\nimport { Ok } from './prelude.ts';\n\n/**\n * Exports some Result constants.\n */\n\n/**\n * Result constant for `true`.\n * Can be used anywhere due to immutability.\n */\nexport const RESULT_TRUE: Result<boolean, any> = Ok(true);\n\n/**\n * Result constant for `false`.\n * Can be used anywhere due to immutability.\n */\nexport const RESULT_FALSE: Result<boolean, any> = Ok(false);\n\n/**\n * Result constant for `0`.\n * Can be used anywhere due to immutability.\n */\nexport const RESULT_ZERO: Result<number, any> = Ok(0);","import type { Result } from './core.ts';\nimport { Err, Ok } from './prelude.ts';\n\n/**\n * Converts a Promise to a Result type, capturing the resolved value in an `Ok`, or the error in an `Err`.\n * This allows for promise-based asynchronous operations to be handled in a way that is more in line with the Result pattern.\n *\n * @typeParam T - The type of the value that the promise resolves to.\n * @typeParam E - The type of the error that the promise may reject with, defaults to `Error`.\n * @param p - The promise to convert into a `Result` type.\n * @returns A promise that resolves to a `Result<T, E>`. If the input promise `p` resolves, the resulting promise will resolve with `Ok<T>`. If the input promise `p` rejects, the resulting promise will resolve with `Err<E>`.\n *\n * @example\n * ```ts\n * async function example() {\n * const result = await promiseToAsyncResult(fetchData());\n * result.inspect(x => {\n * console.log('Data:', x);\n * }).inspectErr(err => {\n * console.error('Error:', err);\n * });\n * }\n * ```\n */\nexport function promiseToAsyncResult<T, E = Error>(p: Promise<T>): Promise<Result<T, E>> {\n return p.then((x): Result<T, E> => {\n return Ok(x);\n }).catch((err: E): Result<T, E> => {\n return Err(err);\n });\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../src/enum/symbols.ts","../src/enum/utils.ts","../src/enum/prelude.ts","../src/enum/constants.ts","../src/enum/extensions.ts"],"sourcesContent":["/**\n * Symbol for Option kind: `Some` or `None`.\n */\nexport const OptionKindSymbol = Symbol('Option kind');\n\n/**\n * Symbol for Result kind: `Ok` or `Err`.\n */\nexport const ResultKindSymbol = Symbol('Result kind');","import type { Option, Result } from './core.ts';\nimport { OptionKindSymbol, ResultKindSymbol } from './symbols.ts';\n\n/**\n * Checks if a value is an `Option`.\n *\n * @typeParam T - The expected type of the value contained within the `Option`.\n * @param o - The value to be checked as an `Option`.\n * @returns `true` if the value is an `Option`, otherwise `false`.\n */\nexport function isOption<T>(o: unknown): o is Option<T> {\n // `Some` and `None` must be an object.\n return o != null && typeof o === 'object' && OptionKindSymbol in o;\n}\n\n/**\n * Checks if a value is a `Result`.\n *\n * @typeParam T - The expected type of the success value contained within the `Result`.\n * @typeParam E - The expected type of the error value contained within the `Result`.\n * @param r - The value to be checked as a `Result`.\n * @returns `true` if the value is a `Result`, otherwise `false`.\n */\nexport function isResult<T, E>(r: unknown): r is Result<T, E> {\n // `Ok` and `Err` must be an object.\n return r != null && typeof r === 'object' && ResultKindSymbol in r;\n}","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { AsyncOption, AsyncResult, Option, Result } from './core.ts';\nimport { OptionKindSymbol, ResultKindSymbol } from './symbols.ts';\nimport { isOption, isResult } from './utils.ts';\n\n/**\n * Represents the absence of a value, as a specialized `Option` type.\n * The type parameter is set to `never` because `None` does not hold a value.\n */\nexport interface None extends Option<never> {\n /**\n * When using `None` alone, the following overrides can make type inference more accurate.\n */\n\n readonly [OptionKindSymbol]: 'None';\n\n isSome(): false;\n isNone(): true;\n isSomeAnd(predicate: (value: never) => boolean): false;\n isSomeAndAsync(predicate: (value: never) => Promise<boolean>): Promise<false>;\n\n expect(msg: string): never;\n unwrap(): never;\n unwrapOr<T>(defaultValue: T): T;\n unwrapOrElse<T>(fn: () => T): T;\n unwrapOrElseAsync<T>(fn: () => Promise<T>): Promise<T>;\n\n okOr<E>(error: E): Result<never, E>;\n okOrElse<E>(err: () => E): Result<never, E>;\n transpose(): Result<None, never>;\n\n filter(predicate: (value: never) => boolean): None;\n flatten(): None;\n map<U>(fn: (value: never) => U): None;\n mapOr<U>(defaultValue: U, fn: (value: never) => U): U;\n mapOrElse<U>(defaultFn: () => U, fn: (value: never) => U): U;\n\n zip<U>(other: Option<U>): None;\n zipWith<U, R>(other: Option<U>, fn: (value: never, otherValue: U) => R): None;\n unzip(): [None, None];\n\n and<U>(other: Option<U>): None;\n andThen<U>(fn: (value: never) => Option<U>): None;\n andThenAsync<U>(fn: (value: never) => AsyncOption<U>): Promise<None>;\n or<T>(other: Option<T>): Option<T>;\n orElse<T>(fn: () => Option<T>): Option<T>;\n orElseAsync<T>(fn: () => AsyncOption<T>): AsyncOption<T>;\n xor<T>(other: Option<T>): Option<T>;\n\n inspect(fn: (value: never) => void): this;\n\n eq<T>(other: Option<T>): boolean;\n}\n\n/**\n * Creates an `Option<T>` representing the presence of a value.\n * This function is typically used to construct an `Option` that contains a value, indicating that the operation yielding the value was successful.\n *\n * @typeParam T - The type of the value to be wrapped in a `Some`.\n * @param value - The value to wrap as a `Some` option.\n * @returns An `Option<T>` that contains the provided value, representing the `Some` case.\n *\n * @example\n * ```ts\n * const maybeValue = Some(1); // Option<number> with a value\n * if (maybeValue.isSome()) {\n * console.log(maybeValue.unwrap()); // Outputs: 1\n * }\n * ```\n */\nexport function Some<T>(value: T): Option<T> {\n const some: Option<T> = {\n [Symbol.toStringTag]: 'Option',\n [OptionKindSymbol]: 'Some',\n\n isSome(): true {\n return true;\n },\n isNone(): false {\n return false;\n },\n isSomeAnd(predicate: (value: T) => boolean): boolean {\n return predicate(value);\n },\n isSomeAndAsync(predicate: (value: T) => Promise<boolean>): Promise<boolean> {\n return predicate(value);\n },\n\n expect(_msg: string): T {\n return value;\n },\n unwrap(): T {\n return value;\n },\n unwrapOr(_defaultValue: T): T {\n return value;\n },\n unwrapOrElse(_fn: () => T): T {\n return value;\n },\n unwrapOrElseAsync(_fn: () => Promise<T>): Promise<T> {\n return Promise.resolve(value);\n },\n\n okOr<E>(_error: E): Result<T, E> {\n return Ok(value);\n },\n okOrElse<E>(_err: () => E): Result<T, E> {\n return Ok(value);\n },\n transpose<T, E>(): Result<Option<T>, E> {\n const r = value as unknown as Result<T, E>;\n assertResult(r);\n return r.isOk() ? Ok(Some(r.unwrap())) : Err(r.unwrapErr());\n },\n\n filter(predicate: (value: T) => boolean): Option<T> {\n return predicate(value) ? some : None;\n },\n flatten<T>(): Option<T> {\n const o = value as unknown as Option<T>;\n assertOption(o);\n return o;\n },\n map<U>(fn: (value: T) => U): Option<U> {\n return Some(fn(value));\n },\n\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(value);\n },\n mapOrElse<U>(_defaultFn: () => U, fn: (value: T) => U): U {\n return fn(value);\n },\n\n zip<U>(other: Option<U>): Option<[T, U]> {\n assertOption(other);\n return other.isSome() ? Some([value, other.unwrap()]) : None;\n },\n zipWith<U, R>(other: Option<U>, fn: (value: T, otherValue: U) => R): Option<R> {\n assertOption(other);\n return other.isSome() ? Some(fn(value, other.unwrap())) : None;\n },\n unzip<T, U>(): [Option<T>, Option<U>] {\n const tuple = value as unknown as [T, U];\n\n if (!Array.isArray(tuple) || tuple.length !== 2) {\n throw new TypeError('Unzip format is incorrect.');\n }\n\n const [a, b] = tuple;\n return [Some(a), Some(b)];\n },\n\n and<U>(other: Option<U>): Option<U> {\n assertOption(other);\n return other;\n },\n andThen<U>(fn: (value: T) => Option<U>): Option<U> {\n return fn(value);\n },\n andThenAsync<U>(fn: (value: T) => AsyncOption<U>): AsyncOption<U> {\n return fn(value);\n },\n or(_other: Option<T>): Option<T> {\n return some;\n },\n orElse(_fn: () => Option<T>): Option<T> {\n return some;\n },\n orElseAsync(_fn: () => AsyncOption<T>): AsyncOption<T> {\n return Promise.resolve(some);\n },\n xor(other: Option<T>): Option<T> {\n assertOption(other);\n return other.isSome() ? None : some;\n },\n\n inspect(fn: (value: T) => void): Option<T> {\n fn(value);\n return some;\n },\n\n eq(other: Option<T>): boolean {\n assertOption(other);\n return other.isSome() && other.unwrap() === value;\n },\n\n toString(): string {\n return `Some(${ value })`;\n },\n } as const;\n\n return some;\n}\n\n/**\n * A constant representing the `None` case of an `Option`, indicating the absence of a value.\n * This constant is frozen to ensure it is immutable and cannot be altered, preserving the integrity of `None` throughout the application.\n */\nexport const None = Object.freeze<None>({\n [Symbol.toStringTag]: 'Option',\n [OptionKindSymbol]: 'None',\n\n isSome(): false {\n return false;\n },\n isNone(): true {\n return true;\n },\n isSomeAnd(_predicate: (value: never) => boolean): false {\n return false;\n },\n isSomeAndAsync(_predicate: (value: never) => Promise<boolean>): Promise<false> {\n return Promise.resolve(false);\n },\n\n expect(msg: string): never {\n throw new TypeError(msg);\n },\n unwrap(): never {\n throw new TypeError('Called `Option::unwrap()` on a `None` value');\n },\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n },\n unwrapOrElse<T>(fn: () => T): T {\n return fn();\n },\n unwrapOrElseAsync<T>(fn: () => Promise<T>): Promise<T> {\n return fn();\n },\n\n okOr<E>(error: E): Result<never, E> {\n return Err(error);\n },\n okOrElse<E>(err: () => E): Result<never, E> {\n return Err(err());\n },\n transpose(): Result<None, never> {\n return Ok(None);\n },\n\n filter(_predicate: (value: never) => boolean): None {\n return None;\n },\n flatten(): None {\n return None;\n },\n map<U>(_fn: (value: never) => U): None {\n return None;\n },\n\n mapOr<U>(defaultValue: U, _fn: (value: never) => U): U {\n return defaultValue;\n },\n mapOrElse<U>(defaultFn: () => U, _fn: (value: never) => U): U {\n return defaultFn();\n },\n\n zip<U>(_other: Option<U>): None {\n return None;\n },\n zipWith<U, R>(_other: Option<U>, _fn: (value: never, otherValue: U) => R): None {\n return None;\n },\n unzip(): [None, None] {\n return [None, None];\n },\n\n and<U>(_other: Option<U>): None {\n return None;\n },\n andThen<U>(_fn: (value: never) => Option<U>): None {\n return None;\n },\n andThenAsync<U>(_fn: (value: never) => AsyncOption<U>): Promise<None> {\n return Promise.resolve(None);\n },\n or<T>(other: Option<T>): Option<T> {\n assertOption(other);\n return other;\n },\n orElse<T>(fn: () => Option<T>): Option<T> {\n return fn();\n },\n orElseAsync<T>(fn: () => AsyncOption<T>): AsyncOption<T> {\n return fn();\n },\n xor<T>(other: Option<T>): Option<T> {\n assertOption(other);\n return other.isSome() ? other : None;\n },\n\n inspect(_fn: (value: never) => void): None {\n return None;\n },\n\n eq<T>(other: Option<T>): boolean {\n assertOption(other);\n return other === None;\n },\n\n toString(): string {\n return 'None';\n },\n}) as None;\n\n/**\n * Creates a `Result<T, E>` representing a successful outcome containing a value.\n * This function is used to construct a `Result` that signifies the operation was successful by containing the value `T`.\n *\n * @typeParam T - The type of the value to be contained in the `Ok` result.\n * @typeParam E - The type of the error that the result could potentially contain (not used in this case).\n * @param value - The value to wrap as an `Ok` result.\n * @returns A `Result<T, E>` that contains the provided value, representing the `Ok` case.\n *\n * @example\n * ```ts\n * const goodResult = Ok<number, Error>(1); // Result<number, Error> with a value\n * if (goodResult.isOk()) {\n * console.log(goodResult.unwrap()); // Outputs: 1\n * }\n * ```\n */\nexport function Ok<T, E>(value: T): Result<T, E>;\n/**\n * Because javascript does not have a `()` type, use `void` instead.\n */\nexport function Ok<E>(): Result<void, E>;\nexport function Ok<T, E>(value?: T): Result<T, E> {\n const ok: Result<T, E> = {\n [Symbol.toStringTag]: 'Result',\n [ResultKindSymbol]: 'Ok',\n\n isOk(): true {\n return true;\n },\n isErr(): false {\n return false;\n },\n isOkAnd(predicate: (value: T) => boolean): boolean {\n return predicate(value as T);\n },\n isOkAndAsync(predicate: (value: T) => Promise<boolean>): Promise<boolean> {\n return predicate(value as T);\n },\n isErrAnd(_predicate: (error: E) => boolean): false {\n return false;\n },\n isErrAndAsync(_predicate: (error: E) => Promise<boolean>): Promise<false> {\n return Promise.resolve(false);\n },\n\n expect(_msg: string): T {\n return value as T;\n },\n unwrap(): T {\n return value as T;\n },\n unwrapOr(_defaultValue: T): T {\n return value as T;\n },\n unwrapOrElse(_fn: (error: E) => T): T {\n return value as T;\n },\n unwrapOrElseAsync(_fn: (error: E) => Promise<T>): Promise<T> {\n return Promise.resolve(value as T);\n },\n\n expectErr(msg: string): E {\n throw new TypeError(`${ msg }: ${ value }`);\n },\n unwrapErr(): E {\n throw new TypeError('Called `Result::unwrapErr()` on an `Ok` value');\n },\n\n ok(): Option<T> {\n return Some(value as T);\n },\n err(): None {\n return None;\n },\n transpose<T>(): Option<Result<T, E>> {\n const o = value as Option<T>;\n assertOption(o);\n return o.isSome() ? Some(Ok(o.unwrap())) : None;\n },\n\n map<U>(fn: (value: T) => U): Result<U, E> {\n return Ok(fn(value as T));\n },\n mapErr<F>(_fn: (error: E) => F): Result<T, F> {\n return Ok(value as T);\n },\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(value as T);\n },\n mapOrElse<U>(_defaultFn: (error: E) => U, fn: (value: T) => U): U {\n return fn(value as T);\n },\n flatten<T>(): Result<T, E> {\n const r = value as Result<T, E>;\n assertResult(r);\n return r;\n },\n\n and<U>(other: Result<U, E>): Result<U, E> {\n assertResult(other);\n return other;\n },\n or<F>(_other: Result<T, F>): Result<T, F> {\n return ok as unknown as Result<T, F>;\n },\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E> {\n return fn(value as T);\n },\n andThenAsync<U>(fn: (value: T) => AsyncResult<U, E>): AsyncResult<U, E> {\n return fn(value as T);\n },\n orElse<F>(_fn: (error: E) => Result<T, F>): Result<T, F> {\n return ok as unknown as Result<T, F>;\n },\n orElseAsync<F>(_fn: (error: E) => AsyncResult<T, F>): AsyncResult<T, F> {\n return Promise.resolve(ok as unknown as Result<T, F>);\n },\n\n inspect(fn: (value: T) => void): Result<T, E> {\n fn(value as T);\n return ok;\n },\n inspectErr(_fn: (error: E) => void): Result<T, E> {\n return ok;\n },\n\n eq(other: Result<T, E>): boolean {\n assertResult(other);\n return other.isOk() && other.unwrap() === value;\n },\n\n asOk<F>(): Result<T, F> {\n return ok as unknown as Result<T, F>;\n },\n asErr(): never {\n throw new TypeError('Called `Result::asErr()` on an `Ok` value');\n },\n\n toString(): string {\n return `Ok(${ value })`;\n },\n } as const;\n\n return ok;\n}\n\n/**\n * Creates a `Result<T, E>` representing a failed outcome containing an error.\n * This function is used to construct a `Result` that signifies the operation failed by containing the error `E`.\n *\n * @typeParam T - The type of the value that the result could potentially contain (not used in this case).\n * @typeParam E - The type of the error to be wrapped in the `Err` result.\n * @param error - The error to wrap as an `Err` result.\n * @returns A `Result<T, E>` that contains the provided error, representing the `Err` case.\n *\n * @example\n * ```ts\n * const badResult = Err<number, Error>(new Error('Something went wrong'));\n * if (badResult.isErr()) {\n * console.error(badResult.unwrapErr()); // Outputs: Error: Something went wrong\n * }\n * ```\n */\nexport function Err<T, E>(error: E): Result<T, E> {\n const err: Result<T, E> = {\n [Symbol.toStringTag]: 'Result',\n [ResultKindSymbol]: 'Err',\n\n isOk(): false {\n return false;\n },\n isErr(): true {\n return true;\n },\n isOkAnd(_predicate: (value: T) => boolean): false {\n return false;\n },\n isOkAndAsync(_predicate: (value: T) => Promise<boolean>): Promise<boolean> {\n return Promise.resolve(false);\n },\n isErrAnd(predicate: (error: E) => boolean): boolean {\n return predicate(error);\n },\n isErrAndAsync(predicate: (error: E) => Promise<boolean>): Promise<boolean> {\n return predicate(error);\n },\n\n expect(msg: string): T {\n throw new TypeError(`${ msg }: ${ error }`);\n },\n unwrap(): T {\n throw new TypeError('Called `Result::unwrap()` on an `Err` value');\n },\n unwrapOr(defaultValue: T): T {\n return defaultValue;\n },\n unwrapOrElse(fn: (error: E) => T): T {\n return fn(error);\n },\n unwrapOrElseAsync(fn: (error: E) => Promise<T>): Promise<T> {\n return fn(error);\n },\n\n expectErr(_msg: string): E {\n return error;\n },\n unwrapErr(): E {\n return error;\n },\n\n ok(): None {\n return None;\n },\n err(): Option<E> {\n return Some(error);\n },\n transpose<T>(): Option<Result<T, E>> {\n return Some(err as unknown as Result<T, E>);\n },\n\n map<U>(_fn: (value: T) => U): Result<U, E> {\n return Err(error);\n },\n mapErr<F>(fn: (error: E) => F): Result<T, F> {\n return Err(fn(error));\n },\n mapOr<U>(defaultValue: U, _fn: (value: T) => U): U {\n return defaultValue;\n },\n mapOrElse<U>(defaultFn: (error: E) => U, _fn: (value: T) => U): U {\n return defaultFn(error);\n },\n flatten<T>(): Result<T, E> {\n return err as unknown as Result<T, E>;\n },\n\n and<U>(_other: Result<U, E>): Result<U, E> {\n return err as unknown as Result<U, E>;\n },\n or<F>(other: Result<T, F>): Result<T, F> {\n assertResult(other);\n return other;\n },\n andThen<U>(_fn: (value: T) => Result<U, E>): Result<U, E> {\n return err as unknown as Result<U, E>;\n },\n andThenAsync<U>(_fn: (value: T) => AsyncResult<U, E>): AsyncResult<U, E> {\n return Promise.resolve(err as unknown as Result<U, E>);\n },\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F> {\n return fn(error);\n },\n orElseAsync<F>(fn: (error: E) => AsyncResult<T, F>): AsyncResult<T, F> {\n return fn(error);\n },\n\n inspect(_fn: (value: T) => void): Result<T, E> {\n return err;\n },\n inspectErr(fn: (error: E) => void): Result<T, E> {\n fn(error);\n return err;\n },\n\n eq(other: Result<T, E>): boolean {\n assertResult(other);\n return other.isErr() && other.unwrapErr() === error;\n },\n\n asOk(): never {\n throw new TypeError('Called `Result::asOk()` on an `Err` value');\n },\n asErr<U>(): Result<U, E> {\n return err as unknown as Result<U, E>;\n },\n\n toString(): string {\n return `Err(${ error })`;\n },\n } as const;\n\n return err;\n}\n\n/**\n * Asserts that a given value is an `Option`.\n *\n * @typeParam T - The expected type of the value contained within the `Option`.\n * @param o - The value to be checked as an `Option`.\n * @throws {TypeError} If the value is not an `Option`.\n */\nfunction assertOption<T>(o: Option<T>): void {\n if (!isOption(o)) {\n throw new TypeError(`This(${ o }) is not an Option`);\n }\n}\n\n/**\n * Asserts that a given value is a `Result`.\n *\n * @typeParam T - The expected type of the success value contained within the `Result`.\n * @typeParam E - The expected type of the error value contained within the `Result`.\n * @param r - The value to be checked as a `Result`.\n * @throws {TypeError} If the value is not a `Result`.\n */\nfunction assertResult<T, E>(r: Result<T, E>): void {\n if (!isResult(r)) {\n throw new TypeError(`This(${ r }) is not a Result`);\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Result } from './core.ts';\nimport { Ok } from './prelude.ts';\n\n/**\n * Exports some Result constants.\n */\n\n/**\n * Result constant for `true`.\n * Can be used anywhere due to immutability.\n */\nexport const RESULT_TRUE: Result<boolean, any> = Ok(true);\n\n/**\n * Result constant for `false`.\n * Can be used anywhere due to immutability.\n */\nexport const RESULT_FALSE: Result<boolean, any> = Ok(false);\n\n/**\n * Result constant for `0`.\n * Can be used anywhere due to immutability.\n */\nexport const RESULT_ZERO: Result<number, any> = Ok(0);\n\n/**\n * Result constant for `void` or `()`.\n */\nexport const RESULT_VOID: Result<void, any> = Ok();","import type { Result } from './core.ts';\nimport { Err, Ok } from './prelude.ts';\n\n/**\n * Converts a Promise to a Result type, capturing the resolved value in an `Ok`, or the error in an `Err`.\n * This allows for promise-based asynchronous operations to be handled in a way that is more in line with the Result pattern.\n *\n * @typeParam T - The type of the value that the promise resolves to.\n * @typeParam E - The type of the error that the promise may reject with, defaults to `Error`.\n * @param p - The promise to convert into a `Result` type.\n * @returns A promise that resolves to a `Result<T, E>`. If the input promise `p` resolves, the resulting promise will resolve with `Ok<T>`. If the input promise `p` rejects, the resulting promise will resolve with `Err<E>`.\n *\n * @example\n * ```ts\n * async function example() {\n * const result = await promiseToAsyncResult(fetchData());\n * result.inspect(x => {\n * console.log('Data:', x);\n * }).inspectErr(err => {\n * console.error('Error:', err);\n * });\n * }\n * ```\n */\nexport function promiseToAsyncResult<T, E = Error>(p: Promise<T>): Promise<Result<T, E>> {\n return p.then((x): Result<T, E> => {\n return Ok(x);\n }).catch((err: E): Result<T, E> => {\n return Err(err);\n });\n}"],"names":[],"mappings":"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"}
|
package/dist/main.mjs
CHANGED
|
@@ -21,6 +21,9 @@ function Some(value) {
|
|
|
21
21
|
isSomeAnd(predicate) {
|
|
22
22
|
return predicate(value);
|
|
23
23
|
},
|
|
24
|
+
isSomeAndAsync(predicate) {
|
|
25
|
+
return predicate(value);
|
|
26
|
+
},
|
|
24
27
|
expect(_msg) {
|
|
25
28
|
return value;
|
|
26
29
|
},
|
|
@@ -33,6 +36,9 @@ function Some(value) {
|
|
|
33
36
|
unwrapOrElse(_fn) {
|
|
34
37
|
return value;
|
|
35
38
|
},
|
|
39
|
+
unwrapOrElseAsync(_fn) {
|
|
40
|
+
return Promise.resolve(value);
|
|
41
|
+
},
|
|
36
42
|
okOr(_error) {
|
|
37
43
|
return Ok(value);
|
|
38
44
|
},
|
|
@@ -84,12 +90,18 @@ function Some(value) {
|
|
|
84
90
|
andThen(fn) {
|
|
85
91
|
return fn(value);
|
|
86
92
|
},
|
|
93
|
+
andThenAsync(fn) {
|
|
94
|
+
return fn(value);
|
|
95
|
+
},
|
|
87
96
|
or(_other) {
|
|
88
97
|
return some;
|
|
89
98
|
},
|
|
90
99
|
orElse(_fn) {
|
|
91
100
|
return some;
|
|
92
101
|
},
|
|
102
|
+
orElseAsync(_fn) {
|
|
103
|
+
return Promise.resolve(some);
|
|
104
|
+
},
|
|
93
105
|
xor(other) {
|
|
94
106
|
assertOption(other);
|
|
95
107
|
return other.isSome() ? None : some;
|
|
@@ -120,6 +132,9 @@ const None = Object.freeze({
|
|
|
120
132
|
isSomeAnd(_predicate) {
|
|
121
133
|
return false;
|
|
122
134
|
},
|
|
135
|
+
isSomeAndAsync(_predicate) {
|
|
136
|
+
return Promise.resolve(false);
|
|
137
|
+
},
|
|
123
138
|
expect(msg) {
|
|
124
139
|
throw new TypeError(msg);
|
|
125
140
|
},
|
|
@@ -132,6 +147,9 @@ const None = Object.freeze({
|
|
|
132
147
|
unwrapOrElse(fn) {
|
|
133
148
|
return fn();
|
|
134
149
|
},
|
|
150
|
+
unwrapOrElseAsync(fn) {
|
|
151
|
+
return fn();
|
|
152
|
+
},
|
|
135
153
|
okOr(error) {
|
|
136
154
|
return Err(error);
|
|
137
155
|
},
|
|
@@ -171,6 +189,9 @@ const None = Object.freeze({
|
|
|
171
189
|
andThen(_fn) {
|
|
172
190
|
return None;
|
|
173
191
|
},
|
|
192
|
+
andThenAsync(_fn) {
|
|
193
|
+
return Promise.resolve(None);
|
|
194
|
+
},
|
|
174
195
|
or(other) {
|
|
175
196
|
assertOption(other);
|
|
176
197
|
return other;
|
|
@@ -178,6 +199,9 @@ const None = Object.freeze({
|
|
|
178
199
|
orElse(fn) {
|
|
179
200
|
return fn();
|
|
180
201
|
},
|
|
202
|
+
orElseAsync(fn) {
|
|
203
|
+
return fn();
|
|
204
|
+
},
|
|
181
205
|
xor(other) {
|
|
182
206
|
assertOption(other);
|
|
183
207
|
return other.isSome() ? other : None;
|
|
@@ -206,9 +230,15 @@ function Ok(value) {
|
|
|
206
230
|
isOkAnd(predicate) {
|
|
207
231
|
return predicate(value);
|
|
208
232
|
},
|
|
233
|
+
isOkAndAsync(predicate) {
|
|
234
|
+
return predicate(value);
|
|
235
|
+
},
|
|
209
236
|
isErrAnd(_predicate) {
|
|
210
237
|
return false;
|
|
211
238
|
},
|
|
239
|
+
isErrAndAsync(_predicate) {
|
|
240
|
+
return Promise.resolve(false);
|
|
241
|
+
},
|
|
212
242
|
expect(_msg) {
|
|
213
243
|
return value;
|
|
214
244
|
},
|
|
@@ -221,6 +251,9 @@ function Ok(value) {
|
|
|
221
251
|
unwrapOrElse(_fn) {
|
|
222
252
|
return value;
|
|
223
253
|
},
|
|
254
|
+
unwrapOrElseAsync(_fn) {
|
|
255
|
+
return Promise.resolve(value);
|
|
256
|
+
},
|
|
224
257
|
expectErr(msg) {
|
|
225
258
|
throw new TypeError(`${msg}: ${value}`);
|
|
226
259
|
},
|
|
@@ -265,9 +298,15 @@ function Ok(value) {
|
|
|
265
298
|
andThen(fn) {
|
|
266
299
|
return fn(value);
|
|
267
300
|
},
|
|
301
|
+
andThenAsync(fn) {
|
|
302
|
+
return fn(value);
|
|
303
|
+
},
|
|
268
304
|
orElse(_fn) {
|
|
269
305
|
return ok;
|
|
270
306
|
},
|
|
307
|
+
orElseAsync(_fn) {
|
|
308
|
+
return Promise.resolve(ok);
|
|
309
|
+
},
|
|
271
310
|
inspect(fn) {
|
|
272
311
|
fn(value);
|
|
273
312
|
return ok;
|
|
@@ -304,9 +343,15 @@ function Err(error) {
|
|
|
304
343
|
isOkAnd(_predicate) {
|
|
305
344
|
return false;
|
|
306
345
|
},
|
|
346
|
+
isOkAndAsync(_predicate) {
|
|
347
|
+
return Promise.resolve(false);
|
|
348
|
+
},
|
|
307
349
|
isErrAnd(predicate) {
|
|
308
350
|
return predicate(error);
|
|
309
351
|
},
|
|
352
|
+
isErrAndAsync(predicate) {
|
|
353
|
+
return predicate(error);
|
|
354
|
+
},
|
|
310
355
|
expect(msg) {
|
|
311
356
|
throw new TypeError(`${msg}: ${error}`);
|
|
312
357
|
},
|
|
@@ -319,6 +364,9 @@ function Err(error) {
|
|
|
319
364
|
unwrapOrElse(fn) {
|
|
320
365
|
return fn(error);
|
|
321
366
|
},
|
|
367
|
+
unwrapOrElseAsync(fn) {
|
|
368
|
+
return fn(error);
|
|
369
|
+
},
|
|
322
370
|
expectErr(_msg) {
|
|
323
371
|
return error;
|
|
324
372
|
},
|
|
@@ -359,9 +407,15 @@ function Err(error) {
|
|
|
359
407
|
andThen(_fn) {
|
|
360
408
|
return err;
|
|
361
409
|
},
|
|
410
|
+
andThenAsync(_fn) {
|
|
411
|
+
return Promise.resolve(err);
|
|
412
|
+
},
|
|
362
413
|
orElse(fn) {
|
|
363
414
|
return fn(error);
|
|
364
415
|
},
|
|
416
|
+
orElseAsync(fn) {
|
|
417
|
+
return fn(error);
|
|
418
|
+
},
|
|
365
419
|
inspect(_fn) {
|
|
366
420
|
return err;
|
|
367
421
|
},
|
|
@@ -399,6 +453,7 @@ function assertResult(r) {
|
|
|
399
453
|
const RESULT_TRUE = Ok(true);
|
|
400
454
|
const RESULT_FALSE = Ok(false);
|
|
401
455
|
const RESULT_ZERO = Ok(0);
|
|
456
|
+
const RESULT_VOID = Ok();
|
|
402
457
|
|
|
403
458
|
function promiseToAsyncResult(p) {
|
|
404
459
|
return p.then((x) => {
|
|
@@ -408,5 +463,5 @@ function promiseToAsyncResult(p) {
|
|
|
408
463
|
});
|
|
409
464
|
}
|
|
410
465
|
|
|
411
|
-
export { Err, None, Ok, RESULT_FALSE, RESULT_TRUE, RESULT_ZERO, Some, isOption, isResult, promiseToAsyncResult };
|
|
466
|
+
export { Err, None, Ok, RESULT_FALSE, RESULT_TRUE, RESULT_VOID, RESULT_ZERO, Some, isOption, isResult, promiseToAsyncResult };
|
|
412
467
|
//# sourceMappingURL=main.mjs.map
|