@palmares/schemas 0.0.1 → 0.1.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/.turbo/turbo-build$colon$watch.log +12 -410
- package/.turbo/turbo-build.log +13 -4
- package/CHANGELOG.md +26 -0
- package/__tests__/.drizzle/migrations/0000_skinny_harrier.sql +22 -0
- package/__tests__/.drizzle/migrations/meta/0000_snapshot.json +156 -0
- package/__tests__/.drizzle/migrations/meta/_journal.json +13 -0
- package/__tests__/.drizzle/schema.ts +35 -0
- package/__tests__/drizzle.config.ts +11 -0
- package/__tests__/eslint.config.js +10 -0
- package/__tests__/manage.ts +5 -0
- package/__tests__/node_modules/.bin/drizzle-kit +17 -0
- package/__tests__/node_modules/.bin/esbuild +14 -0
- package/__tests__/node_modules/.bin/tsc +17 -0
- package/__tests__/node_modules/.bin/tsserver +17 -0
- package/__tests__/node_modules/.bin/tsx +17 -0
- package/__tests__/package.json +36 -0
- package/__tests__/sqlite.db +0 -0
- package/__tests__/src/core/array.test.ts +130 -0
- package/__tests__/src/core/boolean.test.ts +66 -0
- package/__tests__/src/core/datetime.test.ts +102 -0
- package/__tests__/src/core/index.ts +35 -0
- package/__tests__/src/core/model.test.ts +260 -0
- package/__tests__/src/core/models.ts +50 -0
- package/__tests__/src/core/numbers.test.ts +177 -0
- package/__tests__/src/core/object.test.ts +198 -0
- package/__tests__/src/core/string.test.ts +222 -0
- package/__tests__/src/core/test.test.ts +59 -0
- package/__tests__/src/core/types.test.ts +97 -0
- package/__tests__/src/core/union.test.ts +99 -0
- package/__tests__/src/settings.ts +71 -0
- package/__tests__/tsconfig.json +11 -0
- package/dist/cjs/src/adapter/fields/index.js +2 -2
- package/dist/cjs/src/adapter/fields/object.js +9 -0
- package/dist/cjs/src/adapter/index.js +1 -0
- package/dist/cjs/src/constants.js +1 -7
- package/dist/cjs/src/domain.js +146 -1
- package/dist/cjs/src/index.js +69 -74
- package/dist/cjs/src/model.js +206 -206
- package/dist/cjs/src/schema/array.js +185 -58
- package/dist/cjs/src/schema/boolean.js +105 -44
- package/dist/cjs/src/schema/datetime.js +104 -38
- package/dist/cjs/src/schema/number.js +134 -114
- package/dist/cjs/src/schema/object.js +106 -43
- package/dist/cjs/src/schema/schema.js +123 -75
- package/dist/cjs/src/schema/string.js +152 -58
- package/dist/cjs/src/schema/union.js +412 -290
- package/dist/cjs/src/utils.js +42 -15
- package/dist/cjs/src/validators/array.js +6 -1
- package/dist/cjs/src/validators/boolean.js +2 -0
- package/dist/cjs/src/validators/datetime.js +4 -0
- package/dist/cjs/src/validators/number.js +12 -40
- package/dist/cjs/src/validators/object.js +1 -0
- package/dist/cjs/src/validators/schema.js +5 -1
- package/dist/cjs/src/validators/string.js +30 -2
- package/dist/cjs/src/validators/union.js +5 -4
- package/dist/cjs/src/validators/utils.js +99 -27
- package/dist/cjs/tsconfig.types.tsbuildinfo +1 -1
- package/dist/cjs/types/adapter/fields/array.d.ts +2 -2
- package/dist/cjs/types/adapter/fields/array.d.ts.map +1 -1
- package/dist/cjs/types/adapter/fields/boolean.d.ts.map +1 -1
- package/dist/cjs/types/adapter/fields/datetime.d.ts.map +1 -1
- package/dist/cjs/types/adapter/fields/index.d.ts +2 -2
- package/dist/cjs/types/adapter/fields/index.d.ts.map +1 -1
- package/dist/cjs/types/adapter/fields/number.d.ts.map +1 -1
- package/dist/cjs/types/adapter/fields/object.d.ts +2 -1
- package/dist/cjs/types/adapter/fields/object.d.ts.map +1 -1
- package/dist/cjs/types/adapter/fields/string.d.ts.map +1 -1
- package/dist/cjs/types/adapter/fields/union.d.ts.map +1 -1
- package/dist/cjs/types/adapter/index.d.ts +1 -0
- package/dist/cjs/types/adapter/index.d.ts.map +1 -1
- package/dist/cjs/types/adapter/types.d.ts +28 -18
- package/dist/cjs/types/adapter/types.d.ts.map +1 -1
- package/dist/cjs/types/constants.d.ts +0 -1
- package/dist/cjs/types/constants.d.ts.map +1 -1
- package/dist/cjs/types/domain.d.ts +5 -4
- package/dist/cjs/types/domain.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +78 -55
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/model.d.ts +17 -17
- package/dist/cjs/types/model.d.ts.map +1 -1
- package/dist/cjs/types/schema/array.d.ts +168 -47
- package/dist/cjs/types/schema/array.d.ts.map +1 -1
- package/dist/cjs/types/schema/boolean.d.ts +103 -44
- package/dist/cjs/types/schema/boolean.d.ts.map +1 -1
- package/dist/cjs/types/schema/datetime.d.ts +90 -30
- package/dist/cjs/types/schema/datetime.d.ts.map +1 -1
- package/dist/cjs/types/schema/number.d.ts +133 -125
- package/dist/cjs/types/schema/number.d.ts.map +1 -1
- package/dist/cjs/types/schema/object.d.ts +104 -35
- package/dist/cjs/types/schema/object.d.ts.map +1 -1
- package/dist/cjs/types/schema/schema.d.ts +62 -44
- package/dist/cjs/types/schema/schema.d.ts.map +1 -1
- package/dist/cjs/types/schema/string.d.ts +152 -65
- package/dist/cjs/types/schema/string.d.ts.map +1 -1
- package/dist/cjs/types/schema/types.d.ts +11 -2
- package/dist/cjs/types/schema/types.d.ts.map +1 -1
- package/dist/cjs/types/schema/union.d.ts +133 -40
- package/dist/cjs/types/schema/union.d.ts.map +1 -1
- package/dist/cjs/types/types.d.ts +35 -0
- package/dist/cjs/types/types.d.ts.map +1 -1
- package/dist/cjs/types/utils.d.ts +41 -27
- package/dist/cjs/types/utils.d.ts.map +1 -1
- package/dist/cjs/types/validators/array.d.ts.map +1 -1
- package/dist/cjs/types/validators/boolean.d.ts.map +1 -1
- package/dist/cjs/types/validators/datetime.d.ts.map +1 -1
- package/dist/cjs/types/validators/number.d.ts +5 -6
- package/dist/cjs/types/validators/number.d.ts.map +1 -1
- package/dist/cjs/types/validators/object.d.ts.map +1 -1
- package/dist/cjs/types/validators/schema.d.ts +2 -2
- package/dist/cjs/types/validators/schema.d.ts.map +1 -1
- package/dist/cjs/types/validators/string.d.ts +9 -9
- package/dist/cjs/types/validators/string.d.ts.map +1 -1
- package/dist/cjs/types/validators/utils.d.ts +44 -27
- package/dist/cjs/types/validators/utils.d.ts.map +1 -1
- package/dist/esm/src/adapter/fields/index.js +2 -2
- package/dist/esm/src/adapter/fields/object.js +6 -0
- package/dist/esm/src/adapter/index.js +1 -0
- package/dist/esm/src/constants.js +1 -2
- package/dist/esm/src/domain.js +11 -1
- package/dist/esm/src/index.js +38 -73
- package/dist/esm/src/model.js +83 -78
- package/dist/esm/src/schema/array.js +136 -54
- package/dist/esm/src/schema/boolean.js +98 -44
- package/dist/esm/src/schema/datetime.js +91 -38
- package/dist/esm/src/schema/number.js +127 -110
- package/dist/esm/src/schema/object.js +98 -43
- package/dist/esm/src/schema/schema.js +102 -67
- package/dist/esm/src/schema/string.js +147 -59
- package/dist/esm/src/schema/union.js +119 -40
- package/dist/esm/src/types.js +14 -1
- package/dist/esm/src/utils.js +56 -27
- package/dist/esm/src/validators/array.js +6 -1
- package/dist/esm/src/validators/boolean.js +2 -0
- package/dist/esm/src/validators/datetime.js +4 -0
- package/dist/esm/src/validators/number.js +9 -23
- package/dist/esm/src/validators/object.js +1 -0
- package/dist/esm/src/validators/schema.js +5 -1
- package/dist/esm/src/validators/string.js +30 -2
- package/dist/esm/src/validators/union.js +5 -4
- package/dist/esm/src/validators/utils.js +62 -36
- package/package.json +3 -3
- package/src/adapter/fields/array.ts +2 -2
- package/src/adapter/fields/boolean.ts +3 -8
- package/src/adapter/fields/datetime.ts +3 -9
- package/src/adapter/fields/index.ts +11 -11
- package/src/adapter/fields/number.ts +3 -9
- package/src/adapter/fields/object.ts +13 -10
- package/src/adapter/fields/string.ts +3 -9
- package/src/adapter/fields/union.ts +3 -9
- package/src/adapter/index.ts +1 -0
- package/src/adapter/types.ts +60 -45
- package/src/constants.ts +1 -3
- package/src/domain.ts +15 -1
- package/src/index.ts +189 -211
- package/src/model.ts +119 -115
- package/src/schema/array.ts +274 -90
- package/src/schema/boolean.ts +145 -60
- package/src/schema/datetime.ts +133 -49
- package/src/schema/number.ts +210 -173
- package/src/schema/object.ts +167 -74
- package/src/schema/schema.ts +205 -126
- package/src/schema/string.ts +221 -94
- package/src/schema/types.ts +44 -16
- package/src/schema/union.ts +193 -68
- package/src/types.ts +53 -0
- package/src/utils.ts +115 -57
- package/src/validators/array.ts +46 -27
- package/src/validators/boolean.ts +13 -7
- package/src/validators/datetime.ts +24 -16
- package/src/validators/number.ts +53 -63
- package/src/validators/object.ts +6 -5
- package/src/validators/schema.ts +33 -25
- package/src/validators/string.ts +122 -59
- package/src/validators/union.ts +8 -8
- package/src/validators/utils.ts +67 -42
@@ -5,18 +5,12 @@ import type SchemaAdapter from '..';
|
|
5
5
|
import type WithFallback from '../../utils';
|
6
6
|
import type { UnionAdapterTranslateArgs } from '../types';
|
7
7
|
|
8
|
-
|
9
8
|
export function unionFieldAdapter<
|
10
9
|
TTranslate extends UnionFieldAdapter['translate'],
|
11
10
|
TToString extends UnionFieldAdapter['toString'],
|
12
11
|
TFormatError extends UnionFieldAdapter['formatError'],
|
13
12
|
TParse extends UnionFieldAdapter['parse']
|
14
|
-
>(args: {
|
15
|
-
translate: TTranslate;
|
16
|
-
toString?: TToString;
|
17
|
-
formatError?: TFormatError;
|
18
|
-
parse?: TParse;
|
19
|
-
}) {
|
13
|
+
>(args: { translate: TTranslate; toString?: TToString; formatError?: TFormatError; parse?: TParse }) {
|
20
14
|
class CustomUnionFieldAdapter extends UnionFieldAdapter {
|
21
15
|
translate = args.translate;
|
22
16
|
toString = args.toString as TToString;
|
@@ -30,8 +24,8 @@ export function unionFieldAdapter<
|
|
30
24
|
toString: TToString;
|
31
25
|
formatError: TFormatError;
|
32
26
|
parse: TParse;
|
33
|
-
}
|
34
|
-
}
|
27
|
+
};
|
28
|
+
};
|
35
29
|
}
|
36
30
|
|
37
31
|
export default class UnionFieldAdapter extends FieldAdapter {
|
package/src/adapter/index.ts
CHANGED
package/src/adapter/types.ts
CHANGED
@@ -11,41 +11,49 @@ export type AdapterToStringArgs = {
|
|
11
11
|
optional: Schema['__optional']['allow'];
|
12
12
|
nullable: Schema['__nullable']['allow'];
|
13
13
|
};
|
14
|
+
type: Schema['__type'];
|
14
15
|
optional: Schema['__optional'];
|
15
16
|
nullable: Schema['__nullable'];
|
16
17
|
};
|
17
18
|
|
18
|
-
export type AdapterTranslateArgs<TType extends SupportedSchemas = SupportedSchemas> = AdapterToStringArgs &
|
19
|
+
export type AdapterTranslateArgs<TType extends SupportedSchemas = SupportedSchemas> = AdapterToStringArgs &
|
20
|
+
NonToTranslateArgs<TType>;
|
19
21
|
|
20
22
|
export type DatetimeAdapterTranslateArgs = {
|
21
23
|
allowString: boolean | undefined;
|
22
|
-
above:
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
24
|
+
above:
|
25
|
+
| {
|
26
|
+
value: Date;
|
27
|
+
inclusive: boolean;
|
28
|
+
message: string;
|
29
|
+
}
|
30
|
+
| undefined;
|
31
|
+
below:
|
32
|
+
| {
|
33
|
+
value: Date;
|
34
|
+
inclusive: boolean;
|
35
|
+
message: string;
|
36
|
+
}
|
37
|
+
| undefined;
|
32
38
|
} & AdapterTranslateArgs<'datetime'>;
|
33
39
|
|
34
40
|
export type BooleanAdapterTranslateArgs = {
|
35
41
|
parsers: {
|
36
42
|
allowString: boolean | undefined;
|
37
43
|
allowNumber: boolean | undefined;
|
38
|
-
trueValues: any[];
|
39
|
-
falseValues: any[];
|
40
|
-
is: boolean;
|
44
|
+
trueValues: any[] | undefined;
|
45
|
+
falseValues: any[] | undefined;
|
41
46
|
} & AdapterTranslateArgs<'boolean'>['parsers'];
|
42
|
-
is:
|
43
|
-
|
44
|
-
|
45
|
-
|
47
|
+
is:
|
48
|
+
| {
|
49
|
+
value: boolean;
|
50
|
+
message: string;
|
51
|
+
}
|
52
|
+
| undefined;
|
46
53
|
} & AdapterTranslateArgs<'boolean'>;
|
47
54
|
|
48
55
|
export type ArrayAdapterTranslateArgs = {
|
56
|
+
schemas: any[];
|
49
57
|
minLength:
|
50
58
|
| {
|
51
59
|
value: number;
|
@@ -67,9 +75,19 @@ export type ArrayAdapterTranslateArgs = {
|
|
67
75
|
| undefined;
|
68
76
|
|
69
77
|
isTuple: boolean;
|
70
|
-
} &
|
78
|
+
} & (
|
79
|
+
| {
|
80
|
+
isTuple: true;
|
81
|
+
schemas: [any, ...any[]];
|
82
|
+
}
|
83
|
+
| { isTuple: false; schemas: [any] }
|
84
|
+
) &
|
85
|
+
AdapterTranslateArgs<'array'>;
|
71
86
|
|
72
87
|
export type NumberAdapterTranslateArgs = {
|
88
|
+
parsers: {
|
89
|
+
allowString: boolean | undefined;
|
90
|
+
} & AdapterTranslateArgs<'number'>['parsers'];
|
73
91
|
is:
|
74
92
|
| {
|
75
93
|
value: number[];
|
@@ -102,18 +120,6 @@ export type NumberAdapterTranslateArgs = {
|
|
102
120
|
message: string;
|
103
121
|
}
|
104
122
|
| undefined;
|
105
|
-
allowNegative:
|
106
|
-
| {
|
107
|
-
allowZero: boolean;
|
108
|
-
message: string;
|
109
|
-
}
|
110
|
-
| undefined;
|
111
|
-
allowPositive:
|
112
|
-
| {
|
113
|
-
allowZero: boolean;
|
114
|
-
message: string;
|
115
|
-
}
|
116
|
-
| undefined;
|
117
123
|
integer:
|
118
124
|
| {
|
119
125
|
message: string;
|
@@ -129,17 +135,27 @@ export type StringAdapterTranslateArgsWithoutNonTranslateArgs = Omit<
|
|
129
135
|
>;
|
130
136
|
|
131
137
|
export type StringAdapterTranslateArgs = {
|
138
|
+
is:
|
139
|
+
| {
|
140
|
+
value: string[] | string;
|
141
|
+
message: string;
|
142
|
+
}
|
143
|
+
| undefined;
|
144
|
+
uuid:
|
145
|
+
| {
|
146
|
+
message: string;
|
147
|
+
}
|
148
|
+
| undefined;
|
149
|
+
email: { message: string } | undefined;
|
132
150
|
minLength:
|
133
151
|
| {
|
134
152
|
value: number;
|
135
|
-
inclusive: boolean;
|
136
153
|
message: string;
|
137
154
|
}
|
138
155
|
| undefined;
|
139
156
|
maxLength:
|
140
157
|
| {
|
141
158
|
value: number;
|
142
|
-
inclusive: boolean;
|
143
159
|
message: string;
|
144
160
|
}
|
145
161
|
| undefined;
|
@@ -219,26 +235,25 @@ export type DatetimeAdapterTranslateArgsWithoutNonTranslateArgs = Omit<
|
|
219
235
|
export type ValidationDataBasedOnType<TType> = TType extends 'number'
|
220
236
|
? NumberAdapterTranslateArgsWithoutNonTranslateArgs
|
221
237
|
: TType extends 'union'
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
238
|
+
? UnionAdapterTranslateArgsWithoutNonTranslateArgs
|
239
|
+
: TType extends 'string'
|
240
|
+
? StringAdapterTranslateArgsWithoutNonTranslateArgs
|
241
|
+
: TType extends 'array'
|
242
|
+
? ArrayAdapterTranslateArgsWithoutNonTranslateArgs
|
243
|
+
: TType extends 'boolean'
|
244
|
+
? BooleanAdapterTranslateArgsWithoutNonTranslateArgs
|
245
|
+
: TType extends 'datetime'
|
246
|
+
? DatetimeAdapterTranslateArgsWithoutNonTranslateArgs
|
247
|
+
: ObjectAdapterTranslateArgsWithoutNonTranslateArgs;
|
232
248
|
|
233
249
|
export type ErrorCodes =
|
234
250
|
| 'max'
|
235
|
-
| 'negative'
|
236
|
-
| 'positive'
|
237
251
|
| 'maxDigits'
|
238
252
|
| 'decimalPlaces'
|
239
253
|
| 'min'
|
240
254
|
| 'integer'
|
241
255
|
| 'required'
|
256
|
+
| 'null'
|
242
257
|
| 'object'
|
243
258
|
| 'number'
|
244
259
|
| 'string'
|
package/src/constants.ts
CHANGED
@@ -2,8 +2,6 @@ export const DEFAULT_NUMBER_MAX_EXCEPTION = (max: number, inclusive: boolean) =>
|
|
2
2
|
`The number is greater than the allowed ${max}.${inclusive ? ` The value ${max} is accepted as well.` : ''}`;
|
3
3
|
export const DEFAULT_NUMBER_MIN_EXCEPTION = (min: number, inclusive: boolean) =>
|
4
4
|
`The number is less than the allowed ${min}.${inclusive ? ` The value ${min} is accepted as well.` : ''}`;
|
5
|
-
export const DEFAULT_NUMBER_NEGATIVE_EXCEPTION = (allowZero: boolean) =>
|
6
|
-
`The number should be negative.${allowZero ? ` The value 0 is accepted as well.` : ''}`;
|
7
5
|
export const DEFAULT_NUMBER_POSITIVE_EXCEPTION = (allowZero: boolean) =>
|
8
6
|
`The number should be positive.${allowZero ? ` The value 0 is accepted as well.` : ''}`;
|
9
|
-
export const DEFAULT_NUMBER_INTEGER_EXCEPTION = () => `
|
7
|
+
export const DEFAULT_NUMBER_INTEGER_EXCEPTION = () => `The number should be an integer.`;
|
package/src/domain.ts
CHANGED
@@ -1,3 +1,17 @@
|
|
1
1
|
import { domain } from '@palmares/core';
|
2
2
|
|
3
|
-
|
3
|
+
import { getDefaultAdapter, setDefaultAdapter } from './conf';
|
4
|
+
|
5
|
+
import type { SchemasSettingsType } from './types';
|
6
|
+
|
7
|
+
const schemasDomain = domain('@palmares/schemas', __dirname, {
|
8
|
+
commands: {},
|
9
|
+
// eslint-disable-next-line ts/require-await
|
10
|
+
load: async (settings: SchemasSettingsType) => {
|
11
|
+
setDefaultAdapter(new settings.schemaAdapter());
|
12
|
+
const schemaAdapter = getDefaultAdapter();
|
13
|
+
return undefined;
|
14
|
+
}
|
15
|
+
});
|
16
|
+
|
17
|
+
export default schemasDomain;
|