@koala-ts/framework 2.9.1 → 2.11.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 (70) hide show
  1. package/dist/Application/Response.test.js +1 -4
  2. package/dist/Application/Response.test.js.map +1 -1
  3. package/dist/Routing/Router.test.js +1 -5
  4. package/dist/Routing/Router.test.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/serializer/normalizer/normalizer.test.js +60 -0
  10. package/dist/serializer/normalizer/normalizer.test.js.map +1 -1
  11. package/dist/serializer/normalizer/record-normalizer.d.ts.map +1 -1
  12. package/dist/serializer/normalizer/record-normalizer.js +25 -4
  13. package/dist/serializer/normalizer/record-normalizer.js.map +1 -1
  14. package/dist/serializer/normalizer/record-normalizer.test.js +4 -4
  15. package/dist/serializer/normalizer/record-normalizer.test.js.map +1 -1
  16. package/dist/serializer/normalizer/types.d.ts +3 -1
  17. package/dist/serializer/normalizer/types.d.ts.map +1 -1
  18. package/dist/validator/constraints/basic/not-blank.d.ts +3 -0
  19. package/dist/validator/constraints/basic/not-blank.d.ts.map +1 -0
  20. package/dist/validator/constraints/basic/not-blank.js +21 -0
  21. package/dist/validator/constraints/basic/not-blank.js.map +1 -0
  22. package/dist/validator/constraints/basic/not-blank.test.d.ts +2 -0
  23. package/dist/validator/constraints/basic/not-blank.test.d.ts.map +1 -0
  24. package/dist/validator/constraints/basic/not-blank.test.js +79 -0
  25. package/dist/validator/constraints/basic/not-blank.test.js.map +1 -0
  26. package/dist/validator/constraints/index.d.ts +7 -0
  27. package/dist/validator/constraints/index.d.ts.map +1 -0
  28. package/dist/validator/constraints/index.js +9 -0
  29. package/dist/validator/constraints/index.js.map +1 -0
  30. package/dist/validator/constraints/other/compound.d.ts +3 -0
  31. package/dist/validator/constraints/other/compound.d.ts.map +1 -0
  32. package/dist/validator/constraints/other/compound.integration.test.d.ts +2 -0
  33. package/dist/validator/constraints/other/compound.integration.test.d.ts.map +1 -0
  34. package/dist/validator/constraints/other/compound.integration.test.js +76 -0
  35. package/dist/validator/constraints/other/compound.integration.test.js.map +1 -0
  36. package/dist/validator/constraints/other/compound.js +6 -0
  37. package/dist/validator/constraints/other/compound.js.map +1 -0
  38. package/dist/validator/constraints/other/compound.test.d.ts +2 -0
  39. package/dist/validator/constraints/other/compound.test.d.ts.map +1 -0
  40. package/dist/validator/constraints/other/compound.test.js +62 -0
  41. package/dist/validator/constraints/other/compound.test.js.map +1 -0
  42. package/dist/validator/constraints/string/email.d.ts +3 -0
  43. package/dist/validator/constraints/string/email.d.ts.map +1 -0
  44. package/dist/validator/constraints/string/email.js +29 -0
  45. package/dist/validator/constraints/string/email.js.map +1 -0
  46. package/dist/validator/constraints/string/email.test.d.ts +2 -0
  47. package/dist/validator/constraints/string/email.test.d.ts.map +1 -0
  48. package/dist/validator/constraints/string/email.test.js +119 -0
  49. package/dist/validator/constraints/string/email.test.js.map +1 -0
  50. package/dist/validator/errors.d.ts +4 -0
  51. package/dist/validator/errors.d.ts.map +1 -0
  52. package/dist/validator/errors.js +7 -0
  53. package/dist/validator/errors.js.map +1 -0
  54. package/dist/validator/index.d.ts +4 -0
  55. package/dist/validator/index.d.ts.map +1 -0
  56. package/dist/validator/index.js +4 -0
  57. package/dist/validator/index.js.map +1 -0
  58. package/dist/validator/types.d.ts +31 -0
  59. package/dist/validator/types.d.ts.map +1 -0
  60. package/dist/validator/types.js +1 -0
  61. package/dist/validator/types.js.map +1 -0
  62. package/dist/validator/validator.d.ts +3 -0
  63. package/dist/validator/validator.d.ts.map +1 -0
  64. package/dist/validator/validator.js +59 -0
  65. package/dist/validator/validator.js.map +1 -0
  66. package/dist/validator/validator.test.d.ts +2 -0
  67. package/dist/validator/validator.test.d.ts.map +1 -0
  68. package/dist/validator/validator.test.js +281 -0
  69. package/dist/validator/validator.test.js.map +1 -0
  70. package/package.json +6 -7
