@cleverbrush/schema 1.0.0-beta.5 → 1.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.
Files changed (76) hide show
  1. package/README.md +118 -320
  2. package/dist/builders/AnySchemaBuilder.d.ts +76 -0
  3. package/dist/builders/AnySchemaBuilder.js +112 -0
  4. package/dist/builders/ArraySchemaBuilder.d.ts +112 -14
  5. package/dist/builders/ArraySchemaBuilder.js +254 -111
  6. package/dist/builders/BooleanSchemaBuilder.d.ts +69 -29
  7. package/dist/builders/BooleanSchemaBuilder.js +134 -74
  8. package/dist/builders/DateSchemaBuilder.d.ts +177 -0
  9. package/dist/builders/DateSchemaBuilder.js +433 -0
  10. package/dist/builders/FunctionSchemaBuilder.d.ts +59 -25
  11. package/dist/builders/FunctionSchemaBuilder.js +102 -58
  12. package/dist/builders/NumberSchemaBuilder.d.ts +159 -59
  13. package/dist/builders/NumberSchemaBuilder.js +345 -165
  14. package/dist/builders/ObjectSchemaBuilder.d.ts +357 -81
  15. package/dist/builders/ObjectSchemaBuilder.js +519 -283
  16. package/dist/builders/SchemaBuilder.d.ts +158 -34
  17. package/dist/builders/SchemaBuilder.js +258 -71
  18. package/dist/builders/StringSchemaBuilder.d.ts +138 -13
  19. package/dist/builders/StringSchemaBuilder.js +261 -115
  20. package/dist/builders/UnionSchemaBuilder.d.ts +129 -9
  21. package/dist/builders/UnionSchemaBuilder.js +196 -75
  22. package/dist/index.d.ts +20 -40
  23. package/dist/index.js +19 -32
  24. package/dist/utils/transaction.d.ts +46 -0
  25. package/dist/utils/transaction.js +178 -0
  26. package/package.json +27 -14
  27. package/dist/defaultSchemas.d.ts +0 -4
  28. package/dist/defaultSchemas.js +0 -45
  29. package/dist/schema.d.ts +0 -231
  30. package/dist/schema.js +0 -2
  31. package/dist/schemaRegistry.d.ts +0 -49
  32. package/dist/schemaRegistry.js +0 -278
  33. package/dist/validators/validateArray.d.ts +0 -3
  34. package/dist/validators/validateArray.js +0 -60
  35. package/dist/validators/validateBoolean.d.ts +0 -2
  36. package/dist/validators/validateBoolean.js +0 -30
  37. package/dist/validators/validateFunction.d.ts +0 -2
  38. package/dist/validators/validateFunction.js +0 -21
  39. package/dist/validators/validateNumber.d.ts +0 -2
  40. package/dist/validators/validateNumber.js +0 -69
  41. package/dist/validators/validateObject.d.ts +0 -3
  42. package/dist/validators/validateObject.js +0 -95
  43. package/dist/validators/validateString.d.ts +0 -2
  44. package/dist/validators/validateString.js +0 -50
  45. package/dist/validators/validateUnion.d.ts +0 -3
  46. package/dist/validators/validateUnion.js +0 -30
  47. package/src/builders/ArraySchemaBuilder.test.ts +0 -270
  48. package/src/builders/ArraySchemaBuilder.ts +0 -381
  49. package/src/builders/BooleanSchemaBuilder.test.ts +0 -196
  50. package/src/builders/BooleanSchemaBuilder.ts +0 -155
  51. package/src/builders/FunctionSchemaBuilder.test.ts +0 -145
  52. package/src/builders/FunctionSchemaBuilder.ts +0 -117
  53. package/src/builders/NumberSchemaBuilder.test.ts +0 -493
  54. package/src/builders/NumberSchemaBuilder.ts +0 -789
  55. package/src/builders/ObjectSchemaBuilder.test.ts +0 -657
  56. package/src/builders/ObjectSchemaBuilder.ts +0 -794
  57. package/src/builders/SchemaBuilder.test.ts +0 -73
  58. package/src/builders/SchemaBuilder.ts +0 -135
  59. package/src/builders/StringSchemaBuilder.test.ts +0 -318
  60. package/src/builders/StringSchemaBuilder.ts +0 -392
  61. package/src/builders/UnionSchemaBuilder.test.ts +0 -162
  62. package/src/builders/UnionSchemaBuilder.ts +0 -154
  63. package/src/defaultSchemas.ts +0 -44
  64. package/src/index.ts +0 -66
  65. package/src/schema.ts +0 -849
  66. package/src/schemaRegistry.builders.test.ts +0 -1393
  67. package/src/schemaRegistry.test.ts +0 -118
  68. package/src/schemaRegistry.ts +0 -461
  69. package/src/validators/validateArray.ts +0 -76
  70. package/src/validators/validateBoolean.ts +0 -36
  71. package/src/validators/validateFunction.ts +0 -25
  72. package/src/validators/validateNumber.ts +0 -82
  73. package/src/validators/validateObject.ts +0 -119
  74. package/src/validators/validateString.ts +0 -59
  75. package/src/validators/validateUnion.ts +0 -36
  76. package/tsconfig.json +0 -16
