# Query API Surface These are ALL available methods for Query. Do not use any method not listed here. ## Types ```typescript type Query = OkSome | OkNone | ErrNone type QueryPromise = Promise> type OkSomePromise = Promise> type OkNonePromise = Promise type ErrNonePromise = Promise> type QueryPartitionResult = { values: T[]; noneCount: number; errors: E[] } type QueryFromType = /* conditional: OkSome> if T excludes null|undefined, else OkSome> | OkNone */ ``` ## Factory Functions ```typescript function okSome(value: T): OkSome function okNone(): OkNone // returns frozen singleton function errNone(error: E): ErrNone ``` ## OkSome Instance Methods ```typescript class OkSome { readonly value: T isSome(): this is OkSome isNone(): this is never isErr(): this is never map(fn: (value: T) => U): OkSome mapErr(): OkSome flatMap>(fn: (value: T) => R): R flatMapErr(): this match(onSome: (value: T) => U, onNone: () => U, onErr: (error: never) => U): U // Overload 1: type-narrowing predicate filter(predicate: (value: T) => value is U): OkSome | OkNone // Overload 2: boolean predicate filter(predicate: (value: T) => boolean): OkSome | OkNone toNullable(): T toUndefined(): T toString(): string } ``` ## OkNone Instance Methods ```typescript class OkNone { // OkNone has no .value or .err property isSome(): this is never isNone(): this is OkNone isErr(): this is never map(): OkNone mapErr(): OkNone flatMap(): this flatMapErr(): this match(onSome: (value: never) => U, onNone: () => U, onErr: (error: never) => U): U filter(): OkNone toNullable(): null toUndefined(): undefined toString(): string } ``` ## ErrNone Instance Methods ```typescript class ErrNone { readonly err: E isSome(): this is never isNone(): this is never isErr(): this is ErrNone map(): ErrNone mapErr(fn: (error: E) => F): ErrNone flatMap(): this flatMapErr>(fn: (error: E) => R): R match(onSome: (value: never) => U, onNone: () => U, onErr: (error: E) => U): U filter(): ErrNone toNullable(): null toUndefined(): undefined toString(): string } ``` ## Query Namespace (Static Methods) ```typescript Query.from(value: T): QueryFromType Query.from(fn: () => T, errorMap?: (error: unknown) => E): QueryFromType | ErrNone Query.isQuery(value: unknown): value is Query Query.all(queries: OkSome[]): OkSome Query.all(queries: Query[]): Query Query.partition(queries: Query[]): QueryPartitionResult Query.compact(queries: Query[]): T[] Query.some(queries: Query[]): boolean Query.every(queries: Query[]): boolean ``` ## QueryPromise Namespace (Async Methods) ```typescript QueryPromise.from(fn: () => Promise, errorMap?: (error: unknown) => E): Promise | ErrNone> QueryPromise.all(promises: Promise>[]): Promise> QueryPromise.all(promises: Promise>[]): Promise> QueryPromise.partition(promises: Promise>[]): Promise> QueryPromise.compact(promises: Promise>[]): Promise QueryPromise.some(promises: Promise>[]): Promise QueryPromise.every(promises: Promise>[]): Promise ```