@hazae41/glacier
Version:
Yet another React data (re)fetching library
55 lines (52 loc) • 2.1 kB
TypeScript
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 };