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 +9 -28
- package/README.md +9 -28
- package/dist/main.cjs +54 -0
- package/dist/main.cjs.map +1 -1
- package/dist/main.mjs +54 -0
- package/dist/main.mjs.map +1 -1
- package/dist/types.d.ts +71 -17
- package/docs/functions/Err.md +1 -1
- package/docs/functions/Ok.md +2 -2
- package/docs/functions/Some.md +1 -1
- package/docs/functions/isOption.md +1 -1
- package/docs/functions/isResult.md +1 -1
- package/docs/functions/promiseToAsyncResult.md +1 -1
- package/docs/interfaces/None.md +175 -46
- package/docs/interfaces/Option.md +128 -32
- package/docs/interfaces/Result.md +160 -34
- package/docs/type-aliases/AsyncIOResult.md +1 -1
- package/docs/type-aliases/AsyncOption.md +1 -1
- package/docs/type-aliases/AsyncResult.md +1 -1
- package/docs/type-aliases/AsyncVoidIOResult.md +1 -1
- package/docs/type-aliases/AsyncVoidResult.md +1 -1
- package/docs/type-aliases/IOResult.md +1 -1
- package/docs/type-aliases/VoidIOResult.md +1 -1
- package/docs/type-aliases/VoidResult.md +1 -1
- package/docs/variables/None.md +1 -1
- package/docs/variables/RESULT_FALSE.md +1 -1
- package/docs/variables/RESULT_TRUE.md +1 -1
- package/docs/variables/RESULT_VOID.md +1 -1
- package/docs/variables/RESULT_ZERO.md +1 -1
- package/package.json +5 -5
- package/src/enum/core.ts +69 -3
- package/src/enum/defines.ts +1 -18
- package/src/enum/prelude.ts +71 -1
package/dist/main.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
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 { 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/types.d.ts
CHANGED
|
@@ -31,8 +31,10 @@ pub enum Option<T> {
|
|
|
31
31
|
interface Option<T> {
|
|
32
32
|
/**
|
|
33
33
|
* [object Option].
|
|
34
|
+
*
|
|
35
|
+
* @private
|
|
34
36
|
*/
|
|
35
|
-
[Symbol.toStringTag]: 'Option';
|
|
37
|
+
readonly [Symbol.toStringTag]: 'Option';
|
|
36
38
|
/**
|
|
37
39
|
* Identify `Some` or `None`.
|
|
38
40
|
*
|
|
@@ -55,6 +57,10 @@ interface Option<T> {
|
|
|
55
57
|
* @param predicate - A function that takes the contained value and returns a boolean.
|
|
56
58
|
*/
|
|
57
59
|
isSomeAnd(predicate: (value: T) => boolean): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Asynchronous version of `isSomeAnd`.
|
|
62
|
+
*/
|
|
63
|
+
isSomeAndAsync(predicate: (value: T) => Promise<boolean>): Promise<boolean>;
|
|
58
64
|
/**
|
|
59
65
|
* These methods extract the contained value in an `Option<T>` when it is the `Some` variant:
|
|
60
66
|
*/
|
|
@@ -79,6 +85,10 @@ interface Option<T> {
|
|
|
79
85
|
* @param fn - A function that returns the default value.
|
|
80
86
|
*/
|
|
81
87
|
unwrapOrElse(fn: () => T): T;
|
|
88
|
+
/**
|
|
89
|
+
* Asynchronous version of `unwrapOrElse`.
|
|
90
|
+
*/
|
|
91
|
+
unwrapOrElseAsync(fn: () => Promise<T>): Promise<T>;
|
|
82
92
|
/**
|
|
83
93
|
* These methods transform `Option` to `Result`:
|
|
84
94
|
*/
|
|
@@ -189,6 +199,10 @@ interface Option<T> {
|
|
|
189
199
|
* @returns The result of `fn` if `this` is `Some`, otherwise `None`.
|
|
190
200
|
*/
|
|
191
201
|
andThen<U>(fn: (value: T) => Option<U>): Option<U>;
|
|
202
|
+
/**
|
|
203
|
+
* Asynchronous version of `andThen`.
|
|
204
|
+
*/
|
|
205
|
+
andThenAsync<U>(fn: (value: T) => AsyncOption<U>): AsyncOption<U>;
|
|
192
206
|
/**
|
|
193
207
|
* Returns the Option if it contains a value, otherwise returns `other`.
|
|
194
208
|
* This can be used for providing a fallback `Option`.
|
|
@@ -203,6 +217,10 @@ interface Option<T> {
|
|
|
203
217
|
* @returns `this` if it is `Some`, otherwise the result of `fn`.
|
|
204
218
|
*/
|
|
205
219
|
orElse(fn: () => Option<T>): Option<T>;
|
|
220
|
+
/**
|
|
221
|
+
* Asynchronous version of `orElse`.
|
|
222
|
+
*/
|
|
223
|
+
orElseAsync(fn: () => AsyncOption<T>): AsyncOption<T>;
|
|
206
224
|
/**
|
|
207
225
|
* Returns `Some` if exactly one of `this`, `other` is `Some`, otherwise returns `None`.
|
|
208
226
|
* This can be thought of as an exclusive or operation on `Option` values.
|
|
@@ -247,8 +265,10 @@ pub enum Result<T, E> {
|
|
|
247
265
|
interface Result<T, E> {
|
|
248
266
|
/**
|
|
249
267
|
* [object Result].
|
|
268
|
+
*
|
|
269
|
+
* @private
|
|
250
270
|
*/
|
|
251
|
-
[Symbol.toStringTag]: 'Result';
|
|
271
|
+
readonly [Symbol.toStringTag]: 'Result';
|
|
252
272
|
/**
|
|
253
273
|
* Identify `Ok` or `Err`.
|
|
254
274
|
*
|
|
@@ -271,11 +291,19 @@ interface Result<T, E> {
|
|
|
271
291
|
* @param predicate - A function that takes the `Ok` value and returns a boolean.
|
|
272
292
|
*/
|
|
273
293
|
isOkAnd(predicate: (value: T) => boolean): boolean;
|
|
294
|
+
/**
|
|
295
|
+
* Asynchronous version of `isOkAnd`.
|
|
296
|
+
*/
|
|
297
|
+
isOkAndAsync(predicate: (value: T) => Promise<boolean>): Promise<boolean>;
|
|
274
298
|
/**
|
|
275
299
|
* Returns `true` if the result is `Err` and the provided predicate returns `true` for the contained error.
|
|
276
300
|
* @param predicate - A function that takes the `Err` value and returns a boolean.
|
|
277
301
|
*/
|
|
278
302
|
isErrAnd(predicate: (error: E) => boolean): boolean;
|
|
303
|
+
/**
|
|
304
|
+
* Asynchronous version of `isErrAnd`.
|
|
305
|
+
*/
|
|
306
|
+
isErrAndAsync(predicate: (error: E) => Promise<boolean>): Promise<boolean>;
|
|
279
307
|
/**
|
|
280
308
|
* These methods extract the contained value in a `Result<T, E>` when it is the `Ok` variant.
|
|
281
309
|
*/
|
|
@@ -300,6 +328,10 @@ interface Result<T, E> {
|
|
|
300
328
|
* @param fn - A function that takes the `Err` value and returns an `Ok` value.
|
|
301
329
|
*/
|
|
302
330
|
unwrapOrElse(fn: (error: E) => T): T;
|
|
331
|
+
/**
|
|
332
|
+
* Asynchronous version of `unwrapOrElse`.
|
|
333
|
+
*/
|
|
334
|
+
unwrapOrElseAsync(fn: (error: E) => Promise<T>): Promise<T>;
|
|
303
335
|
/**
|
|
304
336
|
* These methods extract the contained value in a `Result<T, E>` when it is the `Err` variant.
|
|
305
337
|
*/
|
|
@@ -404,6 +436,10 @@ interface Result<T, E> {
|
|
|
404
436
|
* @returns The result of `fn` if `this` is `Ok`, otherwise `this` as `Err`.
|
|
405
437
|
*/
|
|
406
438
|
andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E>;
|
|
439
|
+
/**
|
|
440
|
+
* Asynchronous version of `andThen`.
|
|
441
|
+
*/
|
|
442
|
+
andThenAsync<U>(fn: (value: T) => AsyncResult<U, E>): AsyncResult<U, E>;
|
|
407
443
|
/**
|
|
408
444
|
* Calls the provided function with the contained error if `this` is `Err`, otherwise returns `this` as `Ok`.
|
|
409
445
|
* @typeParam F - The type of the error returned by the function.
|
|
@@ -411,6 +447,10 @@ interface Result<T, E> {
|
|
|
411
447
|
* @returns The result of `fn` if `this` is `Err`, otherwise `this` as `Ok`.
|
|
412
448
|
*/
|
|
413
449
|
orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F>;
|
|
450
|
+
/**
|
|
451
|
+
* Asynchronous version of `orElse`.
|
|
452
|
+
*/
|
|
453
|
+
orElseAsync<F>(fn: (error: E) => AsyncResult<T, F>): AsyncResult<T, F>;
|
|
414
454
|
/**
|
|
415
455
|
* Calls the provided function with the contained value if `this` is `Ok`, for side effects only.
|
|
416
456
|
* Does not modify the `Result`.
|
|
@@ -455,6 +495,21 @@ interface Result<T, E> {
|
|
|
455
495
|
*/
|
|
456
496
|
toString(): string;
|
|
457
497
|
}
|
|
498
|
+
/**
|
|
499
|
+
* Represents an asynchronous operation that yields an `Option<T>`.
|
|
500
|
+
* This is a promise that resolves to either `Some(T)` if the value is present, or `None` if the value is absent.
|
|
501
|
+
*
|
|
502
|
+
* @typeParam T - The type of the value that may be contained within the `Option`.
|
|
503
|
+
*/
|
|
504
|
+
type AsyncOption<T> = Promise<Option<T>>;
|
|
505
|
+
/**
|
|
506
|
+
* Represents an asynchronous operation that yields a `Result<T, E>`.
|
|
507
|
+
* This is a promise that resolves to `Ok(T)` if the operation was successful, or `Err(E)` if there was an error.
|
|
508
|
+
*
|
|
509
|
+
* @typeParam T - The type of the value that is produced by a successful operation.
|
|
510
|
+
* @typeParam E - The type of the error that may be produced by a failed operation.
|
|
511
|
+
*/
|
|
512
|
+
type AsyncResult<T, E> = Promise<Result<T, E>>;
|
|
458
513
|
|
|
459
514
|
/**
|
|
460
515
|
* Exports some Result constants.
|
|
@@ -483,21 +538,6 @@ declare const RESULT_VOID: Result<void, any>;
|
|
|
483
538
|
* Exports some commonly used types.
|
|
484
539
|
*/
|
|
485
540
|
|
|
486
|
-
/**
|
|
487
|
-
* Represents an asynchronous operation that yields an `Option<T>`.
|
|
488
|
-
* This is a promise that resolves to either `Some(T)` if the value is present, or `None` if the value is absent.
|
|
489
|
-
*
|
|
490
|
-
* @typeParam T - The type of the value that may be contained within the `Option`.
|
|
491
|
-
*/
|
|
492
|
-
type AsyncOption<T> = Promise<Option<T>>;
|
|
493
|
-
/**
|
|
494
|
-
* Represents an asynchronous operation that yields a `Result<T, E>`.
|
|
495
|
-
* This is a promise that resolves to `Ok(T)` if the operation was successful, or `Err(E)` if there was an error.
|
|
496
|
-
*
|
|
497
|
-
* @typeParam T - The type of the value that is produced by a successful operation.
|
|
498
|
-
* @typeParam E - The type of the error that may be produced by a failed operation.
|
|
499
|
-
*/
|
|
500
|
-
type AsyncResult<T, E> = Promise<Result<T, E>>;
|
|
501
541
|
/**
|
|
502
542
|
* Similar to Rust's `Result<(), E>`.
|
|
503
543
|
*
|
|
@@ -582,20 +622,34 @@ interface None extends Option<never> {
|
|
|
582
622
|
* When using `None` alone, the following overrides can make type inference more accurate.
|
|
583
623
|
*/
|
|
584
624
|
readonly [OptionKindSymbol]: 'None';
|
|
625
|
+
isSome(): false;
|
|
626
|
+
isNone(): true;
|
|
627
|
+
isSomeAnd(predicate: (value: never) => boolean): false;
|
|
628
|
+
isSomeAndAsync(predicate: (value: never) => Promise<boolean>): Promise<false>;
|
|
629
|
+
expect(msg: string): never;
|
|
630
|
+
unwrap(): never;
|
|
585
631
|
unwrapOr<T>(defaultValue: T): T;
|
|
586
632
|
unwrapOrElse<T>(fn: () => T): T;
|
|
633
|
+
unwrapOrElseAsync<T>(fn: () => Promise<T>): Promise<T>;
|
|
634
|
+
okOr<E>(error: E): Result<never, E>;
|
|
635
|
+
okOrElse<E>(err: () => E): Result<never, E>;
|
|
587
636
|
transpose(): Result<None, never>;
|
|
588
637
|
filter(predicate: (value: never) => boolean): None;
|
|
589
638
|
flatten(): None;
|
|
590
639
|
map<U>(fn: (value: never) => U): None;
|
|
640
|
+
mapOr<U>(defaultValue: U, fn: (value: never) => U): U;
|
|
641
|
+
mapOrElse<U>(defaultFn: () => U, fn: (value: never) => U): U;
|
|
591
642
|
zip<U>(other: Option<U>): None;
|
|
592
643
|
zipWith<U, R>(other: Option<U>, fn: (value: never, otherValue: U) => R): None;
|
|
593
644
|
unzip(): [None, None];
|
|
594
645
|
and<U>(other: Option<U>): None;
|
|
595
646
|
andThen<U>(fn: (value: never) => Option<U>): None;
|
|
647
|
+
andThenAsync<U>(fn: (value: never) => AsyncOption<U>): Promise<None>;
|
|
596
648
|
or<T>(other: Option<T>): Option<T>;
|
|
597
649
|
orElse<T>(fn: () => Option<T>): Option<T>;
|
|
650
|
+
orElseAsync<T>(fn: () => AsyncOption<T>): AsyncOption<T>;
|
|
598
651
|
xor<T>(other: Option<T>): Option<T>;
|
|
652
|
+
inspect(fn: (value: never) => void): this;
|
|
599
653
|
eq<T>(other: Option<T>): boolean;
|
|
600
654
|
}
|
|
601
655
|
/**
|
package/docs/functions/Err.md
CHANGED
|
@@ -43,4 +43,4 @@ if (badResult.isErr()) {
|
|
|
43
43
|
|
|
44
44
|
## Defined in
|
|
45
45
|
|
|
46
|
-
[prelude.ts:
|
|
46
|
+
[prelude.ts:473](https://github.com/JiangJie/happy-rusty/blob/6efe20969984552f52d79aee092bb6925a077fe7/src/enum/prelude.ts#L473)
|
package/docs/functions/Ok.md
CHANGED
|
@@ -45,7 +45,7 @@ if (goodResult.isOk()) {
|
|
|
45
45
|
|
|
46
46
|
### Defined in
|
|
47
47
|
|
|
48
|
-
[prelude.ts:
|
|
48
|
+
[prelude.ts:326](https://github.com/JiangJie/happy-rusty/blob/6efe20969984552f52d79aee092bb6925a077fe7/src/enum/prelude.ts#L326)
|
|
49
49
|
|
|
50
50
|
## Ok()
|
|
51
51
|
|
|
@@ -67,4 +67,4 @@ Because javascript does not have a `()` type, use `void` instead.
|
|
|
67
67
|
|
|
68
68
|
### Defined in
|
|
69
69
|
|
|
70
|
-
[prelude.ts:
|
|
70
|
+
[prelude.ts:330](https://github.com/JiangJie/happy-rusty/blob/6efe20969984552f52d79aee092bb6925a077fe7/src/enum/prelude.ts#L330)
|
package/docs/functions/Some.md
CHANGED
|
@@ -42,4 +42,4 @@ if (maybeValue.isSome()) {
|
|
|
42
42
|
|
|
43
43
|
## Defined in
|
|
44
44
|
|
|
45
|
-
[prelude.ts:
|
|
45
|
+
[prelude.ts:71](https://github.com/JiangJie/happy-rusty/blob/6efe20969984552f52d79aee092bb6925a077fe7/src/enum/prelude.ts#L71)
|
|
@@ -32,4 +32,4 @@ Checks if a value is an `Option`.
|
|
|
32
32
|
|
|
33
33
|
## Defined in
|
|
34
34
|
|
|
35
|
-
[utils.ts:11](https://github.com/JiangJie/happy-rusty/blob/
|
|
35
|
+
[utils.ts:11](https://github.com/JiangJie/happy-rusty/blob/6efe20969984552f52d79aee092bb6925a077fe7/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
|
-
[utils.ts:24](https://github.com/JiangJie/happy-rusty/blob/
|
|
36
|
+
[utils.ts:24](https://github.com/JiangJie/happy-rusty/blob/6efe20969984552f52d79aee092bb6925a077fe7/src/enum/utils.ts#L24)
|
|
@@ -47,4 +47,4 @@ async function example() {
|
|
|
47
47
|
|
|
48
48
|
## Defined in
|
|
49
49
|
|
|
50
|
-
[extensions.ts:25](https://github.com/JiangJie/happy-rusty/blob/
|
|
50
|
+
[extensions.ts:25](https://github.com/JiangJie/happy-rusty/blob/6efe20969984552f52d79aee092bb6925a077fe7/src/enum/extensions.ts#L25)
|