happy-rusty 1.4.0 → 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 CHANGED
@@ -16,39 +16,18 @@
16
16
 
17
17
  ## 安装
18
18
 
19
- pnpm
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
- via pnpm
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
  },
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/**\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 isErrAnd(_predicate: (error: E) => boolean): false {\n return 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\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 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 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 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);\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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"}
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
  },