happy-rusty 1.3.1 → 1.4.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
@@ -11,8 +11,8 @@
11
11
 
12
12
  ## 支持的特性
13
13
 
14
- - [option](https://doc.rust-lang.org/core/option/index.html)
15
- - [result](https://doc.rust-lang.org/core/result/index.html)
14
+ - [Option](https://doc.rust-lang.org/core/option/index.html)
15
+ - [Result](https://doc.rust-lang.org/core/result/index.html)
16
16
 
17
17
  ## 安装
18
18
 
@@ -58,4 +58,9 @@ bunx jsr add @happy-js/happy-rusty
58
58
  import { Some, None, Ok, Err } from 'happy-rusty';
59
59
  ```
60
60
 
61
+ ## [示例](examples/main.ts)
62
+
63
+ - [Option](examples/option.ts)
64
+ - [Result](examples/result.ts)
65
+
61
66
  ## [文档](docs/README.md)
package/README.md CHANGED
@@ -15,8 +15,8 @@
15
15
 
16
16
  ## Supported
17
17
 
18
- - [option](https://doc.rust-lang.org/core/option/index.html)
19
- - [result](https://doc.rust-lang.org/core/result/index.html)
18
+ - [Option](https://doc.rust-lang.org/core/option/index.html)
19
+ - [Result](https://doc.rust-lang.org/core/result/index.html)
20
20
 
21
21
  ## Installation
22
22
 
@@ -64,4 +64,9 @@ import { Some, None, Ok, Err } from 'happy-rusty';
64
64
 
65
65
  Enjoy the happiness.
66
66
 
67
+ ## [Examples](examples/main.ts)
68
+
69
+ - [Option](examples/option.ts)
70
+ - [Result](examples/result.ts)
71
+
67
72
  ## [Docs](docs/README.md)
package/dist/main.cjs CHANGED
@@ -401,6 +401,7 @@ function assertResult(r) {
401
401
  const RESULT_TRUE = Ok(true);
402
402
  const RESULT_FALSE = Ok(false);
403
403
  const RESULT_ZERO = Ok(0);
404
+ const RESULT_VOID = Ok();
404
405
 
405
406
  function promiseToAsyncResult(p) {
406
407
  return p.then((x) => {
@@ -415,6 +416,7 @@ exports.None = None;
415
416
  exports.Ok = Ok;
416
417
  exports.RESULT_FALSE = RESULT_FALSE;
417
418
  exports.RESULT_TRUE = RESULT_TRUE;
419
+ exports.RESULT_VOID = RESULT_VOID;
418
420
  exports.RESULT_ZERO = RESULT_ZERO;
419
421
  exports.Some = Some;
420
422
  exports.isOption = isOption;
package/dist/main.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.cjs","sources":["../src/enum/symbols.ts","../src/enum/helpers.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 { isOption, isResult } from './helpers.ts';\nimport { OptionKindSymbol, ResultKindSymbol } from './symbols.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 * if (result.isOk()) {\n * console.log('Data:', result.unwrap());\n * } else {\n * console.error('Error:', result.unwrapErr());\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 { 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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"}
package/dist/main.mjs CHANGED
@@ -399,6 +399,7 @@ function assertResult(r) {
399
399
  const RESULT_TRUE = Ok(true);
400
400
  const RESULT_FALSE = Ok(false);
401
401
  const RESULT_ZERO = Ok(0);
402
+ const RESULT_VOID = Ok();
402
403
 
403
404
  function promiseToAsyncResult(p) {
404
405
  return p.then((x) => {
@@ -408,5 +409,5 @@ function promiseToAsyncResult(p) {
408
409
  });
409
410
  }
410
411
 
411
- export { Err, None, Ok, RESULT_FALSE, RESULT_TRUE, RESULT_ZERO, Some, isOption, isResult, promiseToAsyncResult };
412
+ export { Err, None, Ok, RESULT_FALSE, RESULT_TRUE, RESULT_VOID, RESULT_ZERO, Some, isOption, isResult, promiseToAsyncResult };
412
413
  //# sourceMappingURL=main.mjs.map
package/dist/main.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.mjs","sources":["../src/enum/symbols.ts","../src/enum/helpers.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 { isOption, isResult } from './helpers.ts';\nimport { OptionKindSymbol, ResultKindSymbol } from './symbols.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 * if (result.isOk()) {\n * console.log('Data:', result.unwrap());\n * } else {\n * console.error('Error:', result.unwrapErr());\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.mjs","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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"}
package/dist/types.d.ts CHANGED
@@ -474,6 +474,10 @@ declare const RESULT_FALSE: Result<boolean, any>;
474
474
  * Can be used anywhere due to immutability.
475
475
  */
476
476
  declare const RESULT_ZERO: Result<number, any>;
477
+ /**
478
+ * Result constant for `void` or `()`.
479
+ */
480
+ declare const RESULT_VOID: Result<void, any>;
477
481
 
478
482
  /**
479
483
  * Exports some commonly used types.
@@ -494,6 +498,18 @@ type AsyncOption<T> = Promise<Option<T>>;
494
498
  * @typeParam E - The type of the error that may be produced by a failed operation.
495
499
  */
496
500
  type AsyncResult<T, E> = Promise<Result<T, E>>;
501
+ /**
502
+ * Similar to Rust's `Result<(), E>`.
503
+ *
504
+ * @typeParam E - The type of the error that may be produced by a failed operation.
505
+ */
506
+ type VoidResult<E> = Result<void, E>;
507
+ /**
508
+ * `VoidResult<E>` wrapped by `Promise`.
509
+ *
510
+ * @typeParam E - The type of the error that may be produced by a failed operation.
511
+ */
512
+ type AsyncVoidResult<E> = Promise<VoidResult<E>>;
497
513
  /**
498
514
  * Represents a synchronous operation that yields a `Result<T, Error>`.
499
515
  * This is a result that is either `Ok(T)` if the operation was successful, or `Err(Error)` if there was an error.
@@ -508,6 +524,14 @@ type IOResult<T> = Result<T, Error>;
508
524
  * @typeParam T - The type of the value that is produced by a successful I/O operation.
509
525
  */
510
526
  type AsyncIOResult<T> = AsyncResult<T, Error>;
527
+ /**
528
+ * Similar to Rust's `Result<(), Error>`.
529
+ */
530
+ type VoidIOResult = IOResult<void>;
531
+ /**
532
+ * `VoidIOResult` wrapped by `Promise`.
533
+ */
534
+ type AsyncVoidIOResult = AsyncIOResult<void>;
511
535
 
512
536
  /**
513
537
  * Converts a Promise to a Result type, capturing the resolved value in an `Ok`, or the error in an `Err`.
@@ -521,35 +545,17 @@ type AsyncIOResult<T> = AsyncResult<T, Error>;
521
545
  * @example
522
546
  * ```ts
523
547
  * async function example() {
524
- * const result = await promiseToAsyncResult(fetchData());
525
- * if (result.isOk()) {
526
- * console.log('Data:', result.unwrap());
527
- * } else {
528
- * console.error('Error:', result.unwrapErr());
529
- * }
548
+ * const result = await promiseToAsyncResult(fetchData());
549
+ * result.inspect(x => {
550
+ * console.log('Data:', x);
551
+ * }).inspectErr(err => {
552
+ * console.error('Error:', err);
553
+ * });
530
554
  * }
531
555
  * ```
532
556
  */
533
557
  declare function promiseToAsyncResult<T, E = Error>(p: Promise<T>): Promise<Result<T, E>>;
534
558
 
535
- /**
536
- * Checks if a value is an `Option`.
537
- *
538
- * @typeParam T - The expected type of the value contained within the `Option`.
539
- * @param o - The value to be checked as an `Option`.
540
- * @returns `true` if the value is an `Option`, otherwise `false`.
541
- */
542
- declare function isOption<T>(o: unknown): o is Option<T>;
543
- /**
544
- * Checks if a value is a `Result`.
545
- *
546
- * @typeParam T - The expected type of the success value contained within the `Result`.
547
- * @typeParam E - The expected type of the error value contained within the `Result`.
548
- * @param r - The value to be checked as a `Result`.
549
- * @returns `true` if the value is a `Result`, otherwise `false`.
550
- */
551
- declare function isResult<T, E>(r: unknown): r is Result<T, E>;
552
-
553
559
  /**
554
560
  * Creates an `Option<T>` representing the presence of a value.
555
561
  * This function is typically used to construct an `Option` that contains a value, indicating that the operation yielding the value was successful.
@@ -615,6 +621,10 @@ declare const None: None;
615
621
  * ```
616
622
  */
617
623
  declare function Ok<T, E>(value: T): Result<T, E>;
624
+ /**
625
+ * Because javascript does not have a `()` type, use `void` instead.
626
+ */
627
+ declare function Ok<E>(): Result<void, E>;
618
628
  /**
619
629
  * Creates a `Result<T, E>` representing a failed outcome containing an error.
620
630
  * This function is used to construct a `Result` that signifies the operation failed by containing the error `E`.
@@ -634,5 +644,23 @@ declare function Ok<T, E>(value: T): Result<T, E>;
634
644
  */
635
645
  declare function Err<T, E>(error: E): Result<T, E>;
636
646
 
637
- export { type AsyncIOResult, type AsyncOption, type AsyncResult, Err, type IOResult, None, Ok, type Option, RESULT_FALSE, RESULT_TRUE, RESULT_ZERO, type Result, Some, isOption, isResult, promiseToAsyncResult };
647
+ /**
648
+ * Checks if a value is an `Option`.
649
+ *
650
+ * @typeParam T - The expected type of the value contained within the `Option`.
651
+ * @param o - The value to be checked as an `Option`.
652
+ * @returns `true` if the value is an `Option`, otherwise `false`.
653
+ */
654
+ declare function isOption<T>(o: unknown): o is Option<T>;
655
+ /**
656
+ * Checks if a value is a `Result`.
657
+ *
658
+ * @typeParam T - The expected type of the success value contained within the `Result`.
659
+ * @typeParam E - The expected type of the error value contained within the `Result`.
660
+ * @param r - The value to be checked as a `Result`.
661
+ * @returns `true` if the value is a `Result`, otherwise `false`.
662
+ */
663
+ declare function isResult<T, E>(r: unknown): r is Result<T, E>;
664
+
665
+ export { type AsyncIOResult, type AsyncOption, type AsyncResult, type AsyncVoidIOResult, type AsyncVoidResult, Err, type IOResult, None, Ok, type Option, RESULT_FALSE, RESULT_TRUE, RESULT_VOID, RESULT_ZERO, type Result, Some, type VoidIOResult, type VoidResult, isOption, isResult, promiseToAsyncResult };
638
666
  //# sourceMappingURL=types.d.ts.map
package/docs/README.md CHANGED
@@ -19,7 +19,11 @@
19
19
  | [AsyncIOResult](type-aliases/AsyncIOResult.md) | Represents an asynchronous I/O operation that yields a `Result<T, Error>`. This is a promise that resolves to `Ok(T)` if the I/O operation was successful, or `Err(Error)` if there was an error. |
20
20
  | [AsyncOption](type-aliases/AsyncOption.md) | Represents an asynchronous operation that yields an `Option<T>`. This is a promise that resolves to either `Some(T)` if the value is present, or `None` if the value is absent. |
21
21
  | [AsyncResult](type-aliases/AsyncResult.md) | Represents an asynchronous operation that yields a `Result<T, E>`. This is a promise that resolves to `Ok(T)` if the operation was successful, or `Err(E)` if there was an error. |
22
+ | [AsyncVoidIOResult](type-aliases/AsyncVoidIOResult.md) | `VoidIOResult` wrapped by `Promise`. |
23
+ | [AsyncVoidResult](type-aliases/AsyncVoidResult.md) | `VoidResult<E>` wrapped by `Promise`. |
22
24
  | [IOResult](type-aliases/IOResult.md) | Represents a synchronous operation that yields a `Result<T, Error>`. This is a result that is either `Ok(T)` if the operation was successful, or `Err(Error)` if there was an error. |
25
+ | [VoidIOResult](type-aliases/VoidIOResult.md) | Similar to Rust's `Result<(), Error>`. |
26
+ | [VoidResult](type-aliases/VoidResult.md) | Similar to Rust's `Result<(), E>`. |
23
27
 
24
28
  ## Variables
25
29
 
@@ -28,6 +32,7 @@
28
32
  | [None](variables/None.md) | A constant representing the `None` case of an `Option`, indicating the absence of a value. This constant is frozen to ensure it is immutable and cannot be altered, preserving the integrity of `None` throughout the application. |
29
33
  | [RESULT\_FALSE](variables/RESULT_FALSE.md) | Result constant for `false`. Can be used anywhere due to immutability. |
30
34
  | [RESULT\_TRUE](variables/RESULT_TRUE.md) | Result constant for `true`. Can be used anywhere due to immutability. |
35
+ | [RESULT\_VOID](variables/RESULT_VOID.md) | Result constant for `void` or `()`. |
31
36
  | [RESULT\_ZERO](variables/RESULT_ZERO.md) | Result constant for `0`. Can be used anywhere due to immutability. |
32
37
 
33
38
  ## Functions
@@ -43,4 +43,4 @@ if (badResult.isErr()) {
43
43
 
44
44
  ## Defined in
45
45
 
46
- [prelude.ts:413](https://github.com/JiangJie/happy-rusty/blob/568a73f526d9ce3608e5c5e0ed80e93107bc6adb/src/enum/prelude.ts#L413)
46
+ [prelude.ts:418](https://github.com/JiangJie/happy-rusty/blob/7d7f4ab2132e507f77594d030495f95b5688b84a/src/enum/prelude.ts#L418)
@@ -6,6 +6,8 @@
6
6
 
7
7
  # Function: Ok()
8
8
 
9
+ ## Ok(value)
10
+
9
11
  ```ts
10
12
  function Ok<T, E>(value): Result<T, E>
11
13
  ```
@@ -13,26 +15,26 @@ function Ok<T, E>(value): Result<T, E>
13
15
  Creates a `Result<T, E>` representing a successful outcome containing a value.
14
16
  This function is used to construct a `Result` that signifies the operation was successful by containing the value `T`.
15
17
 
16
- ## Type Parameters
18
+ ### Type Parameters
17
19
 
18
20
  | Type Parameter | Description |
19
21
  | ------ | ------ |
20
22
  | `T` | The type of the value to be contained in the `Ok` result. |
21
23
  | `E` | The type of the error that the result could potentially contain (not used in this case). |
22
24
 
23
- ## Parameters
25
+ ### Parameters
24
26
 
25
27
  | Parameter | Type | Description |
26
28
  | ------ | ------ | ------ |
27
29
  | `value` | `T` | The value to wrap as an `Ok` result. |
28
30
 
29
- ## Returns
31
+ ### Returns
30
32
 
31
33
  [`Result`](../interfaces/Result.md)\<`T`, `E`\>
32
34
 
33
35
  A `Result<T, E>` that contains the provided value, representing the `Ok` case.
34
36
 
35
- ## Example
37
+ ### Example
36
38
 
37
39
  ```ts
38
40
  const goodResult = Ok<number, Error>(1); // Result<number, Error> with a value
@@ -41,6 +43,28 @@ if (goodResult.isOk()) {
41
43
  }
42
44
  ```
43
45
 
44
- ## Defined in
46
+ ### Defined in
47
+
48
+ [prelude.ts:286](https://github.com/JiangJie/happy-rusty/blob/7d7f4ab2132e507f77594d030495f95b5688b84a/src/enum/prelude.ts#L286)
49
+
50
+ ## Ok()
51
+
52
+ ```ts
53
+ function Ok<E>(): Result<void, E>
54
+ ```
55
+
56
+ Because javascript does not have a `()` type, use `void` instead.
57
+
58
+ ### Type Parameters
59
+
60
+ | Type Parameter |
61
+ | ------ |
62
+ | `E` |
63
+
64
+ ### Returns
65
+
66
+ [`Result`](../interfaces/Result.md)\<`void`, `E`\>
67
+
68
+ ### Defined in
45
69
 
46
- [prelude.ts:286](https://github.com/JiangJie/happy-rusty/blob/568a73f526d9ce3608e5c5e0ed80e93107bc6adb/src/enum/prelude.ts#L286)
70
+ [prelude.ts:290](https://github.com/JiangJie/happy-rusty/blob/7d7f4ab2132e507f77594d030495f95b5688b84a/src/enum/prelude.ts#L290)
@@ -42,4 +42,4 @@ if (maybeValue.isSome()) {
42
42
 
43
43
  ## Defined in
44
44
 
45
- [prelude.ts:55](https://github.com/JiangJie/happy-rusty/blob/568a73f526d9ce3608e5c5e0ed80e93107bc6adb/src/enum/prelude.ts#L55)
45
+ [prelude.ts:55](https://github.com/JiangJie/happy-rusty/blob/7d7f4ab2132e507f77594d030495f95b5688b84a/src/enum/prelude.ts#L55)
@@ -32,4 +32,4 @@ Checks if a value is an `Option`.
32
32
 
33
33
  ## Defined in
34
34
 
35
- [helpers.ts:11](https://github.com/JiangJie/happy-rusty/blob/568a73f526d9ce3608e5c5e0ed80e93107bc6adb/src/enum/helpers.ts#L11)
35
+ [utils.ts:11](https://github.com/JiangJie/happy-rusty/blob/7d7f4ab2132e507f77594d030495f95b5688b84a/src/enum/utils.ts#L11)
@@ -33,4 +33,4 @@ Checks if a value is a `Result`.
33
33
 
34
34
  ## Defined in
35
35
 
36
- [helpers.ts:24](https://github.com/JiangJie/happy-rusty/blob/568a73f526d9ce3608e5c5e0ed80e93107bc6adb/src/enum/helpers.ts#L24)
36
+ [utils.ts:24](https://github.com/JiangJie/happy-rusty/blob/7d7f4ab2132e507f77594d030495f95b5688b84a/src/enum/utils.ts#L24)