@fovestta2/validation-engine 1.0.3 → 1.0.5

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;AAY9D,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,CAWxB;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;AAc9D,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,CAaxB;IAEH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;IAuCvE,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"}
@@ -11,6 +11,8 @@ const MinAgeRule_1 = require("../rules/MinAgeRule");
11
11
  const MaxAgeRule_1 = require("../rules/MaxAgeRule");
12
12
  const NumericRule_1 = require("../rules/NumericRule");
13
13
  const RangeRule_1 = require("../rules/RangeRule");
14
+ const PasswordComplexityRule_1 = require("../rules/PasswordComplexityRule");
15
+ const DuplicateRule_1 = require("../rules/DuplicateRule");
14
16
  class Validator {
15
17
  static validate(value, schema) {
16
18
  if (!schema || !schema.rules || !Array.isArray(schema.rules)) {
@@ -26,6 +28,7 @@ class Validator {
26
28
  try {
27
29
  const result = ruleImpl.validate(value, rule.params || {});
28
30
  if (!result.isValid) {
31
+ result.message = rule.message || result.message;
29
32
  const priorityIndex = schema.errorPriority ? schema.errorPriority.indexOf(rule.name) : -1;
30
33
  errors.push({
31
34
  priority: priorityIndex === -1 ? 999 : priorityIndex,
@@ -65,5 +68,7 @@ Validator.ruleRegistry = new Map([
65
68
  [MaxAgeRule_1.MaxAgeRule.ruleName, MaxAgeRule_1.MaxAgeRule],
66
69
  [NumericRule_1.NumericRule.ruleName, NumericRule_1.NumericRule],
67
70
  [RangeRule_1.RangeRule.ruleName, RangeRule_1.RangeRule],
71
+ [PasswordComplexityRule_1.PasswordComplexityRule.ruleName, PasswordComplexityRule_1.PasswordComplexityRule],
72
+ [DuplicateRule_1.DuplicateRule.ruleName, DuplicateRule_1.DuplicateRule],
68
73
  ]);
69
74
  //# sourceMappingURL=Validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../src/engine/Validator.ts"],"names":[],"mappings":";;;AACA,wDAAqD;AACrD,0DAAuD;AACvD,0DAAuD;AACvD,kDAA+C;AAC/C,sDAAmD;AACnD,sDAAmD;AACnD,oDAAiD;AACjD,oDAAiD;AACjD,sDAAmD;AACnD,kDAA+C;AAO/C,MAAa,SAAS;IAcpB,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,MAAwB;QAClD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAA0D,EAAE,CAAC;QAEzE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBAC9D,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1F,MAAM,CAAC,IAAI,CAAC;wBACV,QAAQ,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa;wBACpD,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,SAAoB;QACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,kBAAkB;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;;AA9DH,8BA+DC;AA9DgB,sBAAY,GAAG,IAAI,GAAG,CAAoB;IACvD,CAAC,2BAAY,CAAC,QAAQ,EAAE,2BAAY,CAAC;IACrC,CAAC,6BAAa,CAAC,QAAQ,EAAE,6BAAa,CAAC;IACvC,CAAC,6BAAa,CAAC,QAAQ,EAAE,6BAAa,CAAC;IACvC,CAAC,qBAAS,CAAC,QAAQ,EAAE,qBAAS,CAAC;IAC/B,CAAC,yBAAW,CAAC,QAAQ,EAAE,yBAAW,CAAC;IACnC,CAAC,yBAAW,CAAC,QAAQ,EAAE,yBAAW,CAAC;IACnC,CAAC,uBAAU,CAAC,QAAQ,EAAE,uBAAU,CAAC;IACjC,CAAC,uBAAU,CAAC,QAAQ,EAAE,uBAAU,CAAC;IACjC,CAAC,yBAAW,CAAC,QAAQ,EAAE,yBAAW,CAAC;IACnC,CAAC,qBAAS,CAAC,QAAQ,EAAE,qBAAS,CAAC;CAChC,CAAC,CAAC"}
1
+ {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../src/engine/Validator.ts"],"names":[],"mappings":";;;AACA,wDAAqD;AACrD,0DAAuD;AACvD,0DAAuD;AACvD,kDAA+C;AAC/C,sDAAmD;AACnD,sDAAmD;AACnD,oDAAiD;AACjD,oDAAiD;AACjD,sDAAmD;AACnD,kDAA+C;AAC/C,4EAAyE;AACzE,0DAAuD;AAOvD,MAAa,SAAS;IAgBpB,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,MAAwB;QAClD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAA0D,EAAE,CAAC;QAEzE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBAC9D,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;oBAChD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1F,MAAM,CAAC,IAAI,CAAC;wBACV,QAAQ,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa;wBACpD,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,SAAoB;QACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,kBAAkB;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;;AAjEH,8BAkEC;AAjEgB,sBAAY,GAAG,IAAI,GAAG,CAAoB;IACvD,CAAC,2BAAY,CAAC,QAAQ,EAAE,2BAAY,CAAC;IACrC,CAAC,6BAAa,CAAC,QAAQ,EAAE,6BAAa,CAAC;IACvC,CAAC,6BAAa,CAAC,QAAQ,EAAE,6BAAa,CAAC;IACvC,CAAC,qBAAS,CAAC,QAAQ,EAAE,qBAAS,CAAC;IAC/B,CAAC,yBAAW,CAAC,QAAQ,EAAE,yBAAW,CAAC;IACnC,CAAC,yBAAW,CAAC,QAAQ,EAAE,yBAAW,CAAC;IACnC,CAAC,uBAAU,CAAC,QAAQ,EAAE,uBAAU,CAAC;IACjC,CAAC,uBAAU,CAAC,QAAQ,EAAE,uBAAU,CAAC;IACjC,CAAC,yBAAW,CAAC,QAAQ,EAAE,yBAAW,CAAC;IACnC,CAAC,qBAAS,CAAC,QAAQ,EAAE,qBAAS,CAAC;IAC/B,CAAC,+CAAsB,CAAC,QAAQ,EAAE,+CAAsB,CAAC;IACzD,CAAC,6BAAa,CAAC,QAAQ,EAAE,6BAAa,CAAC;CACxC,CAAC,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,13 @@
1
+ import { ValidationResult } from "../types";
2
+ export interface PasswordComplexityParams {
3
+ requireUppercase?: boolean;
4
+ requireLowercase?: boolean;
5
+ requireNumber?: boolean;
6
+ requireSpecialChar?: boolean;
7
+ minLength?: number;
8
+ }
9
+ export declare class PasswordComplexityRule {
10
+ static readonly ruleName = "passwordComplexity";
11
+ static validate(value: string, params: PasswordComplexityParams): ValidationResult;
12
+ }
13
+ //# sourceMappingURL=PasswordComplexityRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordComplexityRule.d.ts","sourceRoot":"","sources":["../../src/rules/PasswordComplexityRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,sBAAsB;IAC/B,MAAM,CAAC,QAAQ,CAAC,QAAQ,wBAAwB;IAEhD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,GAAG,gBAAgB;CAwDrF"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PasswordComplexityRule = void 0;
4
+ class PasswordComplexityRule {
5
+ static validate(value, params) {
6
+ // Skip if empty (handled by required rule)
7
+ if (!value) {
8
+ return { isValid: true, errorKey: null };
9
+ }
10
+ const { requireUppercase = true, requireLowercase = true, requireNumber = true, requireSpecialChar = true, minLength = 8 } = params;
11
+ if (value.length < minLength) {
12
+ return {
13
+ isValid: false,
14
+ errorKey: "ERR_PASSWORD_TOO_SHORT",
15
+ metadata: { ruleName: this.ruleName, required: minLength }
16
+ };
17
+ }
18
+ if (requireUppercase && !/[A-Z]/.test(value)) {
19
+ return {
20
+ isValid: false,
21
+ errorKey: "ERR_PASSWORD_MISSING_UPPERCASE",
22
+ metadata: { ruleName: this.ruleName }
23
+ };
24
+ }
25
+ if (requireLowercase && !/[a-z]/.test(value)) {
26
+ return {
27
+ isValid: false,
28
+ errorKey: "ERR_PASSWORD_MISSING_LOWERCASE",
29
+ metadata: { ruleName: this.ruleName }
30
+ };
31
+ }
32
+ if (requireNumber && !/[0-9]/.test(value)) {
33
+ return {
34
+ isValid: false,
35
+ errorKey: "ERR_PASSWORD_MISSING_NUMBER",
36
+ metadata: { ruleName: this.ruleName }
37
+ };
38
+ }
39
+ if (requireSpecialChar && !/[!@#$%^&*(),.?":{}|<>]/.test(value)) {
40
+ return {
41
+ isValid: false,
42
+ errorKey: "ERR_PASSWORD_MISSING_SPECIAL_CHAR",
43
+ metadata: { ruleName: this.ruleName }
44
+ };
45
+ }
46
+ return { isValid: true, errorKey: null };
47
+ }
48
+ }
49
+ exports.PasswordComplexityRule = PasswordComplexityRule;
50
+ PasswordComplexityRule.ruleName = "passwordComplexity";
51
+ //# sourceMappingURL=PasswordComplexityRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordComplexityRule.js","sourceRoot":"","sources":["../../src/rules/PasswordComplexityRule.ts"],"names":[],"mappings":";;;AAUA,MAAa,sBAAsB;IAG/B,MAAM,CAAC,QAAQ,CAAC,KAAa,EAAE,MAAgC;QAC3D,2CAA2C;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,EACF,gBAAgB,GAAG,IAAI,EACvB,gBAAgB,GAAG,IAAI,EACvB,aAAa,GAAG,IAAI,EACpB,kBAAkB,GAAG,IAAI,EACzB,SAAS,GAAG,CAAC,EAChB,GAAG,MAAM,CAAC;QAEX,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE;aAC7D,CAAC;QACN,CAAC;QAED,IAAI,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,gCAAgC;gBAC1C,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;aACxC,CAAC;QACN,CAAC;QAED,IAAI,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,gCAAgC;gBAC1C,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;aACxC,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,6BAA6B;gBACvC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;aACxC,CAAC;QACN,CAAC;QAED,IAAI,kBAAkB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,mCAAmC;gBAC7C,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;aACxC,CAAC;QACN,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;;AA1DL,wDA2DC;AA1DmB,+BAAQ,GAAG,oBAAoB,CAAC"}
@@ -8,4 +8,6 @@ export * from "./MinAgeRule";
8
8
  export * from "./MaxAgeRule";
9
9
  export * from "./NumericRule";
10
10
  export * from "./RangeRule";
11
+ export * from "./DuplicateRule";
12
+ export * from "./PasswordComplexityRule";
11
13
  //# 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,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
@@ -24,4 +24,6 @@ __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("./DuplicateRule"), exports);
28
+ __exportStar(require("./PasswordComplexityRule"), exports);
27
29
  //# 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,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"}
@@ -4,7 +4,8 @@
4
4
  export interface ValidationRule {
5
5
  name: string;
6
6
  params: Record<string, any>;
7
- errorKey: string;
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,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"}
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.3",
3
+ "version": "1.0.5",
4
4
  "description": "Platform-agnostic validation engine for Fovestta controls",
5
5
  "main": "dist/index.js",
6
6
  "exports": {