alwz
Version:
Extendable library for typecasting
63 lines (62 loc) • 2.5 kB
TypeScript
/// <reference types="node" />
import Converter from './Converter.js';
import Registry from './Registry.js';
/**
* @ignore
* @example
* const odd = new Converter((input) => typeof input === 'number' && Boolean(input % 2), () => 1);
* const even = new Converter((input) => typeof input === 'number' && !(input % 2), () => 2);
* const Aggregator = new Aggregator();
* aggregator.register('odd', odd);
* aggregator.register('even', even);
* aggregator.to('odd')(3); // 3
* aggregator.to('odd')(4); // 1
* aggregator.to('even')(4); // 4
* aggregator.to('even')(5); // 2
*/
export declare class Aggregator extends Registry<string, Converter<any>> {
static DuplicateConverter: {
new (message?: string | undefined, value?: unknown, options?: unknown): {
value?: unknown;
throw(): void;
name: string;
message: string;
stack?: string | undefined;
};
captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
stackTraceLimit: number;
};
static InvalidConverter: {
new (message?: string | undefined, value?: unknown, options?: unknown): {
value?: unknown;
throw(): void;
name: string;
message: string;
stack?: string | undefined;
};
captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
stackTraceLimit: number;
};
static AbsentConverter: {
new (message?: string | undefined, value?: unknown, options?: unknown): {
value?: unknown;
throw(): void;
name: string;
message: string;
stack?: string | undefined;
};
captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
stackTraceLimit: number;
};
constructor();
get converters(): [string, Converter<any>][];
register(name: string, converter: Converter<any>): this;
unregister(name: string): this;
converter: (name: string) => Converter<any>;
to: (name: any) => (input?: unknown) => any;
}
export default Aggregator;
//# sourceMappingURL=Aggregator.d.ts.map