@@ -0,0 +1,281 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { UnknownConstraintError } from './errors.js';
3
+ import { createValidator } from './validator.js';
4
+ describe('Validator', () => {
5
+ describe('Registry', () => {
6
+ it('should fail when a rule references an undefined constraint', () => {
7
+ const validate = createValidator({ constraints: {} });
8
+ const rules = {
9
+ name: ['required'],
10
+ };
11
+ expect(() => validate({ name: 'John' }, rules)).toThrowError(UnknownConstraintError);
12
+ expect(() => validate({ name: 'John' }, rules)).toThrowError('Field "name" references unregistered constraint "required".');
13
+ });
14
+ });
15
+ describe('Violations', () => {
16
+ it('should use provided constraints registry to validate rules', () => {
17
+ const validate = createValidator({
18
+ constraints: {
19
+ customConstraint,
20
+ },
21
+ });
22
+ const rules = {
23
+ name: ['customConstraint'],
24
+ };
25
+ const violations = validate({ name: '' }, rules);
26
+ expect(violations).toHaveLength(1);
27
+ expect(violations[0]).toEqual({
28
+ path: 'name',
29
+ constraint: 'customConstraint',
30
+ message: 'Custom constraint validation failed',
31
+ value: '',
32
+ });
33
+ });
34
+ it('should map each violation to the invalid field', () => {
35
+ const validate = createValidator({
36
+ constraints: {
37
+ customConstraint,
38
+ },
39
+ });
40
+ const rules = {
41
+ name: ['customConstraint'],
42
+ age: ['customConstraint'],
43
+ };
44
+ const violations = validate({ name: '', age: 30 }, rules);
45
+ expect(violations).toHaveLength(2);
46
+ expect(violations[0]).toEqual({
47
+ path: 'name',
48
+ constraint: 'customConstraint',
49
+ message: 'Custom constraint validation failed',
50
+ value: '',
51
+ });
52
+ expect(violations[1]).toEqual({
53
+ path: 'age',
54
+ constraint: 'customConstraint',
55
+ message: 'Custom constraint validation failed',
56
+ value: 30,
57
+ });
58
+ });
59
+ it('should not append empty violations', () => {
60
+ const validate = createValidator({
61
+ constraints: {
62
+ passedConstraint,
63
+ },
64
+ });
65
+ const rules = {
66
+ name: ['passedConstraint'],
67
+ };
68
+ const violations = validate({ name: 'John' }, rules);
69
+ expect(violations).toHaveLength(0);
70
+ });
71
+ it('should validate field with multiple constraints', () => {
72
+ const validate = createValidator({
73
+ constraints: {
74
+ customConstraint,
75
+ anotherCustomConstraint,
76
+ },
77
+ });
78
+ const rules = {
79
+ name: ['customConstraint', 'anotherCustomConstraint'],
80
+ };
81
+ const violations = validate({ name: '' }, rules);
82
+ expect(violations).toHaveLength(2);
83
+ expect(violations[0]).toEqual({
84
+ path: 'name',
85
+ constraint: 'customConstraint',
86
+ message: 'Custom constraint validation failed',
87
+ value: '',
88
+ });
89
+ expect(violations[1]).toEqual({
90
+ path: 'name',
91
+ constraint: 'anotherCustomConstraint',
92
+ message: 'Another custom constraint validation failed',
93
+ value: '',
94
+ });
95
+ });
96
+ it('should accept object rule definitions', () => {
97
+ const validate = createValidator({
98
+ constraints: {
99
+ customConstraint,
100
+ },
101
+ });
102
+ const rules = {
103
+ name: {
104
+ customConstraint: {},
105
+ },
106
+ };
107
+ const violations = validate({ name: '' }, rules);
108
+ expect(violations).toHaveLength(1);
109
+ expect(violations[0]).toEqual({
110
+ path: 'name',
111
+ constraint: 'customConstraint',
112
+ message: 'Custom constraint validation failed',
113
+ value: '',
114
+ });
115
+ });
116
+ it('should accept mixed rule definitions as arrays of strings and option objects', () => {
117
+ const validate = createValidator({
118
+ constraints: {
119
+ customConstraint,
120
+ minLengthConstraint,
121
+ },
122
+ });
123
+ const rules = {
124
+ name: ['customConstraint', { minLengthConstraint: { min: 3 } }],
125
+ };
126
+ const violations = validate({ name: 'ab' }, rules);
127
+ expect(violations).toHaveLength(2);
128
+ expect(violations[0]).toEqual({
129
+ path: 'name',
130
+ constraint: 'customConstraint',
131
+ message: 'Custom constraint validation failed',
132
+ value: 'ab',
133
+ });
134
+ expect(violations[1]).toEqual({
135
+ path: 'name',
136
+ constraint: 'minLengthConstraint',
137
+ message: 'Must be at least 3 characters',
138
+ value: 'ab',
139
+ });
140
+ });
141
+ });
142
+ describe('Constraint options', () => {
143
+ it('should pass rule options to constraints', () => {
144
+ const validate = createValidator({
145
+ constraints: {
146
+ minLengthConstraint,
147
+ },
148
+ });
149
+ const rules = {
150
+ name: [{ minLengthConstraint: { min: 3 } }],
151
+ };
152
+ const violations = validate({ name: 'ab' }, rules);
153
+ expect(violations).toHaveLength(1);
154
+ expect(violations[0]).toEqual({
155
+ path: 'name',
156
+ constraint: 'minLengthConstraint',
157
+ message: 'Must be at least 3 characters',
158
+ value: 'ab',
159
+ });
160
+ });
161
+ });
162
+ describe('Groups', () => {
163
+ it('should skip constraints when groups do not intersect', () => {
164
+ const validate = createValidator({
165
+ constraints: {
166
+ groupedConstraint,
167
+ },
168
+ });
169
+ const rules = {
170
+ email: [{ groupedConstraint: { groups: ['create'] } }],
171
+ };
172
+ const violations = validate({ email: '' }, rules, { groups: ['update'] });
173
+ expect(violations).toHaveLength(0);
174
+ });
175
+ it('should apply constraints when no groups are provided', () => {
176
+ const validate = createValidator({
177
+ constraints: {
178
+ groupedConstraint,
179
+ },
180
+ });
181
+ const rules = {
182
+ email: ['groupedConstraint'],
183
+ };
184
+ const violations = validate({ email: '' }, rules);
185
+ expect(violations).toHaveLength(1);
186
+ expect(violations[0]).toEqual({
187
+ path: 'email',
188
+ constraint: 'groupedConstraint',
189
+ message: 'Grouped constraint failed',
190
+ value: '',
191
+ });
192
+ });
193
+ it('should apply constraints for the Default group when no groups are provided', () => {
194
+ const validate = createValidator({
195
+ constraints: {
196
+ groupedConstraint,
197
+ },
198
+ });
199
+ const rules = {
200
+ email: [{ groupedConstraint: { groups: ['Default'] } }],
201
+ };
202
+ const violations = validate({ email: '' }, rules);
203
+ expect(violations).toHaveLength(1);
204
+ expect(violations[0]).toEqual({
205
+ path: 'email',
206
+ constraint: 'groupedConstraint',
207
+ message: 'Grouped constraint failed',
208
+ value: '',
209
+ });
210
+ });
211
+ it('should fall back to the Default group when groups are empty', () => {
212
+ const validate = createValidator({
213
+ constraints: {
214
+ groupedConstraint,
215
+ },
216
+ });
217
+ const rules = {
218
+ email: [{ groupedConstraint: { groups: ['Default'] } }],
219
+ };
220
+ const violations = validate({ email: '' }, rules, { groups: [] });
221
+ expect(violations).toHaveLength(1);
222
+ expect(violations[0]).toEqual({
223
+ path: 'email',
224
+ constraint: 'groupedConstraint',
225
+ message: 'Grouped constraint failed',
226
+ value: '',
227
+ });
228
+ });
229
+ });
230
+ });
231
+ function customConstraint(value, context) {
232
+ return [
233
+ {
234
+ path: context.path,
235
+ message: 'Custom constraint validation failed',
236
+ constraint: context.constraint,
237
+ value,
238
+ },
239
+ ];
240
+ }
241
+ function anotherCustomConstraint(value, context) {
242
+ return [
243
+ {
244
+ path: context.path,
245
+ message: 'Another custom constraint validation failed',
246
+ constraint: context.constraint,
247
+ value,
248
+ },
249
+ ];
250
+ }
251
+ function passedConstraint(_, __) {
252
+ return [];
253
+ }
254
+ function minLengthConstraint(value, context) {
255
+ const min = context.options.min;
256
+ if (typeof value === 'string' && typeof min === 'number' && value.length < min) {
257
+ return [
258
+ {
259
+ path: context.path,
260
+ message: `Must be at least ${min} characters`,
261
+ constraint: context.constraint,
262
+ value,
263
+ },
264
+ ];
265
+ }
266
+ return [];
267
+ }
268
+ function groupedConstraint(value, context) {
269
+ if (value === '' || value === null || value === undefined) {
270
+ return [
271
+ {
272
+ path: context.path,
273
+ message: 'Grouped constraint failed',
274
+ constraint: context.constraint,
275
+ value,
276
+ },
277
+ ];
278
+ }
279
+ return [];
280
+ }
281
+ //# sourceMappingURL=validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../src/validator/validator.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@koala-ts/framework",
3
3
  "main": "dist/index.js",
