@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,61 +1,161 @@
1
- import { ISchemaBuilder, SchemaBuilder } from './SchemaBuilder.js';
2
- import { Schema, Validator } from '../schema.js';
3
- export interface INumberSchemaBuilder<TRequired extends boolean = true, TNullable extends boolean = false, TMin extends number | undefined = undefined, TMax extends number | undefined = undefined, TIsInteger extends boolean | undefined = undefined, TEnsureNotNaN extends boolean = true, TEnsureIsFinite extends boolean = true, TEqualsTo extends number | undefined = undefined> extends ISchemaBuilder<TRequired, TNullable> {
4
- min<K extends number>(val: K): INumberSchemaBuilder<TRequired, TNullable, K, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
5
- clearMin(): INumberSchemaBuilder<TRequired, TNullable, undefined, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
6
- max<K extends number>(val: K): INumberSchemaBuilder<TRequired, TNullable, TMin, K, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
7
- clearMax(): INumberSchemaBuilder<TRequired, TNullable, TMin, undefined, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
8
- optional(): INumberSchemaBuilder<false, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
9
- required(): INumberSchemaBuilder<true, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
10
- nullable(): INumberSchemaBuilder<TRequired, true, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
11
- notNullable(): INumberSchemaBuilder<TRequired, false, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
12
- equals<T extends number>(val: T): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, T>;
13
- clearEquals(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, undefined>;
14
- isInteger(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, true, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
15
- canBeNotInteger(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, undefined, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
16
- notNaN(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, true, TEnsureIsFinite, TEqualsTo>;
17
- canBeNaN(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, false, TEnsureIsFinite, TEqualsTo>;
18
- isFinite(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, true, TEqualsTo>;
19
- canBeInfinite(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, false, TEqualsTo>;
20
- }
21
- export declare class NumberSchemaBuilder<TRequired extends boolean = true, TNullable extends boolean = false, TMin extends number | undefined = undefined, TMax extends number | undefined = undefined, TIsInteger extends boolean | undefined = undefined, TEnsureNotNaN extends boolean = true, TEnsureIsFinite extends boolean = true, TEqualsTo extends number | undefined = undefined> extends SchemaBuilder<TRequired, TNullable> implements INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo> {
22
- clone(): this;
23
- get _schema(): Schema;
24
- static create<TRequired extends boolean = true, TNullable extends boolean = false, TMin extends number | undefined = undefined, TMax extends number | undefined = undefined, TIsInteger extends boolean | undefined = undefined, TEnsureNotNaN extends boolean = true, TEnsureIsFinite extends boolean = true, TEqualsTo extends number | undefined = undefined>(obj?: {
25
- isRequired: TRequired;
26
- isNullable: TNullable;
27
- min: TMin;
28
- max: TMax;
29
- isInteger: TIsInteger;
30
- ensureNotNaN: TEnsureNotNaN;
31
- ensureIsFinite: TEnsureIsFinite;
32
- equals: TEqualsTo;
33
- validators?: Validator[];
34
- preprocessor?: ((value: unknown) => unknown | Promise<unknown>) | string;
35
- }): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
1
+ import { Preprocessor, SchemaBuilder, ValidationResult, ValidationContext, Validator } from './SchemaBuilder.js';
2
+ type NumberSchemaBuilderCreateProps<T = number, R extends boolean = true> = Partial<ReturnType<NumberSchemaBuilder<T, R>['introspect']>>;
3
+ /**
4
+ * Number schema builder class. Allows to create Number schemas.
5
+ * Can be required or optional, can be restricted to be equal to a certain value,
6
+ * can be restricted to be in a certain range, can be restricted to be integer.
7
+ *
8
+ * **NOTE** this class is exported only to give opportunity to extend it
9
+ * by inheriting. It is not recommended to create an instance of this class
10
+ * directly. Use {@link number | number()} function instead.
11
+ *
12
+ * @example ```ts
13
+ * const schema = number().equals(42);
14
+ * const result = await schema.validate(42);
15
+ * // result.valid === true
16
+ * // result.object === 42
17
+ * ```
18
+ * @example ```ts
19
+ * const schema = number();
20
+ * const result = await schema.validate('42');
21
+ * // result.valid === false
22
+ * // result.errors[0].message === 'is expected to be a number'
23
+ * ```
24
+ * @example ```ts
25
+ * const schema = number().min(0).max(100);
26
+ * const result = await schema.validate(42);
27
+ * // result.valid === true
28
+ * // result.object === 42
29
+ * ```
30
+ *
31
+ * @example ```ts
32
+ * const schema = number().min(0).max(100);
33
+ * const result = await schema.validate(142.5);
34
+ * // result.valid === false
35
+ * // result.errors[0].message === 'is expected to be less than or equal to 100'
36
+ * ```
37
+ *
38
+ * @see {@link number}
39
+ */
40
+ export declare class NumberSchemaBuilder<TResult = number, TRequired extends boolean = true> extends SchemaBuilder<TResult, TRequired> {
41
+ #private;
42
+ static create(props: NumberSchemaBuilderCreateProps): NumberSchemaBuilder<number, true>;
36
43
  private constructor();
37
- protected readonly type = "number";
38
- _min?: TMin;
39
- _max?: TMax;
40
- _isInteger?: TIsInteger;
41
- _ensureNotNaN: TEnsureNotNaN;
42
- _ensureIsFinite: TEnsureIsFinite;
43
- _equals?: TEqualsTo;
44
- min<K extends number>(val: K): INumberSchemaBuilder<TRequired, TNullable, K, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
45
- clearMin(): INumberSchemaBuilder<TRequired, TNullable, undefined, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
46
- max<K extends number>(val: K): INumberSchemaBuilder<TRequired, TNullable, TMin, K, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
47
- clearMax(): INumberSchemaBuilder<TRequired, TNullable, TMin, undefined, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
48
- optional(): INumberSchemaBuilder<false, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
49
- required(): INumberSchemaBuilder<true, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
50
- nullable(): INumberSchemaBuilder<TRequired, true, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
51
- notNullable(): INumberSchemaBuilder<TRequired, false, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
52
- equals<T extends number>(val: T): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, T>;
53
- clearEquals(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, TEnsureIsFinite, undefined>;
54
- isInteger(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, true, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
55
- canBeNotInteger(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, undefined, TEnsureNotNaN, TEnsureIsFinite, TEqualsTo>;
56
- notNaN(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, true, TEnsureIsFinite, TEqualsTo>;
57
- canBeNaN(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, false, TEnsureIsFinite, TEqualsTo>;
58
- isFinite(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, true, TEqualsTo>;
59
- canBeInfinite(): INumberSchemaBuilder<TRequired, TNullable, TMin, TMax, TIsInteger, TEnsureNotNaN, false, TEqualsTo>;
44
+ introspect(): {
45
+ /**
46
+ * Min valid value (if defined).
47
+ */
48
+ min: number | undefined;
49
+ /**
50
+ * Max valid value (if defined).
51
+ */
52
+ max: number | undefined;
53
+ /**
54
+ * Make sure that object is not `NaN`. `true` by default.
55
+ */
56
+ ensureNotNaN: boolean;
57
+ /**
58
+ * Make sure that object is not different kinds of `infinity`. `true` by default.
59
+ */
60
+ ensureIsFinite: boolean;
61
+ /**
62
+ * If set, restrict object to be equal to a certain value.
63
+ */
64
+ equalsTo: number | undefined;
65
+ /**
66
+ * Allow only integer values (floating point values will be rejected
67
+ * as invalid)
68
+ */
69
+ isInteger: boolean;
70
+ /**
71
+ * Array of preprocessor functions
72
+ */
73
+ preprocessors: Preprocessor<TResult>[];
74
+ /**
75
+ * Array of validator functions
76
+ */
77
+ validators: Validator<TResult>[];
78
+ type: string;
79
+ isRequired: boolean;
80
+ };
81
+ /**
82
+ * @hidden
83
+ */
84
+ hasType<T>(notUsed?: T): NumberSchemaBuilder<T, true>;
85
+ /**
86
+ * @hidden
87
+ */
88
+ clearHasType(): NumberSchemaBuilder<number, TRequired>;
89
+ /**
90
+ * Performs validion of number schema over `object`.
91
+ * @param context Optional `ValidationContext` settings.
92
+ */
93
+ validate(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
94
+ protected createFromProps<T, TReq extends boolean>(props: NumberSchemaBuilderCreateProps<T, TReq>): this;
95
+ /**
96
+ * Restricts number to be equal to `value`.
97
+ */
98
+ equals<T extends number>(value: T): NumberSchemaBuilder<T, TRequired>;
99
+ /**
100
+ * Clear `equals()` call.
101
+ */
102
+ clearEquals(): NumberSchemaBuilder<number, TRequired>;
103
+ /**
104
+ * Float values will be considered as valid after this call.
105
+ */
106
+ isFloat(): NumberSchemaBuilder<TResult, TRequired>;
107
+ /**
108
+ * Only integer values will be considered as valid after this call.
109
+ */
110
+ isInteger(): NumberSchemaBuilder<TResult, TRequired>;
111
+ /**
112
+ * @hidden
113
+ */
114
+ required(): NumberSchemaBuilder<TResult, true>;
115
+ /**
116
+ * @hidden
117
+ */
118
+ optional(): NumberSchemaBuilder<TResult, false>;
119
+ /**
120
+ * Do not accept NaN value
121
+ */
122
+ notNaN(): NumberSchemaBuilder<TResult, TRequired>;
123
+ /**
124
+ * Consider NaN value as valid
125
+ */
126
+ canBeNaN(): NumberSchemaBuilder<TResult, TRequired>;
127
+ /**
128
+ * Do not accept `Infinity`.
129
+ */
130
+ isFinite(): NumberSchemaBuilder<TResult, TRequired>;
131
+ /**
132
+ * Consider `Infinity` as valid.
133
+ */
134
+ canBeInfinite(): NumberSchemaBuilder<TResult, TRequired>;
135
+ /**
136
+ * Restrict number to be at least `minValue`.
137
+ */
138
+ min(minValue: number): NumberSchemaBuilder<TResult, TRequired>;
139
+ /**
140
+ * Clear `min()` call.
141
+ */
142
+ clearMin(): NumberSchemaBuilder<TResult, TRequired>;
143
+ /**
144
+ * Restrict number to be no more than `maxValue`.
145
+ */
146
+ max(maxValue: number): NumberSchemaBuilder<TResult, TRequired>;
147
+ /**
148
+ * Clear `max()` call.
149
+ */
150
+ clearMax(): NumberSchemaBuilder<TResult, TRequired>;
60
151
  }
61
- export declare const number: () => INumberSchemaBuilder<true, false, undefined, undefined, undefined, true, true, undefined>;
152
+ /**
153
+ * Creates a number schema restricted to `equals` value.
154
+ * @param equals string value
155
+ */
156
+ export declare function number<T extends number>(equals: T): NumberSchemaBuilder<T, true>;
157
+ /**
158
+ * Creates a number schema.
159
+ */
160
+ export declare function number(): NumberSchemaBuilder<number, true>;
161
+ export {};