UNPKG

@hazae41/result

Version:

Rust-like Result for TypeScript

1 lines 18.4 kB
{"version":3,"file":"ok.cjs","sources":["../../../../src/mods/result/ok.ts"],"sourcesContent":["import { None, Some } from \"@hazae41/option\"\nimport { Awaitable } from \"libs/promises/promises.js\"\nimport { Panic } from \"./errors.js\"\nimport { Result } from \"./result.js\"\n\nexport namespace Ok {\n\n export type Infer<T> = Ok<Inner<T>>\n\n export type Inner<T> = T extends Ok<infer Inner> ? Inner : never\n\n}\n\nexport class Ok<T = unknown> {\n\n #inner: T\n\n /**\n * A success\n * @param inner \n */\n constructor(inner: T) {\n this.#inner = inner\n }\n\n /**\n * Create an empty `Ok`\n * @returns `Ok(void)`\n */\n static void(): Ok<void> {\n return new Ok<void>(undefined)\n }\n\n /**\n * Create an `Ok`\n * @param inner \n * @returns `Ok(inner)`\n */\n static new<T>(inner: T): Ok<T> {\n return new Ok<T>(inner)\n }\n\n get inner() {\n return this.#inner\n }\n\n [Symbol.dispose](this: Ok<Disposable>) {\n this.#inner[Symbol.dispose]()\n }\n\n async [Symbol.asyncDispose](this: Ok<AsyncDisposable>) {\n await this.#inner[Symbol.asyncDispose]()\n }\n\n /**\n * Type guard for `Ok`\n * @returns `true` if `Ok`, `false` if `Err`\n */\n isOk(): this is Ok<T> {\n return true\n }\n\n /**\n * Returns true if the result is `Ok` and the value inside of it matches a predicate\n * @param okPredicate \n * @returns `true` if `Ok` and `await okPredicate(this.inner)`, `false` otherwise\n */\n async isOkAnd(okPredicate: (inner: T) => Awaitable<boolean>): Promise<boolean> {\n return await okPredicate(this.inner)\n }\n\n /**\n * Returns true if the result is `Ok` and the value inside of it matches a predicate\n * @param okPredicate \n * @returns `true` if `Ok` and `await okPredicate(this.inner)`, `false` otherwise\n */\n isOkAndSync(okPredicate: (inner: T) => boolean): boolean {\n return okPredicate(this.inner)\n }\n\n /**\n * Type guard for `Err`\n * @returns `true` if `Err`, `false` if `Ok`\n */\n isErr(): false {\n return false\n }\n\n /**\n * Returns true if the result is `Err` and the value inside of it matches a predicate\n * @param errPredicate \n * @returns `true` if `Err` and `await errPredicate(this.inner)`, `false` otherwise\n */\n async isErrAnd(errPredicate: unknown): Promise<false> {\n return false\n }\n\n /**\n * Returns true if the result is `Err` and the value inside of it matches a predicate\n * @param errPredicate \n * @returns `true` if `Err` and `await errPredicate(this.inner)`, `false` otherwise\n */\n isErrAndSync(errPredicate: unknown): false {\n return false\n }\n\n /**\n * Compile-time safely get Ok's inner type\n * @returns `this.inner`\n * @throws if `this` is `Err`\n */\n get(): T {\n return this.inner\n }\n\n /**\n * Compile-time safely get Err's inner type\n * @returns `this.inner`\n * @throws if `this` is `Ok`\n */\n getErr(this: [T] extends [never] ? unknown : never): never {\n throw new Panic()\n }\n\n /**\n * Get inner type\n * @returns \n */\n getAny(): T {\n return this.inner\n }\n\n /**\n * Transform `Result<T, E>` into `Option<T>`\n * @returns `Some(this.inner)` if `Ok`, `None` if `Err`\n */\n ok(): Some<T> {\n return new Some(this.inner)\n }\n\n /**\n * Transform `Result<T, E>` into `Option<E>`\n * @returns `Some(this.inner)` if `Err`, `None` if `Ok`\n */\n err(): None {\n return new None()\n }\n\n /**\n * Returns an iterator over the possibly contained value\n * @yields `this.inner` if `Ok`\n */\n *[Symbol.iterator](): Iterator<T, void> {\n yield this.inner\n }\n\n /**\n * Transform `Result<T,E>` into `[T,E]`\n * @returns `[this.inner, undefined]` if `Ok`, `[undefined, this.inner]` if `Err`\n */\n split(): [T, undefined] {\n return [this.inner, undefined]\n }\n\n /**\n * Returns true if the result is an `Ok` value containing the given value\n * @param value \n * @returns `true` if `Ok` and `this.inner === value`, `false` otherwise\n */\n contains(value: T): boolean {\n return this.inner === value\n }\n\n /**\n * Returns true if the result is an `Err` value containing the given value\n * @param value \n * @returns `true` if `Err` and `this.inner === value`, `false` otherwise\n */\n containsErr(value: unknown): false {\n return false\n }\n\n /**\n * Just like `unwrap` but it throws to the closest `Result.unthrow`\n * @returns `this.inner` if `Ok`\n * @throws `this` if `Err` \n * @see Result.unthrow\n * @see Result.unthrowSync\n */\n throw(thrower: unknown): T {\n return this.inner\n }\n\n /**\n * Get the inner value if Ok or throw the inner error\n * @returns `this.inner` if `Ok`\n * @throws `this.inner` if `Err` \n */\n getOrThrow(): T {\n return this.inner\n }\n\n /**\n * Get the inner error if Err or throw the inner value\n * @returns `this.inner` if `Err`\n * @throws `this.inner` if `Ok` \n */\n getErrOrThrow(): never {\n throw this.inner\n }\n\n /**\n * Get the inner value if Ok or null if Err\n * @returns `this.inner` if `Ok`, `null` if `Err`\n */\n getOrNull(): T {\n return this.inner\n }\n\n /**\n * Get the inner error if Err or null if Ok\n * @returns `this.inner` if `Err`, `null` if `Ok`\n */\n getErrOrNull(): null {\n return null\n }\n\n /**\n * Get the inner value or a default one\n * @param value \n * @returns `this.inner` if `Ok`, `value` if `Err`\n */\n getOr(value: unknown): T {\n return this.inner\n }\n\n /**\n * Get the inner value or compute a default one from the inner error\n * @param errMapper \n * @returns `this.inner` if `Ok`, `await errMapper(this.inner)` if `Err`\n * @throws if `await errMapper(this.inner)` throws\n */\n async getOrElse(errMapper: unknown): Promise<T> {\n return this.inner\n }\n\n /**\n * Get the inner value or compute a default one from the inner error\n * @param errMapper \n * @returns `this.inner` if `Ok`, `errMapper(this.inner)` if `Err`\n * @throws if `errMapper(this.inner)` throws\n */\n getOrElseSync(errMapper: unknown): T {\n return this.inner\n }\n\n /**\n * Get this if Ok or throw the inner error\n * @returns \n */\n checkOrThrow(): this {\n return this\n }\n\n /**\n * Get this if Err or throw the inner value\n */\n checkErrOrThrow(): never {\n throw this.inner\n }\n\n /**\n * Get this if Ok or return null\n * @returns \n */\n checkOrNull(): this {\n return this\n }\n\n /**\n * Get this if Err or return null\n */\n checkErrOrNull(): null {\n return null\n }\n\n /**\n * Transform Result<Promise<T>, E> into Promise<Result<T, E>>\n * @returns `await this.inner` if `Ok`, `this` if `Err`\n */\n async await<T>(this: Ok<PromiseLike<T>>): Promise<Ok<Awaited<T>>> {\n return new Ok(await this.inner)\n }\n\n /**\n * Transform Result<T, Promise<E>> into Promise<Result<T, E>>\n * @returns `await this.inner` if `Err`, `this` if `Ok`\n */\n async awaitErr(): Promise<this> {\n return this\n }\n\n /**\n * Transform Result<Promise<T>, Promise<E>> into Promise<Result<T, E>>\n * @returns `await this.inner`\n */\n async awaitAll<T>(this: Ok<PromiseLike<T>>): Promise<Ok<Awaited<T>>> {\n return await this.await()\n }\n\n /**\n * Transform `Result<T, E>` into `Result<void, E>`\n * @returns `Ok<void>` if `Ok<T>`, `Err<E>` if `E<E>`\n */\n clear(): Ok<void> {\n return Ok.void()\n }\n\n /**\n * Transform `Result<T, E>` into `Result<T, void>`\n * @returns `Ok<T>` if `Ok<T>`, `Err<void>` if `E<E>`\n */\n clearErr(): this {\n return this\n }\n\n /**\n * Calls the given callback with the inner value if `Ok`\n * @param okCallback \n * @returns `this`\n */\n async inspect(okCallback: (inner: T) => Awaitable<void>): Promise<this> {\n await okCallback(this.inner)\n return this\n }\n\n /**\n * Calls the given callback with the inner value if `Ok`\n * @param okCallback \n * @returns `this`\n */\n inspectSync(okCallback: (inner: T) => void): this {\n okCallback(this.inner)\n return this\n }\n\n /**\n * Calls the given callback with the inner value if `Err`\n * @param errCallback \n * @returns `this`\n */\n async inspectErr(errCallback: unknown): Promise<this> {\n return this\n }\n\n /**\n * Calls the given callback with the inner value if `Err`\n * @param errCallback \n * @returns `this`\n */\n inspectErrSync(errCallback: unknown): this {\n return this\n }\n\n /**\n * Return a new `Ok` but with the given `inner`\n * @param inner \n * @returns `Ok(inner)` if `Ok`, `this` if `Err`\n */\n set<U>(inner: U): Ok<U> {\n return new Ok(inner)\n }\n\n /**\n * Return a new `Err` but with the given `inner`\n * @param inner \n * @returns `Err(inner)` if `Err`, `this` if `Ok`\n */\n setErr(inner: unknown): this {\n return this\n }\n\n /**\n * Map the inner value into another\n * @param okMapper \n * @returns `Ok(await okMapper(this.inner))` if `Ok`, `this` if `Err`\n * @throws if `await okMapper(this.inner)` throws\n */\n async map<U>(okMapper: (inner: T) => Awaitable<U>): Promise<Ok<U>> {\n return new Ok<U>(await okMapper(this.inner))\n }\n\n /**\n * Map the inner value into another\n * @param okMapper \n * @returns `Ok(okMapper(this.inner))` if `Ok`, `this` if `Err`\n * @throws if `okMapper(this.inner)` throws\n */\n mapSync<U>(okMapper: (inner: T) => U): Ok<U> {\n return new Ok<U>(okMapper(this.inner))\n }\n\n /**\n * Map the inner error into another\n * @param errMapper \n * @returns `Err(await errMapper(this.inner))` if `Err`, `this` if `Ok`\n * @throws if `await errMapper(this.inner)` throws\n */\n async mapErr(errMapper: unknown): Promise<this> {\n return this\n }\n\n /**\n * Map the inner error into another\n * @param errMapper \n * @returns `Err(errMapper(this.inner))` if `Err`, `this` if `Ok`\n * @throws if `errMapper(this.inner)` throws\n */\n mapErrSync(errMapper: unknown): this {\n return this\n }\n\n /**\n * Map the inner value into another, or a default one\n * @param value\n * @param okMapper \n * @returns `await okMapper(this.inner)` if `Ok`, `value` if `Err`\n * @throws if `await okMapper(this.inner)` throws\n */\n async mapOr<U>(value: U, okMapper: (inner: T) => Awaitable<U>): Promise<U> {\n return await okMapper(this.inner)\n }\n\n /**\n * Map the inner value into another, or a default one\n * @param value\n * @param okMapper \n * @returns `okMapper(this.inner)` if `Ok`, `value` if `Err`\n * @throws if `okMapper(this.inner)` throws\n */\n mapOrSync<U>(value: U, okMapper: (inner: T) => U): U {\n return okMapper(this.inner)\n }\n\n /**\n * Map the inner value into another, or a default one\n * @param errMapper\n * @param okMapper \n * @returns `await okMapper(this.inner)` if `Ok`, `await errMapper(this.inner)` if `Err`\n * @throws if `await okMapper(this.inner)` or `await errMapper(this.inner)` throws\n */\n async mapOrElse<U>(errMapper: unknown, okMapper: (inner: T) => Awaitable<U>): Promise<U> {\n return await okMapper(this.inner)\n }\n\n /**\n * Map the inner value into another, or a default one\n * @param errMapper\n * @param okMapper \n * @returns `okMapper(this.inner)` if `Ok`, `errMapper(this.inner)` if `Err`\n * @throws if `okMapper(this.inner)` or `errMapper(this.inner)` throws\n */\n mapOrElseSync<U>(errMapper: unknown, okMapper: (inner: T) => U): U {\n return okMapper(this.inner)\n }\n\n /**\n * Return `value` if `Ok`, return `this` if `Err`\n * @param value \n * @returns `value` if `Ok`, `this` if `Err`\n */\n and<U>(value: U): U {\n return value\n }\n\n /**\n * Return `await okMapper(this.inner)` if `Ok`, return `this` if `Err`\n * @param okMapper \n * @returns `await okMapper(this.inner)` if `Ok`, `this` if `Err`\n * @throws if `await okMapper(this.inner)` throws\n */\n async andThen<U>(okMapper: (inner: T) => Awaitable<U>): Promise<U> {\n return await okMapper(this.inner)\n }\n\n /**\n * Return `okMapper(this.inner)` if `Ok`, return `this` if `Err`\n * @param okMapper \n * @returns `okMapper(this.inner)` if `Ok`, `this` if `Err`\n * @throws if `okMapper(this.inner)` throws\n */\n andThenSync<U>(okMapper: (inner: T) => U): U {\n return okMapper(this.inner)\n }\n\n /**\n * Return `value` if `Err`, return `this` if `Ok`\n * @param value \n * @returns `value` if `Err`, `this` if `Ok`\n */\n or(value: unknown): this {\n return this\n }\n\n /**\n * Return `await errMapper(this.inner)` if `Err`, return `this` if `Ok`\n * @param errMapper \n * @returns `await errMapper(this.inner)` if `Err`, `this` if `Ok`\n * @throws if `await errMapper(this.inner)` throws\n */\n async orElse(errMapper: unknown): Promise<this> {\n return this\n }\n\n /**\n * Return `errMapper(this.inner)` if `Err`, return `this` if `Ok`\n * @param errMapper \n * @returns `errMapper(this.inner)` if `Err`, `this` if `Ok`\n * @throws if `errMapper(this.inner)` throws\n */\n orElseSync(errMapper: unknown): this {\n return this\n }\n\n /**\n * Transform Result<Result<T, E1>, E2> into Result<T, E1 | E2>\n * @param result \n * @returns `this` if `Err`, `this.inner` if `Ok`\n */\n flatten() {\n return this.inner\n }\n\n}\n"],"names":["Panic","Some","None"],"mappings":"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"}