UNPKG

map-transform-cjs

Version:
119 lines (117 loc) 4.13 kB
type DictionaryValue = string | number | boolean | null | undefined; type DictionaryTuple = readonly [DictionaryValue, DictionaryValue]; type Dictionary = DictionaryTuple[]; interface Dictionaries { [key: string]: Dictionary; } interface InitialState { target?: unknown; rev?: boolean; noDefaults?: boolean; } interface State extends InitialState { context: unknown[]; value: unknown; flip?: boolean; arr?: boolean; iterate?: boolean; index?: number; untouched?: boolean; } interface Options { transformers?: { [key: string | symbol]: Transformer | AsyncTransformer; }; pipelines?: { [key: string | symbol]: TransformDefinition; }; dictionaries?: Dictionaries; nonvalues?: unknown[]; fwdAlias?: string; revAlias?: string; modifyOperationObject?: (operation: Record<string, unknown>) => Record<string, unknown>; modifyGetValue?: (value: unknown, state: State, options: Options) => unknown; } interface DataMapper<T extends InitialState | undefined = State> { (data: unknown, state?: T): Promise<unknown>; } interface AsyncDataMapperWithState { (data: unknown, state: State): Promise<unknown>; } interface DataMapperWithState { (data: unknown, state: State): unknown; } interface AsyncDataMapperWithOptions { (options: Options): AsyncDataMapperWithState; } interface DataMapperWithOptions { (options: Options): DataMapperWithState; } interface StateMapper { (state: State): Promise<State>; } interface NextStateMapper { (next: StateMapper): StateMapper; } interface Operation { (options: Options): NextStateMapper; } type TransformerProps = Record<string, unknown>; interface Transformer<T = TransformerProps> { (props: T): DataMapperWithOptions; } interface AsyncTransformer<T = TransformerProps> { (props: T): AsyncDataMapperWithOptions; } type Path = string; interface TransformOperation extends TransformerProps { $transform: string | symbol | DataMapperWithOptions | AsyncDataMapperWithOptions; $iterate?: boolean; $direction?: string; } interface FilterOperation extends TransformerProps { $filter: string | symbol; $direction?: string; } interface IfOperation extends TransformerProps { $if: TransformDefinition; $direction?: string; then?: TransformDefinition; else?: TransformDefinition; } interface ApplyOperation extends TransformerProps { $apply: string | symbol; $iterate?: boolean; $direction?: string; } interface AltOperation extends TransformerProps { $alt: TransformDefinition[]; $iterate?: boolean; $direction?: string; $undefined?: unknown[]; } interface ConcatOperation extends TransformerProps { $concat: TransformDefinition[]; } interface ConcatRevOperation extends TransformerProps { $concatRev: TransformDefinition[]; } interface LookupOperation extends TransformerProps { $lookup: Path; path: Path; } interface LookdownOperation extends TransformerProps { $lookdown: Path; path: Path; } type OperationObject = TransformOperation | FilterOperation | IfOperation | ApplyOperation | AltOperation | ConcatOperation | ConcatRevOperation | LookupOperation | LookdownOperation; type Pipeline = (TransformObject | Operation | OperationObject | Path | Pipeline)[]; interface TransformObject extends Record<string, unknown> { $iterate?: boolean; $modify?: boolean | Path; $noDefaults?: boolean; $flip?: boolean; $direction?: string; } type TransformDefinition = TransformObject | Operation | OperationObject | Pipeline | Path | null; export type { AltOperation, ApplyOperation, AsyncDataMapperWithOptions, AsyncDataMapperWithState, AsyncTransformer, ConcatOperation, ConcatRevOperation, DataMapper, DataMapperWithOptions, DataMapperWithState, Dictionaries, Dictionary, DictionaryTuple, DictionaryValue, FilterOperation, IfOperation, InitialState, LookdownOperation, LookupOperation, NextStateMapper, Operation, OperationObject, Options, Path, Pipeline, State, StateMapper, TransformDefinition, TransformObject, TransformOperation, Transformer, TransformerProps };