@sprucelabs/schema
Version:
Static and dynamic binding plus runtime validation and transformation to ensure your app is sound. 🤓
21 lines (20 loc) • 2.5 kB
TypeScript
import AbstractEntity from './AbstractEntity';
import { Schema, StaticSchemaPartialValues, SchemaFieldNames, SchemaNormalizeOptions, SchemaFieldValueType, SchemaValidateOptions, SchemaDefaultValues, SchemaGetValuesOptions, SchemaAllValues, SchemaNamedFieldsOptions, SchemaNamedField, SchemaGetDefaultValuesOptions, SchemaFieldNamesWithDefaultValue, StaticSchemaEntity, SchemaPublicValues, SchemaPublicFieldNames } from './schemas.static.types';
export default class StaticSchemaEntityImpl<S extends Schema> extends AbstractEntity implements StaticSchemaEntity<S> {
static enableDuplicateCheckWhenTracking: boolean;
protected schema: S;
private values;
private fields;
constructor(schema: S, values?: StaticSchemaPartialValues<S>);
private buildFields;
private normalizeValue;
get<F extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = true>(fieldName: F, options?: SchemaNormalizeOptions<S, CreateEntityInstances>): SchemaFieldValueType<S, F, CreateEntityInstances, true>;
set<F extends SchemaFieldNames<S>>(fieldName: F, value: SchemaFieldValueType<S, F>, options?: SchemaNormalizeOptions<S, false>): this;
isValid(options?: SchemaValidateOptions<S>): boolean;
private pluckExtraFields;
validate(options?: SchemaValidateOptions<S>): void;
getDefaultValues<F extends SchemaFieldNamesWithDefaultValue<S> = SchemaFieldNamesWithDefaultValue<S>, CreateEntityInstances extends boolean = true>(options?: SchemaGetDefaultValuesOptions<S, F, CreateEntityInstances>): Pick<SchemaDefaultValues<S, CreateEntityInstances>, F>;
getValues<F extends SchemaFieldNames<S> = SchemaFieldNames<S>, PF extends SchemaPublicFieldNames<S> = SchemaPublicFieldNames<S>, CreateEntityInstances extends boolean = true, IncludePrivateFields extends boolean = true, ShouldIncludeNullAndUndefinedFields extends boolean = true, ExcludeFields extends SchemaFieldNames<S> | undefined = undefined, PublicExcludeFields extends SchemaPublicFieldNames<S> | undefined = undefined>(options?: SchemaGetValuesOptions<S, F, PF, CreateEntityInstances, IncludePrivateFields, ShouldIncludeNullAndUndefinedFields, ExcludeFields, PublicExcludeFields>): IncludePrivateFields extends false ? Pick<SchemaPublicValues<S, CreateEntityInstances>, PF> : Pick<SchemaAllValues<S, CreateEntityInstances>, F>;
setValues(values: StaticSchemaPartialValues<S>): this;
getNamedFields<F extends SchemaFieldNames<S>>(options?: SchemaNamedFieldsOptions<S, F>): SchemaNamedField<S>[];
}