@@ -1,270 +0,0 @@
1
- import { Schema } from '../schema.js';
2
- import { array } from './ArraySchemaBuilder.js';
3
- import { number } from './NumberSchemaBuilder.js';
4
-
5
- test('Clean', () => {
6
- const schema = array();
7
- expect(schema).toHaveProperty('type', 'array');
8
- expect(schema).toHaveProperty('isRequired', true);
9
- expect(schema).toHaveProperty('isNullable', false);
10
- });
11
-
12
- test('optional', () => {
13
- const schema = array().optional();
14
- expect(schema).toHaveProperty('type', 'array');
15
- expect(schema).toHaveProperty('isRequired', false);
16
- });
17
-
18
- test('optional - 2', () => {
19
- const schema = array().optional().required();
20
- expect(schema).toHaveProperty('type', 'array');
21
- expect(schema).toHaveProperty('isRequired', true);
22
- });
23
-
24
- test('optional - 3', () => {
25
- const schema1 = array();
26
- const schema2 = schema1.optional();
27
- const e = (schema1 as Schema) === (schema2 as Schema);
28
- const isRequiredEqual = (schema1 as any).isRequired !== schema2.isRequired;
29
- expect(e).toEqual(false);
30
- expect(isRequiredEqual).toEqual(true);
31
- });
32
-
33
- test('optional - 4', () => {
34
- const schema1 = array().optional();
35
- const schema2 = schema1.optional();
36
- const e = (schema1 as Schema) === (schema2 as Schema);
37
- const isRequiredEqual = (schema1 as any).isRequired === schema2.isRequired;
38
- expect(e).toEqual(true);
39
- expect(isRequiredEqual).toEqual(true);
40
- });
41
-
42
- test('optional - 5', () => {
43
- const schema1 = array();
44
- const schema2 = schema1.required();
45
- const e = (schema1 as Schema) === (schema2 as Schema);
46
- const isRequiredEqual = (schema1 as any).isRequired === schema2.isRequired;
47
- expect(e).toEqual(true);
48
- expect(isRequiredEqual).toEqual(true);
49
- });
50
-
51
- test('optional - 6', () => {
52
- const schema1 = array().optional();
53
- const schema2 = schema1.required();
54
- const e = (schema1 as Schema) === (schema2 as Schema);
55
- const isRequiredEqual = (schema1 as any).isRequired === schema2.isRequired;
56
- expect(e).toEqual(false);
57
- expect(isRequiredEqual).toEqual(false);
58
- });
59
-
60
- test('optional - 7', () => {
61
- const schema1 = array().optional().required();
62
- const schema2 = schema1.required();
63
- const e = (schema1 as Schema) === (schema2 as Schema);
64
- const isRequiredEqual = (schema1 as any).isRequired === schema2.isRequired;
65
- expect(e).toEqual(true);
66
- expect(isRequiredEqual).toEqual(true);
67
- });
68
-
69
- test('nullable', () => {
70
- const schema = array().nullable();
71
- expect(schema).toHaveProperty('type', 'array');
72
- expect(schema).toHaveProperty('isNullable', true);
73
- });
74
-
75
- test('nullable - 2', () => {
76
- const schema = array().nullable().notNullable();
77
- expect(schema).toHaveProperty('type', 'array');
78
- expect(schema).toHaveProperty('isNullable', false);
79
- });
80
-
81
- test('nullable - 3', () => {
82
- const schema1 = array();
83
- const schema2 = schema1.nullable();
84
- const e = (schema1 as Schema) === (schema2 as Schema);
85
- const isNullableEqual = (schema1 as any).isNullable !== schema2.isNullable;
86
- expect(e).toEqual(false);
87
- expect(isNullableEqual).toEqual(true);
88
- });
89
-
90
- test('nullable - 4', () => {
91
- const schema1 = array().nullable();
92
- const schema2 = schema1.nullable();
93
- const e = (schema1 as Schema) === (schema2 as Schema);
94
- const isNullableEqual = (schema1 as any).isNullable === schema2.isNullable;
95
- expect(e).toEqual(true);
96
- expect(isNullableEqual).toEqual(true);
97
- });
98
-
99
- test('nullable - 5', () => {
100
- const schema1 = array();
101
- const schema2 = schema1.nullable();
102
- const e = (schema1 as Schema) === (schema2 as Schema);
103
- const isNullableEqual = (schema1 as any).isNullable === schema2.isNullable;
104
- expect(e).toEqual(false);
105
- expect(isNullableEqual).toEqual(false);
106
- });
107
-
108
- test('nullable - 6', () => {
109
- const schema1 = array();
110
- const schema2 = schema1.notNullable();
111
- const e = (schema1 as Schema) === (schema2 as Schema);
112
- const isNullableEqual = (schema1 as any).isNullable === schema2.isNullable;
113
- expect(e).toEqual(true);
114
- expect(isNullableEqual).toEqual(true);
115
- });
116
-
117
- test('nullable - 7', () => {
118
- const schema1 = array().nullable();
119
- const schema2 = schema1.notNullable();
120
- const e = (schema1 as Schema) === (schema2 as Schema);
121
- const isNullableEqual = (schema1 as any).isNullable === schema2.isNullable;
122
- expect(e).toEqual(false);
123
- expect(isNullableEqual).toEqual(false);
124
- });
125
-
126
- test('ofType - 1', () => {
127
- const s: Schema = {
128
- type: 'number'
129
- };
130
- const schema = array().ofType(s)._schema;
131
- expect(schema).toHaveProperty('type', 'array');
132
- expect(schema).toHaveProperty('ofType', s);
133
- });
134
-
135
- test('ofType - 2', () => {
136
- const s: Schema = {
137
- type: 'array'
138
- };
139
- const schema = array().ofType(s).clearOfType()._schema;
140
- expect(schema).toHaveProperty('type', 'array');
141
- expect(schema).not.toHaveProperty('ofType');
142
- });
143
-
144
- test('ofType - 3', () => {
145
- const schema1 = array();
146
- const schema2 = schema1.ofType(number());
147
- const equal = (schema1 as any) === schema2;
148
- expect(equal).toEqual(false);
149
- });
150
-
151
- test('ofType - 4', () => {
152
- const schema1 = array().ofType(number());
153
- const schema2 = schema1.ofType(number());
154
- const equal = (schema1 as any) === schema2;
155
- expect(equal).toEqual(false);
156
- });
157
-
158
- test('ofType - 5', () => {
159
- const schema1 = array().ofType(number());
160
- const schema2 = schema1.clone();
161
- const equal = schema1._schema.ofType === schema2._schema.ofType;
162
- expect(equal).toEqual(false);
163
- });
164
-
165
- test('ofType - 6', () => {
166
- const schema1 = array().ofType(number());
167
- const schema2 = schema1.clearOfType();
168
- const equal = (schema1 as any) === schema2;
169
- expect(equal).toEqual(false);
170
- });
171
-
172
- test('ofType - 7', () => {
173
- const schema1 = array().ofType(number()).clearOfType();
174
- const schema2 = schema1.clearOfType();
175
- const equal = (schema1 as any) === schema2;
176
- expect(equal).toEqual(true);
177
- });
178
-
179
- test('maxLength - 1', () => {
180
- const schema = array()._schema;
181
- expect(schema).toHaveProperty('type', 'array');
182
- expect(schema).not.toHaveProperty('maxLength');
183
- });
184
-
185
- test('maxLength - 2', () => {
186
- const s: Schema = {
187
- type: 'array'
188
- };
189
- const schema = array().ofType(s).maxLength(10)._schema;
190
- expect(schema).toHaveProperty('type', 'array');
191
- expect(schema).toHaveProperty('maxLength', 10);
192
- });
193
-
194
- test('maxLength - 3', () => {
195
- const s: Schema = {
196
- type: 'array'
197
- };
198
- const schema = array().ofType(s).maxLength(10).clearMaxLength()._schema;
199
- expect(schema).toHaveProperty('type', 'array');
200
- expect(schema).not.toHaveProperty('maxLength');
201
- });
202
-
203
- test('maxLength - 4', () => {
204
- const schema1 = array().maxLength(10).clearMaxLength();
205
- const schema2 = schema1.clearMaxLength();
206
- const equal = (schema1 as any) === schema2;
207
- expect(equal).toEqual(true);
208
- });
209
-
210
- test('maxLength - 5', () => {
211
- const schema1 = array().maxLength(20);
212
- const schema2 = schema1.clearMaxLength();
213
- const equal = (schema1 as any) === schema2;
214
- expect(equal).toEqual(false);
215
- });
216
-
217
- test('minLength - 1', () => {
218
- const schema = array()._schema;
219
- expect(schema).toHaveProperty('type', 'array');
220
- expect(schema).not.toHaveProperty('minLength');
221
- });
222
-
223
- test('minLength - 2', () => {
224
- const s: Schema = {
225
- type: 'array'
226
- };
227
- const schema = array().ofType(s).minLength(10)._schema;
228
- expect(schema).toHaveProperty('type', 'array');
229
- expect(schema).toHaveProperty('minLength', 10);
230
- });
231
-
232
- test('minLength - 3', () => {
233
- const s: Schema = {
234
- type: 'array'
235
- };
236
- const schema = array().ofType(s).minLength(10).clearMinLength()._schema;
237
- expect(schema).toHaveProperty('type', 'array');
238
- expect(schema).not.toHaveProperty('minLength');
239
- });
240
-
241
- test('minLength - 4', () => {
242
- const schema1 = array().minLength(10).clearMinLength();
243
- const schema2 = schema1.clearMinLength();
244
- const equal = (schema1 as any) === schema2;
245
- expect(equal).toEqual(true);
246
- });
247
-
248
- test('minLength - 5', () => {
249
- const schema1 = array().minLength(20);
250
- const schema2 = schema1.clearMinLength();
251
- const equal = (schema1 as any) === schema2;
252
- expect(equal).toEqual(false);
253
- });
254
-
255
- test('minLength - 6', () => {
256
- const schema1 = array().minLength(20).clearMinLength();
257
- const schema2 = schema1.clearMinLength();
258
- const equal = (schema1 as any) === schema2;
259
- expect(equal).toEqual(true);
260
- });
261
-
262
- test('min/max lengths - 1', () => {
263
- const s: Schema = {
264
- type: 'array'
265
- };
266
- const schema = array().ofType(s).minLength(10).maxLength(100)._schema;
267
- expect(schema).toHaveProperty('type', 'array');
268
- expect(schema).toHaveProperty('minLength', 10);
269
- expect(schema).toHaveProperty('maxLength', 100);
270
- });
@@ -1,381 +0,0 @@
1
- import { ISchemaBuilder, SchemaBuilder } from './SchemaBuilder.js';
2
- import { Schema, Validator } from '../schema.js';
3
- import { defaultSchemas } from '../defaultSchemas.js';
4
-
5
- export interface IArraySchemaBuilder<
6
- TRequired extends boolean = true,
7
- TNullable extends boolean = false,
8
- TOfType extends Schema | undefined = undefined,
9
- TMaxLength extends number | undefined = undefined,
10
- TMinLength extends number | undefined = undefined
11
- > extends ISchemaBuilder<TRequired, TNullable> {
12
- optional(): IArraySchemaBuilder<
13
- false,
14
- TNullable,
15
- TOfType,
16
- TMaxLength,
17
- TMinLength
18
- >;
19
- required(): IArraySchemaBuilder<
20
- true,
21
- TNullable,
22
- TOfType,
23
- TMaxLength,
24
- TMinLength
25
- >;
26
- ofType<T extends Schema>(
27
- schema: T
28
- ): IArraySchemaBuilder<TRequired, TNullable, T, TMaxLength, TMinLength>;
29
- nullable(): IArraySchemaBuilder<
30
- TRequired,
31
- true,
32
- TOfType,
33
- TMaxLength,
34
- TMinLength
35
- >;
36
- notNullable(): IArraySchemaBuilder<
37
- TRequired,
38
- false,
39
- TOfType,
40
- TMaxLength,
41
- TMinLength
42
- >;
43
- clearOfType(): IArraySchemaBuilder<
44
- TRequired,
45
- TNullable,
46
- undefined,
47
- TMaxLength,
48
- TMinLength
49
- >;
50
-
51
- maxLength<T extends number>(
52
- length: T
53
- ): IArraySchemaBuilder<TRequired, TNullable, TOfType, T, TMinLength>;
54
- clearMaxLength(): IArraySchemaBuilder<
55
- TRequired,
56
- TNullable,
57
- TOfType,
58
- undefined,
59
- TMinLength
60
- >;
61
- minLength<T extends number>(
62
- length: T
63
- ): IArraySchemaBuilder<TRequired, TNullable, TOfType, TMaxLength, T>;
64
-
65
- clearMinLength(): IArraySchemaBuilder<
66
- TRequired,
67
- TNullable,
68
- TOfType,
69
- TMaxLength,
70
- TMinLength
71
- >;
72
- }
73
-
74
- class ArraySchemaBuilder<
75
- TRequired extends boolean = true,
76
- TNullable extends boolean = false,
77
- TOfType extends Schema | undefined = undefined,
78
- TMaxLength extends number | undefined = undefined,
79
- TMinLength extends number | undefined = undefined
80
- >
81
- extends SchemaBuilder<TRequired, TNullable>
82
- implements
83
- IArraySchemaBuilder<
84
- TRequired,
85
- TNullable,
86
- TOfType,
87
- TMaxLength,
88
- TMinLength
89
- >
90
- {
91
- public clone(): this {
92
- return ArraySchemaBuilder.create(this._schema as any) as this;
93
- }
94
-
95
- public get _schema(): Schema {
96
- return Object.assign(
97
- {
98
- type: this.type
99
- },
100
- this.getCommonSchema(),
101
- typeof this._ofType !== 'undefined'
102
- ? {
103
- ofType: this._ofType as any
104
- }
105
- : {},
106
- typeof this._minLength !== 'undefined'
107
- ? { minLength: this._minLength }
108
- : {},
109
- typeof this._maxLength !== 'undefined'
110
- ? { maxLength: this._maxLength }
111
- : {}
112
- );
113
- }
114
-
115
- public static create<
116
- TRequired extends boolean = true,
117
- TNullable extends boolean = false,
118
- TOfType extends Schema | undefined = undefined,
119
- TMaxLength extends number | undefined = undefined,
120
- TMinLength extends number | undefined = undefined
121
- >(obj?: {
122
- isRequired: TRequired;
123
- isNullable: TNullable;
124
- ofType?: TOfType;
125
- maxLength?: TMaxLength;
126
- minLength?: TMinLength;
127
- validators?: Validator[];
128
- preprocessor?:
129
- | ((value: unknown) => unknown | Promise<unknown>)
130
- | string;
131
- }): IArraySchemaBuilder<
132
- TRequired,
133
- TNullable,
134
- TOfType,
135
- TMaxLength,
136
- TMinLength
137
- > {
138
- return new ArraySchemaBuilder(obj as any);
139
- }
140
-
141
- private constructor(obj: {
142
- isRequired: TRequired;
143
- isNullable: TNullable;
144
- ofType?: TOfType;
145
- maxLength?: TMaxLength;
146
- minLength?: TMinLength;
147
- validators?: Validator[];
148
- preprocessor?:
149
- | ((value: unknown) => unknown | Promise<unknown>)
150
- | string;
151
- }) {
152
- super(obj);
153
- if (typeof obj === 'object' && obj) {
154
- if (typeof obj.ofType !== 'undefined') {
155
- this._ofType =
156
- obj.ofType instanceof SchemaBuilder
157
- ? obj.ofType.clone()
158
- : { ...(obj.ofType as any) };
159
- }
160
- if (typeof obj.maxLength !== 'undefined') {
161
- this._maxLength = obj.maxLength;
162
- }
163
- if (typeof obj.minLength !== 'undefined') {
164
- this._minLength = obj.minLength;
165
- }
166
- } else {
167
- const defaultSchema = defaultSchemas['array'] as any;
168
- this.isRequired = defaultSchema.isRequired;
169
- this.isNullable = defaultSchema.isNullable;
170
- }
171
- }
172
-
173
- protected readonly type = 'array';
174
-
175
- protected _ofType?: TOfType;
176
- protected _maxLength?: TMaxLength;
177
- protected _minLength?: TMinLength;
178
-
179
- optional(): IArraySchemaBuilder<
180
- false,
181
- TNullable,
182
- TOfType,
183
- TMaxLength,
184
- TMinLength
185
- > {
186
- if (this.isRequired === false) {
187
- return this as IArraySchemaBuilder<
188
- false,
189
- TNullable,
190
- TOfType,
191
- TMaxLength,
192
- TMinLength
193
- >;
194
- }
195
-
196
- return ArraySchemaBuilder.create({
197
- ...(this._schema as any),
198
- isRequired: false
199
- });
200
- }
201
-
202
- required(): IArraySchemaBuilder<
203
- true,
204
- TNullable,
205
- TOfType,
206
- TMaxLength,
207
- TMinLength
208
- > {
209
- if (this.isRequired === true) {
210
- return this as IArraySchemaBuilder<
211
- true,
212
- TNullable,
213
- TOfType,
214
- TMaxLength,
215
- TMinLength
216
- >;
217
- }
218
-
219
- return ArraySchemaBuilder.create({
220
- ...(this._schema as any),
221
- isRequired: true
222
- });
223
- }
224
-
225
- nullable(): IArraySchemaBuilder<
226
- TRequired,
227
- true,
228
- TOfType,
229
- TMaxLength,
230
- TMinLength
231
- > {
232
- if (this._isNullable === true) {
233
- return this as IArraySchemaBuilder<
234
- TRequired,
235
- true,
236
- TOfType,
237
- TMaxLength,
238
- TMinLength
239
- >;
240
- }
241
- return ArraySchemaBuilder.create({
242
- ...(this._schema as any),
243
- isNullable: true
244
- });
245
- }
246
-
247
- notNullable(): IArraySchemaBuilder<
248
- TRequired,
249
- false,
250
- TOfType,
251
- TMaxLength,
252
- TMinLength
253
- > {
254
- if (this.isNullable === false) {
255
- return this as IArraySchemaBuilder<
256
- TRequired,
257
- false,
258
- TOfType,
259
- TMaxLength,
260
- TMinLength
261
- >;
262
- }
263
- return ArraySchemaBuilder.create({
264
- ...(this._schema as any),
265
- isNullable: false
266
- });
267
- }
268
-
269
- ofType<T extends Schema>(
270
- schema: T
271
- ): IArraySchemaBuilder<TRequired, TNullable, T, TMaxLength, TMinLength> {
272
- return ArraySchemaBuilder.create({
273
- ...(this._schema as any),
274
- ofType: schema
275
- });
276
- }
277
-
278
- clearOfType(): IArraySchemaBuilder<
279
- TRequired,
280
- TNullable,
281
- undefined,
282
- TMaxLength,
283
- TMinLength
284
- > {
285
- if (typeof this._ofType === 'undefined') {
286
- return this as IArraySchemaBuilder<
287
- TRequired,
288
- TNullable,
289
- undefined,
290
- TMaxLength,
291
- TMinLength
292
- >;
293
- }
294
- return ArraySchemaBuilder.create({
295
- ...(this._schema as any),
296
- ofType: undefined
297
- });
298
- }
299
-
300
- maxLength<T extends number>(
301
- length: T
302
- ): IArraySchemaBuilder<TRequired, TNullable, TOfType, T, TMinLength> {
303
- if ((this._maxLength as any) === length) {
304
- return this as any as IArraySchemaBuilder<
305
- TRequired,
306
- TNullable,
307
- TOfType,
308
- T,
309
- TMinLength
310
- >;
311
- }
312
- return ArraySchemaBuilder.create({
313
- ...(this._schema as any),
314
- maxLength: length
315
- });
316
- }
317
-
318
- clearMaxLength(): IArraySchemaBuilder<
319
- TRequired,
320
- TNullable,
321
- TOfType,
322
- undefined,
323
- TMinLength
324
- > {
325
- if (typeof this._maxLength === 'undefined') {
326
- return this as IArraySchemaBuilder<
327
- TRequired,
328
- TNullable,
329
- TOfType,
330
- undefined,
331
- TMinLength
332
- >;
333
- }
334
- return ArraySchemaBuilder.create({
335
- ...(this._schema as any),
336
- maxLength: undefined
337
- });
338
- }
339
-
340
- minLength<T extends number>(
341
- length: T
342
- ): IArraySchemaBuilder<TRequired, TNullable, TOfType, TMaxLength, T> {
343
- if ((this._minLength as any) === length) {
344
- return this as any as IArraySchemaBuilder<
345
- TRequired,
346
- TNullable,
347
- TOfType,
348
- TMaxLength,
349
- T
350
- >;
351
- }
352
- return ArraySchemaBuilder.create({
353
- ...(this._schema as any),
354
- minLength: length
355
- });
356
- }
357
-
358
- clearMinLength(): IArraySchemaBuilder<
359
- TRequired,
360
- TNullable,
361
- TOfType,
362
- TMaxLength,
363
- TMinLength
364
- > {
365
- if (typeof this._minLength === 'undefined') {
366
- return this as IArraySchemaBuilder<
367
- TRequired,
368
- TNullable,
369
- TOfType,
370
- TMaxLength,
371
- TMinLength
372
- >;
373
- }
374
- return ArraySchemaBuilder.create({
375
- ...(this._schema as any),
376
- minLength: undefined
377
- });
378
- }
379
- }
380
-
381
- export const array = () => ArraySchemaBuilder.create();