@fovestta2/validation-engine 1.0.4 → 1.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/engine/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAa9D,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,gBAAgB,CAAC;CACzD,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,YAAY,CAYxB;IAEH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;IAsCvE,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAI/C,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzC,MAAM,CAAC,kBAAkB,IAAI,MAAM,EAAE;CAGtC"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/engine/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9D,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,gBAAgB,CAAC;CACzD,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,YAAY,CAgBxB;IAEH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;IA0CvE,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAI/C,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzC,MAAM,CAAC,kBAAkB,IAAI,MAAM,EAAE;CAGtC"}
@@ -12,6 +12,10 @@ const MaxAgeRule_1 = require("../rules/MaxAgeRule");
12
12
  const NumericRule_1 = require("../rules/NumericRule");
13
13
  const RangeRule_1 = require("../rules/RangeRule");
14
14
  const PasswordComplexityRule_1 = require("../rules/PasswordComplexityRule");
15
+ const MinRule_1 = require("../rules/MinRule");
16
+ const MaxRule_1 = require("../rules/MaxRule");
17
+ const CustomRule_1 = require("../rules/CustomRule");
18
+ const DuplicateRule_1 = require("../rules/DuplicateRule");
15
19
  class Validator {
16
20
  static validate(value, schema) {
17
21
  if (!schema || !schema.rules || !Array.isArray(schema.rules)) {
@@ -27,6 +31,10 @@ class Validator {
27
31
  try {
28
32
  const result = ruleImpl.validate(value, rule.params || {});
29
33
  if (!result.isValid) {
34
+ result.message = rule.message || result.message;
35
+ if (rule.errorKey) {
36
+ result.errorKey = rule.errorKey;
37
+ }
30
38
  const priorityIndex = schema.errorPriority ? schema.errorPriority.indexOf(rule.name) : -1;
31
39
  errors.push({
32
40
  priority: priorityIndex === -1 ? 999 : priorityIndex,
@@ -67,5 +75,9 @@ Validator.ruleRegistry = new Map([
67
75
  [NumericRule_1.NumericRule.ruleName, NumericRule_1.NumericRule],
68
76
  [RangeRule_1.RangeRule.ruleName, RangeRule_1.RangeRule],
69
77
  [PasswordComplexityRule_1.PasswordComplexityRule.ruleName, PasswordComplexityRule_1.PasswordComplexityRule],
78
+ [MinRule_1.MinRule.ruleName, MinRule_1.MinRule],
79
+ [MaxRule_1.MaxRule.ruleName, MaxRule_1.MaxRule],
80
+ [CustomRule_1.CustomRule.ruleName, CustomRule_1.CustomRule],
81
+ [DuplicateRule_1.DuplicateRule.ruleName, DuplicateRule_1.DuplicateRule],
70
82
  ]);
71
83
  //# sourceMappingURL=Validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../src/engine/Validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../src/engine/Validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ValidationResult } from "../types";
2
+ export interface CustomRuleParams {
3
+ validator: (value: any) => boolean;
4
+ }
5
+ export declare class CustomRule {
6
+ static readonly ruleName = "custom";
7
+ static validate(value: any, params: CustomRuleParams): ValidationResult;
8
+ }
9
+ //# sourceMappingURL=CustomRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomRule.d.ts","sourceRoot":"","sources":["../../src/rules/CustomRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC;CACtC;AAED,qBAAa,UAAU;IACnB,MAAM,CAAC,QAAQ,CAAC,QAAQ,YAAY;IAEpC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;CAgB1E"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CustomRule = void 0;
4
+ class CustomRule {
5
+ static validate(value, params) {
6
+ if (!params || typeof params.validator !== "function") {
7
+ console.warn("CustomRule expected a 'validator' function param.");
8
+ return { isValid: true, errorKey: null };
9
+ }
10
+ const isValid = params.validator(value);
11
+ return {
12
+ isValid,
13
+ errorKey: isValid ? null : "ERR_CUSTOM_INVALID",
14
+ metadata: {
15
+ ruleName: CustomRule.ruleName,
16
+ },
17
+ };
18
+ }
19
+ }
20
+ exports.CustomRule = CustomRule;
21
+ CustomRule.ruleName = "custom";
22
+ //# sourceMappingURL=CustomRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomRule.js","sourceRoot":"","sources":["../../src/rules/CustomRule.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IAGnB,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,MAAwB;QAChD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAExC,OAAO;YACH,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB;YAC/C,QAAQ,EAAE;gBACN,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAChC;SACJ,CAAC;IACN,CAAC;;AAlBL,gCAmBC;AAlBmB,mBAAQ,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ValidationResult } from "../types";
2
+ export interface DuplicateRuleParams {
3
+ existingValues: any[];
4
+ }
5
+ export declare class DuplicateRule {
6
+ static readonly ruleName = "duplicate";
7
+ static validate(value: any, params: DuplicateRuleParams): ValidationResult;
8
+ }
9
+ //# sourceMappingURL=DuplicateRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DuplicateRule.d.ts","sourceRoot":"","sources":["../../src/rules/DuplicateRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,mBAAmB;IAChC,cAAc,EAAE,GAAG,EAAE,CAAC;CACzB;AAED,qBAAa,aAAa;IACtB,MAAM,CAAC,QAAQ,CAAC,QAAQ,eAAe;IAEvC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,GAAG,gBAAgB;CAqB7E"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DuplicateRule = void 0;
4
+ class DuplicateRule {
5
+ static validate(value, params) {
6
+ if (!params || !params.existingValues || !Array.isArray(params.existingValues)) {
7
+ return { isValid: true, errorKey: null };
8
+ }
9
+ if (value === null || value === undefined || value === "") {
10
+ return { isValid: true, errorKey: null };
11
+ }
12
+ const valueToCheck = typeof value === 'string' ? value.toLowerCase().trim() : value;
13
+ const isDuplicate = params.existingValues.some(existing => {
14
+ const existingToCheck = typeof existing === 'string' ? existing.toLowerCase().trim() : existing;
15
+ return existingToCheck === valueToCheck;
16
+ });
17
+ return {
18
+ isValid: !isDuplicate,
19
+ errorKey: isDuplicate ? "ERR_DUPLICATE" : null,
20
+ metadata: { ruleName: DuplicateRule.ruleName },
21
+ };
22
+ }
23
+ }
24
+ exports.DuplicateRule = DuplicateRule;
25
+ DuplicateRule.ruleName = "duplicate";
26
+ //# sourceMappingURL=DuplicateRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DuplicateRule.js","sourceRoot":"","sources":["../../src/rules/DuplicateRule.ts"],"names":[],"mappings":";;;AAMA,MAAa,aAAa;IAGtB,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,MAA2B;QACnD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACpF,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACtD,MAAM,eAAe,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChG,OAAO,eAAe,KAAK,YAAY,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,OAAO,EAAE,CAAC,WAAW;YACrB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;YAC9C,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE;SACjD,CAAC;IACN,CAAC;;AAvBL,sCAwBC;AAvBmB,sBAAQ,GAAG,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ValidationResult } from "../types";
2
+ export interface MaxRuleParams {
3
+ value: number;
4
+ }
5
+ export declare class MaxRule {
6
+ static readonly ruleName = "max";
7
+ static validate(value: any, params: MaxRuleParams): ValidationResult;
8
+ }
9
+ //# sourceMappingURL=MaxRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaxRule.d.ts","sourceRoot":"","sources":["../../src/rules/MaxRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,OAAO;IAChB,MAAM,CAAC,QAAQ,CAAC,QAAQ,SAAS;IAEjC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,gBAAgB;CAuBvE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaxRule = void 0;
4
+ class MaxRule {
5
+ static validate(value, params) {
6
+ if (value === null || value === undefined || value === "") {
7
+ return { isValid: true, errorKey: null };
8
+ }
9
+ const numValue = Number(value);
10
+ if (isNaN(numValue)) {
11
+ return { isValid: false, errorKey: "ERR_NUMERIC_INVALID" };
12
+ }
13
+ const isValid = numValue <= params.value;
14
+ return {
15
+ isValid,
16
+ errorKey: isValid ? null : "ERR_MAX_VALUE",
17
+ metadata: {
18
+ ruleName: MaxRule.ruleName,
19
+ max: params.value,
20
+ actual: numValue,
21
+ },
22
+ };
23
+ }
24
+ }
25
+ exports.MaxRule = MaxRule;
26
+ MaxRule.ruleName = "max";
27
+ //# sourceMappingURL=MaxRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaxRule.js","sourceRoot":"","sources":["../../src/rules/MaxRule.ts"],"names":[],"mappings":";;;AAMA,MAAa,OAAO;IAGhB,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,MAAqB;QAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC;QAEzC,OAAO;YACH,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;YAC1C,QAAQ,EAAE;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,EAAE,MAAM,CAAC,KAAK;gBACjB,MAAM,EAAE,QAAQ;aACnB;SACJ,CAAC;IACN,CAAC;;AAzBL,0BA0BC;AAzBmB,gBAAQ,GAAG,KAAK,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ValidationResult } from "../types";
2
+ export interface MinRuleParams {
3
+ value: number;
4
+ }
5
+ export declare class MinRule {
6
+ static readonly ruleName = "min";
7
+ static validate(value: any, params: MinRuleParams): ValidationResult;
8
+ }
9
+ //# sourceMappingURL=MinRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinRule.d.ts","sourceRoot":"","sources":["../../src/rules/MinRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,OAAO;IAChB,MAAM,CAAC,QAAQ,CAAC,QAAQ,SAAS;IAEjC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,gBAAgB;CAuBvE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MinRule = void 0;
4
+ class MinRule {
5
+ static validate(value, params) {
6
+ if (value === null || value === undefined || value === "") {
7
+ return { isValid: true, errorKey: null };
8
+ }
9
+ const numValue = Number(value);
10
+ if (isNaN(numValue)) {
11
+ return { isValid: false, errorKey: "ERR_NUMERIC_INVALID" };
12
+ }
13
+ const isValid = numValue >= params.value;
14
+ return {
15
+ isValid,
16
+ errorKey: isValid ? null : "ERR_MIN_VALUE",
17
+ metadata: {
18
+ ruleName: MinRule.ruleName,
19
+ min: params.value,
20
+ actual: numValue,
21
+ },
22
+ };
23
+ }
24
+ }
25
+ exports.MinRule = MinRule;
26
+ MinRule.ruleName = "min";
27
+ //# sourceMappingURL=MinRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinRule.js","sourceRoot":"","sources":["../../src/rules/MinRule.ts"],"names":[],"mappings":";;;AAMA,MAAa,OAAO;IAGhB,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,MAAqB;QAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC;QAEzC,OAAO;YACH,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;YAC1C,QAAQ,EAAE;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,EAAE,MAAM,CAAC,KAAK;gBACjB,MAAM,EAAE,QAAQ;aACnB;SACJ,CAAC;IACN,CAAC;;AAzBL,0BA0BC;AAzBmB,gBAAQ,GAAG,KAAK,CAAC"}
@@ -6,7 +6,7 @@ class NumericRule {
6
6
  if (!value) {
7
7
  return { isValid: true, errorKey: null };
8
8
  }
9
- const { allowDecimals = true, allowNegative = true, decimalPlaces, } = params || {};
9
+ const { allowDecimals = true, allowNegative = false, decimalPlaces, } = params || {};
10
10
  // Build regex pattern based on params
11
11
  let pattern = "";
12
12
  if (allowNegative) {
@@ -1 +1 @@
1
- {"version":3,"file":"NumericRule.js","sourceRoot":"","sources":["../../src/rules/NumericRule.ts"],"names":[],"mappings":";;;AAQA,MAAa,WAAW;IAGtB,MAAM,CAAC,QAAQ,CAAC,KAAa,EAAE,MAAyB;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,EACJ,aAAa,GAAG,IAAI,EACpB,aAAa,GAAG,IAAI,EACpB,aAAa,GACd,GAAG,MAAM,IAAI,EAAE,CAAC;QAEjB,sCAAsC;QACtC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,GAAG,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,IAAI,iBAAiB,aAAa,MAAM,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,iBAAiB,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,OAAO,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,OAAO;YACL,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;YAChD,QAAQ,EAAE;gBACR,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,aAAa;gBACb,aAAa;gBACb,aAAa;aACd;SACF,CAAC;IACJ,CAAC;;AA9CH,kCA+CC;AA9CiB,oBAAQ,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"NumericRule.js","sourceRoot":"","sources":["../../src/rules/NumericRule.ts"],"names":[],"mappings":";;;AAQA,MAAa,WAAW;IAGtB,MAAM,CAAC,QAAQ,CAAC,KAAa,EAAE,MAAyB;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,EACJ,aAAa,GAAG,IAAI,EACpB,aAAa,GAAG,KAAK,EACrB,aAAa,GACd,GAAG,MAAM,IAAI,EAAE,CAAC;QAEjB,sCAAsC;QACtC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,GAAG,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,IAAI,iBAAiB,aAAa,MAAM,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,iBAAiB,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,OAAO,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,OAAO;YACL,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;YAChD,QAAQ,EAAE;gBACR,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,aAAa;gBACb,aAAa;gBACb,aAAa;aACd;SACF,CAAC;IACJ,CAAC;;AA9CH,kCA+CC;AA9CiB,oBAAQ,GAAG,SAAS,CAAC"}
@@ -8,4 +8,9 @@ export * from "./MinAgeRule";
8
8
  export * from "./MaxAgeRule";
9
9
  export * from "./NumericRule";
10
10
  export * from "./RangeRule";
11
+ export * from "./MinRule";
12
+ export * from "./MaxRule";
13
+ export * from "./CustomRule";
14
+ export * from "./DuplicateRule";
15
+ export * from "./PasswordComplexityRule";
11
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
@@ -24,4 +24,9 @@ __exportStar(require("./MinAgeRule"), exports);
24
24
  __exportStar(require("./MaxAgeRule"), exports);
25
25
  __exportStar(require("./NumericRule"), exports);
26
26
  __exportStar(require("./RangeRule"), exports);
27
+ __exportStar(require("./MinRule"), exports);
28
+ __exportStar(require("./MaxRule"), exports);
29
+ __exportStar(require("./CustomRule"), exports);
30
+ __exportStar(require("./DuplicateRule"), exports);
31
+ __exportStar(require("./PasswordComplexityRule"), exports);
27
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B;AAC1B,+CAA6B;AAC7B,kDAAgC;AAChC,2DAAyC"}
@@ -4,6 +4,7 @@
4
4
  export interface ValidationResult {
5
5
  isValid: boolean;
6
6
  errorKey: string | null;
7
+ message?: string | null;
7
8
  metadata?: Record<string, any>;
8
9
  }
9
10
  //# sourceMappingURL=ValidationResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationResult.d.ts","sourceRoot":"","sources":["../../src/types/ValidationResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC"}
1
+ {"version":3,"file":"ValidationResult.d.ts","sourceRoot":"","sources":["../../src/types/ValidationResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC"}
@@ -5,6 +5,7 @@ export interface ValidationRule {
5
5
  name: string;
6
6
  params: Record<string, any>;
7
7
  errorKey?: string;
8
+ message?: string;
8
9
  }
9
10
  /**
10
11
  * Complete validation schema for a control
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationSchema.d.ts","sourceRoot":"","sources":["../../src/types/ValidationSchema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB"}
1
+ {"version":3,"file":"ValidationSchema.d.ts","sourceRoot":"","sources":["../../src/types/ValidationSchema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fovestta2/validation-engine",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Platform-agnostic validation engine for Fovestta controls",
5
5
  "main": "dist/index.js",
6
6
  "exports": {