UNPKG

@javelin/core

Version:

This package is a general catch-all for stuff shared by many Javelin packages, including:

93 lines 4.04 kB
export declare const $kind: unique symbol; export declare const $flat: unique symbol; export declare type StringMap<$Type> = { [key: string]: $Type; }; export declare enum FieldKind { Number = 0, String = 1, Boolean = 2, Array = 3, Object = 4, Set = 5, Map = 6, Dynamic = 7 } export declare type Field = { [$kind]: FieldKind; }; export declare type Schema = { [key: string]: Field | Schema; }; export declare type FieldData<$Type> = Field & { get(t?: $Type): $Type; }; export declare type FieldNumber = FieldData<number> & { [$kind]: FieldKind.Number; }; export declare type FieldString = FieldData<string> & { [$kind]: FieldKind.String; }; export declare type FieldBoolean = FieldData<boolean> & { [$kind]: FieldKind.Boolean; }; export declare type FieldArray<$Type, $Props = unknown> = FieldData<$Type[]> & { [$kind]: FieldKind.Array; element: Schema | FieldOf<$Type, $Props>; }; export declare type FieldObject<$Type, $Props = unknown> = FieldData<StringMap<$Type>> & { [$kind]: FieldKind.Object; key: FieldOf<string>; element: Schema | FieldOf<$Type, $Props>; }; export declare type FieldSet<$Type, $Props = unknown> = FieldData<Set<$Type>> & { [$kind]: FieldKind.Set; element: Schema | FieldOf<$Type, $Props>; }; export declare type FieldMap<K, V, $Props = unknown> = FieldData<Map<K, V>> & { [$kind]: FieldKind.Map; key: FieldOf<K>; element: Schema | FieldOf<V, $Props>; }; export declare type FieldDynamic<$Type> = FieldData<$Type> & { [$kind]: FieldKind.Dynamic; }; export declare type FieldOf<$Type, $Props = unknown> = $Type extends number ? FieldNumber & $Props : $Type extends string ? FieldString & $Props : $Type extends boolean ? FieldBoolean & $Props : $Type extends (infer _)[] ? FieldArray<_, $Props> : $Type extends StringMap<infer _> ? FieldObject<_, $Props> : $Type extends Set<infer _> ? FieldSet<_, $Props> : $Type extends Map<infer K, infer V> ? FieldMap<K, V, $Props> : FieldData<$Type>; export declare type FieldGet<$Field extends Field> = $Field extends FieldNumber ? number : $Field extends FieldString ? string : $Field extends FieldBoolean ? boolean : $Field extends FieldArray<infer _> ? _[] : $Field extends FieldObject<infer _> ? StringMap<_> : $Field extends FieldSet<infer _> ? Set<_> : $Field extends FieldMap<infer K, infer V> ? Map<K, V> : $Field extends FieldDynamic<infer _> ? _ : unknown; export declare type FieldExtract<$Type> = $Type extends Field ? FieldGet<$Type> : $Type extends Schema ? { [K in keyof $Type]: FieldExtract<$Type[K]>; } : never; export declare type FieldPrimitive<$Props = unknown> = $Props & (FieldNumber | FieldString | FieldBoolean | FieldDynamic<unknown>); export declare type FieldComplex<$Props = unknown> = FieldArray<unknown, $Props> | FieldObject<unknown, $Props> | FieldSet<unknown, $Props> | FieldMap<unknown, unknown, $Props>; export declare type FieldAny = FieldPrimitive | FieldComplex; export declare type CollatedNodeBase = { id: number; hi: number; lo: number; deep: boolean; traverse: (FieldString | FieldNumber)[]; }; export declare type CollatedNodeSchema<$Props = unknown> = CollatedNodeBase & { keys: string[]; keysByFieldId: string[]; fields: CollatedNode<$Props>[]; fieldsByKey: { [key: string]: CollatedNode<$Props>; }; fieldIdsByKey: { [key: string]: number; }; }; export declare type CollatedNodeField<$Props> = (FieldComplex<$Props> | FieldPrimitive<$Props>) & CollatedNodeBase; export declare type CollatedNodeFieldComplex<$Props = unknown> = FieldComplex<$Props> & CollatedNodeBase; export declare type CollatedNode<$Props = unknown> = CollatedNodeSchema<$Props> | CollatedNodeField<$Props>; export declare type ModelFlat<$Props = unknown> = { [key: number]: { [f: number]: CollatedNode<$Props>; }; }; export declare type Model<$Props = unknown> = { [$flat]: ModelFlat<$Props>; [key: number]: CollatedNode<$Props>; }; //# sourceMappingURL=model.d.ts.map