Home / Class/ OkImpl Class — react Architecture

OkImpl Class — react Architecture

Architecture documentation for the OkImpl class in Result.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  6143aba4_e943_f966_4659_ccde18cc41ea["OkImpl"]
  494e3425_0b47_293a_1ea4_d4670b0fc0e7["Result.ts"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|defined in| 494e3425_0b47_293a_1ea4_d4670b0fc0e7
  07a3b3c2_6de8_d680_cad6_fd4f2b862082["constructor()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 07a3b3c2_6de8_d680_cad6_fd4f2b862082
  8e8b7ee8_d3c2_f98d_17e1_c5ff5fff1940["map()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 8e8b7ee8_d3c2_f98d_17e1_c5ff5fff1940
  3f1ec731_119d_e3db_278c_2a173ee94f8d["mapErr()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 3f1ec731_119d_e3db_278c_2a173ee94f8d
  7389f262_ceb9_32d3_424f_a8fad793e322["mapOr()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 7389f262_ceb9_32d3_424f_a8fad793e322
  5cc80a94_9262_c66a_6c7b_8c3143f9537c["mapOrElse()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 5cc80a94_9262_c66a_6c7b_8c3143f9537c
  54969e7c_a163_5d2c_4478_ac42977e1382["andThen()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 54969e7c_a163_5d2c_4478_ac42977e1382
  1443a76d_5b18_8b2c_52b1_30d6a498a8d4["and()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 1443a76d_5b18_8b2c_52b1_30d6a498a8d4
  7599b9a5_7033_ab57_62a3_2d2dcd0b05c7["or()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 7599b9a5_7033_ab57_62a3_2d2dcd0b05c7
  5f0451d9_7345_49cb_39d4_433b2da060b4["orElse()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 5f0451d9_7345_49cb_39d4_433b2da060b4
  46bdf8e6_4a50_0326_ba9a_f74ee3cfc291["isOk()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 46bdf8e6_4a50_0326_ba9a_f74ee3cfc291
  8f45c458_198e_ea00_a21c_eae224736051["isErr()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 8f45c458_198e_ea00_a21c_eae224736051
  5b936745_0ae8_bf6a_10c7_af5aeebd4d23["expect()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 5b936745_0ae8_bf6a_10c7_af5aeebd4d23
  5875efa7_29a8_5069_0c8c_bed213facbb5["expectErr()"]
  6143aba4_e943_f966_4659_ccde18cc41ea -->|method| 5875efa7_29a8_5069_0c8c_bed213facbb5

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/Utils/Result.ts lines 92–164

class OkImpl<T> implements Result<T, never> {
  #val: T;
  constructor(val: T) {
    this.#val = val;
  }

  map<U>(fn: (val: T) => U): Result<U, never> {
    return new OkImpl(fn(this.#val));
  }

  mapErr<F>(_fn: (val: never) => F): Result<T, F> {
    return this;
  }

  mapOr<U>(_fallback: U, fn: (val: T) => U): U {
    return fn(this.#val);
  }

  mapOrElse<U>(_fallback: () => U, fn: (val: T) => U): U {
    return fn(this.#val);
  }

  andThen<U>(fn: (val: T) => Result<U, never>): Result<U, never> {
    return fn(this.#val);
  }

  and<U>(res: Result<U, never>): Result<U, never> {
    return res;
  }

  or(_res: Result<T, never>): Result<T, never> {
    return this;
  }

  orElse<F>(_fn: (val: never) => Result<T, F>): Result<T, F> {
    return this;
  }

  isOk(): this is OkImpl<T> {
    return true;
  }

  isErr(): this is ErrImpl<never> {
    return false;
  }

  expect(_msg: string): T {
    return this.#val;
  }

  expectErr(msg: string): never {
    throw new Error(`${msg}: ${this.#val}`);
  }

  unwrap(): T {
    return this.#val;
  }

  unwrapOr(_fallback: T): T {
    return this.#val;
  }

  unwrapOrElse(_fallback: (val: never) => T): T {
    return this.#val;
  }

  unwrapErr(): never {
    if (this.#val instanceof Error) {
      throw this.#val;
    }
    throw new Error(`Can't unwrap \`Ok\` to \`Err\`: ${this.#val}`);
  }
}

Domain

Frequently Asked Questions

What is the OkImpl class?
OkImpl is a class in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Utils/Result.ts.
Where is OkImpl defined?
OkImpl is defined in compiler/packages/babel-plugin-react-compiler/src/Utils/Result.ts at line 92.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free