@sprucelabs/schema
Version:
Static and dynamic binding plus runtime validation and transformation to ensure your app is sound. 🤓
17 lines (16 loc) • 1.77 kB
TypeScript
import { FieldMap } from './.spruce/schemas/fields/fields.types';
import AbstractEntity from './AbstractEntity';
import { FieldDefinitionValueType, Field, FieldDefinition } from './fields/field.static.types';
import { DynamicSchemaAllValues, DynamicSchemaPartialValues, DynamicSchemaEntityByName, DynamicSchemaGetValuesOptions, DynamicSchemaNamedFieldsOptions, Schema, DynamicSchemaNamedField, SchemaNormalizeOptions, DynamicSchemaValidateOptions, DynamicSchemaNormalizeOptions } from './schemas.static.types';
export default class DynamicSchemaEntityImplementation<S extends Schema, OurField extends Field<any> = S['dynamicFieldSignature'] extends FieldDefinition ? FieldMap[S['dynamicFieldSignature']['type']] : any> extends AbstractEntity implements DynamicSchemaEntityByName<S, OurField> {
private values;
private dynamicField;
constructor(schema: S, values?: DynamicSchemaPartialValues<S>);
set<F extends string>(fieldName: F, value: FieldDefinitionValueType<OurField, false>, options?: DynamicSchemaNormalizeOptions<false>): this;
validate(options?: DynamicSchemaValidateOptions<string>): void;
isValid(options?: DynamicSchemaValidateOptions<string>): boolean;
get<F extends string, CreateEntityInstances extends boolean = true>(fieldName: F, options?: SchemaNormalizeOptions<S, CreateEntityInstances>): FieldDefinitionValueType<OurField, CreateEntityInstances>;
getValues<F extends string, CreateEntityInstances extends boolean = true>(options?: DynamicSchemaGetValuesOptions<S, F, CreateEntityInstances>): DynamicSchemaAllValues<S, CreateEntityInstances>;
setValues(values: DynamicSchemaPartialValues<S>): this;
getNamedFields<F extends string>(options?: DynamicSchemaNamedFieldsOptions<F>): DynamicSchemaNamedField[];
}