4
4
  "type": "module",
5
- "version": "2.9.1",
5
+ "version": "2.11.0",
6
6
  "description": "A NodeJS framework for lazy developers",
7
7
  "keywords": [
8
8
  "koala",
@@ -57,21 +57,20 @@
57
57
  },
58
58
  "devDependencies": {
59
59
  "@arethetypeswrong/cli": "^0.18.2",
60
- "@eslint/js": "^9.38.0",
61
- "@stylistic/eslint-plugin": "^5.5.0",
60
+ "@eslint/js": "^9.39.2",
62
61
  "@vitest/coverage-v8": "^4.0.12",
63
- "eslint": "^9.38.0",
62
+ "eslint": "^9.39.2",
64
63
  "eslint-config-prettier": "^10.1.8",
65
64
  "eslint-plugin-import": "^2.32.0",
66
- "eslint-plugin-n": "^17.23.1",
67
65
  "eslint-plugin-prettier": "^5.5.4",
68
66
  "eslint-plugin-promise": "^7.2.1",
69
- "globals": "^17.0.0",
67
+ "globals": "^17.3.0",
68
+ "jiti": "^2.6.1",
70
69
  "prettier": "^3.7.4",
71
70
  "tsc-alias": "^1.8.16",
72
71
  "tsx": "^4.20.6",
73
72
  "typescript": "^5.9.3",
74
- "typescript-eslint": "^8.46.2",
73
+ "typescript-eslint": "^8.54.0",
75
74
  "vitest": "^4.0.10"
76
75
  },
77
76
  "publishConfig": {