thesimplevalidation 2.3.1 → 2.4.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thesimplevalidation",
3
3
  "description": "The simple validation",
4
- "version": "2.3.1",
4
+ "version": "2.4.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "files": [
@@ -37,8 +37,8 @@
37
37
  "devDependencies": {
38
38
  "@types/lodash.get": "4.4.9",
39
39
  "@types/lodash.isequal": "4.5.8",
40
- "@vitest/coverage-v8": "^4.0.9",
40
+ "@vitest/coverage-v8": "4.1.6",
41
41
  "typescript": "5.9.3",
42
- "vitest": "4.0.9"
42
+ "vitest": "4.1.6"
43
43
  }
44
44
  }
@@ -1,3 +0,0 @@
1
- export type ValidationErrorsModel<TModel> = {
2
- [k in keyof TModel]: string[];
3
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ValidationErrorsModel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValidationErrorsModel.js","sourceRoot":"","sources":["../src/ValidationErrorsModel.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- export type ValidationModel<TModel> = {
2
- [K in keyof TModel]: boolean;
3
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ValidationModel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValidationModel.js","sourceRoot":"","sources":["../src/ValidationModel.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import { ValidationPropertyResult } from "./ValidationPropertyResult";
2
- import { ValidationResult } from "./ValidationResult";
3
- import { Validator } from "./Validator";
4
- export declare class ValidationScope<TModel extends {}> {
5
- private originalModel;
6
- private modelInfo;
7
- constructor(originalModel: TModel);
8
- useOriginal: (model: TModel) => ValidationScope<TModel>;
9
- useValidators: <K extends keyof TModel>(key: K, ...validators: Array<Validator<TModel, K>>) => ValidationScope<TModel>;
10
- isPropertyDirty: (model: TModel, field: keyof TModel, key?: string | null) => boolean;
11
- getOriginalProperty: <K extends keyof TModel>(field: K) => TModel[K];
12
- isDirty: (model: TModel, ...fields: Array<keyof TModel>) => boolean;
13
- isPropertyValid: <K extends keyof TModel>(model: TModel, field: K) => Promise<ValidationPropertyResult>;
14
- isValid: (model: TModel, ...fields: Array<keyof TModel>) => Promise<ValidationResult<TModel>>;
15
- }
@@ -1,95 +0,0 @@
1
- import get from "lodash.get";
2
- import isEqual from "lodash.isequal";
3
- export class ValidationScope {
4
- constructor(originalModel) {
5
- this.useOriginal = (model) => {
6
- this.originalModel = structuredClone(model);
7
- return this;
8
- };
9
- this.useValidators = (key, ...validators) => {
10
- this.modelInfo[key] = {
11
- validators: validators,
12
- };
13
- return this;
14
- };
15
- this.isPropertyDirty = (model, field, key = null) => {
16
- const originalField = this.originalModel[field];
17
- const modelField = model[field];
18
- if (Array.isArray(originalField) && Array.isArray(modelField)) {
19
- if (originalField.length !== modelField.length)
20
- return true;
21
- for (let index = 0; index < originalField.length; index++) {
22
- if (originalField[index] === modelField[index])
23
- continue;
24
- if (key == null)
25
- return true;
26
- if (get(originalField[index], key) !== get(modelField[index], key))
27
- return true;
28
- }
29
- return false;
30
- }
31
- if (key == null)
32
- return !isEqual(this.originalModel[field], model[field]);
33
- return get(this.originalModel[field], key) !== get(model[field], key);
34
- };
35
- this.getOriginalProperty = (field) => {
36
- return this.originalModel[field];
37
- };
38
- this.isDirty = (model, ...fields) => {
39
- for (const property in this.originalModel) {
40
- if (!this.originalModel.hasOwnProperty(property))
41
- continue;
42
- if (fields && fields.length > 0) {
43
- if (!fields.some((x) => x === property))
44
- continue;
45
- }
46
- if (this.isPropertyDirty(model, property))
47
- return true;
48
- }
49
- return false;
50
- };
51
- this.isPropertyValid = async (model, field) => {
52
- if (this.modelInfo[field] &&
53
- this.modelInfo[field].validators &&
54
- this.modelInfo[field].validators) {
55
- let isValid = true;
56
- let errors = [];
57
- const value = model[field];
58
- for (const validator of this.modelInfo[field].validators) {
59
- const validatorResult = await validator.isValid(value, model, field);
60
- isValid = isValid && validatorResult.isValid;
61
- if (!validatorResult.isValid)
62
- errors = [...errors, ...validatorResult.errors];
63
- }
64
- return {
65
- isValid: isValid,
66
- errors: errors,
67
- };
68
- }
69
- return {
70
- isValid: true,
71
- errors: [],
72
- };
73
- };
74
- this.isValid = async (model, ...fields) => {
75
- model = model ?? {};
76
- const properties = (fields == null || fields.length === 0 ? Object.keys(model) : fields);
77
- const result = {
78
- isValid: true,
79
- errors: [],
80
- properties: {},
81
- };
82
- for (const property of properties) {
83
- const propertyValidationResult = await this.isPropertyValid(model, property);
84
- result.isValid = result.isValid && propertyValidationResult.isValid;
85
- result.properties[property] = propertyValidationResult;
86
- if (!propertyValidationResult.isValid)
87
- result.errors = [...result.errors, ...propertyValidationResult.errors];
88
- }
89
- return result;
90
- };
91
- this.originalModel = structuredClone(originalModel);
92
- this.modelInfo = {};
93
- }
94
- }
95
- //# sourceMappingURL=ValidationScope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValidationScope.js","sourceRoot":"","sources":["../src/ValidationScope.ts"],"names":[],"mappings":"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"}