@sprucelabs/schema 28.8.1 → 29.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/.spruce/schemas/fields/fields.types.d.ts +2 -2
- package/build/StaticSchemaEntityImplementation.d.ts +1 -2
- package/build/StaticSchemaEntityImplementation.js +3 -4
- package/build/esm/.spruce/schemas/fields/fields.types.d.ts +2 -2
- package/build/esm/StaticSchemaEntityImplementation.d.ts +1 -2
- package/build/esm/StaticSchemaEntityImplementation.js +3 -4
- package/build/esm/fields/SchemaField.types.d.ts +1 -1
- package/build/esm/fields/field.static.types.d.ts +1 -1
- package/build/esm/schemas.static.types.d.ts +6 -6
- package/build/esm/utilities/normalizePartialSchemaValues.js +1 -1
- package/build/esm/utilities/normalizeSchemaValues.d.ts +2 -2
- package/build/fields/SchemaField.types.d.ts +1 -1
- package/build/fields/field.static.types.d.ts +1 -1
- package/build/schemas.static.types.d.ts +6 -6
- package/build/utilities/normalizePartialSchemaValues.js +1 -1
- package/build/utilities/normalizeSchemaValues.d.ts +2 -2
- package/package.json +1 -1
|
@@ -35,7 +35,7 @@ export interface FieldDefinitionMap {
|
|
|
35
35
|
email: EmailFieldDefinition;
|
|
36
36
|
image: ImageFieldDefinition;
|
|
37
37
|
}
|
|
38
|
-
export interface FieldValueTypeGeneratorMap<F extends FieldDefinitions, CreateEntityInstances extends boolean> {
|
|
38
|
+
export interface FieldValueTypeGeneratorMap<F extends FieldDefinitions, CreateEntityInstances extends boolean, ShouldIncludeNullAndUndefinedFieldsInSchemas extends boolean = false> {
|
|
39
39
|
boolean: BooleanFieldDefinition['value'];
|
|
40
40
|
select: SelectFieldValueTypeMapper<F extends SelectFieldDefinition ? F : SelectFieldDefinition>;
|
|
41
41
|
duration: DurationFieldDefinition['value'];
|
|
@@ -43,7 +43,7 @@ export interface FieldValueTypeGeneratorMap<F extends FieldDefinitions, CreateEn
|
|
|
43
43
|
text: TextFieldDefinition['value'];
|
|
44
44
|
address: AddressFieldDefinition['value'];
|
|
45
45
|
phone: PhoneFieldDefinition['value'];
|
|
46
|
-
schema: SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition ? F : SchemaFieldFieldDefinition, CreateEntityInstances>;
|
|
46
|
+
schema: SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition ? F : SchemaFieldFieldDefinition, CreateEntityInstances, ShouldIncludeNullAndUndefinedFieldsInSchemas>;
|
|
47
47
|
raw: RawFieldDefinition['value'];
|
|
48
48
|
number: NumberFieldDefinition['value'];
|
|
49
49
|
dateTime: DateTimeFieldDefinition['value'];
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import AbstractEntity from './AbstractEntity';
|
|
2
2
|
import { Schema, StaticSchemaPartialValues, SchemaFieldNames, SchemaNormalizeOptions, SchemaFieldValueType, SchemaValidateOptions, SchemaDefaultValues, SchemaGetValuesOptions, SchemaAllValues, SchemaNamedFieldsOptions, SchemaNamedField, SchemaGetDefaultValuesOptions, SchemaFieldNamesWithDefaultValue, StaticSchemaEntity, SchemaPublicValues, SchemaPublicFieldNames } from './schemas.static.types';
|
|
3
|
-
/** Universal schema class */
|
|
4
3
|
export default class StaticSchemaEntityImplementation<S extends Schema> extends AbstractEntity implements StaticSchemaEntity<S> {
|
|
5
4
|
static enableDuplicateCheckWhenTracking: boolean;
|
|
6
5
|
protected schema: S;
|
|
@@ -9,7 +8,7 @@ export default class StaticSchemaEntityImplementation<S extends Schema> extends
|
|
|
9
8
|
constructor(schema: S, values?: StaticSchemaPartialValues<S>);
|
|
10
9
|
private buildFields;
|
|
11
10
|
private normalizeValue;
|
|
12
|
-
get<F extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = true>(fieldName: F, options?: SchemaNormalizeOptions<S, CreateEntityInstances>): SchemaFieldValueType<S, F, CreateEntityInstances>;
|
|
11
|
+
get<F extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = true>(fieldName: F, options?: SchemaNormalizeOptions<S, CreateEntityInstances>): SchemaFieldValueType<S, F, CreateEntityInstances, true>;
|
|
13
12
|
set<F extends SchemaFieldNames<S>>(fieldName: F, value: SchemaFieldValueType<S, F>, options?: SchemaNormalizeOptions<S, false>): this;
|
|
14
13
|
isValid(options?: SchemaValidateOptions<S>): boolean;
|
|
15
14
|
private pluckExtraFields;
|
|
@@ -31,7 +31,6 @@ const SpruceError_1 = __importDefault(require("./errors/SpruceError"));
|
|
|
31
31
|
const FieldFactory_1 = __importDefault(require("./factories/FieldFactory"));
|
|
32
32
|
const cloneDeepPreservingInstances_1 = __importDefault(require("./utilities/cloneDeepPreservingInstances"));
|
|
33
33
|
const normalizeFieldValue_1 = __importStar(require("./utilities/normalizeFieldValue"));
|
|
34
|
-
/** Universal schema class */
|
|
35
34
|
class StaticSchemaEntityImplementation extends AbstractEntity_1.default {
|
|
36
35
|
constructor(schema, values) {
|
|
37
36
|
super(schema);
|
|
@@ -158,11 +157,11 @@ class StaticSchemaEntityImplementation extends AbstractEntity_1.default {
|
|
|
158
157
|
}
|
|
159
158
|
getValues(options) {
|
|
160
159
|
const values = {};
|
|
161
|
-
const { fields = Object.keys(this.fields), shouldIncludePrivateFields: includePrivateFields = true,
|
|
160
|
+
const { fields = Object.keys(this.fields), shouldIncludePrivateFields: includePrivateFields = true, shouldIncludeNullAndUndefinedFields = true, } = options || {};
|
|
162
161
|
this.getNamedFields().forEach((namedField) => {
|
|
163
162
|
const { name, field } = namedField;
|
|
164
|
-
const shouldSkipBecauseNotSet =
|
|
165
|
-
const shouldSkipBecauseUndefinedOrNull =
|
|
163
|
+
const shouldSkipBecauseNotSet = !shouldIncludeNullAndUndefinedFields && !(name in this.values);
|
|
164
|
+
const shouldSkipBecauseUndefinedOrNull = !shouldIncludeNullAndUndefinedFields &&
|
|
166
165
|
(this.values[name] === undefined || this.values[name] === null);
|
|
167
166
|
if (shouldSkipBecauseNotSet || shouldSkipBecauseUndefinedOrNull) {
|
|
168
167
|
return;
|
|
@@ -35,7 +35,7 @@ export interface FieldDefinitionMap {
|
|
|
35
35
|
email: EmailFieldDefinition;
|
|
36
36
|
image: ImageFieldDefinition;
|
|
37
37
|
}
|
|
38
|
-
export interface FieldValueTypeGeneratorMap<F extends FieldDefinitions, CreateEntityInstances extends boolean> {
|
|
38
|
+
export interface FieldValueTypeGeneratorMap<F extends FieldDefinitions, CreateEntityInstances extends boolean, ShouldIncludeNullAndUndefinedFieldsInSchemas extends boolean = false> {
|
|
39
39
|
boolean: BooleanFieldDefinition['value'];
|
|
40
40
|
select: SelectFieldValueTypeMapper<F extends SelectFieldDefinition ? F : SelectFieldDefinition>;
|
|
41
41
|
duration: DurationFieldDefinition['value'];
|
|
@@ -43,7 +43,7 @@ export interface FieldValueTypeGeneratorMap<F extends FieldDefinitions, CreateEn
|
|
|
43
43
|
text: TextFieldDefinition['value'];
|
|
44
44
|
address: AddressFieldDefinition['value'];
|
|
45
45
|
phone: PhoneFieldDefinition['value'];
|
|
46
|
-
schema: SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition ? F : SchemaFieldFieldDefinition, CreateEntityInstances>;
|
|
46
|
+
schema: SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition ? F : SchemaFieldFieldDefinition, CreateEntityInstances, ShouldIncludeNullAndUndefinedFieldsInSchemas>;
|
|
47
47
|
raw: RawFieldDefinition['value'];
|
|
48
48
|
number: NumberFieldDefinition['value'];
|
|
49
49
|
dateTime: DateTimeFieldDefinition['value'];
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import AbstractEntity from './AbstractEntity';
|
|
2
2
|
import { Schema, StaticSchemaPartialValues, SchemaFieldNames, SchemaNormalizeOptions, SchemaFieldValueType, SchemaValidateOptions, SchemaDefaultValues, SchemaGetValuesOptions, SchemaAllValues, SchemaNamedFieldsOptions, SchemaNamedField, SchemaGetDefaultValuesOptions, SchemaFieldNamesWithDefaultValue, StaticSchemaEntity, SchemaPublicValues, SchemaPublicFieldNames } from './schemas.static.types';
|
|
3
|
-
/** Universal schema class */
|
|
4
3
|
export default class StaticSchemaEntityImplementation<S extends Schema> extends AbstractEntity implements StaticSchemaEntity<S> {
|
|
5
4
|
static enableDuplicateCheckWhenTracking: boolean;
|
|
6
5
|
protected schema: S;
|
|
@@ -9,7 +8,7 @@ export default class StaticSchemaEntityImplementation<S extends Schema> extends
|
|
|
9
8
|
constructor(schema: S, values?: StaticSchemaPartialValues<S>);
|
|
10
9
|
private buildFields;
|
|
11
10
|
private normalizeValue;
|
|
12
|
-
get<F extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = true>(fieldName: F, options?: SchemaNormalizeOptions<S, CreateEntityInstances>): SchemaFieldValueType<S, F, CreateEntityInstances>;
|
|
11
|
+
get<F extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = true>(fieldName: F, options?: SchemaNormalizeOptions<S, CreateEntityInstances>): SchemaFieldValueType<S, F, CreateEntityInstances, true>;
|
|
13
12
|
set<F extends SchemaFieldNames<S>>(fieldName: F, value: SchemaFieldValueType<S, F>, options?: SchemaNormalizeOptions<S, false>): this;
|
|
14
13
|
isValid(options?: SchemaValidateOptions<S>): boolean;
|
|
15
14
|
private pluckExtraFields;
|
|
@@ -3,7 +3,6 @@ import SpruceError from './errors/SpruceError.js';
|
|
|
3
3
|
import FieldFactory from './factories/FieldFactory.js';
|
|
4
4
|
import cloneDeepPreservingInstances from './utilities/cloneDeepPreservingInstances.js';
|
|
5
5
|
import normalizeFieldValue, { normalizeValueToArray, } from './utilities/normalizeFieldValue.js';
|
|
6
|
-
/** Universal schema class */
|
|
7
6
|
class StaticSchemaEntityImplementation extends AbstractEntity {
|
|
8
7
|
constructor(schema, values) {
|
|
9
8
|
super(schema);
|
|
@@ -130,11 +129,11 @@ class StaticSchemaEntityImplementation extends AbstractEntity {
|
|
|
130
129
|
}
|
|
131
130
|
getValues(options) {
|
|
132
131
|
const values = {};
|
|
133
|
-
const { fields = Object.keys(this.fields), shouldIncludePrivateFields: includePrivateFields = true,
|
|
132
|
+
const { fields = Object.keys(this.fields), shouldIncludePrivateFields: includePrivateFields = true, shouldIncludeNullAndUndefinedFields = true, } = options || {};
|
|
134
133
|
this.getNamedFields().forEach((namedField) => {
|
|
135
134
|
const { name, field } = namedField;
|
|
136
|
-
const shouldSkipBecauseNotSet =
|
|
137
|
-
const shouldSkipBecauseUndefinedOrNull =
|
|
135
|
+
const shouldSkipBecauseNotSet = !shouldIncludeNullAndUndefinedFields && !(name in this.values);
|
|
136
|
+
const shouldSkipBecauseUndefinedOrNull = !shouldIncludeNullAndUndefinedFields &&
|
|
138
137
|
(this.values[name] === undefined || this.values[name] === null);
|
|
139
138
|
if (shouldSkipBecauseNotSet || shouldSkipBecauseUndefinedOrNull) {
|
|
140
139
|
return;
|
|
@@ -22,7 +22,7 @@ export type SchemaFieldUnion<S extends Array<Schema>, CreateEntityInstances exte
|
|
|
22
22
|
values: SchemaValues<S[K]>;
|
|
23
23
|
} : any;
|
|
24
24
|
};
|
|
25
|
-
export type SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition, CreateEntityInstances extends boolean = false> = F['options']['schemas'] extends Array<Schema> ? IsArrayNoUnpack<SchemaFieldUnion<F['options']['schemas'], CreateEntityInstances>[number], F['isArray']> : F['options']['schema'] extends Schema ? CreateEntityInstances extends true ? IsArray<StaticSchemaEntity<F['options']['schema']>, F['isArray']> : IsArray<SchemaValues<F['options']['schema']>, F['isArray']> : any;
|
|
25
|
+
export type SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition, CreateEntityInstances extends boolean = false, ShouldIncludeNullAndUndefinedFields extends boolean = false> = F['options']['schemas'] extends Array<Schema> ? IsArrayNoUnpack<SchemaFieldUnion<F['options']['schemas'], CreateEntityInstances>[number], F['isArray']> : F['options']['schema'] extends Schema ? CreateEntityInstances extends true ? IsArray<StaticSchemaEntity<F['options']['schema']>, F['isArray']> : IsArray<SchemaValues<F['options']['schema'], false, true, ShouldIncludeNullAndUndefinedFields>, F['isArray']> : any;
|
|
26
26
|
export type SchemaFieldFieldDefinition = FieldDefinition<Record<string, any>, Record<string, any>, SchemaFieldValueUnion[], SchemaFieldValueUnion[]> & {
|
|
27
27
|
/** * .Schema go team! */
|
|
28
28
|
type: 'schema';
|
|
@@ -45,7 +45,7 @@ export type FieldDefinition<Value = any, DefaultValue = Value, ArrayValue = Valu
|
|
|
45
45
|
defaultValue?: DefaultValue | null;
|
|
46
46
|
value?: Value | null;
|
|
47
47
|
});
|
|
48
|
-
export type FieldDefinitionValueType<F extends FieldDefinitions, CreateEntityInstances extends boolean = false> = F extends FieldDefinitions ? IsRequired<IsArray<NonNullable<FieldValueTypeGeneratorMap<F, CreateEntityInstances>[F['type']]>, F['isArray']>, F['isRequired']> : any;
|
|
48
|
+
export type FieldDefinitionValueType<F extends FieldDefinitions, CreateEntityInstances extends boolean = false, ShouldIncludeNullAndUndefinedFields extends boolean = false> = F extends FieldDefinitions ? IsRequired<IsArray<NonNullable<FieldValueTypeGeneratorMap<F, CreateEntityInstances, ShouldIncludeNullAndUndefinedFields>[F['type']]>, F['isArray']>, F['isRequired']> : any;
|
|
49
49
|
export interface Field<F extends FieldDefinitions> {
|
|
50
50
|
readonly definition: F;
|
|
51
51
|
readonly type: F['type'];
|
|
@@ -28,6 +28,7 @@ export interface StaticSchemaEntity<S extends Schema> extends SchemaEntity {
|
|
|
28
28
|
validate(options?: SchemaValidateOptions<S>): void;
|
|
29
29
|
isValid(options?: SchemaValidateOptions<S>): boolean;
|
|
30
30
|
}
|
|
31
|
+
export type SchemaValues<S extends Schema, CreateEntityInstances extends boolean = false, IncludePrivateFields extends boolean = true, ShouldIncludeNullAndUndefinedFields extends boolean = false, F extends SchemaFieldNames<S> = SchemaFieldNames<S>, PF extends SchemaPublicFieldNames<S> = SchemaPublicFieldNames<S>> = IsDynamicSchema<S> extends true ? DynamicSchemaAllValues<S> : IncludePrivateFields extends false ? ShouldIncludeNullAndUndefinedFields extends true ? Pick<SchemaAllValues<S, CreateEntityInstances>, PF> : Pick<SchemaStaticValues<S, CreateEntityInstances>, PF> : ShouldIncludeNullAndUndefinedFields extends true ? Pick<SchemaAllValues<S, CreateEntityInstances>, F> : Pick<SchemaStaticValues<S, CreateEntityInstances>, F>;
|
|
31
32
|
export interface DynamicSchemaEntityByName<ISchema extends Schema, OurField extends Field<any> = ISchema['dynamicFieldSignature'] extends FieldDefinitions ? FieldMap[ISchema['dynamicFieldSignature']['type']] : any> extends SchemaEntity, Omit<StaticSchemaEntity<ISchema>, 'get' | 'set' | 'getValues' | 'setValues' | 'getNamedFields' | 'schemaId' | 'namespace' | 'name' | 'version' | 'description'> {
|
|
32
33
|
get<F extends string, CreateEntityInstances extends boolean = true>(fieldName: F, options?: DynamicSchemaNormalizeOptions<CreateEntityInstances>): FieldDefinitionValueType<OurField, CreateEntityInstances>;
|
|
33
34
|
set<F extends string>(fieldName: F, value: FieldDefinitionValueType<OurField>, options?: DynamicSchemaNormalizeOptions<false>): this;
|
|
@@ -79,7 +80,7 @@ export type DynamicSchemaPartialValues<S extends Schema, CreateEntityInstances e
|
|
|
79
80
|
[dynamicField: string]: S['dynamicFieldSignature'] extends FieldDefinitions ? FieldDefinitionValueType<S['dynamicFieldSignature'], CreateEntityInstances> | undefined | null : never;
|
|
80
81
|
}>;
|
|
81
82
|
export type SchemaStaticValues<T extends Schema, CreateEntityInstances extends boolean = false, K extends SchemaOptionalFieldNames<T> = SchemaOptionalFieldNames<T>, V extends SchemaAllValues<T, CreateEntityInstances> = SchemaAllValues<T, CreateEntityInstances>> = Omit<V, K> & Partial<Pick<V, K>>;
|
|
82
|
-
export type
|
|
83
|
+
export type SchemaValues_OLD<S extends Schema, CreateEntityInstances extends boolean = false> = IsDynamicSchema<S> extends true ? DynamicSchemaAllValues<S> : SchemaStaticValues<S, CreateEntityInstances>;
|
|
83
84
|
export type IsDynamicSchema<S extends Schema> = S['dynamicFieldSignature'] extends FieldDefinitions ? true : false;
|
|
84
85
|
export type SchemaDefaultValues<S extends Schema, CreateEntityInstances extends boolean = false, K extends SchemaFieldNamesWithDefaultValue<S> = SchemaFieldNamesWithDefaultValue<S>, V extends SchemaAllValues<S, CreateEntityInstances> = SchemaAllValues<S, CreateEntityInstances>> = {
|
|
85
86
|
[F in K]: NonNullable<V[F]>;
|
|
@@ -94,7 +95,7 @@ export type SchemaRequiredFieldNames<T extends Schema> = {
|
|
|
94
95
|
export type SchemaFieldNamesWithDefaultValue<T extends Schema> = {
|
|
95
96
|
[K in SchemaFieldNames<T>]: T['fields'][K] extends FieldDefinitions ? T['fields'][K]['defaultValue'] extends Required<T['fields'][K]['defaultValue']> ? K : never : never;
|
|
96
97
|
}[SchemaFieldNames<T>];
|
|
97
|
-
export type SchemaFieldValueType<S extends Schema, K extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = false> = S['fields'][K] extends FieldDefinitions ? FieldDefinitionValueType<S['fields'][K], CreateEntityInstances> : never;
|
|
98
|
+
export type SchemaFieldValueType<S extends Schema, K extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = false, ShouldIncludeNullAndUndefinedFieldsInSchemas extends boolean = false> = S['fields'][K] extends FieldDefinitions ? FieldDefinitionValueType<S['fields'][K], CreateEntityInstances, ShouldIncludeNullAndUndefinedFieldsInSchemas> : never;
|
|
98
99
|
export type SchemaFieldNames<T extends Schema> = Extract<keyof T['fields'], string>;
|
|
99
100
|
export type SchemaPublicFieldNames<S extends Schema> = {
|
|
100
101
|
[K in SchemaFieldNames<S>]: S['fields'][K] extends FieldDefinitions ? S['fields'][K]['isPrivate'] extends true ? never : K : never;
|
|
@@ -116,17 +117,16 @@ export interface SchemaNormalizeFieldValueOptions<CreateEntityInstances extends
|
|
|
116
117
|
/** Should I create schema instances for schema fields (defaults to true) */
|
|
117
118
|
shouldCreateEntityInstances?: CreateEntityInstances;
|
|
118
119
|
}
|
|
119
|
-
export interface SchemaNormalizeOptions<S extends Schema, CreateEntityInstances extends boolean> extends SchemaNormalizeFieldValueOptions<CreateEntityInstances> {
|
|
120
|
+
export interface SchemaNormalizeOptions<S extends Schema, CreateEntityInstances extends boolean, ShouldIncludeNullAndUndefinedFields extends boolean = true> extends SchemaNormalizeFieldValueOptions<CreateEntityInstances> {
|
|
120
121
|
/** Options passed to each field that conforms to the field definition's options */
|
|
121
122
|
byField?: {
|
|
122
123
|
[K in SchemaFieldNames<S>]?: S['fields'][K] extends FieldDefinition ? Partial<FieldDefinitionMap[S['fields'][K]['type']]['options']> : never;
|
|
123
124
|
};
|
|
124
|
-
|
|
125
|
-
shouldStripUndefinedAndNullValues?: boolean;
|
|
125
|
+
shouldIncludeNullAndUndefinedFields?: ShouldIncludeNullAndUndefinedFields;
|
|
126
126
|
}
|
|
127
127
|
export interface DynamicSchemaNormalizeOptions<CreateEntityInstances extends boolean> extends SchemaNormalizeFieldValueOptions<CreateEntityInstances> {
|
|
128
128
|
}
|
|
129
|
-
export type SchemaGetValuesOptions<T extends Schema, F extends SchemaFieldNames<T>, PF extends SchemaPublicFieldNames<T>, CreateEntityInstances extends boolean, IncludePrivateFields extends boolean> = SchemaNormalizeOptions<T, CreateEntityInstances> & (IncludePrivateFields extends false ? {
|
|
129
|
+
export type SchemaGetValuesOptions<T extends Schema, F extends SchemaFieldNames<T>, PF extends SchemaPublicFieldNames<T>, CreateEntityInstances extends boolean, IncludePrivateFields extends boolean, ShouldIncludeNullAndUndefinedFields extends boolean = true> = SchemaNormalizeOptions<T, CreateEntityInstances, ShouldIncludeNullAndUndefinedFields> & (IncludePrivateFields extends false ? {
|
|
130
130
|
shouldIncludePrivateFields: IncludePrivateFields;
|
|
131
131
|
fields?: PF[];
|
|
132
132
|
} : {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import normalizeSchemaValues from './normalizeSchemaValues.js';
|
|
2
2
|
export default function normalizePartialSchemaValues(schema, values, options) {
|
|
3
|
-
const normalized = normalizeSchemaValues(schema, values, Object.assign(Object.assign({}, options), {
|
|
3
|
+
const normalized = normalizeSchemaValues(schema, values, Object.assign(Object.assign({}, options), { shouldIncludeNullAndUndefinedFields: false }));
|
|
4
4
|
return normalized;
|
|
5
5
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Schema, SchemaPartialValues, SchemaGetValuesOptions, SchemaFieldNames, SchemaPublicFieldNames, IsDynamicSchema, DynamicSchemaAllValues,
|
|
2
|
-
export default function normalizeSchemaValues<S extends Schema, F extends SchemaFieldNames<S> = SchemaFieldNames<S>, PF extends SchemaPublicFieldNames<S> = SchemaPublicFieldNames<S>, CreateEntityInstances extends boolean = false, IncludePrivateFields extends boolean = true, IsDynamic extends boolean = IsDynamicSchema<S
|
|
1
|
+
import { Schema, SchemaPartialValues, SchemaGetValuesOptions, SchemaFieldNames, SchemaPublicFieldNames, IsDynamicSchema, DynamicSchemaAllValues, SchemaValues } from '../schemas.static.types';
|
|
2
|
+
export default function normalizeSchemaValues<S extends Schema, F extends SchemaFieldNames<S> = SchemaFieldNames<S>, PF extends SchemaPublicFieldNames<S> = SchemaPublicFieldNames<S>, CreateEntityInstances extends boolean = false, IncludePrivateFields extends boolean = true, IsDynamic extends boolean = IsDynamicSchema<S>, ShouldIncludeNullAndUndefinedFields extends boolean = true>(schema: S, values: SchemaPartialValues<S>, options?: SchemaGetValuesOptions<S, F, PF, CreateEntityInstances, IncludePrivateFields, ShouldIncludeNullAndUndefinedFields>): IsDynamic extends true ? DynamicSchemaAllValues<S, CreateEntityInstances> : IncludePrivateFields extends true ? Pick<SchemaValues<S, CreateEntityInstances, true, ShouldIncludeNullAndUndefinedFields>, F> : Pick<SchemaValues<S, CreateEntityInstances, true, ShouldIncludeNullAndUndefinedFields>, PF>;
|
|
@@ -22,7 +22,7 @@ export type SchemaFieldUnion<S extends Array<Schema>, CreateEntityInstances exte
|
|
|
22
22
|
values: SchemaValues<S[K]>;
|
|
23
23
|
} : any;
|
|
24
24
|
};
|
|
25
|
-
export type SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition, CreateEntityInstances extends boolean = false> = F['options']['schemas'] extends Array<Schema> ? IsArrayNoUnpack<SchemaFieldUnion<F['options']['schemas'], CreateEntityInstances>[number], F['isArray']> : F['options']['schema'] extends Schema ? CreateEntityInstances extends true ? IsArray<StaticSchemaEntity<F['options']['schema']>, F['isArray']> : IsArray<SchemaValues<F['options']['schema']>, F['isArray']> : any;
|
|
25
|
+
export type SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition, CreateEntityInstances extends boolean = false, ShouldIncludeNullAndUndefinedFields extends boolean = false> = F['options']['schemas'] extends Array<Schema> ? IsArrayNoUnpack<SchemaFieldUnion<F['options']['schemas'], CreateEntityInstances>[number], F['isArray']> : F['options']['schema'] extends Schema ? CreateEntityInstances extends true ? IsArray<StaticSchemaEntity<F['options']['schema']>, F['isArray']> : IsArray<SchemaValues<F['options']['schema'], false, true, ShouldIncludeNullAndUndefinedFields>, F['isArray']> : any;
|
|
26
26
|
export type SchemaFieldFieldDefinition = FieldDefinition<Record<string, any>, Record<string, any>, SchemaFieldValueUnion[], SchemaFieldValueUnion[]> & {
|
|
27
27
|
/** * .Schema go team! */
|
|
28
28
|
type: 'schema';
|
|
@@ -45,7 +45,7 @@ export type FieldDefinition<Value = any, DefaultValue = Value, ArrayValue = Valu
|
|
|
45
45
|
defaultValue?: DefaultValue | null;
|
|
46
46
|
value?: Value | null;
|
|
47
47
|
});
|
|
48
|
-
export type FieldDefinitionValueType<F extends FieldDefinitions, CreateEntityInstances extends boolean = false> = F extends FieldDefinitions ? IsRequired<IsArray<NonNullable<FieldValueTypeGeneratorMap<F, CreateEntityInstances>[F['type']]>, F['isArray']>, F['isRequired']> : any;
|
|
48
|
+
export type FieldDefinitionValueType<F extends FieldDefinitions, CreateEntityInstances extends boolean = false, ShouldIncludeNullAndUndefinedFields extends boolean = false> = F extends FieldDefinitions ? IsRequired<IsArray<NonNullable<FieldValueTypeGeneratorMap<F, CreateEntityInstances, ShouldIncludeNullAndUndefinedFields>[F['type']]>, F['isArray']>, F['isRequired']> : any;
|
|
49
49
|
export interface Field<F extends FieldDefinitions> {
|
|
50
50
|
readonly definition: F;
|
|
51
51
|
readonly type: F['type'];
|
|
@@ -28,6 +28,7 @@ export interface StaticSchemaEntity<S extends Schema> extends SchemaEntity {
|
|
|
28
28
|
validate(options?: SchemaValidateOptions<S>): void;
|
|
29
29
|
isValid(options?: SchemaValidateOptions<S>): boolean;
|
|
30
30
|
}
|
|
31
|
+
export type SchemaValues<S extends Schema, CreateEntityInstances extends boolean = false, IncludePrivateFields extends boolean = true, ShouldIncludeNullAndUndefinedFields extends boolean = false, F extends SchemaFieldNames<S> = SchemaFieldNames<S>, PF extends SchemaPublicFieldNames<S> = SchemaPublicFieldNames<S>> = IsDynamicSchema<S> extends true ? DynamicSchemaAllValues<S> : IncludePrivateFields extends false ? ShouldIncludeNullAndUndefinedFields extends true ? Pick<SchemaAllValues<S, CreateEntityInstances>, PF> : Pick<SchemaStaticValues<S, CreateEntityInstances>, PF> : ShouldIncludeNullAndUndefinedFields extends true ? Pick<SchemaAllValues<S, CreateEntityInstances>, F> : Pick<SchemaStaticValues<S, CreateEntityInstances>, F>;
|
|
31
32
|
export interface DynamicSchemaEntityByName<ISchema extends Schema, OurField extends Field<any> = ISchema['dynamicFieldSignature'] extends FieldDefinitions ? FieldMap[ISchema['dynamicFieldSignature']['type']] : any> extends SchemaEntity, Omit<StaticSchemaEntity<ISchema>, 'get' | 'set' | 'getValues' | 'setValues' | 'getNamedFields' | 'schemaId' | 'namespace' | 'name' | 'version' | 'description'> {
|
|
32
33
|
get<F extends string, CreateEntityInstances extends boolean = true>(fieldName: F, options?: DynamicSchemaNormalizeOptions<CreateEntityInstances>): FieldDefinitionValueType<OurField, CreateEntityInstances>;
|
|
33
34
|
set<F extends string>(fieldName: F, value: FieldDefinitionValueType<OurField>, options?: DynamicSchemaNormalizeOptions<false>): this;
|
|
@@ -79,7 +80,7 @@ export type DynamicSchemaPartialValues<S extends Schema, CreateEntityInstances e
|
|
|
79
80
|
[dynamicField: string]: S['dynamicFieldSignature'] extends FieldDefinitions ? FieldDefinitionValueType<S['dynamicFieldSignature'], CreateEntityInstances> | undefined | null : never;
|
|
80
81
|
}>;
|
|
81
82
|
export type SchemaStaticValues<T extends Schema, CreateEntityInstances extends boolean = false, K extends SchemaOptionalFieldNames<T> = SchemaOptionalFieldNames<T>, V extends SchemaAllValues<T, CreateEntityInstances> = SchemaAllValues<T, CreateEntityInstances>> = Omit<V, K> & Partial<Pick<V, K>>;
|
|
82
|
-
export type
|
|
83
|
+
export type SchemaValues_OLD<S extends Schema, CreateEntityInstances extends boolean = false> = IsDynamicSchema<S> extends true ? DynamicSchemaAllValues<S> : SchemaStaticValues<S, CreateEntityInstances>;
|
|
83
84
|
export type IsDynamicSchema<S extends Schema> = S['dynamicFieldSignature'] extends FieldDefinitions ? true : false;
|
|
84
85
|
export type SchemaDefaultValues<S extends Schema, CreateEntityInstances extends boolean = false, K extends SchemaFieldNamesWithDefaultValue<S> = SchemaFieldNamesWithDefaultValue<S>, V extends SchemaAllValues<S, CreateEntityInstances> = SchemaAllValues<S, CreateEntityInstances>> = {
|
|
85
86
|
[F in K]: NonNullable<V[F]>;
|
|
@@ -94,7 +95,7 @@ export type SchemaRequiredFieldNames<T extends Schema> = {
|
|
|
94
95
|
export type SchemaFieldNamesWithDefaultValue<T extends Schema> = {
|
|
95
96
|
[K in SchemaFieldNames<T>]: T['fields'][K] extends FieldDefinitions ? T['fields'][K]['defaultValue'] extends Required<T['fields'][K]['defaultValue']> ? K : never : never;
|
|
96
97
|
}[SchemaFieldNames<T>];
|
|
97
|
-
export type SchemaFieldValueType<S extends Schema, K extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = false> = S['fields'][K] extends FieldDefinitions ? FieldDefinitionValueType<S['fields'][K], CreateEntityInstances> : never;
|
|
98
|
+
export type SchemaFieldValueType<S extends Schema, K extends SchemaFieldNames<S>, CreateEntityInstances extends boolean = false, ShouldIncludeNullAndUndefinedFieldsInSchemas extends boolean = false> = S['fields'][K] extends FieldDefinitions ? FieldDefinitionValueType<S['fields'][K], CreateEntityInstances, ShouldIncludeNullAndUndefinedFieldsInSchemas> : never;
|
|
98
99
|
export type SchemaFieldNames<T extends Schema> = Extract<keyof T['fields'], string>;
|
|
99
100
|
export type SchemaPublicFieldNames<S extends Schema> = {
|
|
100
101
|
[K in SchemaFieldNames<S>]: S['fields'][K] extends FieldDefinitions ? S['fields'][K]['isPrivate'] extends true ? never : K : never;
|
|
@@ -116,17 +117,16 @@ export interface SchemaNormalizeFieldValueOptions<CreateEntityInstances extends
|
|
|
116
117
|
/** Should I create schema instances for schema fields (defaults to true) */
|
|
117
118
|
shouldCreateEntityInstances?: CreateEntityInstances;
|
|
118
119
|
}
|
|
119
|
-
export interface SchemaNormalizeOptions<S extends Schema, CreateEntityInstances extends boolean> extends SchemaNormalizeFieldValueOptions<CreateEntityInstances> {
|
|
120
|
+
export interface SchemaNormalizeOptions<S extends Schema, CreateEntityInstances extends boolean, ShouldIncludeNullAndUndefinedFields extends boolean = true> extends SchemaNormalizeFieldValueOptions<CreateEntityInstances> {
|
|
120
121
|
/** Options passed to each field that conforms to the field definition's options */
|
|
121
122
|
byField?: {
|
|
122
123
|
[K in SchemaFieldNames<S>]?: S['fields'][K] extends FieldDefinition ? Partial<FieldDefinitionMap[S['fields'][K]['type']]['options']> : never;
|
|
123
124
|
};
|
|
124
|
-
|
|
125
|
-
shouldStripUndefinedAndNullValues?: boolean;
|
|
125
|
+
shouldIncludeNullAndUndefinedFields?: ShouldIncludeNullAndUndefinedFields;
|
|
126
126
|
}
|
|
127
127
|
export interface DynamicSchemaNormalizeOptions<CreateEntityInstances extends boolean> extends SchemaNormalizeFieldValueOptions<CreateEntityInstances> {
|
|
128
128
|
}
|
|
129
|
-
export type SchemaGetValuesOptions<T extends Schema, F extends SchemaFieldNames<T>, PF extends SchemaPublicFieldNames<T>, CreateEntityInstances extends boolean, IncludePrivateFields extends boolean> = SchemaNormalizeOptions<T, CreateEntityInstances> & (IncludePrivateFields extends false ? {
|
|
129
|
+
export type SchemaGetValuesOptions<T extends Schema, F extends SchemaFieldNames<T>, PF extends SchemaPublicFieldNames<T>, CreateEntityInstances extends boolean, IncludePrivateFields extends boolean, ShouldIncludeNullAndUndefinedFields extends boolean = true> = SchemaNormalizeOptions<T, CreateEntityInstances, ShouldIncludeNullAndUndefinedFields> & (IncludePrivateFields extends false ? {
|
|
130
130
|
shouldIncludePrivateFields: IncludePrivateFields;
|
|
131
131
|
fields?: PF[];
|
|
132
132
|
} : {
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const normalizeSchemaValues_1 = __importDefault(require("./normalizeSchemaValues"));
|
|
7
7
|
function normalizePartialSchemaValues(schema, values, options) {
|
|
8
|
-
const normalized = (0, normalizeSchemaValues_1.default)(schema, values, Object.assign(Object.assign({}, options), {
|
|
8
|
+
const normalized = (0, normalizeSchemaValues_1.default)(schema, values, Object.assign(Object.assign({}, options), { shouldIncludeNullAndUndefinedFields: false }));
|
|
9
9
|
return normalized;
|
|
10
10
|
}
|
|
11
11
|
exports.default = normalizePartialSchemaValues;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Schema, SchemaPartialValues, SchemaGetValuesOptions, SchemaFieldNames, SchemaPublicFieldNames, IsDynamicSchema, DynamicSchemaAllValues,
|
|
2
|
-
export default function normalizeSchemaValues<S extends Schema, F extends SchemaFieldNames<S> = SchemaFieldNames<S>, PF extends SchemaPublicFieldNames<S> = SchemaPublicFieldNames<S>, CreateEntityInstances extends boolean = false, IncludePrivateFields extends boolean = true, IsDynamic extends boolean = IsDynamicSchema<S
|
|
1
|
+
import { Schema, SchemaPartialValues, SchemaGetValuesOptions, SchemaFieldNames, SchemaPublicFieldNames, IsDynamicSchema, DynamicSchemaAllValues, SchemaValues } from '../schemas.static.types';
|
|
2
|
+
export default function normalizeSchemaValues<S extends Schema, F extends SchemaFieldNames<S> = SchemaFieldNames<S>, PF extends SchemaPublicFieldNames<S> = SchemaPublicFieldNames<S>, CreateEntityInstances extends boolean = false, IncludePrivateFields extends boolean = true, IsDynamic extends boolean = IsDynamicSchema<S>, ShouldIncludeNullAndUndefinedFields extends boolean = true>(schema: S, values: SchemaPartialValues<S>, options?: SchemaGetValuesOptions<S, F, PF, CreateEntityInstances, IncludePrivateFields, ShouldIncludeNullAndUndefinedFields>): IsDynamic extends true ? DynamicSchemaAllValues<S, CreateEntityInstances> : IncludePrivateFields extends true ? Pick<SchemaValues<S, CreateEntityInstances, true, ShouldIncludeNullAndUndefinedFields>, F> : Pick<SchemaValues<S, CreateEntityInstances, true, ShouldIncludeNullAndUndefinedFields>, PF>;
|