@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.
Files changed (175) hide show
  1. package/.turbo/turbo-build$colon$watch.log +12 -410
  2. package/.turbo/turbo-build.log +13 -4
  3. package/CHANGELOG.md +26 -0
  4. package/__tests__/.drizzle/migrations/0000_skinny_harrier.sql +22 -0
  5. package/__tests__/.drizzle/migrations/meta/0000_snapshot.json +156 -0
  6. package/__tests__/.drizzle/migrations/meta/_journal.json +13 -0
  7. package/__tests__/.drizzle/schema.ts +35 -0
  8. package/__tests__/drizzle.config.ts +11 -0
  9. package/__tests__/eslint.config.js +10 -0
  10. package/__tests__/manage.ts +5 -0
  11. package/__tests__/node_modules/.bin/drizzle-kit +17 -0
  12. package/__tests__/node_modules/.bin/esbuild +14 -0
  13. package/__tests__/node_modules/.bin/tsc +17 -0
  14. package/__tests__/node_modules/.bin/tsserver +17 -0
  15. package/__tests__/node_modules/.bin/tsx +17 -0
  16. package/__tests__/package.json +36 -0
  17. package/__tests__/sqlite.db +0 -0
  18. package/__tests__/src/core/array.test.ts +130 -0
  19. package/__tests__/src/core/boolean.test.ts +66 -0
  20. package/__tests__/src/core/datetime.test.ts +102 -0
  21. package/__tests__/src/core/index.ts +35 -0
  22. package/__tests__/src/core/model.test.ts +260 -0
  23. package/__tests__/src/core/models.ts +50 -0
  24. package/__tests__/src/core/numbers.test.ts +177 -0
  25. package/__tests__/src/core/object.test.ts +198 -0
  26. package/__tests__/src/core/string.test.ts +222 -0
  27. package/__tests__/src/core/test.test.ts +59 -0
  28. package/__tests__/src/core/types.test.ts +97 -0
  29. package/__tests__/src/core/union.test.ts +99 -0
  30. package/__tests__/src/settings.ts +71 -0
  31. package/__tests__/tsconfig.json +11 -0
  32. package/dist/cjs/src/adapter/fields/index.js +2 -2
  33. package/dist/cjs/src/adapter/fields/object.js +9 -0
  34. package/dist/cjs/src/adapter/index.js +1 -0
  35. package/dist/cjs/src/constants.js +1 -7
  36. package/dist/cjs/src/domain.js +146 -1
  37. package/dist/cjs/src/index.js +69 -74
  38. package/dist/cjs/src/model.js +206 -206
  39. package/dist/cjs/src/schema/array.js +185 -58
  40. package/dist/cjs/src/schema/boolean.js +105 -44
  41. package/dist/cjs/src/schema/datetime.js +104 -38
  42. package/dist/cjs/src/schema/number.js +134 -114
  43. package/dist/cjs/src/schema/object.js +106 -43
  44. package/dist/cjs/src/schema/schema.js +123 -75
  45. package/dist/cjs/src/schema/string.js +152 -58
  46. package/dist/cjs/src/schema/union.js +412 -290
  47. package/dist/cjs/src/utils.js +42 -15
  48. package/dist/cjs/src/validators/array.js +6 -1
  49. package/dist/cjs/src/validators/boolean.js +2 -0
  50. package/dist/cjs/src/validators/datetime.js +4 -0
  51. package/dist/cjs/src/validators/number.js +12 -40
  52. package/dist/cjs/src/validators/object.js +1 -0
  53. package/dist/cjs/src/validators/schema.js +5 -1
  54. package/dist/cjs/src/validators/string.js +30 -2
  55. package/dist/cjs/src/validators/union.js +5 -4
  56. package/dist/cjs/src/validators/utils.js +99 -27
  57. package/dist/cjs/tsconfig.types.tsbuildinfo +1 -1
  58. package/dist/cjs/types/adapter/fields/array.d.ts +2 -2
  59. package/dist/cjs/types/adapter/fields/array.d.ts.map +1 -1
  60. package/dist/cjs/types/adapter/fields/boolean.d.ts.map +1 -1
  61. package/dist/cjs/types/adapter/fields/datetime.d.ts.map +1 -1
  62. package/dist/cjs/types/adapter/fields/index.d.ts +2 -2
  63. package/dist/cjs/types/adapter/fields/index.d.ts.map +1 -1
  64. package/dist/cjs/types/adapter/fields/number.d.ts.map +1 -1
  65. package/dist/cjs/types/adapter/fields/object.d.ts +2 -1
  66. package/dist/cjs/types/adapter/fields/object.d.ts.map +1 -1
  67. package/dist/cjs/types/adapter/fields/string.d.ts.map +1 -1
  68. package/dist/cjs/types/adapter/fields/union.d.ts.map +1 -1
  69. package/dist/cjs/types/adapter/index.d.ts +1 -0
  70. package/dist/cjs/types/adapter/index.d.ts.map +1 -1
  71. package/dist/cjs/types/adapter/types.d.ts +28 -18
  72. package/dist/cjs/types/adapter/types.d.ts.map +1 -1
  73. package/dist/cjs/types/constants.d.ts +0 -1
  74. package/dist/cjs/types/constants.d.ts.map +1 -1
  75. package/dist/cjs/types/domain.d.ts +5 -4
  76. package/dist/cjs/types/domain.d.ts.map +1 -1
  77. package/dist/cjs/types/index.d.ts +78 -55
  78. package/dist/cjs/types/index.d.ts.map +1 -1
  79. package/dist/cjs/types/model.d.ts +17 -17
  80. package/dist/cjs/types/model.d.ts.map +1 -1
  81. package/dist/cjs/types/schema/array.d.ts +168 -47
  82. package/dist/cjs/types/schema/array.d.ts.map +1 -1
  83. package/dist/cjs/types/schema/boolean.d.ts +103 -44
  84. package/dist/cjs/types/schema/boolean.d.ts.map +1 -1
  85. package/dist/cjs/types/schema/datetime.d.ts +90 -30
  86. package/dist/cjs/types/schema/datetime.d.ts.map +1 -1
  87. package/dist/cjs/types/schema/number.d.ts +133 -125
  88. package/dist/cjs/types/schema/number.d.ts.map +1 -1
  89. package/dist/cjs/types/schema/object.d.ts +104 -35
  90. package/dist/cjs/types/schema/object.d.ts.map +1 -1
  91. package/dist/cjs/types/schema/schema.d.ts +62 -44
  92. package/dist/cjs/types/schema/schema.d.ts.map +1 -1
  93. package/dist/cjs/types/schema/string.d.ts +152 -65
  94. package/dist/cjs/types/schema/string.d.ts.map +1 -1
  95. package/dist/cjs/types/schema/types.d.ts +11 -2
  96. package/dist/cjs/types/schema/types.d.ts.map +1 -1
  97. package/dist/cjs/types/schema/union.d.ts +133 -40
  98. package/dist/cjs/types/schema/union.d.ts.map +1 -1
  99. package/dist/cjs/types/types.d.ts +35 -0
  100. package/dist/cjs/types/types.d.ts.map +1 -1
  101. package/dist/cjs/types/utils.d.ts +41 -27
  102. package/dist/cjs/types/utils.d.ts.map +1 -1
  103. package/dist/cjs/types/validators/array.d.ts.map +1 -1
  104. package/dist/cjs/types/validators/boolean.d.ts.map +1 -1
  105. package/dist/cjs/types/validators/datetime.d.ts.map +1 -1
  106. package/dist/cjs/types/validators/number.d.ts +5 -6
  107. package/dist/cjs/types/validators/number.d.ts.map +1 -1
  108. package/dist/cjs/types/validators/object.d.ts.map +1 -1
  109. package/dist/cjs/types/validators/schema.d.ts +2 -2
  110. package/dist/cjs/types/validators/schema.d.ts.map +1 -1
  111. package/dist/cjs/types/validators/string.d.ts +9 -9
  112. package/dist/cjs/types/validators/string.d.ts.map +1 -1
  113. package/dist/cjs/types/validators/utils.d.ts +44 -27
  114. package/dist/cjs/types/validators/utils.d.ts.map +1 -1
  115. package/dist/esm/src/adapter/fields/index.js +2 -2
  116. package/dist/esm/src/adapter/fields/object.js +6 -0
  117. package/dist/esm/src/adapter/index.js +1 -0
  118. package/dist/esm/src/constants.js +1 -2
  119. package/dist/esm/src/domain.js +11 -1
  120. package/dist/esm/src/index.js +38 -73
  121. package/dist/esm/src/model.js +83 -78
  122. package/dist/esm/src/schema/array.js +136 -54
  123. package/dist/esm/src/schema/boolean.js +98 -44
  124. package/dist/esm/src/schema/datetime.js +91 -38
  125. package/dist/esm/src/schema/number.js +127 -110
  126. package/dist/esm/src/schema/object.js +98 -43
  127. package/dist/esm/src/schema/schema.js +102 -67
  128. package/dist/esm/src/schema/string.js +147 -59
  129. package/dist/esm/src/schema/union.js +119 -40
  130. package/dist/esm/src/types.js +14 -1
  131. package/dist/esm/src/utils.js +56 -27
  132. package/dist/esm/src/validators/array.js +6 -1
  133. package/dist/esm/src/validators/boolean.js +2 -0
  134. package/dist/esm/src/validators/datetime.js +4 -0
  135. package/dist/esm/src/validators/number.js +9 -23
  136. package/dist/esm/src/validators/object.js +1 -0
  137. package/dist/esm/src/validators/schema.js +5 -1
  138. package/dist/esm/src/validators/string.js +30 -2
  139. package/dist/esm/src/validators/union.js +5 -4
  140. package/dist/esm/src/validators/utils.js +62 -36
  141. package/package.json +3 -3
  142. package/src/adapter/fields/array.ts +2 -2
  143. package/src/adapter/fields/boolean.ts +3 -8
  144. package/src/adapter/fields/datetime.ts +3 -9
  145. package/src/adapter/fields/index.ts +11 -11
  146. package/src/adapter/fields/number.ts +3 -9
  147. package/src/adapter/fields/object.ts +13 -10
  148. package/src/adapter/fields/string.ts +3 -9
  149. package/src/adapter/fields/union.ts +3 -9
  150. package/src/adapter/index.ts +1 -0
  151. package/src/adapter/types.ts +60 -45
  152. package/src/constants.ts +1 -3
  153. package/src/domain.ts +15 -1
  154. package/src/index.ts +189 -211
  155. package/src/model.ts +119 -115
  156. package/src/schema/array.ts +274 -90
  157. package/src/schema/boolean.ts +145 -60
  158. package/src/schema/datetime.ts +133 -49
  159. package/src/schema/number.ts +210 -173
  160. package/src/schema/object.ts +167 -74
  161. package/src/schema/schema.ts +205 -126
  162. package/src/schema/string.ts +221 -94
  163. package/src/schema/types.ts +44 -16
  164. package/src/schema/union.ts +193 -68
  165. package/src/types.ts +53 -0
  166. package/src/utils.ts +115 -57
  167. package/src/validators/array.ts +46 -27
  168. package/src/validators/boolean.ts +13 -7
  169. package/src/validators/datetime.ts +24 -16
  170. package/src/validators/number.ts +53 -63
  171. package/src/validators/object.ts +6 -5
  172. package/src/validators/schema.ts +33 -25
  173. package/src/validators/string.ts +122 -59
  174. package/src/validators/union.ts +8 -8
  175. 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 {
@@ -19,6 +19,7 @@ export default class SchemaAdapter {
19
19
  array?: ArrayFieldAdapter;
20
20
  boolean?: BooleanFieldAdapter;
21
21
  datetime?: DatetimeFieldAdapter;
22
+ adapterInstance: any;
22
23
 
23
24
  // eslint-disable-next-line ts/require-await
24
25
  async formatError(
@@ -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 & NonToTranslateArgs<TType>;
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
- value: Date;
24
- inclusive: boolean;
25
- message: string;
26
- };
27
- below: {
28
- value: Date;
29
- inclusive: boolean;
30
- message: string;
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
- value: boolean;
44
- message: string;
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
- } & AdapterTranslateArgs<'array'>;
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
- ? UnionAdapterTranslateArgsWithoutNonTranslateArgs
223
- : TType extends 'string'
224
- ? StringAdapterTranslateArgsWithoutNonTranslateArgs
225
- : TType extends 'array'
226
- ? ArrayAdapterTranslateArgsWithoutNonTranslateArgs
227
- : TType extends 'boolean'
228
- ? BooleanAdapterTranslateArgsWithoutNonTranslateArgs
229
- : TType extends 'datetime'
230
- ? DatetimeAdapterTranslateArgsWithoutNonTranslateArgs
231
- : ObjectAdapterTranslateArgsWithoutNonTranslateArgs;
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 = () => `THe number should be an integer.`;
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
- export default domain('@palmares/schemas', __dirname, {});
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;