@tstdl/base 0.91.0-beta9 → 0.91.1
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/enumerable/async-enumerable.d.ts +5 -1
- package/enumerable/async-enumerable.js +8 -8
- package/enumerable/enumerable.d.ts +5 -1
- package/enumerable/enumerable.js +8 -8
- package/intl/number-parser.d.ts +1 -1
- package/object-storage/s3/s3.object-storage-provider.d.ts +6 -6
- package/object-storage/s3/s3.object-storage-provider.js +6 -6
- package/package.json +5 -5
- package/schema/schema.d.ts +3 -2
- package/schema/schemas/array.js +10 -8
- package/schema/schemas/object.d.ts +19 -11
- package/schema/schemas/optional.d.ts +3 -2
- package/utils/async-iterable-helpers/group-single.d.ts +2 -1
- package/utils/async-iterable-helpers/group-single.js +2 -2
- package/utils/async-iterable-helpers/group-to-map.d.ts +2 -1
- package/utils/async-iterable-helpers/group-to-map.js +44 -17
- package/utils/async-iterable-helpers/group-to-single-map.d.ts +2 -1
- package/utils/async-iterable-helpers/group-to-single-map.js +44 -17
- package/utils/async-iterable-helpers/group.d.ts +2 -1
- package/utils/async-iterable-helpers/group.js +2 -2
- package/utils/async-iterable-helpers/types.d.ts +3 -0
- package/utils/iterable-helpers/group-single.d.ts +2 -1
- package/utils/iterable-helpers/group-single.js +2 -2
- package/utils/iterable-helpers/group-to-map.d.ts +2 -1
- package/utils/iterable-helpers/group-to-map.js +21 -7
- package/utils/iterable-helpers/group-to-single-map.d.ts +2 -1
- package/utils/iterable-helpers/group-to-single-map.js +21 -7
- package/utils/iterable-helpers/group.d.ts +2 -1
- package/utils/iterable-helpers/group.js +2 -2
- package/utils/iterable-helpers/types.d.ts +3 -0
- package/schema-old/array-constraints/index.d.ts +0 -2
- package/schema-old/array-constraints/index.js +0 -2
- package/schema-old/array-constraints/maximum-length.d.ts +0 -11
- package/schema-old/array-constraints/maximum-length.js +0 -22
- package/schema-old/array-constraints/minimum-length.d.ts +0 -11
- package/schema-old/array-constraints/minimum-length.js +0 -22
- package/schema-old/coercers/boolean.coercer.d.ts +0 -9
- package/schema-old/coercers/boolean.coercer.js +0 -27
- package/schema-old/coercers/date.coercer.d.ts +0 -9
- package/schema-old/coercers/date.coercer.js +0 -16
- package/schema-old/coercers/index.d.ts +0 -6
- package/schema-old/coercers/index.js +0 -6
- package/schema-old/coercers/number.coercer.d.ts +0 -9
- package/schema-old/coercers/number.coercer.js +0 -14
- package/schema-old/coercers/regexp.coercer.d.ts +0 -11
- package/schema-old/coercers/regexp.coercer.js +0 -20
- package/schema-old/coercers/string.coercer.d.ts +0 -9
- package/schema-old/coercers/string.coercer.js +0 -14
- package/schema-old/coercers/uint8-array.coercer.d.ts +0 -11
- package/schema-old/coercers/uint8-array.coercer.js +0 -22
- package/schema-old/constraints/enumeration.d.ts +0 -13
- package/schema-old/constraints/enumeration.js +0 -29
- package/schema-old/constraints/generic.d.ts +0 -20
- package/schema-old/constraints/generic.js +0 -23
- package/schema-old/constraints/index.d.ts +0 -12
- package/schema-old/constraints/index.js +0 -12
- package/schema-old/constraints/integer.d.ts +0 -12
- package/schema-old/constraints/integer.js +0 -23
- package/schema-old/constraints/length.d.ts +0 -6
- package/schema-old/constraints/length.js +0 -15
- package/schema-old/constraints/literal.d.ts +0 -10
- package/schema-old/constraints/literal.js +0 -24
- package/schema-old/constraints/maximum-date.d.ts +0 -12
- package/schema-old/constraints/maximum-date.js +0 -26
- package/schema-old/constraints/maximum-length.d.ts +0 -12
- package/schema-old/constraints/maximum-length.js +0 -25
- package/schema-old/constraints/maximum.d.ts +0 -12
- package/schema-old/constraints/maximum.js +0 -24
- package/schema-old/constraints/minimum-date.d.ts +0 -12
- package/schema-old/constraints/minimum-date.js +0 -26
- package/schema-old/constraints/minimum-length.d.ts +0 -12
- package/schema-old/constraints/minimum-length.js +0 -25
- package/schema-old/constraints/minimum.d.ts +0 -12
- package/schema-old/constraints/minimum.js +0 -24
- package/schema-old/constraints/pattern.d.ts +0 -13
- package/schema-old/constraints/pattern.js +0 -26
- package/schema-old/decorators/class.d.ts +0 -3
- package/schema-old/decorators/class.js +0 -5
- package/schema-old/decorators/coerce.d.ts +0 -2
- package/schema-old/decorators/coerce.js +0 -5
- package/schema-old/decorators/constraint.d.ts +0 -4
- package/schema-old/decorators/constraint.js +0 -7
- package/schema-old/decorators/index.d.ts +0 -6
- package/schema-old/decorators/index.js +0 -6
- package/schema-old/decorators/property.d.ts +0 -6
- package/schema-old/decorators/property.js +0 -17
- package/schema-old/decorators/types.d.ts +0 -19
- package/schema-old/decorators/types.js +0 -1
- package/schema-old/decorators/utils.d.ts +0 -15
- package/schema-old/decorators/utils.js +0 -48
- package/schema-old/index.d.ts +0 -10
- package/schema-old/index.js +0 -10
- package/schema-old/schema.d.ts +0 -15
- package/schema-old/schema.error.d.ts +0 -26
- package/schema-old/schema.error.js +0 -64
- package/schema-old/schema.js +0 -283
- package/schema-old/schemas/any.d.ts +0 -5
- package/schema-old/schemas/any.js +0 -9
- package/schema-old/schemas/array.d.ts +0 -12
- package/schema-old/schemas/array.js +0 -23
- package/schema-old/schemas/assign.d.ts +0 -7
- package/schema-old/schemas/assign.js +0 -24
- package/schema-old/schemas/boolean.d.ts +0 -5
- package/schema-old/schemas/boolean.js +0 -9
- package/schema-old/schemas/constraint.d.ts +0 -5
- package/schema-old/schemas/constraint.js +0 -7
- package/schema-old/schemas/date.d.ts +0 -8
- package/schema-old/schemas/date.js +0 -22
- package/schema-old/schemas/defaulted.d.ts +0 -6
- package/schema-old/schemas/defaulted.js +0 -10
- package/schema-old/schemas/enumeration.d.ts +0 -6
- package/schema-old/schemas/enumeration.js +0 -17
- package/schema-old/schemas/index.d.ts +0 -26
- package/schema-old/schemas/index.js +0 -26
- package/schema-old/schemas/instance.d.ts +0 -3
- package/schema-old/schemas/instance.js +0 -5
- package/schema-old/schemas/literal.d.ts +0 -5
- package/schema-old/schemas/literal.js +0 -17
- package/schema-old/schemas/nullable.d.ts +0 -6
- package/schema-old/schemas/nullable.js +0 -9
- package/schema-old/schemas/number.d.ts +0 -9
- package/schema-old/schemas/number.js +0 -27
- package/schema-old/schemas/object.d.ts +0 -7
- package/schema-old/schemas/object.js +0 -12
- package/schema-old/schemas/omit.d.ts +0 -3
- package/schema-old/schemas/omit.js +0 -15
- package/schema-old/schemas/one-or-many.d.ts +0 -9
- package/schema-old/schemas/one-or-many.js +0 -15
- package/schema-old/schemas/optional.d.ts +0 -7
- package/schema-old/schemas/optional.js +0 -8
- package/schema-old/schemas/partial.d.ts +0 -4
- package/schema-old/schemas/partial.js +0 -17
- package/schema-old/schemas/pick.d.ts +0 -3
- package/schema-old/schemas/pick.js +0 -15
- package/schema-old/schemas/readable-stream.d.ts +0 -6
- package/schema-old/schemas/readable-stream.js +0 -9
- package/schema-old/schemas/record.d.ts +0 -5
- package/schema-old/schemas/record.js +0 -10
- package/schema-old/schemas/regexp.d.ts +0 -6
- package/schema-old/schemas/regexp.js +0 -9
- package/schema-old/schemas/string.d.ts +0 -22
- package/schema-old/schemas/string.js +0 -38
- package/schema-old/schemas/transform.d.ts +0 -5
- package/schema-old/schemas/transform.js +0 -7
- package/schema-old/schemas/uint8-array.d.ts +0 -10
- package/schema-old/schemas/uint8-array.js +0 -29
- package/schema-old/schemas/union.d.ts +0 -7
- package/schema-old/schemas/union.js +0 -13
- package/schema-old/schemas/unknown.d.ts +0 -5
- package/schema-old/schemas/unknown.js +0 -9
- package/schema-old/transformers/generic.d.ts +0 -12
- package/schema-old/transformers/generic.js +0 -18
- package/schema-old/transformers/index.d.ts +0 -4
- package/schema-old/transformers/index.js +0 -4
- package/schema-old/transformers/lowercase.d.ts +0 -8
- package/schema-old/transformers/lowercase.js +0 -12
- package/schema-old/transformers/trim.d.ts +0 -8
- package/schema-old/transformers/trim.js +0 -12
- package/schema-old/transformers/uppercase.d.ts +0 -8
- package/schema-old/transformers/uppercase.js +0 -12
- package/schema-old/types/index.d.ts +0 -5
- package/schema-old/types/index.js +0 -5
- package/schema-old/types/schema-array-constraint.d.ts +0 -5
- package/schema-old/types/schema-array-constraint.js +0 -2
- package/schema-old/types/schema-value-coercer.d.ts +0 -8
- package/schema-old/types/schema-value-coercer.js +0 -2
- package/schema-old/types/schema-value-constraint.d.ts +0 -8
- package/schema-old/types/schema-value-constraint.js +0 -2
- package/schema-old/types/schema-value-transformer.d.ts +0 -7
- package/schema-old/types/schema-value-transformer.js +0 -2
- package/schema-old/types/types.d.ts +0 -175
- package/schema-old/types/types.js +0 -172
- package/schema-old/utils/index.d.ts +0 -2
- package/schema-old/utils/index.js +0 -2
- package/schema-old/utils/schema.d.ts +0 -18
- package/schema-old/utils/schema.js +0 -139
- package/schema-old/utils/value-type.d.ts +0 -8
- package/schema-old/utils/value-type.js +0 -56
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import type { AbstractConstructor, OneOrMany, Record, Type, TypedOmit } from '../../types.js';
|
|
2
|
-
import type { SchemaError } from '../schema.error.js';
|
|
3
|
-
import type { NormalizedSchema, Schema, SchemaTestable } from '../schema.js';
|
|
4
|
-
import type { SchemaArrayConstraint } from './schema-array-constraint.js';
|
|
5
|
-
import type { SchemaValueCoercer } from './schema-value-coercer.js';
|
|
6
|
-
import type { SchemaValueConstraint } from './schema-value-constraint.js';
|
|
7
|
-
import type { SchemaValueTransformer } from './schema-value-transformer.js';
|
|
8
|
-
declare const schemaOutputTypeSymbol: unique symbol;
|
|
9
|
-
declare const optimized: unique symbol;
|
|
10
|
-
export type SchemaFactoryFunction<T> = (data: T) => T;
|
|
11
|
-
export type SchemaFactory<T> = {
|
|
12
|
-
type: Type<T>;
|
|
13
|
-
builder?: undefined;
|
|
14
|
-
} | {
|
|
15
|
-
type?: undefined;
|
|
16
|
-
builder: SchemaFactoryFunction<T>;
|
|
17
|
-
};
|
|
18
|
-
export type ObjectSchemaProperties<T> = {
|
|
19
|
-
[K in keyof T]-?: OneOrMany<SchemaTestable<T[K]>>;
|
|
20
|
-
};
|
|
21
|
-
export type NormalizedObjectSchemaProperties<T> = {
|
|
22
|
-
[K in keyof T]-?: Schema<T[K]>;
|
|
23
|
-
};
|
|
24
|
-
export type SchemaOutput<T extends SchemaTestable> = T extends ObjectSchema<infer O> ? O : T extends ValueSchema<infer O> ? O : T extends TypeSchema<infer O> ? O : T extends ValueType<infer O> ? NormalizeValueType<O> : never;
|
|
25
|
-
export type TupleSchemaOutput<T extends readonly SchemaTestable[]> = {
|
|
26
|
-
[P in keyof T]: SchemaOutput<T[P]>;
|
|
27
|
-
};
|
|
28
|
-
export type ObjectSchemaOrType<T = any> = ObjectSchema<T> | AbstractConstructor<T>;
|
|
29
|
-
export type ObjectSchema<T = any> = {
|
|
30
|
-
[optimized]?: boolean;
|
|
31
|
-
[schemaOutputTypeSymbol]?: T;
|
|
32
|
-
sourceType?: ValueType;
|
|
33
|
-
factory?: SchemaFactory<T>;
|
|
34
|
-
properties: ObjectSchemaProperties<T>;
|
|
35
|
-
mask?: boolean;
|
|
36
|
-
unknownProperties?: OneOrMany<SchemaTestable>;
|
|
37
|
-
unknownPropertiesKey?: OneOrMany<SchemaTestable>;
|
|
38
|
-
};
|
|
39
|
-
export type TypedObjectSchemaUnknownProperties<K extends PropertyKey, V> = {
|
|
40
|
-
unknownProperties?: OneOrMany<SchemaTestable<V>>;
|
|
41
|
-
unknownPropertiesKey?: OneOrMany<SchemaTestable<K>>;
|
|
42
|
-
};
|
|
43
|
-
export type TypeSchema<T = any> = {
|
|
44
|
-
type: ValueType<T>;
|
|
45
|
-
};
|
|
46
|
-
export type NormalizedTypeSchema<T = any> = {
|
|
47
|
-
type: ResolvedValueType<T>;
|
|
48
|
-
};
|
|
49
|
-
export type ValueSchema<T = unknown> = {
|
|
50
|
-
[optimized]?: boolean;
|
|
51
|
-
[schemaOutputTypeSymbol]?: T;
|
|
52
|
-
schema: OneOrMany<SchemaTestable<T>>;
|
|
53
|
-
array?: boolean;
|
|
54
|
-
optional?: boolean;
|
|
55
|
-
nullable?: boolean;
|
|
56
|
-
/** Use default coercers */
|
|
57
|
-
coerce?: boolean;
|
|
58
|
-
/** Custom coercers */
|
|
59
|
-
coercers?: OneOrMany<SchemaValueCoercer>;
|
|
60
|
-
transformers?: OneOrMany<SchemaValueTransformer>;
|
|
61
|
-
arrayConstraints?: OneOrMany<SchemaArrayConstraint>;
|
|
62
|
-
valueConstraints?: OneOrMany<SchemaValueConstraint>;
|
|
63
|
-
};
|
|
64
|
-
export type ValueSchemaOptions = TypedOmit<ValueSchema, 'schema' | typeof schemaOutputTypeSymbol>;
|
|
65
|
-
export type NormalizedObjectSchema<T = any> = {
|
|
66
|
-
[schemaOutputTypeSymbol]?: T;
|
|
67
|
-
factory?: SchemaFactory<T>;
|
|
68
|
-
properties: NormalizedObjectSchemaProperties<T>;
|
|
69
|
-
mask?: boolean;
|
|
70
|
-
allowUnknownProperties: boolean;
|
|
71
|
-
unknownProperties?: Schema;
|
|
72
|
-
unknownPropertiesKey?: Schema;
|
|
73
|
-
};
|
|
74
|
-
export type NormalizedValueSchema<T = any> = {
|
|
75
|
-
[schemaOutputTypeSymbol]?: T;
|
|
76
|
-
schema: Schema<T>[];
|
|
77
|
-
array: boolean;
|
|
78
|
-
optional: boolean;
|
|
79
|
-
nullable: boolean;
|
|
80
|
-
coerce: boolean;
|
|
81
|
-
coercers: Map<ValueType, SchemaValueCoercer[]>;
|
|
82
|
-
transformers: readonly SchemaValueTransformer[];
|
|
83
|
-
arrayConstraints: readonly SchemaArrayConstraint[];
|
|
84
|
-
valueConstraints: readonly SchemaValueConstraint[];
|
|
85
|
-
};
|
|
86
|
-
export type SchemaContext = {
|
|
87
|
-
schema: NormalizedSchema;
|
|
88
|
-
options: SchemaTestOptions;
|
|
89
|
-
};
|
|
90
|
-
export type ConstraintContext = SchemaContext;
|
|
91
|
-
export type TransformerContext = SchemaContext;
|
|
92
|
-
export type CoercerContext = SchemaContext;
|
|
93
|
-
export type NormalizeValueType<T> = T extends String ? string : T extends Number ? number : T extends Boolean ? boolean : T extends BigInt ? bigint : T extends Symbol ? symbol : T extends 'undefined' ? undefined : T extends 'null' ? null : T extends 'any' ? any : T;
|
|
94
|
-
export type NormalizeToValueType<T> = T extends string | String ? typeof String : T extends number | Number ? typeof Number : T extends boolean | Boolean ? typeof Boolean : T extends bigint | BigInt ? typeof BigInt : T extends symbol | Symbol ? typeof Symbol : T extends undefined ? 'undefined' : T extends null ? 'null' : T extends any ? 'any' : never;
|
|
95
|
-
export type ValueType<T = any> = AbstractConstructor<T> | NormalizeToValueType<T> | DeferredValueType<T>;
|
|
96
|
-
export type DeferredValueType<T = any> = {
|
|
97
|
-
deferred: () => ValueType<T>;
|
|
98
|
-
};
|
|
99
|
-
export type ResolvedValueType<T = any> = Exclude<ValueType<T>, DeferredValueType>;
|
|
100
|
-
export type Coercible = {
|
|
101
|
-
coerce?: boolean;
|
|
102
|
-
};
|
|
103
|
-
export declare const primitiveConstructors: ValueType[];
|
|
104
|
-
export declare const primitiveConstructorSet: Set<ValueType<any>>;
|
|
105
|
-
export type OptionKeys<T extends Record> = readonly (keyof T)[];
|
|
106
|
-
export type SchemaTestOptions = {
|
|
107
|
-
/**
|
|
108
|
-
* Try to convert wrong input into desired output.
|
|
109
|
-
* Can be specified on definition and validation. If specified on both, definition has higher priority
|
|
110
|
-
*/
|
|
111
|
-
coerce?: boolean;
|
|
112
|
-
/**
|
|
113
|
-
* Remove unspecified fields on input data instead of raising an error.
|
|
114
|
-
* Can be specified on definition and validation. If specified on both, definition has higher priority
|
|
115
|
-
*/
|
|
116
|
-
mask?: boolean;
|
|
117
|
-
/**
|
|
118
|
-
* Use fast errors which can improve performance a lot but misses detailed stack traces.
|
|
119
|
-
*/
|
|
120
|
-
fastErrors?: boolean;
|
|
121
|
-
};
|
|
122
|
-
export type SchemaTestResult<T> = {
|
|
123
|
-
valid: true;
|
|
124
|
-
value: T;
|
|
125
|
-
error?: undefined;
|
|
126
|
-
} | {
|
|
127
|
-
valid: false;
|
|
128
|
-
value?: undefined;
|
|
129
|
-
error: SchemaError;
|
|
130
|
-
};
|
|
131
|
-
export type ConstraintResult = {
|
|
132
|
-
valid: true;
|
|
133
|
-
error?: undefined;
|
|
134
|
-
} | {
|
|
135
|
-
valid: false;
|
|
136
|
-
error: SchemaError;
|
|
137
|
-
};
|
|
138
|
-
export type CoerceResult = {
|
|
139
|
-
success: true;
|
|
140
|
-
value: any;
|
|
141
|
-
error?: undefined;
|
|
142
|
-
} | {
|
|
143
|
-
success: false;
|
|
144
|
-
value?: undefined;
|
|
145
|
-
error: SchemaError;
|
|
146
|
-
};
|
|
147
|
-
export declare const transformErrorResultSymbol: unique symbol;
|
|
148
|
-
export type TransformErrorResult = {
|
|
149
|
-
[transformErrorResultSymbol]: SchemaError;
|
|
150
|
-
};
|
|
151
|
-
export type TransformResult<T> = T | TransformErrorResult;
|
|
152
|
-
export declare function transformErrorResult(error: SchemaError): TransformErrorResult;
|
|
153
|
-
export declare function isTransformErrorResult(value: any): value is TransformErrorResult;
|
|
154
|
-
export declare function objectSchemaProperties<T extends Record>(properties: ObjectSchemaProperties<T>): ObjectSchemaProperties<T>;
|
|
155
|
-
export declare function objectSchema<T extends Record>(schema: ObjectSchema<T>): ObjectSchema<T>;
|
|
156
|
-
export declare function valueSchema<T>(schema: OneOrMany<SchemaTestable<T>>, options?: TypedOmit<ValueSchema<T>, 'schema'>): ValueSchema<T>;
|
|
157
|
-
export declare function typeSchema<T>(type: ValueType<T>): TypeSchema<NormalizeValueType<T>>;
|
|
158
|
-
export declare function isSchema<T>(value: any): value is Schema<T>;
|
|
159
|
-
export declare function isObjectSchema<T extends Record = any>(schema: SchemaTestable<T>): schema is ObjectSchema<T>;
|
|
160
|
-
export declare function isObjectSchema<T extends Record = any>(schema: any): schema is ObjectSchema<T>;
|
|
161
|
-
export declare function isValueSchema<T>(schema: SchemaTestable<T>): schema is ValueSchema<T>;
|
|
162
|
-
export declare function isValueSchema<T>(schema: any): schema is ValueSchema<T>;
|
|
163
|
-
export declare function isTypeSchema<T>(schema: SchemaTestable<T>): schema is TypeSchema<T>;
|
|
164
|
-
export declare function isTypeSchema<T>(schema: any): schema is TypeSchema<T>;
|
|
165
|
-
export declare function isDeferredValueType<T>(value: SchemaTestable<T>): value is DeferredValueType<T>;
|
|
166
|
-
export declare function isDeferredValueType(value: any): value is DeferredValueType;
|
|
167
|
-
export declare function resolveValueTypes<T>(valueTypes: OneOrMany<ValueType<T>>): OneOrMany<ResolvedValueType<T>>;
|
|
168
|
-
export declare function resolveValueType<T>(valueType: ValueType<T>): ResolvedValueType<T>;
|
|
169
|
-
export declare function schemaTestablesToSchemas<T>(schemaTestables: OneOrMany<SchemaTestable<T>>): OneOrMany<Schema<T>>;
|
|
170
|
-
export declare function schemaTestableToSchema<T>(valueTypeOrSchema: SchemaTestable<T>): Schema<T>;
|
|
171
|
-
export declare function optimizeObjectSchema<T>(schema: ObjectSchema<T>): ObjectSchema<T>;
|
|
172
|
-
export declare function optimizeObjectSchemaProperties<T>(properties: ObjectSchemaProperties<T>): ObjectSchemaProperties<T>;
|
|
173
|
-
export declare function optimizeValueSchema<T>(schema: ValueSchema<T>): ValueSchema<T>;
|
|
174
|
-
export declare function optimizeSchema<T>(schema: OneOrMany<SchemaTestable<T>>): OneOrMany<SchemaTestable<T>>;
|
|
175
|
-
export {};
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
-
import { distinct } from '../../utils/array/array.js';
|
|
3
|
-
import { filterObject, hasOwnProperty, mapObjectValues, objectEntries, objectKeys } from '../../utils/object/object.js';
|
|
4
|
-
import { assert, isArray, isDefined, isFunction, isObject, isString, isUndefined } from '../../utils/type-guards.js';
|
|
5
|
-
const optimized = Symbol('schema optimized');
|
|
6
|
-
export const primitiveConstructors = [String, Number, Boolean, Symbol, BigInt, Function, 'undefined', 'null'];
|
|
7
|
-
export const primitiveConstructorSet = new Set(primitiveConstructors);
|
|
8
|
-
export const transformErrorResultSymbol = Symbol('Transform error');
|
|
9
|
-
export function transformErrorResult(error) {
|
|
10
|
-
return { [transformErrorResultSymbol]: error };
|
|
11
|
-
}
|
|
12
|
-
export function isTransformErrorResult(value) {
|
|
13
|
-
return isObject(value) && hasOwnProperty(value, transformErrorResultSymbol);
|
|
14
|
-
}
|
|
15
|
-
export function objectSchemaProperties(properties) {
|
|
16
|
-
return optimizeObjectSchemaProperties(properties);
|
|
17
|
-
}
|
|
18
|
-
export function objectSchema(schema) {
|
|
19
|
-
return optimizeObjectSchema(schema);
|
|
20
|
-
}
|
|
21
|
-
export function valueSchema(schema, options) {
|
|
22
|
-
assert(!isArray(schema) || (schema.length > 0), 'No schema provided.');
|
|
23
|
-
return optimizeValueSchema({ schema, ...options });
|
|
24
|
-
}
|
|
25
|
-
export function typeSchema(type) {
|
|
26
|
-
return { type };
|
|
27
|
-
}
|
|
28
|
-
export function isSchema(value) {
|
|
29
|
-
return isObjectSchema(value) || isValueSchema(value) || isTypeSchema(value);
|
|
30
|
-
}
|
|
31
|
-
export function isObjectSchema(schema) {
|
|
32
|
-
return isObject(schema?.properties);
|
|
33
|
-
}
|
|
34
|
-
export function isValueSchema(schema) {
|
|
35
|
-
return isObject(schema) && isDefined(schema?.schema);
|
|
36
|
-
}
|
|
37
|
-
export function isTypeSchema(schema) {
|
|
38
|
-
if (!isObject(schema)) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
const type = schema.type;
|
|
42
|
-
return isFunction(type)
|
|
43
|
-
|| (isObject(type) && isFunction(type.deferred))
|
|
44
|
-
|| (type == 'undefined')
|
|
45
|
-
|| (type == 'null')
|
|
46
|
-
|| (type == 'any');
|
|
47
|
-
}
|
|
48
|
-
export function isDeferredValueType(value) {
|
|
49
|
-
return isObject(value) && isFunction(value.deferred);
|
|
50
|
-
}
|
|
51
|
-
export function resolveValueTypes(valueTypes) {
|
|
52
|
-
if (isArray(valueTypes)) {
|
|
53
|
-
return valueTypes.map(resolveValueType);
|
|
54
|
-
}
|
|
55
|
-
return resolveValueType(valueTypes);
|
|
56
|
-
}
|
|
57
|
-
export function resolveValueType(valueType) {
|
|
58
|
-
return isDeferredValueType(valueType)
|
|
59
|
-
? resolveValueType(valueType.deferred())
|
|
60
|
-
: valueType;
|
|
61
|
-
}
|
|
62
|
-
export function schemaTestablesToSchemas(schemaTestables) {
|
|
63
|
-
if (isArray(schemaTestables)) {
|
|
64
|
-
if (schemaTestables.length == 1) {
|
|
65
|
-
return schemaTestableToSchema(schemaTestables[0]);
|
|
66
|
-
}
|
|
67
|
-
if (schemaTestables.length == 0) {
|
|
68
|
-
throw new Error('No schema provided.');
|
|
69
|
-
}
|
|
70
|
-
return schemaTestables.map(schemaTestableToSchema);
|
|
71
|
-
}
|
|
72
|
-
return schemaTestableToSchema(schemaTestables);
|
|
73
|
-
}
|
|
74
|
-
export function schemaTestableToSchema(valueTypeOrSchema) {
|
|
75
|
-
if (isSchema(valueTypeOrSchema)) {
|
|
76
|
-
return valueTypeOrSchema;
|
|
77
|
-
}
|
|
78
|
-
return typeSchema(valueTypeOrSchema);
|
|
79
|
-
}
|
|
80
|
-
export function optimizeObjectSchema(schema) {
|
|
81
|
-
if (schema[optimized] == true) {
|
|
82
|
-
return schema;
|
|
83
|
-
}
|
|
84
|
-
return filterObject({
|
|
85
|
-
[optimized]: true,
|
|
86
|
-
...schema,
|
|
87
|
-
properties: optimizeObjectSchemaProperties(schema.properties),
|
|
88
|
-
unknownProperties: (isUndefined(schema.unknownProperties) || (isArray(schema.unknownProperties) && (schema.unknownProperties.length == 0))) ? undefined : optimizeSchema(schema.unknownProperties),
|
|
89
|
-
unknownPropertiesKey: (isUndefined(schema.unknownPropertiesKey) || (isArray(schema.unknownPropertiesKey) && (schema.unknownPropertiesKey.length == 0))) ? undefined : optimizeSchema(schema.unknownPropertiesKey)
|
|
90
|
-
}, isDefined);
|
|
91
|
-
}
|
|
92
|
-
export function optimizeObjectSchemaProperties(properties) {
|
|
93
|
-
return mapObjectValues(properties, optimizeSchema);
|
|
94
|
-
}
|
|
95
|
-
export function optimizeValueSchema(schema) {
|
|
96
|
-
const optimizedSchema = optimizeSchema(schema);
|
|
97
|
-
return isValueSchema(optimizedSchema) ? optimizedSchema : { [optimized]: true, schema: optimizedSchema };
|
|
98
|
-
}
|
|
99
|
-
export function optimizeSchema(schema) {
|
|
100
|
-
if (isArray(schema)) {
|
|
101
|
-
if (schema[optimized] == true) {
|
|
102
|
-
return schema;
|
|
103
|
-
}
|
|
104
|
-
if (schema.length == 1) {
|
|
105
|
-
return optimizeSchema(schema[0]);
|
|
106
|
-
}
|
|
107
|
-
if (schema.length == 0) {
|
|
108
|
-
throw new Error('No schema provided.');
|
|
109
|
-
}
|
|
110
|
-
const optimizedSchemas = distinct(distinct(schema).flatMap(optimizeSchema));
|
|
111
|
-
optimizedSchemas[optimized] = true;
|
|
112
|
-
return optimizedSchemas;
|
|
113
|
-
}
|
|
114
|
-
if (isFunction(schema) || isString(schema) || isDeferredValueType(schema)) {
|
|
115
|
-
return schema;
|
|
116
|
-
}
|
|
117
|
-
if (isTypeSchema(schema)) {
|
|
118
|
-
return schema.type;
|
|
119
|
-
}
|
|
120
|
-
if (isValueSchema(schema)) {
|
|
121
|
-
if (schema[optimized] == true) {
|
|
122
|
-
return schema;
|
|
123
|
-
}
|
|
124
|
-
const entries = objectEntries(schema).filter(([, value]) => isDefined(value));
|
|
125
|
-
if (entries.length == 1) {
|
|
126
|
-
return optimizeSchema(schema.schema);
|
|
127
|
-
}
|
|
128
|
-
if (isValueSchema(schema.schema)) {
|
|
129
|
-
const combinedProperties = new Set([...objectKeys(schema), ...objectKeys(schema.schema)]);
|
|
130
|
-
if (isValueSchema(schema.schema)
|
|
131
|
-
&& !combinedProperties.has('array')
|
|
132
|
-
&& !combinedProperties.has('coerce')
|
|
133
|
-
&& !combinedProperties.has('coercers')
|
|
134
|
-
&& !combinedProperties.has('transformers')
|
|
135
|
-
&& !combinedProperties.has('arrayConstraints')
|
|
136
|
-
&& !combinedProperties.has('valueConstraints')) {
|
|
137
|
-
return {
|
|
138
|
-
[optimized]: true,
|
|
139
|
-
schema: optimizeSchema(schema.schema.schema),
|
|
140
|
-
...filterObject({
|
|
141
|
-
optional: ((schema.optional ?? false) || (schema.schema.optional ?? false)) ? true : undefined,
|
|
142
|
-
nullable: ((schema.nullable ?? false) || (schema.schema.nullable ?? false)) ? true : undefined
|
|
143
|
-
}, isDefined)
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
const { schema: innerSchema, optional, nullable, coercers, transformers, arrayConstraints, valueConstraints, ...rest } = schema;
|
|
148
|
-
return filterObject({
|
|
149
|
-
[optimized]: true,
|
|
150
|
-
schema: optimizeSchema(innerSchema),
|
|
151
|
-
optional: (optional ?? false) ? true : undefined,
|
|
152
|
-
nullable: (nullable ?? false) ? true : undefined,
|
|
153
|
-
coercers: optimizeOneOrMany(coercers),
|
|
154
|
-
transformers: optimizeOneOrMany(transformers),
|
|
155
|
-
arrayConstraints: optimizeOneOrMany(arrayConstraints),
|
|
156
|
-
valueConstraints: optimizeOneOrMany(valueConstraints),
|
|
157
|
-
...rest
|
|
158
|
-
}, isDefined);
|
|
159
|
-
}
|
|
160
|
-
return optimizeObjectSchema(schema);
|
|
161
|
-
}
|
|
162
|
-
function optimizeOneOrMany(values) {
|
|
163
|
-
if (isArray(values)) {
|
|
164
|
-
if (values.length == 0) {
|
|
165
|
-
return undefined;
|
|
166
|
-
}
|
|
167
|
-
if (values.length == 1) {
|
|
168
|
-
return values[0];
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return values;
|
|
172
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { AbstractConstructor } from '../../types.js';
|
|
2
|
-
import type { NormalizedSchema, Schema } from '../schema.js';
|
|
3
|
-
import type { NormalizedObjectSchema, NormalizedTypeSchema, NormalizedValueSchema, ObjectSchema, ObjectSchemaOrType, TypeSchema, ValueSchema } from '../types/index.js';
|
|
4
|
-
export declare const normalizeSchema: typeof _normalizeSchema;
|
|
5
|
-
export declare const normalizeObjectSchema: typeof _normalizeObjectSchema;
|
|
6
|
-
export declare const normalizeValueSchema: typeof _normalizeValueSchema;
|
|
7
|
-
export declare const normalizeTypeSchema: typeof _normalizeTypeSchema;
|
|
8
|
-
export declare const getArrayItemSchema: typeof _getArrayItemSchema;
|
|
9
|
-
export declare const tryGetObjectSchemaFromReflection: typeof _tryGetObjectSchemaFromReflection;
|
|
10
|
-
export declare function getObjectSchema<T>(schemaOrType: ObjectSchemaOrType<T>): ObjectSchema<T>;
|
|
11
|
-
declare function _normalizeSchema<T>(schema: Schema<T>): NormalizedSchema<T>;
|
|
12
|
-
declare function _normalizeObjectSchema<T>(schema: ObjectSchema<T>): NormalizedObjectSchema<T>;
|
|
13
|
-
declare function _normalizeValueSchema<T>(schema: ValueSchema<T>): NormalizedValueSchema<T>;
|
|
14
|
-
declare function _normalizeTypeSchema<T>(schema: TypeSchema<T>): NormalizedTypeSchema<T>;
|
|
15
|
-
declare function _getArrayItemSchema<T>(schema: ValueSchema<T>): ValueSchema<T>;
|
|
16
|
-
export declare function getObjectSchemaFromReflection<T>(type: AbstractConstructor<T>): ObjectSchema<T>;
|
|
17
|
-
declare function _tryGetObjectSchemaFromReflection<T>(type: AbstractConstructor<T>): ObjectSchema<T> | null;
|
|
18
|
-
export {};
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { reflectionRegistry } from '../../reflection/registry.js';
|
|
2
|
-
import { toArray } from '../../utils/array/array.js';
|
|
3
|
-
import { memoizeSingle } from '../../utils/function/memoize.js';
|
|
4
|
-
import { mapObjectValues } from '../../utils/object/object.js';
|
|
5
|
-
import { isArray, isDefined, isFunction, isNotNull, isNull, isUndefined } from '../../utils/type-guards.js';
|
|
6
|
-
import { assign } from '../schemas/assign.js';
|
|
7
|
-
import { isObjectSchema, isTypeSchema, isValueSchema, objectSchema, resolveValueType, schemaTestableToSchema, schemaTestablesToSchemas, valueSchema } from '../types/index.js';
|
|
8
|
-
export const normalizeSchema = memoizeSingle(_normalizeSchema, { weak: true });
|
|
9
|
-
export const normalizeObjectSchema = memoizeSingle(_normalizeObjectSchema, { weak: true });
|
|
10
|
-
export const normalizeValueSchema = memoizeSingle(_normalizeValueSchema, { weak: true });
|
|
11
|
-
export const normalizeTypeSchema = memoizeSingle(_normalizeTypeSchema, { weak: true });
|
|
12
|
-
export const getArrayItemSchema = memoizeSingle(_getArrayItemSchema, { weak: true });
|
|
13
|
-
export const tryGetObjectSchemaFromReflection = memoizeSingle(_tryGetObjectSchemaFromReflection, { weak: true });
|
|
14
|
-
export function getObjectSchema(schemaOrType) {
|
|
15
|
-
return isFunction(schemaOrType)
|
|
16
|
-
? getObjectSchemaFromReflection(schemaOrType)
|
|
17
|
-
: schemaOrType;
|
|
18
|
-
}
|
|
19
|
-
function _normalizeSchema(schema) {
|
|
20
|
-
if (isObjectSchema(schema)) {
|
|
21
|
-
return normalizeObjectSchema(schema);
|
|
22
|
-
}
|
|
23
|
-
if (isValueSchema(schema)) {
|
|
24
|
-
return normalizeValueSchema(schema);
|
|
25
|
-
}
|
|
26
|
-
if (isTypeSchema(schema)) {
|
|
27
|
-
return normalizeTypeSchema(schema);
|
|
28
|
-
}
|
|
29
|
-
throw new Error('Unsupported schema.');
|
|
30
|
-
}
|
|
31
|
-
function _normalizeObjectSchema(schema) {
|
|
32
|
-
const unknownPropertiesSchema = (isDefined(schema.unknownProperties) && (!isArray(schema.unknownProperties) || (schema.unknownProperties.length > 0))) ? schemaTestablesToSchemas(schema.unknownProperties) : undefined;
|
|
33
|
-
const unknownPropertiesKeySchema = (isDefined(schema.unknownPropertiesKey) && (!isArray(schema.unknownPropertiesKey) || (schema.unknownPropertiesKey.length > 0))) ? schemaTestablesToSchemas(schema.unknownPropertiesKey) : undefined;
|
|
34
|
-
const allowUnknownProperties = ((isArray(unknownPropertiesSchema) && (unknownPropertiesSchema.length > 0)) || isDefined(unknownPropertiesSchema));
|
|
35
|
-
const normalizedSchema = {
|
|
36
|
-
factory: schema.factory,
|
|
37
|
-
properties: mapObjectValues(schema.properties, (propertyValueType) => schemaTestablesToSchemas(propertyValueType)),
|
|
38
|
-
mask: schema.mask,
|
|
39
|
-
allowUnknownProperties,
|
|
40
|
-
unknownProperties: isArray(unknownPropertiesSchema) ? valueSchema(unknownPropertiesSchema) : unknownPropertiesSchema,
|
|
41
|
-
unknownPropertiesKey: isArray(unknownPropertiesKeySchema) ? valueSchema(unknownPropertiesKeySchema) : unknownPropertiesKeySchema
|
|
42
|
-
};
|
|
43
|
-
return normalizedSchema;
|
|
44
|
-
}
|
|
45
|
-
function _normalizeValueSchema(schema) {
|
|
46
|
-
const normalizedValueSchema = {
|
|
47
|
-
schema: [...new Set(toArray(schema.schema))].map(schemaTestableToSchema),
|
|
48
|
-
array: schema.array ?? false,
|
|
49
|
-
optional: schema.optional ?? false,
|
|
50
|
-
nullable: schema.nullable ?? false,
|
|
51
|
-
coerce: schema.coerce ?? false,
|
|
52
|
-
coercers: new Map(),
|
|
53
|
-
transformers: toArray(schema.transformers ?? []),
|
|
54
|
-
arrayConstraints: toArray(schema.arrayConstraints ?? []),
|
|
55
|
-
valueConstraints: toArray(schema.valueConstraints ?? [])
|
|
56
|
-
};
|
|
57
|
-
for (const coercer of toArray(schema.coercers ?? [])) {
|
|
58
|
-
for (const sourceType of toArray(coercer.sourceType)) {
|
|
59
|
-
if (!normalizedValueSchema.coercers.has(sourceType)) {
|
|
60
|
-
normalizedValueSchema.coercers.set(sourceType, []);
|
|
61
|
-
}
|
|
62
|
-
normalizedValueSchema.coercers.get(sourceType).push(coercer);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return normalizedValueSchema;
|
|
66
|
-
}
|
|
67
|
-
function _normalizeTypeSchema(schema) {
|
|
68
|
-
const normalizedSchema = {
|
|
69
|
-
type: resolveValueType(schema.type)
|
|
70
|
-
};
|
|
71
|
-
return normalizedSchema;
|
|
72
|
-
}
|
|
73
|
-
function _getArrayItemSchema(schema) {
|
|
74
|
-
const itemSchema = {
|
|
75
|
-
schema: schema.schema,
|
|
76
|
-
transformers: schema.transformers,
|
|
77
|
-
valueConstraints: schema.valueConstraints
|
|
78
|
-
};
|
|
79
|
-
return itemSchema;
|
|
80
|
-
}
|
|
81
|
-
export function getObjectSchemaFromReflection(type) {
|
|
82
|
-
const schema = tryGetObjectSchemaFromReflection(type);
|
|
83
|
-
if (isNull(schema)) {
|
|
84
|
-
throw new Error(`Could not get schema for ${type.name} from reflection data.`);
|
|
85
|
-
}
|
|
86
|
-
return schema;
|
|
87
|
-
}
|
|
88
|
-
function _tryGetObjectSchemaFromReflection(type) {
|
|
89
|
-
const metadata = reflectionRegistry.getMetadata(type);
|
|
90
|
-
if (isUndefined(metadata)) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
const typeData = metadata.data.tryGet('schema') ?? {};
|
|
94
|
-
const dataSchema = isTypeSchema(typeData.schema)
|
|
95
|
-
? getObjectSchema(typeData.schema.type)
|
|
96
|
-
: isObjectSchema(typeData.schema)
|
|
97
|
-
? typeData.schema
|
|
98
|
-
: isFunction(typeData.schema)
|
|
99
|
-
? getObjectSchema(typeData.schema)
|
|
100
|
-
: undefined;
|
|
101
|
-
const schema = objectSchema({
|
|
102
|
-
sourceType: type,
|
|
103
|
-
factory: isDefined(typeData.factory) ? { builder: typeData.factory } : { type: type },
|
|
104
|
-
properties: dataSchema?.properties ?? getObjectSchemaPropertiesFromReflection(metadata, type),
|
|
105
|
-
mask: typeData.mask ?? dataSchema?.mask,
|
|
106
|
-
unknownProperties: ((isUndefined(typeData.unknownProperties) || (isArray(typeData.unknownProperties) && (typeData.unknownProperties.length == 0))) ? undefined : typeData.unknownProperties) ?? dataSchema?.unknownProperties,
|
|
107
|
-
unknownPropertiesKey: ((isUndefined(typeData.unknownPropertiesKey) || (isArray(typeData.unknownPropertiesKey) && (typeData.unknownPropertiesKey.length == 0))) ? undefined : typeData.unknownPropertiesKey) ?? dataSchema?.unknownPropertiesKey
|
|
108
|
-
});
|
|
109
|
-
if (isUndefined(dataSchema)) {
|
|
110
|
-
const prototype = Reflect.getPrototypeOf(type);
|
|
111
|
-
if (isNotNull(prototype) && reflectionRegistry.hasType(prototype)) {
|
|
112
|
-
const parentSchema = getObjectSchemaFromReflection(prototype);
|
|
113
|
-
return assign(parentSchema, schema);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return schema;
|
|
117
|
-
}
|
|
118
|
-
function getObjectSchemaPropertiesFromReflection(metadata, type) {
|
|
119
|
-
const properties = {};
|
|
120
|
-
for (const [key, propertyMetadata] of metadata.properties) {
|
|
121
|
-
const reflectionData = propertyMetadata.data.tryGet('schema');
|
|
122
|
-
const itemType = reflectionData?.schema;
|
|
123
|
-
const array = (reflectionData?.array == true) ? true : undefined;
|
|
124
|
-
if (array && (isUndefined(itemType) || (isArray(itemType) && (itemType.length == 0)))) {
|
|
125
|
-
throw new Error(`Item type missing on type ${type.name} at property "${String(key)}"`);
|
|
126
|
-
}
|
|
127
|
-
properties[key] = valueSchema(schemaTestablesToSchemas(itemType ?? propertyMetadata.type), {
|
|
128
|
-
array,
|
|
129
|
-
optional: reflectionData?.optional,
|
|
130
|
-
nullable: reflectionData?.nullable,
|
|
131
|
-
coerce: reflectionData?.coerce,
|
|
132
|
-
coercers: reflectionData?.coercers,
|
|
133
|
-
transformers: reflectionData?.transformers,
|
|
134
|
-
arrayConstraints: reflectionData?.arrayConstraints,
|
|
135
|
-
valueConstraints: reflectionData?.valueConstraints
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
return properties;
|
|
139
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { OneOrMany } from '../../types.js';
|
|
2
|
-
import type { SchemaTestable } from '../schema.js';
|
|
3
|
-
import type { ResolvedValueType, ValueType } from '../types/types.js';
|
|
4
|
-
export declare function getValueType(value: unknown): ResolvedValueType;
|
|
5
|
-
export declare function includesValueType(valueType: ValueType, valueTypes: OneOrMany<ValueType>): boolean;
|
|
6
|
-
export declare function getValueTypeName(valueType: ValueType): string;
|
|
7
|
-
export declare function getSchemaTypeNames(schema: SchemaTestable): string[];
|
|
8
|
-
export declare function getSchemaValueTypes(schema: OneOrMany<SchemaTestable>): ResolvedValueType[];
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { toArray } from '../../utils/array/array.js';
|
|
2
|
-
import { isArray, isFunction, isNull, isString, isUndefined } from '../../utils/type-guards.js';
|
|
3
|
-
import { isDeferredValueType, isObjectSchema, isTypeSchema, isValueSchema, primitiveConstructorSet, resolveValueType, resolveValueTypes } from '../types/types.js';
|
|
4
|
-
const lowercaseTypesSet = new Set([...primitiveConstructorSet, Object, Array]);
|
|
5
|
-
export function getValueType(value) {
|
|
6
|
-
if (isUndefined(value)) {
|
|
7
|
-
return 'undefined';
|
|
8
|
-
}
|
|
9
|
-
if (isNull(value)) {
|
|
10
|
-
return 'null';
|
|
11
|
-
}
|
|
12
|
-
return value.constructor;
|
|
13
|
-
}
|
|
14
|
-
export function includesValueType(valueType, valueTypes) {
|
|
15
|
-
const resolvedValueTypes = resolveValueTypes(valueTypes);
|
|
16
|
-
const resolvedValueType = resolveValueType(valueType);
|
|
17
|
-
if (isArray(resolvedValueTypes)) {
|
|
18
|
-
return resolvedValueTypes.includes(resolvedValueType);
|
|
19
|
-
}
|
|
20
|
-
return resolvedValueType == resolvedValueTypes;
|
|
21
|
-
}
|
|
22
|
-
export function getValueTypeName(valueType) {
|
|
23
|
-
const resolvedValueType = resolveValueType(valueType);
|
|
24
|
-
return isString(resolvedValueType)
|
|
25
|
-
? resolvedValueType
|
|
26
|
-
: lowercaseTypesSet.has(resolvedValueType)
|
|
27
|
-
? resolvedValueType.name.toLowerCase()
|
|
28
|
-
: resolvedValueType.name;
|
|
29
|
-
}
|
|
30
|
-
export function getSchemaTypeNames(schema) {
|
|
31
|
-
return getSchemaValueTypes(schema).map(getValueTypeName);
|
|
32
|
-
}
|
|
33
|
-
export function getSchemaValueTypes(schema) {
|
|
34
|
-
if (isTypeSchema(schema)) {
|
|
35
|
-
return [resolveValueType(schema.type)];
|
|
36
|
-
}
|
|
37
|
-
if (isFunction(schema)) {
|
|
38
|
-
return [schema];
|
|
39
|
-
}
|
|
40
|
-
if (isString(schema)) {
|
|
41
|
-
return [schema];
|
|
42
|
-
}
|
|
43
|
-
if (isObjectSchema(schema)) {
|
|
44
|
-
return [resolveValueType(schema.sourceType ?? Object)];
|
|
45
|
-
}
|
|
46
|
-
if (isValueSchema(schema)) {
|
|
47
|
-
return [...new Set(toArray(schema.schema).flatMap(getSchemaValueTypes))];
|
|
48
|
-
}
|
|
49
|
-
if (isDeferredValueType(schema)) {
|
|
50
|
-
return getSchemaValueTypes(resolveValueType(schema));
|
|
51
|
-
}
|
|
52
|
-
if (isArray(schema)) {
|
|
53
|
-
return schema.flatMap(getSchemaValueTypes);
|
|
54
|
-
}
|
|
55
|
-
throw new Error('Unsupported schema');
|
|
56
|
-
}
|