@javelin/core
Version:
This package is a general catch-all for stuff shared by many Javelin packages, including:
93 lines • 4.04 kB
TypeScript
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