HuehueJS/x-data

View on GitHub
src/index.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { ParserRepository } from "./repository";

export interface Type<T> extends Function {
    new(...args: any[]): T
}

export interface FunctionalParser<E> {
    (any, ParserRepository?): E;
}

export interface Parser<E> {
    mutate(rawData: any, parserRepository?: ParserRepository): E;
}

export interface ObjectParserRecipe<E> {
    type: Type<E>;
    fields?: { [fieldName: string]: ParserRecipe<any> | string };
    $?: { [parserName: string]: Array<string> }
}

export type ParserRecipe<E> = ObjectParserRecipe<E> | FunctionalParser<E>;

export interface RepositoryRecipe {
    [name: string]: ParserRecipe<any>;
}