UNPKG

structured-elements

Version:

A TypeScript package for modelling and validating data

31 lines 1.62 kB
export type Mirror<Element> = { array: Readonly<Element[]>; collection: Readonly<Record<Mirror.Key, Element>>; }; export declare namespace Mirror { const build: <Element_1>(data?: Format<Element_1>, options?: Options<Element_1> | undefined) => Mirror<Element_1>; const buildFromRecord: <Element_1, Subject extends Record<keyof Element_1, unknown>, SharedKey extends keyof Element_1 & keyof Subject = keyof Element_1 & keyof Subject>(subject: Subject, transformations: Record<SharedKey, Element_1[SharedKey] extends Subject[SharedKey] ? void | import("./buildFromRecord").Transform<Element_1, Subject, SharedKey> : import("./buildFromRecord").Transform<Element_1, Subject, SharedKey>>) => Mirror<Element_1>; type Collection<Element> = Record<Key, Element>; type FromRecord<Element, Transformations> = Omit<Element, keyof Transformations> & { [Key in keyof Transformations]: Transformations[Key]; }; type Format<Element> = Collection<Element> | Element[]; type FormatId = `array` | `collection`; type Key = string; type Options<Element> = Element extends { id: string; } ? { base?: Mirror<Element>; extractKey?: Functions.ExtractKey<Element>; sort?: Functions.SortElements<Element>; } : { base?: Mirror<Element>; extractKey: Functions.ExtractKey<Element>; sort?: Functions.SortElements<Element>; }; namespace Functions { type ExtractKey<Element> = (record: Element) => Key; type SortElements<Element> = (a: Element, b: Element) => number; } } //# sourceMappingURL=index.d.ts.map