UNPKG

@hazae41/glacier

Version:

Yet another React data (re)fetching library

55 lines (52 loc) 2.1 kB
import { Awaitable } from '../../libs/promises/promises.js'; type Encoder<I, O> = SyncEncoder<I, O> | AsyncEncoder<I, O>; interface SyncEncoder<I, O> { encodeOrThrow(input: I): O; } interface AsyncEncoder<I, O> { encodeOrThrow(input: I): Awaitable<O>; } type Bicoder<I, O> = SyncBicoder<I, O> | AsyncBicoder<I, O>; interface SyncBicoder<I, O> { encodeOrThrow(input: I): O; decodeOrThrow(output: O): I; } interface AsyncBicoder<I, O> { encodeOrThrow(input: I): Awaitable<O>; decodeOrThrow(output: O): Awaitable<I>; } declare namespace Identity { function encodeOrThrow<T>(value: T): T; function decodeOrThrow<T>(value: T): T; } declare namespace Jsoned { function encodeOrThrow<T>(value: T): string; function decodeOrThrow<T>(value: string): T; } declare class AsyncPipeBicoder<I, X, O> implements AsyncBicoder<I, O> { readonly outer: AsyncBicoder<I, X>; readonly inner: AsyncBicoder<X, O>; constructor(outer: AsyncBicoder<I, X>, inner: AsyncBicoder<X, O>); encodeOrThrow(input: I): Promise<O>; decodeOrThrow(output: O): Promise<I>; } declare class AsyncPipeEncoder<I, X, O> implements AsyncEncoder<I, O> { readonly outer: AsyncEncoder<I, X>; readonly inner: AsyncEncoder<X, O>; constructor(outer: AsyncEncoder<I, X>, inner: AsyncEncoder<X, O>); encodeOrThrow(input: I): Promise<O>; } declare class SyncPipeBicoder<I, X, O> implements SyncBicoder<I, O> { readonly outer: SyncBicoder<I, X>; readonly inner: SyncBicoder<X, O>; constructor(outer: SyncBicoder<I, X>, inner: SyncBicoder<X, O>); encodeOrThrow(input: I): O; decodeOrThrow(output: O): I; } declare class SyncPipeEncoder<I, X, O> implements SyncEncoder<I, O> { readonly outer: SyncEncoder<I, X>; readonly inner: SyncEncoder<X, O>; constructor(outer: SyncEncoder<I, X>, inner: SyncEncoder<X, O>); encodeOrThrow(input: I): O; } export { type AsyncBicoder, type AsyncEncoder, AsyncPipeBicoder, AsyncPipeEncoder, type Bicoder, type Encoder, Identity, Jsoned, type SyncBicoder, type SyncEncoder, SyncPipeBicoder, SyncPipeEncoder };