@acorex/core 7.17.22 → 7.17.24

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 (29) hide show
  1. package/esm2022/utils/lib/auto-unsubscribe.mjs +1 -1
  2. package/esm2022/validation/index.mjs +6 -1
  3. package/esm2022/validation/lib/rules/callback-rule.mjs +4 -4
  4. package/esm2022/validation/lib/rules/equal-rule.mjs +19 -0
  5. package/esm2022/validation/lib/rules/greater-than.mjs +18 -0
  6. package/esm2022/validation/lib/rules/length-rule.mjs +3 -3
  7. package/esm2022/validation/lib/rules/less-than-rule.mjs +18 -0
  8. package/esm2022/validation/lib/rules/maxlength-rule.mjs +6 -4
  9. package/esm2022/validation/lib/rules/minlength-rule.mjs +5 -4
  10. package/esm2022/validation/lib/rules/regex-rule.mjs +20 -3
  11. package/esm2022/validation/lib/rules/required-rule.mjs +5 -4
  12. package/esm2022/validation/lib/validation.config.mjs +34 -0
  13. package/esm2022/validation/lib/validation.mjs +1 -1
  14. package/esm2022/validation/lib/validation.module.mjs +9 -2
  15. package/esm2022/validation/lib/validation.service.mjs +18 -8
  16. package/fesm2022/acorex-core-utils.mjs.map +1 -1
  17. package/fesm2022/acorex-core-validation.mjs +141 -27
  18. package/fesm2022/acorex-core-validation.mjs.map +1 -1
  19. package/package.json +1 -1
  20. package/utils/lib/auto-unsubscribe.d.ts +2 -2
  21. package/validation/index.d.ts +3 -0
  22. package/validation/lib/rules/callback-rule.d.ts +1 -1
  23. package/validation/lib/rules/equal-rule.d.ts +14 -0
  24. package/validation/lib/rules/greater-than.d.ts +14 -0
  25. package/validation/lib/rules/less-than-rule.d.ts +14 -0
  26. package/validation/lib/rules/required-rule.d.ts +1 -1
  27. package/validation/lib/validation.config.d.ts +15 -0
  28. package/validation/lib/validation.d.ts +3 -1
  29. package/validation/lib/validation.service.d.ts +4 -1
@@ -33,4 +33,4 @@ export class AXUnsubscriber {
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXUnsubscriber, decorators: [{
34
34
  type: Injectable
35
35
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by11bnN1YnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2F1dG8tdW5zdWJzY3JpYmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLFVBQVUsV0FBVztRQUMxQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMvQyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRztZQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixJQUFJLE9BQU8sUUFBUSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQzVDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDeEI7YUFDRjtZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVtQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqQyxxQkFBZ0IsR0FBRyxDQUFJLE1BQXFCLEVBQWlCLEVBQUUsQ0FDN0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FVMUM7SUFSUSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0FiVSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gQVhBdXRvVW5zdWJzY3JpYmVyKCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGNvbnN0cnVjdG9yKSB7XG4gICAgY29uc3Qgb3JpZyA9IGNvbnN0cnVjdG9yLnByb3RvdHlwZS5uZ09uRGVzdHJveTtcbiAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUubmdPbkRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdGhpcykge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXNbcHJvcF07XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcHJvcGVydHkudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3JpZy5hcHBseSgpO1xuICAgIH07XG4gIH07XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFVuc3Vic2NyaWJlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveSA9IDxUPihvcmlnaW46IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+ID0+XG4gICAgb3JpZ2luLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG5cbiAgcHVibGljIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by11bnN1YnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2F1dG8tdW5zdWJzY3JpYmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLFVBQVUsV0FBVztRQUMxQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMvQyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRztZQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixJQUFJLE9BQU8sUUFBUSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQzVDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDeEI7YUFDRjtZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVtQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqQyxxQkFBZ0IsR0FBRyxDQUFJLE1BQWtDLEVBQThCLEVBQUUsQ0FDdkcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FVMUM7SUFSUSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0FiVSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gQVhBdXRvVW5zdWJzY3JpYmVyKCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGNvbnN0cnVjdG9yKSB7XG4gICAgY29uc3Qgb3JpZyA9IGNvbnN0cnVjdG9yLnByb3RvdHlwZS5uZ09uRGVzdHJveTtcbiAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUubmdPbkRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdGhpcykge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXNbcHJvcF07XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcHJvcGVydHkudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3JpZy5hcHBseSgpO1xuICAgIH07XG4gIH07XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFVuc3Vic2NyaWJlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveSA9IDxUPihvcmlnaW46IE9ic2VydmFibGU8VD4gfCBTdWJqZWN0PFQ+KTogT2JzZXJ2YWJsZTxUPiB8IFN1YmplY3Q8VD4gPT5cbiAgICBvcmlnaW4ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcblxuICBwdWJsaWMgdW5zdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
@@ -3,10 +3,15 @@ export * from './lib/validation';
3
3
  export * from './lib/rules/regex-rule';
4
4
  export * from './lib/rules/required-rule';
5
5
  export * from './lib/rules/callback-rule';
6
+ //
6
7
  export * from './lib/rules/minlength-rule';
7
8
  export * from './lib/rules/maxlength-rule';
8
9
  export * from './lib/rules/length-rule';
9
10
  //
11
+ export * from './lib/rules/equal-rule';
12
+ export * from './lib/rules/less-than-rule';
13
+ export * from './lib/rules/greater-than';
14
+ //
10
15
  export * from './lib/validation.service';
11
16
  export * from './lib/validation.module';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxFQUFFO0FBQ0YsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsRUFBRTtBQUNGLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24nO1xuLy9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL3JlZ2V4LXJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvcmVxdWlyZWQtcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9jYWxsYmFjay1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21heGxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2xlbmd0aC1ydWxlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdGlvbi5tb2R1bGUnOyJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxFQUFFO0FBQ0YsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsRUFBRTtBQUNGLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLEVBQUU7QUFDRixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxFQUFFO0FBQ0YsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdGlvbic7XG4vL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvcmVnZXgtcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9yZXF1aXJlZC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2NhbGxiYWNrLXJ1bGUnO1xuLy9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21heGxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2xlbmd0aC1ydWxlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9lcXVhbC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2xlc3MtdGhhbi1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2dyZWF0ZXItdGhhbic7XG4vL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24ubW9kdWxlJzsiXX0=
@@ -3,11 +3,11 @@ export class AXCallbackValidationRule {
3
3
  return 'callback';
4
4
  }
5
5
  validate(value, options) {
6
- const validationResult = options?.validate(value) || { result: false, message: "Invalid callback function" };
6
+ const validationResult = options?.validate(value, options) || { result: false, message: "Invalid callback function" };
7
7
  const createResult = (result) => ({
8
- name: this.name,
8
+ rule: this.name,
9
9
  result: result.result,
10
- message: result.message || '',
10
+ message: result.message ?? options?.message ?? '',
11
11
  value: value
12
12
  });
13
13
  if (validationResult instanceof Promise) {
@@ -16,4 +16,4 @@ export class AXCallbackValidationRule {
16
16
  return createResult(validationResult);
17
17
  }
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGJhY2stcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvY2FsbGJhY2stcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLE9BQU8sd0JBQXdCO0lBRWpDLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBUSxFQUFFLE9BQTJDO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLENBQUM7UUFDN0csTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUE2QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzdCLEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxnQkFBZ0IsWUFBWSxPQUFPLEVBQUU7WUFDckMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgQVhDYWxsYmFja1ZhbGlkYXRpb248VD4gPSAodmFsdWU6IFQpID0+IFByb21pc2U8eyByZXN1bHQ6IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcgfT4gfCB7IHJlc3VsdDogYm9vbGVhbiwgbWVzc2FnZT86IHN0cmluZyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZU9wdGlvbnM8VD4gZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgdmFsaWRhdGU6IEFYQ2FsbGJhY2tWYWxpZGF0aW9uPFQ+XG59XG5cbi8vIEF1Z21lbnQgdGhlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdjYWxsYmFjayc6IEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZU9wdGlvbnM8dW5rbm93bj47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlPFQ+IGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ2NhbGxiYWNrJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogVCwgb3B0aW9uczogQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlT3B0aW9uczxUPik6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfCBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IG9wdGlvbnM/LnZhbGlkYXRlKHZhbHVlKSB8fCB7IHJlc3VsdDogZmFsc2UsIG1lc3NhZ2U6IFwiSW52YWxpZCBjYWxsYmFjayBmdW5jdGlvblwiIH07XG4gICAgICAgIGNvbnN0IGNyZWF0ZVJlc3VsdCA9IChyZXN1bHQ6IHsgcmVzdWx0OiBib29sZWFuLCBtZXNzYWdlPzogc3RyaW5nIH0pID0+ICh7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdC5yZXN1bHQsXG4gICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQubWVzc2FnZSB8fCAnJyxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0LnRoZW4oY3JlYXRlUmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjcmVhdGVSZXN1bHQodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgfVxufSJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGJhY2stcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvY2FsbGJhY2stcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLE9BQU8sd0JBQXdCO0lBRWpDLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBUSxFQUFFLE9BQTJDO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxDQUFDO1FBQ3RILE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBNkMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO1lBQ2pELEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxnQkFBZ0IsWUFBWSxPQUFPLEVBQUU7WUFDckMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgQVhDYWxsYmFja1ZhbGlkYXRpb248VD4gPSAodmFsdWU6IFQsIG9wdGlvbnM/OiBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGVPcHRpb25zPFQ+KSA9PiBQcm9taXNlPHsgcmVzdWx0OiBib29sZWFuLCBtZXNzYWdlPzogc3RyaW5nIH0+IHwgeyByZXN1bHQ6IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcgfTtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGVPcHRpb25zPFQ+IGV4dGVuZHMgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMge1xuICAgIHZhbGlkYXRlOiBBWENhbGxiYWNrVmFsaWRhdGlvbjxUPlxufVxuXG4vLyBBdWdtZW50IHRoZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcFxuZGVjbGFyZSBtb2R1bGUgJy4uL3ZhbGlkYXRpb24nIHtcbiAgICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgICAgICAnY2FsbGJhY2snOiBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGVPcHRpb25zPHVua25vd24+O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZTxUPiBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdjYWxsYmFjayc7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUodmFsdWU6IFQsIG9wdGlvbnM6IEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZU9wdGlvbnM8VD4pOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHwgUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBvcHRpb25zPy52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucykgfHwgeyByZXN1bHQ6IGZhbHNlLCBtZXNzYWdlOiBcIkludmFsaWQgY2FsbGJhY2sgZnVuY3Rpb25cIiB9O1xuICAgICAgICBjb25zdCBjcmVhdGVSZXN1bHQgPSAocmVzdWx0OiB7IHJlc3VsdDogYm9vbGVhbiwgbWVzc2FnZT86IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiByZXN1bHQucmVzdWx0LFxuICAgICAgICAgICAgbWVzc2FnZTogcmVzdWx0Lm1lc3NhZ2UgPz8gb3B0aW9ucz8ubWVzc2FnZSA/PyAnJyxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0LnRoZW4oY3JlYXRlUmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjcmVhdGVSZXN1bHQodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,19 @@
1
+ // ax-equal-validation-rule.ts
2
+ import { isEqual } from "lodash-es";
3
+ export class AXEqualValidationRule {
4
+ get name() {
5
+ return 'equal';
6
+ }
7
+ validate(value, options) {
8
+ const isValueEqual = isEqual(value, options.value);
9
+ const isValid = options.not ? !isValueEqual : isValueEqual;
10
+ const defaultMessage = `The value must ${options.not ? 'not ' : ''}be equal to ${options.value}.`;
11
+ return {
12
+ rule: this.name,
13
+ result: isValid,
14
+ message: isValid ? '' : options?.message ?? defaultMessage,
15
+ value: value
16
+ };
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1YWwtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvZXF1YWwtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWNwQyxNQUFNLE9BQU8scUJBQXFCO0lBQzlCLElBQUksSUFBSTtRQUNKLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQXFDO1FBQ3RELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFFM0QsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUNsRyxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYztZQUMxRCxLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBheC1lcXVhbC12YWxpZGF0aW9uLXJ1bGUudHNcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlLCBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhFcXVhbFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICB2YWx1ZTogYW55O1xuICAgIG5vdD86IGJvb2xlYW47IC8vIE9wdGlvbmFsIGZsYWcgdG8gaW52ZXJ0IHRoZSB2YWxpZGF0aW9uIGxvZ2ljXG59XG5cbmRlY2xhcmUgbW9kdWxlICcuLi92YWxpZGF0aW9uJyB7XG4gICAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICAgICAgJ2VxdWFsJzogQVhFcXVhbFZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWEVxdWFsVmFsaWRhdGlvblJ1bGUgaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ2VxdWFsJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogYW55LCBvcHRpb25zOiBBWEVxdWFsVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGlzVmFsdWVFcXVhbCA9IGlzRXF1YWwodmFsdWUsIG9wdGlvbnMudmFsdWUpO1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gb3B0aW9ucy5ub3QgPyAhaXNWYWx1ZUVxdWFsIDogaXNWYWx1ZUVxdWFsO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRNZXNzYWdlID0gYFRoZSB2YWx1ZSBtdXN0ICR7b3B0aW9ucy5ub3QgPyAnbm90ICcgOiAnJ31iZSBlcXVhbCB0byAke29wdGlvbnMudmFsdWV9LmA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBydWxlOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gJycgOiBvcHRpb25zPy5tZXNzYWdlID8/IGRlZmF1bHRNZXNzYWdlLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ // ax-greater-than-validation-rule.ts
2
+ import { isNull, isUndefined } from "lodash-es";
3
+ export class AXGreaterThanValidationRule {
4
+ get name() {
5
+ return 'greaterThan';
6
+ }
7
+ validate(value, options) {
8
+ const isValid = (isNull(value) || isUndefined(value)) ? true : (options.inclusive ? value >= options.value : value > options.value);
9
+ const baseMessage = `The value must be ${options.inclusive ? 'greater than or equal to' : 'greater than'} ${options.value}.`;
10
+ return {
11
+ rule: this.name,
12
+ result: isValid,
13
+ message: isValid ? '' : options?.message ?? baseMessage,
14
+ value: value
15
+ };
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlYXRlci10aGFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi9ydWxlcy9ncmVhdGVyLXRoYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBY2hELE1BQU0sT0FBTywyQkFBMkI7SUFDcEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBMkM7UUFDL0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwSSxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUM7UUFFN0gsT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVc7WUFDdkQsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXgtZ3JlYXRlci10aGFuLXZhbGlkYXRpb24tcnVsZS50c1xuaW1wb3J0IHsgaXNOdWxsLCBpc1VuZGVmaW5lZCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBWEdyZWF0ZXJUaGFuVmFsaWRhdGlvblJ1bGVPcHRpb25zIGV4dGVuZHMgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMge1xuICAgIHZhbHVlOiBudW1iZXI7XG4gICAgaW5jbHVzaXZlPzogYm9vbGVhbjsgLy8gT3B0aW9uYWwgZmxhZyBmb3IgaW5jbHVzaXZlbmVzc1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdncmVhdGVyVGhhbic6IEFYR3JlYXRlclRoYW5WYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhHcmVhdGVyVGhhblZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdncmVhdGVyVGhhbic7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUodmFsdWU6IG51bWJlciwgb3B0aW9uczogQVhHcmVhdGVyVGhhblZhbGlkYXRpb25SdWxlT3B0aW9ucyk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQge1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gKGlzTnVsbCh2YWx1ZSkgfHwgaXNVbmRlZmluZWQodmFsdWUpKSA/IHRydWUgOiAob3B0aW9ucy5pbmNsdXNpdmUgPyB2YWx1ZSA+PSBvcHRpb25zLnZhbHVlIDogdmFsdWUgPiBvcHRpb25zLnZhbHVlKTtcbiAgICAgICAgY29uc3QgYmFzZU1lc3NhZ2UgPSBgVGhlIHZhbHVlIG11c3QgYmUgJHtvcHRpb25zLmluY2x1c2l2ZSA/ICdncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8nIDogJ2dyZWF0ZXIgdGhhbid9ICR7b3B0aW9ucy52YWx1ZX0uYDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogb3B0aW9ucz8ubWVzc2FnZSA/PyBiYXNlTWVzc2FnZSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -5,11 +5,11 @@ export class AXLengthValidationRule {
5
5
  validate(value, options) {
6
6
  const isValid = value?.length >= options.min && value?.length <= options.max;
7
7
  return {
8
- name: this.name,
8
+ rule: this.name,
9
9
  result: isValid,
10
- message: isValid ? null : `The value must be between ${options.min} and ${options.max} chars`,
10
+ message: isValid ? null : options?.message ?? `The value must be between ${options.min} and ${options.max} chars`,
11
11
  value: value
12
12
  };
13
13
  }
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL2xlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sT0FBTyxzQkFBc0I7SUFDL0IsSUFBSSxJQUFJO1FBQ0osT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBc0M7UUFDMUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM3RSxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixPQUFPLENBQUMsR0FBRyxRQUFRLE9BQU8sQ0FBQyxHQUFHLFFBQVE7WUFDN0YsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXgtbWF4LWxlbmd0aC12YWxpZGF0aW9uLXJ1bGUudHNcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBWExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICBtaW46IG51bWJlcjtcbiAgICBtYXg6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3ZhbGlkYXRpb24nIHtcbiAgICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgICAgICAnbGVuZ3RoJzogQVhMZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhMZW5ndGhWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbGVuZ3RoJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBBWExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQge1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsdWU/Lmxlbmd0aCA+PSBvcHRpb25zLm1pbiAmJiB2YWx1ZT8ubGVuZ3RoIDw9IG9wdGlvbnMubWF4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/IG51bGwgOiBgVGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAke29wdGlvbnMubWlufSBhbmQgJHtvcHRpb25zLm1heH0gY2hhcnNgLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL2xlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sT0FBTyxzQkFBc0I7SUFDL0IsSUFBSSxJQUFJO1FBQ0osT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBc0M7UUFDMUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM3RSxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksNkJBQTZCLE9BQU8sQ0FBQyxHQUFHLFFBQVEsT0FBTyxDQUFDLEdBQUcsUUFBUTtZQUNqSCxLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBheC1tYXgtbGVuZ3RoLXZhbGlkYXRpb24tcnVsZS50c1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zIGV4dGVuZHMgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMge1xuICAgIG1pbjogbnVtYmVyO1xuICAgIG1heDogbnVtYmVyO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdsZW5ndGgnOiBBWExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWExlbmd0aFZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdsZW5ndGgnO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM6IEFYTGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSB2YWx1ZT8ubGVuZ3RoID49IG9wdGlvbnMubWluICYmIHZhbHVlPy5sZW5ndGggPD0gb3B0aW9ucy5tYXg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBydWxlOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gbnVsbCA6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYFRoZSB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gJHtvcHRpb25zLm1pbn0gYW5kICR7b3B0aW9ucy5tYXh9IGNoYXJzYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ // ax-less-than-validation-rule.ts
2
+ import { isNull, isUndefined } from "lodash-es";
3
+ export class AXLessThanValidationRule {
4
+ get name() {
5
+ return 'lessThan';
6
+ }
7
+ validate(value, options) {
8
+ const isValid = (isNull(value) || isUndefined(value)) ? true : (options.inclusive ? value <= options.value : value < options.value);
9
+ const baseMessage = `The value must be ${options.inclusive ? 'less than or equal to' : 'less than'} ${options.value}.`;
10
+ return {
11
+ rule: this.name,
12
+ result: isValid,
13
+ message: isValid ? '' : options?.message ?? baseMessage,
14
+ value: value
15
+ };
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVzcy10aGFuLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL2xlc3MtdGhhbi1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtDQUFrQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWNoRCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLE9BQXdDO1FBQzVELE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEksTUFBTSxXQUFXLEdBQUcscUJBQXFCLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDO1FBRXZILE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXO1lBQ3ZELEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGF4LWxlc3MtdGhhbi12YWxpZGF0aW9uLXJ1bGUudHNcbmltcG9ydCB7IGlzTnVsbCwgaXNVbmRlZmluZWQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlLCBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhMZXNzVGhhblZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICAgIGluY2x1c2l2ZT86IGJvb2xlYW47IC8vIE9wdGlvbmFsIGZsYWcgZm9yIGluY2x1c2l2ZW5lc3Ncbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3ZhbGlkYXRpb24nIHtcbiAgICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgICAgICAnbGVzc1RoYW4nOiBBWExlc3NUaGFuVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFYTGVzc1RoYW5WYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbGVzc1RoYW4nO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKHZhbHVlOiBudW1iZXIsIG9wdGlvbnM6IEFYTGVzc1RoYW5WYWxpZGF0aW9uUnVsZU9wdGlvbnMpOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IChpc051bGwodmFsdWUpIHx8IGlzVW5kZWZpbmVkKHZhbHVlKSkgPyB0cnVlIDogKG9wdGlvbnMuaW5jbHVzaXZlID8gdmFsdWUgPD0gb3B0aW9ucy52YWx1ZSA6IHZhbHVlIDwgb3B0aW9ucy52YWx1ZSk7XG4gICAgICAgIGNvbnN0IGJhc2VNZXNzYWdlID0gYFRoZSB2YWx1ZSBtdXN0IGJlICR7b3B0aW9ucy5pbmNsdXNpdmUgPyAnbGVzcyB0aGFuIG9yIGVxdWFsIHRvJyA6ICdsZXNzIHRoYW4nfSAke29wdGlvbnMudmFsdWV9LmA7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYmFzZU1lc3NhZ2UsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,15 +1,17 @@
1
+ // ax-max-length-validation-rule.ts
2
+ import { isEmpty } from "lodash-es";
1
3
  export class AXMaxLengthValidationRule {
2
4
  get name() {
3
5
  return 'maxLength';
4
6
  }
5
7
  validate(value, options) {
6
- const isValid = value?.length <= options.value;
8
+ const isValid = isEmpty(value) ? true : (value?.length <= options.value);
7
9
  return {
8
- name: this.name,
10
+ rule: this.name,
9
11
  result: isValid,
10
- message: isValid ? '' : `The value must not exceed ${options.value} characters.`,
12
+ message: isValid ? '' : options?.message ?? `The value must not exceed ${options.value} characters.`,
11
13
  value: value
12
14
  };
13
15
  }
14
16
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4bGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL21heGxlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBeUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQy9DLE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLE9BQU8sQ0FBQyxLQUFLLGNBQWM7WUFDaEYsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXgtbWF4LWxlbmd0aC12YWxpZGF0aW9uLXJ1bGUudHNcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBWE1heExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICB2YWx1ZTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdtYXhMZW5ndGgnOiBBWE1heExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWE1heExlbmd0aFZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdtYXhMZW5ndGgnO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM6IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSB2YWx1ZT8ubGVuZ3RoIDw9IG9wdGlvbnMudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gJycgOiBgVGhlIHZhbHVlIG11c3Qgbm90IGV4Y2VlZCAke29wdGlvbnMudmFsdWV9IGNoYXJhY3RlcnMuYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4bGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL21heGxlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQztBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBYXBDLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBeUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekUsT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLDZCQUE2QixPQUFPLENBQUMsS0FBSyxjQUFjO1lBQ3BHLEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGF4LW1heC1sZW5ndGgtdmFsaWRhdGlvbi1ydWxlLnRzXG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zIGV4dGVuZHMgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMge1xuICAgIHZhbHVlOiBudW1iZXI7XG59XG5cbmRlY2xhcmUgbW9kdWxlICcuLi92YWxpZGF0aW9uJyB7XG4gICAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICAgICAgJ21heExlbmd0aCc6IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGUgaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ21heExlbmd0aCc7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUodmFsdWU6IHN0cmluZywgb3B0aW9uczogQVhNYXhMZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnMpOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzRW1wdHkodmFsdWUpID8gdHJ1ZSA6ICh2YWx1ZT8ubGVuZ3RoIDw9IG9wdGlvbnMudmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogb3B0aW9ucz8ubWVzc2FnZSA/PyBgVGhlIHZhbHVlIG11c3Qgbm90IGV4Y2VlZCAke29wdGlvbnMudmFsdWV9IGNoYXJhY3RlcnMuYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -1,15 +1,16 @@
1
+ import { isEmpty } from "lodash-es";
1
2
  export class AXMinLengthValidationRule {
2
3
  get name() {
3
4
  return 'minLength';
4
5
  }
5
6
  validate(value, options) {
6
- const isValid = value?.length >= options.value;
7
+ const isValid = isEmpty(value) ? true : (value?.length >= options.value);
7
8
  return {
8
- name: this.name,
9
+ rule: this.name,
9
10
  result: isValid,
10
- message: isValid ? '' : `The value must be at least ${options.value} characters long.`,
11
+ message: isValid ? '' : options?.message ?? `The value must be at least ${options.value} characters long.`,
11
12
  value: value
12
13
  };
13
14
  }
14
15
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlubGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBeUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQy9DLE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsOEJBQThCLE9BQU8sQ0FBQyxLQUFLLG1CQUFtQjtZQUN0RixLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlLCBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgdmFsdWU6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3ZhbGlkYXRpb24nIHtcbiAgICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgICAgICAnbWluTGVuZ3RoJzogQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbWluTGVuZ3RoJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBBWE1pbkxlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQge1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsdWU/Lmxlbmd0aCA+PSBvcHRpb25zLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogYFRoZSB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0ICR7b3B0aW9ucy52YWx1ZX0gY2hhcmFjdGVycyBsb25nLmAsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfTtcbiAgICB9XG59Il19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlubGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFhcEMsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyxJQUFJLElBQUk7UUFDSixPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWEsRUFBRSxPQUF5QztRQUM3RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RSxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksOEJBQThCLE9BQU8sQ0FBQyxLQUFLLG1CQUFtQjtZQUMxRyxLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTWluTGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zIGV4dGVuZHMgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMge1xuICAgIHZhbHVlOiBudW1iZXI7XG59XG5cbmRlY2xhcmUgbW9kdWxlICcuLi92YWxpZGF0aW9uJyB7XG4gICAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICAgICAgJ21pbkxlbmd0aCc6IEFYTWluTGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFYTWluTGVuZ3RoVmFsaWRhdGlvblJ1bGUgaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ21pbkxlbmd0aCc7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUodmFsdWU6IHN0cmluZywgb3B0aW9uczogQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnMpOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzRW1wdHkodmFsdWUpID8gdHJ1ZSA6ICh2YWx1ZT8ubGVuZ3RoID49IG9wdGlvbnMudmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogb3B0aW9ucz8ubWVzc2FnZSA/PyBgVGhlIHZhbHVlIG11c3QgYmUgYXQgbGVhc3QgJHtvcHRpb25zLnZhbHVlfSBjaGFyYWN0ZXJzIGxvbmcuYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
@@ -1,3 +1,4 @@
1
+ import { isEmpty, isString } from "lodash-es";
1
2
  export class AXRegexValidationRule {
2
3
  get name() {
3
4
  return 'regex';
@@ -5,13 +6,29 @@ export class AXRegexValidationRule {
5
6
  validate(value, options) {
6
7
  // Convert string pattern to RegExp if necessary
7
8
  const regexPattern = typeof options.pattern === 'string' ? new RegExp(options.pattern) : options.pattern;
9
+ if (!value || (isString(value) && isEmpty(value.trim()))) {
10
+ return {
11
+ rule: this.name,
12
+ result: true,
13
+ message: null,
14
+ value: value
15
+ };
16
+ }
17
+ else if (!isString(value)) {
18
+ return {
19
+ rule: this.name,
20
+ result: false,
21
+ message: `${value} is not string value.`,
22
+ value: value
23
+ };
24
+ }
8
25
  const isValid = regexPattern.test(value);
9
26
  return {
10
- name: this.name,
27
+ rule: this.name,
11
28
  result: isValid,
12
- message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,
29
+ message: isValid ? '' : options?.message ?? `The value does not match the pattern ${regexPattern}.`,
13
30
  value: value
14
31
  };
15
32
  }
16
33
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXgtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvcmVnZXgtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQSxNQUFNLE9BQU8scUJBQXFCO0lBRTlCLElBQUksSUFBSTtRQUNKLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLE9BQXFDO1FBQ3pELGdEQUFnRDtRQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFekcsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHdDQUF3QyxZQUFZLEdBQUc7WUFDL0UsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvblwiO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhSZWdleFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICBwYXR0ZXJuOiBzdHJpbmcgfCBSZWdFeHA7XG59XG5cbi8vIEF1Z21lbnQgdGhlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdyZWdleCc6IEFYUmVnZXhWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhSZWdleFZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlZ2V4JztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBBWFJlZ2V4VmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHBhdHRlcm4gdG8gUmVnRXhwIGlmIG5lY2Vzc2FyeVxuICAgICAgICBjb25zdCByZWdleFBhdHRlcm4gPSB0eXBlb2Ygb3B0aW9ucy5wYXR0ZXJuID09PSAnc3RyaW5nJyA/IG5ldyBSZWdFeHAob3B0aW9ucy5wYXR0ZXJuKSA6IG9wdGlvbnMucGF0dGVybjtcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gcmVnZXhQYXR0ZXJuLnRlc3QodmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogYFRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVybiAke3JlZ2V4UGF0dGVybn0uYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cblxufSJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXgtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvcmVnZXgtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWU5QyxNQUFNLE9BQU8scUJBQXFCO0lBRTlCLElBQUksSUFBSTtRQUNKLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLE9BQXFDO1FBQ3pELGdEQUFnRDtRQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFekcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN0RCxPQUFPO2dCQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixNQUFNLEVBQUUsSUFBSTtnQkFDWixPQUFPLEVBQUUsSUFBSTtnQkFDYixLQUFLLEVBQUUsS0FBSzthQUNmLENBQUM7U0FDTDthQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTztnQkFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsT0FBTyxFQUFFLEdBQUcsS0FBSyx1QkFBdUI7Z0JBQ3hDLEtBQUssRUFBRSxLQUFLO2FBQ2YsQ0FBQztTQUNMO1FBRUQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksd0NBQXdDLFlBQVksR0FBRztZQUNuRyxLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VtcHR5LCBpc1N0cmluZyB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUmVnZXhWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgcGF0dGVybjogc3RyaW5nIHwgUmVnRXhwO1xufVxuXG4vLyBBdWdtZW50IHRoZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcFxuZGVjbGFyZSBtb2R1bGUgJy4uL3ZhbGlkYXRpb24nIHtcbiAgICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgICAgICAncmVnZXgnOiBBWFJlZ2V4VmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFYUmVnZXhWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdyZWdleCc7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUodmFsdWU6IHN0cmluZywgb3B0aW9uczogQVhSZWdleFZhbGlkYXRpb25SdWxlT3B0aW9ucyk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQge1xuICAgICAgICAvLyBDb252ZXJ0IHN0cmluZyBwYXR0ZXJuIHRvIFJlZ0V4cCBpZiBuZWNlc3NhcnlcbiAgICAgICAgY29uc3QgcmVnZXhQYXR0ZXJuID0gdHlwZW9mIG9wdGlvbnMucGF0dGVybiA9PT0gJ3N0cmluZycgPyBuZXcgUmVnRXhwKG9wdGlvbnMucGF0dGVybikgOiBvcHRpb25zLnBhdHRlcm47XG5cbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAoaXNTdHJpbmcodmFsdWUpICYmIGlzRW1wdHkodmFsdWUudHJpbSgpKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgICAgIHJlc3VsdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICByZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGAke3ZhbHVlfSBpcyBub3Qgc3RyaW5nIHZhbHVlLmAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IHJlZ2V4UGF0dGVybi50ZXN0KHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYFRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVybiAke3JlZ2V4UGF0dGVybn0uYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cblxufSJdfQ==
@@ -1,9 +1,10 @@
1
1
  import { find, isArray, isEmpty, isNull, isNumber, isString, isUndefined } from "lodash-es";
2
+ import { AXTranslator } from "@acorex/core/translation";
2
3
  export class AXRequiredValidationRule {
3
4
  get name() {
4
5
  return 'required';
5
6
  }
6
- validate(value) {
7
+ validate(value, options) {
7
8
  const rules = [
8
9
  { test: val => isNull(val) || isUndefined(val) },
9
10
  { test: val => isString(val) && isEmpty(val.trim()) },
@@ -12,13 +13,13 @@ export class AXRequiredValidationRule {
12
13
  ];
13
14
  const failedRule = find(rules, rule => rule.test(value));
14
15
  const isValid = !failedRule;
15
- const message = failedRule ? "This filed is required" : null;
16
+ const message = failedRule ? options?.message ?? AXTranslator.get("validation.messages.required", { name: options?.['title'] ?? options?.['name'] }) : null;
16
17
  return {
17
- name: this.name,
18
+ rule: this.name,
18
19
  result: isValid,
19
20
  message: message,
20
21
  value
21
22
  };
22
23
  }
23
24
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvcmVxdWlyZWQtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBYzVGLE1BQU0sT0FBTyx3QkFBd0I7SUFFakMsSUFBSSxJQUFJO1FBQ0osT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFlO1FBQ3BCLE1BQU0sS0FBSyxHQUFHO1lBQ1YsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNyRCxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1NBQ2hELENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU3RCxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLO1NBQ1IsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbmQsIGlzQXJyYXksIGlzRW1wdHksIGlzTnVsbCwgaXNOdW1iZXIsIGlzU3RyaW5nLCBpc1VuZGVmaW5lZCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUmVxdWlyZWRWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG59XG5cbi8vIEF1Z21lbnQgdGhlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdyZXF1aXJlZCc6IEFYUmVxdWlyZWRWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhSZXF1aXJlZFZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZT86IHVua25vd24pOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgY29uc3QgcnVsZXMgPSBbXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc051bGwodmFsKSB8fCBpc1VuZGVmaW5lZCh2YWwpIH0sXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc1N0cmluZyh2YWwpICYmIGlzRW1wdHkodmFsLnRyaW0oKSkgfSxcbiAgICAgICAgICAgIHsgdGVzdDogdmFsID0+IGlzTnVtYmVyKHZhbCkgJiYgaXNOYU4odmFsKSB9LFxuICAgICAgICAgICAgeyB0ZXN0OiB2YWwgPT4gaXNBcnJheSh2YWwpICYmIGlzRW1wdHkodmFsKSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmFpbGVkUnVsZSA9IGZpbmQocnVsZXMsIHJ1bGUgPT4gcnVsZS50ZXN0KHZhbHVlKSk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSAhZmFpbGVkUnVsZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGZhaWxlZFJ1bGUgPyBcIlRoaXMgZmlsZWQgaXMgcmVxdWlyZWRcIiA6IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvcmVxdWlyZWQtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQWF4RCxNQUFNLE9BQU8sd0JBQXdCO0lBRWpDLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBZSxFQUFFLE9BQXlDO1FBQy9ELE1BQU0sS0FBSyxHQUFHO1lBQ1YsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNyRCxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1NBQ2hELENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTVKLE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEtBQUs7U0FDUixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmluZCwgaXNBcnJheSwgaXNFbXB0eSwgaXNOdWxsLCBpc051bWJlciwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSBcIkBhY29yZXgvY29yZS90cmFuc2xhdGlvblwiO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhSZXF1aXJlZFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbn1cblxuLy8gQXVnbWVudCB0aGUgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXBcbmRlY2xhcmUgbW9kdWxlICcuLi92YWxpZGF0aW9uJyB7XG4gICAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICAgICAgJ3JlcXVpcmVkJzogQVhSZXF1aXJlZFZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWFJlcXVpcmVkVmFsaWRhdGlvblJ1bGUgaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcblxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAncmVxdWlyZWQnO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKHZhbHVlPzogdW5rbm93biwgb3B0aW9ucz86IEFYUmVxdWlyZWRWYWxpZGF0aW9uUnVsZU9wdGlvbnMpOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgY29uc3QgcnVsZXMgPSBbXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc051bGwodmFsKSB8fCBpc1VuZGVmaW5lZCh2YWwpIH0sXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc1N0cmluZyh2YWwpICYmIGlzRW1wdHkodmFsLnRyaW0oKSkgfSxcbiAgICAgICAgICAgIHsgdGVzdDogdmFsID0+IGlzTnVtYmVyKHZhbCkgJiYgaXNOYU4odmFsKSB9LFxuICAgICAgICAgICAgeyB0ZXN0OiB2YWwgPT4gaXNBcnJheSh2YWwpICYmIGlzRW1wdHkodmFsKSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmFpbGVkUnVsZSA9IGZpbmQocnVsZXMsIHJ1bGUgPT4gcnVsZS50ZXN0KHZhbHVlKSk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSAhZmFpbGVkUnVsZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGZhaWxlZFJ1bGUgPyBvcHRpb25zPy5tZXNzYWdlID8/IEFYVHJhbnNsYXRvci5nZXQoXCJ2YWxpZGF0aW9uLm1lc3NhZ2VzLnJlcXVpcmVkXCIsIHsgbmFtZTogb3B0aW9ucz8uWyd0aXRsZSddID8/IG9wdGlvbnM/LlsnbmFtZSddIH0pIDogbnVsbDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,34 @@
1
+ import { AXTranslator } from '@acorex/core/translation';
2
+ import { InjectionToken } from '@angular/core';
3
+ export const AX_VALIDATION_CONFIG = new InjectionToken('AX_VALIDATION_CONFIG', {
4
+ providedIn: 'root',
5
+ factory: () => {
6
+ return AXValidationDefaultConfig;
7
+ },
8
+ });
9
+ export const AXValidationDefaultConfig = {
10
+ rules: {
11
+ email: {
12
+ rule: 'regex',
13
+ options: {
14
+ pattern: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
15
+ message: AXTranslator.get('validation.messages.email'),
16
+ }
17
+ },
18
+ phone: {
19
+ rule: 'regex',
20
+ options: {
21
+ pattern: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/,
22
+ message: AXTranslator.get('validation.messages.phone'),
23
+ }
24
+ },
25
+ },
26
+ };
27
+ export function validationConfig(config = {}) {
28
+ const result = {
29
+ ...AXValidationDefaultConfig,
30
+ ...config,
31
+ };
32
+ return result;
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3ZhbGlkYXRpb24uY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYy9DLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFxQixzQkFBc0IsRUFBRTtJQUNqRyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1osT0FBTyx5QkFBeUIsQ0FBQztJQUNuQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXVCO0lBQzNELEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFDTCx1SkFBdUo7Z0JBQ3pKLE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDO2FBQ3ZEO1NBQ0Y7UUFDRCxLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsOENBQThDO2dCQUN2RCxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQzthQUN2RDtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBSUYsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFNBQTRCLEVBQUU7SUFDN0QsTUFBTSxNQUFNLEdBQUc7UUFDYixHQUFHLHlCQUF5QjtRQUM1QixHQUFHLE1BQU07S0FDVixDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIH0gZnJvbSAnLi92YWxpZGF0aW9uJztcblxuZXhwb3J0IHR5cGUgQVhWYWxpZGF0aW9uQ29uZmlnUnVsZXMgPSB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBydWxlOiBrZXlvZiBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcDtcbiAgICBvcHRpb25zOiBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVmFsaWRhdGlvbkNvbmZpZyB7XG4gIHJ1bGVzOiBBWFZhbGlkYXRpb25Db25maWdSdWxlcztcbn1cblxuZXhwb3J0IGNvbnN0IEFYX1ZBTElEQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYVmFsaWRhdGlvbkNvbmZpZz4oJ0FYX1ZBTElEQVRJT05fQ09ORklHJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gQVhWYWxpZGF0aW9uRGVmYXVsdENvbmZpZztcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQVhWYWxpZGF0aW9uRGVmYXVsdENvbmZpZzogQVhWYWxpZGF0aW9uQ29uZmlnID0ge1xuICBydWxlczoge1xuICAgIGVtYWlsOiB7XG4gICAgICBydWxlOiAncmVnZXgnLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgICAgICAgbWVzc2FnZTogQVhUcmFuc2xhdG9yLmdldCgndmFsaWRhdGlvbi5tZXNzYWdlcy5lbWFpbCcpLFxuICAgICAgfVxuICAgIH0sXG4gICAgcGhvbmU6IHtcbiAgICAgIHJ1bGU6ICdyZWdleCcsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHBhdHRlcm46IC9eWytdKlsoXXswLDF9WzAtOV17MSw0fVspXXswLDF9Wy1cXHNcXC4vMC05XSokLyxcbiAgICAgICAgbWVzc2FnZTogQVhUcmFuc2xhdG9yLmdldCgndmFsaWRhdGlvbi5tZXNzYWdlcy5waG9uZScpLFxuICAgICAgfVxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgdHlwZSBQYXJ0aWFsRm9ybUNvbmZpZyA9IFBhcnRpYWw8QVhWYWxpZGF0aW9uQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRpb25Db25maWcoY29uZmlnOiBQYXJ0aWFsRm9ybUNvbmZpZyA9IHt9KTogQVhWYWxpZGF0aW9uQ29uZmlnIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLkFYVmFsaWRhdGlvbkRlZmF1bHRDb25maWcsXG4gICAgLi4uY29uZmlnLFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93blxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgIC8vIGluaXRpYWxseSBlbXB0eSwgYnV0IHdpbGwgYmUgZXh0ZW5kZWQgYnkgb3RoZXIgbW9kdWxlc1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZSB7XG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICAgIHZhbGlkYXRlKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMpOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHwgUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU/OiB1bmtub3duO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsO1xuICAgIHJlc3VsdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25TdW1tYXJ5IHtcbiAgICByZXN1bHQ6IGJvb2xlYW47XG4gICAgcnVsZXM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXVxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgbWVzc2FnZT86IHN0cmluZ1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd25cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICAvLyBpbml0aWFsbHkgZW1wdHksIGJ1dCB3aWxsIGJlIGV4dGVuZGVkIGJ5IG90aGVyIG1vZHVsZXNcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGUge1xuICAgIGdldCBuYW1lKCk6IHN0cmluZztcbiAgICB2YWxpZGF0ZSh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB8IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgcnVsZTogc3RyaW5nO1xuICAgIHZhbHVlPzogdW5rbm93bjtcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgbnVsbDtcbiAgICByZXN1bHQ6IGJvb2xlYW47XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93blxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblN1bW1hcnkge1xuICAgIHJlc3VsdDogYm9vbGVhbjtcbiAgICBydWxlczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdXG59XG4iXX0=
@@ -6,6 +6,9 @@ import { AXCallbackValidationRule } from './rules/callback-rule';
6
6
  import { AXMinLengthValidationRule } from './rules/minlength-rule';
7
7
  import { AXMaxLengthValidationRule } from './rules/maxlength-rule';
8
8
  import { AXLengthValidationRule } from './rules/length-rule';
9
+ import { AXEqualValidationRule } from './rules/equal-rule';
10
+ import { AXLessThanValidationRule } from './rules/less-than-rule';
11
+ import { AXGreaterThanValidationRule } from './rules/greater-than';
9
12
  import * as i0 from "@angular/core";
10
13
  import * as i1 from "./validation.service";
11
14
  export class AXValidationModule {
@@ -26,7 +29,11 @@ export class AXValidationModule {
26
29
  };
27
30
  }
28
31
  constructor(pluginRegistry) {
29
- pluginRegistry.register(new AXRegexValidationRule(), new AXRequiredValidationRule(), new AXCallbackValidationRule(), new AXMinLengthValidationRule(), new AXMaxLengthValidationRule(), new AXLengthValidationRule());
32
+ pluginRegistry.register(new AXRegexValidationRule(), new AXRequiredValidationRule(), new AXCallbackValidationRule(),
33
+ //
34
+ new AXMinLengthValidationRule(), new AXMaxLengthValidationRule(), new AXLengthValidationRule(),
35
+ //
36
+ new AXEqualValidationRule(), new AXLessThanValidationRule(), new AXGreaterThanValidationRule());
30
37
  }
31
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule, deps: [{ token: i1.AXValidationRegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
32
39
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule }); }
@@ -38,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
38
45
  imports: [],
39
46
  }]
40
47
  }], ctorParameters: () => [{ type: i1.AXValidationRegistryService }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3ZhbGlkYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTTdELE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUE0QztRQUN2RCxPQUFPO1lBQ0gsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxDQUFDLGNBQTJDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTt3QkFDOUQsSUFBSSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07NEJBQzFCLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3RELENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ25DLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksY0FBMkM7UUFDbkQsY0FBYyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxxQkFBcUIsRUFBRSxFQUMzQixJQUFJLHdCQUF3QixFQUFFLEVBQzlCLElBQUksd0JBQXdCLEVBQUUsRUFDOUIsSUFBSSx5QkFBeUIsRUFBRSxFQUMvQixJQUFJLHlCQUF5QixFQUFFLEVBQy9CLElBQUksc0JBQXNCLEVBQUUsQ0FDL0IsQ0FBQTtJQUNMLENBQUM7OEdBNUJRLGtCQUFrQjsrR0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IEFYUmVnZXhWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvcmVnZXgtcnVsZSc7XG5pbXBvcnQgeyBBWFJlcXVpcmVkVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL3JlcXVpcmVkLXJ1bGUnO1xuaW1wb3J0IHsgQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9jYWxsYmFjay1ydWxlJztcbmltcG9ydCB7IEFYTWluTGVuZ3RoVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL21pbmxlbmd0aC1ydWxlJztcbmltcG9ydCB7IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL21heGxlbmd0aC1ydWxlJztcbmltcG9ydCB7IEFYTGVuZ3RoVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL2xlbmd0aC1ydWxlJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFZhbGlkYXRpb25Nb2R1bGUge1xuXG4gICAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogeyB2YWxpZGF0b3JzPzogQVhWYWxpZGF0aW9uUnVsZVtdIH0pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYVmFsaWRhdGlvbk1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IEFYVmFsaWRhdGlvbk1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiAocGx1Z2luUmVnaXN0cnk6IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZz8udmFsaWRhdG9ycz8ubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpblJlZ2lzdHJ5LnJlZ2lzdGVyKC4uLmNvbmZpZy52YWxpZGF0b3JzKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGVwczogW0FYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHBsdWdpblJlZ2lzdHJ5OiBBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2UpIHtcbiAgICAgICAgcGx1Z2luUmVnaXN0cnkucmVnaXN0ZXIoXG4gICAgICAgICAgICBuZXcgQVhSZWdleFZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgICAgICBuZXcgQVhSZXF1aXJlZFZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgICAgICBuZXcgQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgICAgICBuZXcgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZSgpLFxuICAgICAgICAgICAgbmV3IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGUoKSxcbiAgICAgICAgICAgIG5ldyBBWExlbmd0aFZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3ZhbGlkYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBTW5FLE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUE0QztRQUN2RCxPQUFPO1lBQ0gsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxDQUFDLGNBQTJDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTt3QkFDOUQsSUFBSSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07NEJBQzFCLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3RELENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ25DLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksY0FBMkM7UUFDbkQsY0FBYyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxxQkFBcUIsRUFBRSxFQUMzQixJQUFJLHdCQUF3QixFQUFFLEVBQzlCLElBQUksd0JBQXdCLEVBQUU7UUFDOUIsRUFBRTtRQUNGLElBQUkseUJBQXlCLEVBQUUsRUFDL0IsSUFBSSx5QkFBeUIsRUFBRSxFQUMvQixJQUFJLHNCQUFzQixFQUFFO1FBQzVCLEVBQUU7UUFDRixJQUFJLHFCQUFxQixFQUFFLEVBQzNCLElBQUksd0JBQXdCLEVBQUUsRUFDOUIsSUFBSSwyQkFBMkIsRUFBRSxDQUNwQyxDQUFBO0lBQ0wsQ0FBQzs4R0FqQ1Esa0JBQWtCOytHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIOUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhSZWdleFZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9yZWdleC1ydWxlJztcbmltcG9ydCB7IEFYUmVxdWlyZWRWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvcmVxdWlyZWQtcnVsZSc7XG5pbXBvcnQgeyBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL2NhbGxiYWNrLXJ1bGUnO1xuaW1wb3J0IHsgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvbWlubGVuZ3RoLXJ1bGUnO1xuaW1wb3J0IHsgQVhNYXhMZW5ndGhWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvbWF4bGVuZ3RoLXJ1bGUnO1xuaW1wb3J0IHsgQVhMZW5ndGhWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvbGVuZ3RoLXJ1bGUnO1xuaW1wb3J0IHsgQVhFcXVhbFZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9lcXVhbC1ydWxlJztcbmltcG9ydCB7IEFYTGVzc1RoYW5WYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvbGVzcy10aGFuLXJ1bGUnO1xuaW1wb3J0IHsgQVhHcmVhdGVyVGhhblZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9ncmVhdGVyLXRoYW4nO1xuXG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYVmFsaWRhdGlvbk1vZHVsZSB7XG5cbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiB7IHZhbGlkYXRvcnM/OiBBWFZhbGlkYXRpb25SdWxlW10gfSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhWYWxpZGF0aW9uTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogQVhWYWxpZGF0aW9uTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChwbHVnaW5SZWdpc3RyeTogQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnPy52YWxpZGF0b3JzPy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUmVnaXN0cnkucmVnaXN0ZXIoLi4uY29uZmlnLnZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlXSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocGx1Z2luUmVnaXN0cnk6IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSkge1xuICAgICAgICBwbHVnaW5SZWdpc3RyeS5yZWdpc3RlcihcbiAgICAgICAgICAgIG5ldyBBWFJlZ2V4VmFsaWRhdGlvblJ1bGUoKSxcbiAgICAgICAgICAgIG5ldyBBWFJlcXVpcmVkVmFsaWRhdGlvblJ1bGUoKSxcbiAgICAgICAgICAgIG5ldyBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGUoKSxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBuZXcgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZSgpLFxuICAgICAgICAgICAgbmV3IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGUoKSxcbiAgICAgICAgICAgIG5ldyBBWExlbmd0aFZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgbmV3IEFYRXF1YWxWYWxpZGF0aW9uUnVsZSgpLFxuICAgICAgICAgICAgbmV3IEFYTGVzc1RoYW5WYWxpZGF0aW9uUnVsZSgpLFxuICAgICAgICAgICAgbmV3IEFYR3JlYXRlclRoYW5WYWxpZGF0aW9uUnVsZSgpXG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
@@ -1,15 +1,20 @@
1
- import { Injectable } from "@angular/core";
1
+ import { Injectable, inject } from "@angular/core";
2
2
  import { AXTranslator } from "@acorex/core/translation";
3
+ import { AX_VALIDATION_CONFIG } from "./validation.config";
3
4
  import * as i0 from "@angular/core";
4
5
  export class AXValidationRegistryService {
5
6
  constructor() {
6
7
  this.plugins = [];
8
+ this.configs = inject(AX_VALIDATION_CONFIG);
9
+ }
10
+ get customRules() {
11
+ return this.configs.rules;
7
12
  }
8
13
  register(...plugin) {
9
14
  this.plugins.push(...plugin.filter(p => !this.plugins.some(c => c.name == p.name)));
10
15
  }
11
- get validators() {
12
- return this.plugins;
16
+ get(ruleName) {
17
+ return this.plugins.find((c) => c.name == ruleName);
13
18
  }
14
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
20
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, providedIn: 'root' }); }
@@ -25,16 +30,21 @@ export class AXValidationService {
25
30
  this.pluginRegistry = pluginRegistry;
26
31
  }
27
32
  validate(ruleName, value, options) {
28
- const validator = this.pluginRegistry.validators.find((c) => c.name == ruleName);
29
- if (!validator) {
33
+ const customRule = this.pluginRegistry.customRules[ruleName];
34
+ const validator = this.pluginRegistry.get(ruleName);
35
+ if (!validator && !customRule) {
30
36
  return {
31
- name: ruleName,
37
+ rule: ruleName,
32
38
  result: false,
33
39
  message: AXTranslator.get('validation.messages.invalid-rull-name', { name: ruleName }),
34
40
  value
35
41
  };
36
42
  }
37
- return validator.validate(value, options);
43
+ if (validator)
44
+ return validator.validate(value, options);
45
+ else {
46
+ return this.validate(customRule.rule, value, customRule.options);
47
+ }
38
48
  }
39
49
  ruleFor(value) {
40
50
  return new AXValidationRuleChain(this, value);
@@ -68,4 +78,4 @@ class AXValidationRuleChain {
68
78
  return this.validationSummary;
69
79
  }
70
80
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBS3hELE1BQU0sT0FBTywyQkFBMkI7SUFIeEM7UUFJWSxZQUFPLEdBQXVCLEVBQUUsQ0FBQztLQVM1QztJQVBHLFFBQVEsQ0FBQyxHQUFHLE1BQTBCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOzhHQVRRLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRnhCLE1BQU07OzJGQUVULDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7O0FBY0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixZQUNZLGNBQTJDO1FBQTNDLG1CQUFjLEdBQWQsY0FBYyxDQUE2QjtJQUNuRCxDQUFDO0lBRUwsUUFBUSxDQUFDLFFBQWdCLEVBQUUsS0FBYyxFQUFFLE9BQWlDO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osT0FBTztnQkFDSCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDdEYsS0FBSzthQUNSLENBQUM7U0FDTDtRQUNELE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUFjO1FBQ2xCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FyQlEsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FETixNQUFNOzsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUF5QmxDLE1BQU0scUJBQXFCO0lBSXZCLFlBQW9CLGlCQUFzQyxFQUFVLFlBQXFCO1FBQXJFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBUztRQUhqRixVQUFLLEdBQTBELEVBQUUsQ0FBQztRQUNsRSxzQkFBaUIsR0FBd0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVnQixDQUFDO0lBRTlGLE9BQU8sQ0FBNkMsSUFBTyxFQUFFLE9BQXVDO1FBQ2hHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUN6QztTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlLCBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQsIEFYVmFsaWRhdGlvblN1bW1hcnkgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tIFwiQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHBsdWdpbnM6IEFYVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xuXG4gICAgcmVnaXN0ZXIoLi4ucGx1Z2luOiBBWFZhbGlkYXRpb25SdWxlW10pIHtcbiAgICAgICAgdGhpcy5wbHVnaW5zLnB1c2goLi4ucGx1Z2luLmZpbHRlcihwID0+ICF0aGlzLnBsdWdpbnMuc29tZShjID0+IGMubmFtZSA9PSBwLm5hbWUpKSk7XG4gICAgfVxuXG4gICAgZ2V0IHZhbGlkYXRvcnMoKTogQVhWYWxpZGF0aW9uUnVsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2lucztcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcGx1Z2luUmVnaXN0cnk6IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZVxuICAgICkgeyB9XG5cbiAgICB2YWxpZGF0ZShydWxlTmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB8IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLnBsdWdpblJlZ2lzdHJ5LnZhbGlkYXRvcnMuZmluZCgoYykgPT4gYy5uYW1lID09IHJ1bGVOYW1lKTtcbiAgICAgICAgaWYgKCF2YWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogcnVsZU5hbWUsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBBWFRyYW5zbGF0b3IuZ2V0KCd2YWxpZGF0aW9uLm1lc3NhZ2VzLmludmFsaWQtcnVsbC1uYW1lJywgeyBuYW1lOiBydWxlTmFtZSB9KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdG9yLnZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG5cblxuICAgIHJ1bGVGb3IodmFsdWU6IHVua25vd24pOiBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgICAgICByZXR1cm4gbmV3IEFYVmFsaWRhdGlvblJ1bGVDaGFpbih0aGlzLCB2YWx1ZSk7XG4gICAgfVxufVxuXG5jbGFzcyBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgIHByaXZhdGUgcnVsZXM6IHsgbmFtZTogc3RyaW5nLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMgfVtdID0gW107XG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU3VtbWFyeTogQVhWYWxpZGF0aW9uU3VtbWFyeSA9IHsgcmVzdWx0OiB0cnVlLCBydWxlczogW10gfTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IEFYVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgaW5pdGlhbFZhbHVlOiB1bmtub3duKSB7IH1cblxuICAgIGFkZFJ1bGU8SyBleHRlbmRzIGtleW9mIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwPihuYW1lOiBLLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXBbS10pOiBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgICAgICB0aGlzLnJ1bGVzLnB1c2goeyBuYW1lLCBvcHRpb25zIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBhc3luYyB2YWxpZGF0ZSgpOiBQcm9taXNlPEFYVmFsaWRhdGlvblN1bW1hcnk+IHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMucnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGUocnVsZS5uYW1lLCB0aGlzLmluaXRpYWxWYWx1ZSwgcnVsZS5vcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblN1bW1hcnkucnVsZXMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeS5yZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uU3VtbWFyeTtcbiAgICB9XG59XG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBMkIsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFLcEYsTUFBTSxPQUFPLDJCQUEyQjtJQUh4QztRQUlZLFlBQU8sR0FBdUIsRUFBRSxDQUFDO1FBRWpDLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQWFsRDtJQVhHLElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBRyxNQUEwQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxHQUFHLENBQUMsUUFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQTtJQUN2RCxDQUFDOzhHQWZRLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRnhCLE1BQU07OzJGQUVULDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7O0FBb0JELE1BQU0sT0FBTyxtQkFBbUI7SUFDNUIsWUFDWSxjQUEyQztRQUEzQyxtQkFBYyxHQUFkLGNBQWMsQ0FBNkI7SUFFbkQsQ0FBQztJQUVMLFFBQVEsQ0FBQyxRQUFnQixFQUFFLEtBQWMsRUFBRSxPQUFpQztRQUN4RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzNCLE9BQU87Z0JBQ0gsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3RGLEtBQUs7YUFDUixDQUFDO1NBQ0w7UUFDRCxJQUFJLFNBQVM7WUFDVCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3pDO1lBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwRTtJQUVMLENBQUM7SUFHRCxPQUFPLENBQUMsS0FBYztRQUNsQixPQUFPLElBQUkscUJBQXFCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7OEdBN0JRLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7MkZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBaUNsQyxNQUFNLHFCQUFxQjtJQUl2QixZQUFvQixpQkFBc0MsRUFBVSxZQUFxQjtRQUFyRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQVM7UUFIakYsVUFBSyxHQUEwRCxFQUFFLENBQUM7UUFDbEUsc0JBQWlCLEdBQXdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFZ0IsQ0FBQztJQUU5RixPQUFPLENBQTZDLElBQU8sRUFBRSxPQUF1QztRQUNoRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7YUFDekM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlLCBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQsIEFYVmFsaWRhdGlvblN1bW1hcnkgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tIFwiQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uXCI7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Db25maWdSdWxlcywgQVhfVkFMSURBVElPTl9DT05GSUcgfSBmcm9tIFwiLi92YWxpZGF0aW9uLmNvbmZpZ1wiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSB7XG4gICAgcHJpdmF0ZSBwbHVnaW5zOiBBWFZhbGlkYXRpb25SdWxlW10gPSBbXTtcblxuICAgIHByaXZhdGUgY29uZmlncyA9IGluamVjdChBWF9WQUxJREFUSU9OX0NPTkZJRyk7XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbVJ1bGVzKCk6IEFYVmFsaWRhdGlvbkNvbmZpZ1J1bGVzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlncy5ydWxlcztcbiAgICB9XG5cbiAgICByZWdpc3RlciguLi5wbHVnaW46IEFYVmFsaWRhdGlvblJ1bGVbXSkge1xuICAgICAgICB0aGlzLnBsdWdpbnMucHVzaCguLi5wbHVnaW4uZmlsdGVyKHAgPT4gIXRoaXMucGx1Z2lucy5zb21lKGMgPT4gYy5uYW1lID09IHAubmFtZSkpKTtcbiAgICB9XG5cbiAgICBnZXQocnVsZU5hbWU6IHN0cmluZyk6IEFYVmFsaWRhdGlvblJ1bGUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW5zLmZpbmQoKGMpID0+IGMubmFtZSA9PSBydWxlTmFtZSlcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcGx1Z2luUmVnaXN0cnk6IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSxcblxuICAgICkgeyB9XG5cbiAgICB2YWxpZGF0ZShydWxlTmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB8IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBjdXN0b21SdWxlID0gdGhpcy5wbHVnaW5SZWdpc3RyeS5jdXN0b21SdWxlc1tydWxlTmFtZV07XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IHRoaXMucGx1Z2luUmVnaXN0cnkuZ2V0KHJ1bGVOYW1lKTtcbiAgICAgICAgaWYgKCF2YWxpZGF0b3IgJiYgIWN1c3RvbVJ1bGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcnVsZTogcnVsZU5hbWUsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBBWFRyYW5zbGF0b3IuZ2V0KCd2YWxpZGF0aW9uLm1lc3NhZ2VzLmludmFsaWQtcnVsbC1uYW1lJywgeyBuYW1lOiBydWxlTmFtZSB9KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsaWRhdG9yKVxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRvci52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShjdXN0b21SdWxlLnJ1bGUsIHZhbHVlLCBjdXN0b21SdWxlLm9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIHJ1bGVGb3IodmFsdWU6IHVua25vd24pOiBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgICAgICByZXR1cm4gbmV3IEFYVmFsaWRhdGlvblJ1bGVDaGFpbih0aGlzLCB2YWx1ZSk7XG4gICAgfVxufVxuXG5jbGFzcyBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgIHByaXZhdGUgcnVsZXM6IHsgbmFtZTogc3RyaW5nLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMgfVtdID0gW107XG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU3VtbWFyeTogQVhWYWxpZGF0aW9uU3VtbWFyeSA9IHsgcmVzdWx0OiB0cnVlLCBydWxlczogW10gfTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IEFYVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgaW5pdGlhbFZhbHVlOiB1bmtub3duKSB7IH1cblxuICAgIGFkZFJ1bGU8SyBleHRlbmRzIGtleW9mIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwPihuYW1lOiBLLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXBbS10pOiBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgICAgICB0aGlzLnJ1bGVzLnB1c2goeyBuYW1lLCBvcHRpb25zIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBhc3luYyB2YWxpZGF0ZSgpOiBQcm9taXNlPEFYVmFsaWRhdGlvblN1bW1hcnk+IHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMucnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGUocnVsZS5uYW1lLCB0aGlzLmluaXRpYWxWYWx1ZSwgcnVsZS5vcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblN1bW1hcnkucnVsZXMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeS5yZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uU3VtbWFyeTtcbiAgICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../libs/core/utils/src/lib/auto-unsubscribe.ts","../../../../libs/core/utils/src/lib/color-util.ts","../../../../libs/core/utils/src/lib/drawing-util.ts","../../../../libs/core/utils/src/lib/html-util.ts","../../../../libs/core/utils/src/lib/string-util.ts","../../../../libs/core/utils/src/acorex-core-utils.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nexport function AXAutoUnsubscriber() {\n return function (constructor) {\n const orig = constructor.prototype.ngOnDestroy;\n constructor.prototype.ngOnDestroy = function () {\n for (const prop in this) {\n const property = this[prop];\n if (typeof property.subscribe === 'function') {\n property.unsubscribe();\n }\n }\n orig.apply();\n };\n };\n}\n\n@Injectable()\nexport class AXUnsubscriber implements OnDestroy {\n private readonly _destroy$ = new Subject<void>();\n\n public readonly takeUntilDestroy = <T>(origin: Observable<T>): Observable<T> =>\n origin.pipe(takeUntil(this._destroy$));\n\n public unsubscribe(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe();\n }\n}\n","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva' | null;\n\nimport tinycolor, { ColorInput } from 'tinycolor2';\nimport tinygradient, { Instance } from 'tinygradient-es';\n\nexport type AXColorFormat = ColorInput;\n\nexport class AXColorUtil {\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgb();\n case 'hsla':\n return _color.toHsl();\n case 'hsva':\n return _color.toHsv();\n default:\n return _color.toHex();\n }\n }\n\n static toString(color: AXColorFormat, mode: AXColorMode = null): string {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgbString();\n case 'hsla':\n return _color.toHslString();\n case 'hsva':\n return _color.toHsvString();\n\n case 'hex': {\n const rgba = _color.toRgb();\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\n }\n default: {\n if (typeof color == 'string') {\n if (color.toLowerCase().startsWith('#')) return this.toString(color, 'hex');\n else return this.toString(color, 'rgba');\n } else {\n return this.toString(color, 'rgba');\n }\n }\n }\n }\n\n static isValid(color: AXColorFormat): boolean {\n const _color = tinycolor(color);\n return _color.isValid();\n }\n\n static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string {\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\n }\n\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\n const rgb1 = tinycolor(color1).toRgb();\n const rgb2 = tinycolor(color2).toRgb();\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');\n }\n\n static contrastToWhite(color: AXColorFormat): number {\n return tinycolor.readability('#fff', color);\n }\n\n static lighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).lighten(percentage);\n }\n\n static darken(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).darken(percentage);\n }\n\n static brighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).brighten(percentage);\n }\n\n static saturate(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).saturate(percentage);\n }\n\n static desaturate(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\n return tinycolor.equals(color1, color2);\n }\n\n static gradient(values: unknown[] | { color: unknown; pos: number }[]): Instance {\n return tinygradient([...values]);\n }\n\n static getLuminance(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static xyToRgb(vX, vY): string {\n vY = vY || 0.00000000001;\n const Y = 1;\n const X = (Y / vY) * vX;\n const Z = (Y / vY) * (1 - vX - vY);\n\n // Convert to RGB using Wide RGB D65 conversion.\n let rgb = [\n X * 1.656492 - Y * 0.354851 - Z * 0.255038,\n -X * 0.707196 + Y * 1.655397 + Z * 0.036152,\n X * 0.051713 - Y * 0.121364 + Z * 1.01153,\n ];\n\n // Apply reverse gamma correction.\n rgb = rgb.map((x) => (x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055));\n\n // Bring all negative components to zero.\n rgb = rgb.map((x) => Math.max(0, x));\n\n // If one component is greater than 1, weight components by that value.\n const max = Math.max(...rgb);\n if (max > 1) {\n rgb = rgb.map((x) => x / max);\n }\n\n rgb = rgb.map((x) => Math.round(x * 255));\n\n return 'rgb(' + rgb.join(',') + ')';\n }\n}\n","export interface AXPoint {\n x: number;\n y: number;\n}\n\nexport interface AXBoundingClientRect {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n bottom?: number;\n right?: number;\n}\n// @dynamic\nexport class AXDrawingUtil {\n static collision(a: HTMLElement, b: HTMLElement): boolean {\n const ac = a.getBoundingClientRect();\n const bc = b.getBoundingClientRect();\n\n if (\n ac.left < bc.left + bc.width &&\n ac.left + ac.width > bc.left &&\n ac.top < bc.top + bc.height &&\n ac.top + ac.height > bc.top\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\n const elBound = element.getBoundingClientRect();\n return AXDrawingUtil.isInRecPoint(pos, {\n left: elBound.x,\n width: elBound.width,\n top: elBound.y,\n height: elBound.height,\n });\n }\n\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\n return (\n pos.x >= rec.left && pos.x <= rec.left + rec.width && pos.y >= rec.top && pos.y <= rec.top + rec.height\n );\n }\n\n static convertRemToPixels(rem: number): number {\n return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\n }\n}\n","// @dynamic\nexport class AXHtmlUtil {\n static focusElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map(\n (c) => c + ':not([tabindex=\"-1\"])',\n );\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.focus();\n return focusable;\n }\n return null;\n }\n static blurElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map(\n (c) => c + ':not([tabindex=\"-1\"])',\n );\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.blur();\n return focusable;\n }\n return null;\n }\n\n static hasFocus(element: HTMLElement) {\n return element.matches(':focus-within') || element.matches(':focus');\n }\n}\n","// @dynamic\nexport class AXStringUtil {\n static getWordBoundsAtPosition(str: string, position: number): { start: number; end: number } {\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\n let start = position - 1;\n\n while (start >= 0 && !isSpace(str[start])) {\n start -= 1;\n }\n start = Math.max(0, start + 1);\n const leftSideString: any = str.slice(start).match(/[a-zA-Z0-9]+/i);\n start += leftSideString.index;\n let end = start + leftSideString[0].length;\n return {\n start,\n end,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../libs/core/utils/src/lib/auto-unsubscribe.ts","../../../../libs/core/utils/src/lib/color-util.ts","../../../../libs/core/utils/src/lib/drawing-util.ts","../../../../libs/core/utils/src/lib/html-util.ts","../../../../libs/core/utils/src/lib/string-util.ts","../../../../libs/core/utils/src/acorex-core-utils.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nexport function AXAutoUnsubscriber() {\n return function (constructor) {\n const orig = constructor.prototype.ngOnDestroy;\n constructor.prototype.ngOnDestroy = function () {\n for (const prop in this) {\n const property = this[prop];\n if (typeof property.subscribe === 'function') {\n property.unsubscribe();\n }\n }\n orig.apply();\n };\n };\n}\n\n@Injectable()\nexport class AXUnsubscriber implements OnDestroy {\n private readonly _destroy$ = new Subject<void>();\n\n public readonly takeUntilDestroy = <T>(origin: Observable<T> | Subject<T>): Observable<T> | Subject<T> =>\n origin.pipe(takeUntil(this._destroy$));\n\n public unsubscribe(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe();\n }\n}\n","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva' | null;\n\nimport tinycolor, { ColorInput } from 'tinycolor2';\nimport tinygradient, { Instance } from 'tinygradient-es';\n\nexport type AXColorFormat = ColorInput;\n\nexport class AXColorUtil {\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgb();\n case 'hsla':\n return _color.toHsl();\n case 'hsva':\n return _color.toHsv();\n default:\n return _color.toHex();\n }\n }\n\n static toString(color: AXColorFormat, mode: AXColorMode = null): string {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgbString();\n case 'hsla':\n return _color.toHslString();\n case 'hsva':\n return _color.toHsvString();\n\n case 'hex': {\n const rgba = _color.toRgb();\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\n }\n default: {\n if (typeof color == 'string') {\n if (color.toLowerCase().startsWith('#')) return this.toString(color, 'hex');\n else return this.toString(color, 'rgba');\n } else {\n return this.toString(color, 'rgba');\n }\n }\n }\n }\n\n static isValid(color: AXColorFormat): boolean {\n const _color = tinycolor(color);\n return _color.isValid();\n }\n\n static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string {\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\n }\n\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\n const rgb1 = tinycolor(color1).toRgb();\n const rgb2 = tinycolor(color2).toRgb();\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');\n }\n\n static contrastToWhite(color: AXColorFormat): number {\n return tinycolor.readability('#fff', color);\n }\n\n static lighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).lighten(percentage);\n }\n\n static darken(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).darken(percentage);\n }\n\n static brighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).brighten(percentage);\n }\n\n static saturate(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).saturate(percentage);\n }\n\n static desaturate(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\n return tinycolor.equals(color1, color2);\n }\n\n static gradient(values: unknown[] | { color: unknown; pos: number }[]): Instance {\n return tinygradient([...values]);\n }\n\n static getLuminance(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static xyToRgb(vX, vY): string {\n vY = vY || 0.00000000001;\n const Y = 1;\n const X = (Y / vY) * vX;\n const Z = (Y / vY) * (1 - vX - vY);\n\n // Convert to RGB using Wide RGB D65 conversion.\n let rgb = [\n X * 1.656492 - Y * 0.354851 - Z * 0.255038,\n -X * 0.707196 + Y * 1.655397 + Z * 0.036152,\n X * 0.051713 - Y * 0.121364 + Z * 1.01153,\n ];\n\n // Apply reverse gamma correction.\n rgb = rgb.map((x) => (x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055));\n\n // Bring all negative components to zero.\n rgb = rgb.map((x) => Math.max(0, x));\n\n // If one component is greater than 1, weight components by that value.\n const max = Math.max(...rgb);\n if (max > 1) {\n rgb = rgb.map((x) => x / max);\n }\n\n rgb = rgb.map((x) => Math.round(x * 255));\n\n return 'rgb(' + rgb.join(',') + ')';\n }\n}\n","export interface AXPoint {\n x: number;\n y: number;\n}\n\nexport interface AXBoundingClientRect {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n bottom?: number;\n right?: number;\n}\n// @dynamic\nexport class AXDrawingUtil {\n static collision(a: HTMLElement, b: HTMLElement): boolean {\n const ac = a.getBoundingClientRect();\n const bc = b.getBoundingClientRect();\n\n if (\n ac.left < bc.left + bc.width &&\n ac.left + ac.width > bc.left &&\n ac.top < bc.top + bc.height &&\n ac.top + ac.height > bc.top\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\n const elBound = element.getBoundingClientRect();\n return AXDrawingUtil.isInRecPoint(pos, {\n left: elBound.x,\n width: elBound.width,\n top: elBound.y,\n height: elBound.height,\n });\n }\n\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\n return (\n pos.x >= rec.left && pos.x <= rec.left + rec.width && pos.y >= rec.top && pos.y <= rec.top + rec.height\n );\n }\n\n static convertRemToPixels(rem: number): number {\n return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\n }\n}\n","// @dynamic\nexport class AXHtmlUtil {\n static focusElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map(\n (c) => c + ':not([tabindex=\"-1\"])',\n );\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.focus();\n return focusable;\n }\n return null;\n }\n static blurElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map(\n (c) => c + ':not([tabindex=\"-1\"])',\n );\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.blur();\n return focusable;\n }\n return null;\n }\n\n static hasFocus(element: HTMLElement) {\n return element.matches(':focus-within') || element.matches(':focus');\n }\n}\n","// @dynamic\nexport class AXStringUtil {\n static getWordBoundsAtPosition(str: string, position: number): { start: number; end: number } {\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\n let start = position - 1;\n\n while (start >= 0 && !isSpace(str[start])) {\n start -= 1;\n }\n start = Math.max(0, start + 1);\n const leftSideString: any = str.slice(start).match(/[a-zA-Z0-9]+/i);\n start += leftSideString.index;\n let end = start + leftSideString[0].length;\n return {\n start,\n end,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { isNull, isUndefined, isString, isEmpty, isNumber, isArray, find } from 'lodash-es';
2
- import * as i0 from '@angular/core';
3
- import { Injectable, APP_INITIALIZER, NgModule } from '@angular/core';
1
+ import { isString, isEmpty, isNull, isUndefined, isNumber, isArray, find, isEqual } from 'lodash-es';
4
2
  import { AXTranslator } from '@acorex/core/translation';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, Injectable, APP_INITIALIZER, NgModule } from '@angular/core';
5
5
 
6
6
  class AXRegexValidationRule {
7
7
  get name() {
@@ -10,11 +10,27 @@ class AXRegexValidationRule {
10
10
  validate(value, options) {
11
11
  // Convert string pattern to RegExp if necessary
12
12
  const regexPattern = typeof options.pattern === 'string' ? new RegExp(options.pattern) : options.pattern;
13
+ if (!value || (isString(value) && isEmpty(value.trim()))) {
14
+ return {
15
+ rule: this.name,
16
+ result: true,
17
+ message: null,
18
+ value: value
19
+ };
20
+ }
21
+ else if (!isString(value)) {
22
+ return {
23
+ rule: this.name,
24
+ result: false,
25
+ message: `${value} is not string value.`,
26
+ value: value
27
+ };
28
+ }
13
29
  const isValid = regexPattern.test(value);
14
30
  return {
15
- name: this.name,
31
+ rule: this.name,
16
32
  result: isValid,
17
- message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,
33
+ message: isValid ? '' : options?.message ?? `The value does not match the pattern ${regexPattern}.`,
18
34
  value: value
19
35
  };
20
36
  }
@@ -24,7 +40,7 @@ class AXRequiredValidationRule {
24
40
  get name() {
25
41
  return 'required';
26
42
  }
27
- validate(value) {
43
+ validate(value, options) {
28
44
  const rules = [
29
45
  { test: val => isNull(val) || isUndefined(val) },
30
46
  { test: val => isString(val) && isEmpty(val.trim()) },
@@ -33,9 +49,9 @@ class AXRequiredValidationRule {
33
49
  ];
34
50
  const failedRule = find(rules, rule => rule.test(value));
35
51
  const isValid = !failedRule;
36
- const message = failedRule ? "This filed is required" : null;
52
+ const message = failedRule ? options?.message ?? AXTranslator.get("validation.messages.required", { name: options?.['title'] ?? options?.['name'] }) : null;
37
53
  return {
38
- name: this.name,
54
+ rule: this.name,
39
55
  result: isValid,
40
56
  message: message,
41
57
  value
@@ -48,11 +64,11 @@ class AXCallbackValidationRule {
48
64
  return 'callback';
49
65
  }
50
66
  validate(value, options) {
51
- const validationResult = options?.validate(value) || { result: false, message: "Invalid callback function" };
67
+ const validationResult = options?.validate(value, options) || { result: false, message: "Invalid callback function" };
52
68
  const createResult = (result) => ({
53
- name: this.name,
69
+ rule: this.name,
54
70
  result: result.result,
55
- message: result.message || '',
71
+ message: result.message ?? options?.message ?? '',
56
72
  value: value
57
73
  });
58
74
  if (validationResult instanceof Promise) {
@@ -67,26 +83,27 @@ class AXMinLengthValidationRule {
67
83
  return 'minLength';
68
84
  }
69
85
  validate(value, options) {
70
- const isValid = value?.length >= options.value;
86
+ const isValid = isEmpty(value) ? true : (value?.length >= options.value);
71
87
  return {
72
- name: this.name,
88
+ rule: this.name,
73
89
  result: isValid,
74
- message: isValid ? '' : `The value must be at least ${options.value} characters long.`,
90
+ message: isValid ? '' : options?.message ?? `The value must be at least ${options.value} characters long.`,
75
91
  value: value
76
92
  };
77
93
  }
78
94
  }
79
95
 
96
+ // ax-max-length-validation-rule.ts
80
97
  class AXMaxLengthValidationRule {
81
98
  get name() {
82
99
  return 'maxLength';
83
100
  }
84
101
  validate(value, options) {
85
- const isValid = value?.length <= options.value;
102
+ const isValid = isEmpty(value) ? true : (value?.length <= options.value);
86
103
  return {
87
- name: this.name,
104
+ rule: this.name,
88
105
  result: isValid,
89
- message: isValid ? '' : `The value must not exceed ${options.value} characters.`,
106
+ message: isValid ? '' : options?.message ?? `The value must not exceed ${options.value} characters.`,
90
107
  value: value
91
108
  };
92
109
  }
@@ -99,23 +116,111 @@ class AXLengthValidationRule {
99
116
  validate(value, options) {
100
117
  const isValid = value?.length >= options.min && value?.length <= options.max;
101
118
  return {
102
- name: this.name,
119
+ rule: this.name,
120
+ result: isValid,
121
+ message: isValid ? null : options?.message ?? `The value must be between ${options.min} and ${options.max} chars`,
122
+ value: value
123
+ };
124
+ }
125
+ }
126
+
127
+ // ax-equal-validation-rule.ts
128
+ class AXEqualValidationRule {
129
+ get name() {
130
+ return 'equal';
131
+ }
132
+ validate(value, options) {
133
+ const isValueEqual = isEqual(value, options.value);
134
+ const isValid = options.not ? !isValueEqual : isValueEqual;
135
+ const defaultMessage = `The value must ${options.not ? 'not ' : ''}be equal to ${options.value}.`;
136
+ return {
137
+ rule: this.name,
138
+ result: isValid,
139
+ message: isValid ? '' : options?.message ?? defaultMessage,
140
+ value: value
141
+ };
142
+ }
143
+ }
144
+
145
+ // ax-less-than-validation-rule.ts
146
+ class AXLessThanValidationRule {
147
+ get name() {
148
+ return 'lessThan';
149
+ }
150
+ validate(value, options) {
151
+ const isValid = (isNull(value) || isUndefined(value)) ? true : (options.inclusive ? value <= options.value : value < options.value);
152
+ const baseMessage = `The value must be ${options.inclusive ? 'less than or equal to' : 'less than'} ${options.value}.`;
153
+ return {
154
+ rule: this.name,
103
155
  result: isValid,
104
- message: isValid ? null : `The value must be between ${options.min} and ${options.max} chars`,
156
+ message: isValid ? '' : options?.message ?? baseMessage,
105
157
  value: value
106
158
  };
107
159
  }
108
160
  }
109
161
 
162
+ // ax-greater-than-validation-rule.ts
163
+ class AXGreaterThanValidationRule {
164
+ get name() {
165
+ return 'greaterThan';
166
+ }
167
+ validate(value, options) {
168
+ const isValid = (isNull(value) || isUndefined(value)) ? true : (options.inclusive ? value >= options.value : value > options.value);
169
+ const baseMessage = `The value must be ${options.inclusive ? 'greater than or equal to' : 'greater than'} ${options.value}.`;
170
+ return {
171
+ rule: this.name,
172
+ result: isValid,
173
+ message: isValid ? '' : options?.message ?? baseMessage,
174
+ value: value
175
+ };
176
+ }
177
+ }
178
+
179
+ const AX_VALIDATION_CONFIG = new InjectionToken('AX_VALIDATION_CONFIG', {
180
+ providedIn: 'root',
181
+ factory: () => {
182
+ return AXValidationDefaultConfig;
183
+ },
184
+ });
185
+ const AXValidationDefaultConfig = {
186
+ rules: {
187
+ email: {
188
+ rule: 'regex',
189
+ options: {
190
+ pattern: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
191
+ message: AXTranslator.get('validation.messages.email'),
192
+ }
193
+ },
194
+ phone: {
195
+ rule: 'regex',
196
+ options: {
197
+ pattern: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/,
198
+ message: AXTranslator.get('validation.messages.phone'),
199
+ }
200
+ },
201
+ },
202
+ };
203
+ function validationConfig(config = {}) {
204
+ const result = {
205
+ ...AXValidationDefaultConfig,
206
+ ...config,
207
+ };
208
+ return result;
209
+ }
210
+
110
211
  class AXValidationRegistryService {
111
212
  constructor() {
112
213
  this.plugins = [];
214
+ this.configs = inject(AX_VALIDATION_CONFIG);
215
+ }
216
+ get customRules() {
217
+ return this.configs.rules;
113
218
  }
114
219
  register(...plugin) {
115
220
  this.plugins.push(...plugin.filter(p => !this.plugins.some(c => c.name == p.name)));
116
221
  }
117
- get validators() {
118
- return this.plugins;
222
+ get(ruleName) {
223
+ return this.plugins.find((c) => c.name == ruleName);
119
224
  }
120
225
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
121
226
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, providedIn: 'root' }); }
@@ -131,16 +236,21 @@ class AXValidationService {
131
236
  this.pluginRegistry = pluginRegistry;
132
237
  }
133
238
  validate(ruleName, value, options) {
134
- const validator = this.pluginRegistry.validators.find((c) => c.name == ruleName);
135
- if (!validator) {
239
+ const customRule = this.pluginRegistry.customRules[ruleName];
240
+ const validator = this.pluginRegistry.get(ruleName);
241
+ if (!validator && !customRule) {
136
242
  return {
137
- name: ruleName,
243
+ rule: ruleName,
138
244
  result: false,
139
245
  message: AXTranslator.get('validation.messages.invalid-rull-name', { name: ruleName }),
140
246
  value
141
247
  };
142
248
  }
143
- return validator.validate(value, options);
249
+ if (validator)
250
+ return validator.validate(value, options);
251
+ else {
252
+ return this.validate(customRule.rule, value, customRule.options);
253
+ }
144
254
  }
145
255
  ruleFor(value) {
146
256
  return new AXValidationRuleChain(this, value);
@@ -193,7 +303,11 @@ class AXValidationModule {
193
303
  };
194
304
  }
195
305
  constructor(pluginRegistry) {
196
- pluginRegistry.register(new AXRegexValidationRule(), new AXRequiredValidationRule(), new AXCallbackValidationRule(), new AXMinLengthValidationRule(), new AXMaxLengthValidationRule(), new AXLengthValidationRule());
306
+ pluginRegistry.register(new AXRegexValidationRule(), new AXRequiredValidationRule(), new AXCallbackValidationRule(),
307
+ //
308
+ new AXMinLengthValidationRule(), new AXMaxLengthValidationRule(), new AXLengthValidationRule(),
309
+ //
310
+ new AXEqualValidationRule(), new AXLessThanValidationRule(), new AXGreaterThanValidationRule());
197
311
  }
198
312
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule, deps: [{ token: AXValidationRegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
199
313
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule }); }
@@ -210,5 +324,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
210
324
  * Generated bundle index. Do not edit.
211
325
  */
212
326
 
213
- export { AXCallbackValidationRule, AXLengthValidationRule, AXMaxLengthValidationRule, AXMinLengthValidationRule, AXRegexValidationRule, AXRequiredValidationRule, AXValidationModule, AXValidationRegistryService, AXValidationService };
327
+ export { AXCallbackValidationRule, AXEqualValidationRule, AXGreaterThanValidationRule, AXLengthValidationRule, AXLessThanValidationRule, AXMaxLengthValidationRule, AXMinLengthValidationRule, AXRegexValidationRule, AXRequiredValidationRule, AXValidationModule, AXValidationRegistryService, AXValidationService };
214
328
  //# sourceMappingURL=acorex-core-validation.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-validation.mjs","sources":["../../../../libs/core/validation/src/lib/rules/regex-rule.ts","../../../../libs/core/validation/src/lib/rules/required-rule.ts","../../../../libs/core/validation/src/lib/rules/callback-rule.ts","../../../../libs/core/validation/src/lib/rules/minlength-rule.ts","../../../../libs/core/validation/src/lib/rules/maxlength-rule.ts","../../../../libs/core/validation/src/lib/rules/length-rule.ts","../../../../libs/core/validation/src/lib/validation.service.ts","../../../../libs/core/validation/src/lib/validation.module.ts","../../../../libs/core/validation/src/acorex-core-validation.ts"],"sourcesContent":["import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\n\nexport interface AXRegexValidationRuleOptions extends AXValidationRuleOptions {\n pattern: string | RegExp;\n}\n\n// Augment the AXValidationRuleOptionsMap\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'regex': AXRegexValidationRuleOptions;\n }\n}\n\nexport class AXRegexValidationRule implements AXValidationRule {\n\n get name(): string {\n return 'regex';\n }\n\n validate(value: string, options: AXRegexValidationRuleOptions): AXValidationRuleResult {\n // Convert string pattern to RegExp if necessary\n const regexPattern = typeof options.pattern === 'string' ? new RegExp(options.pattern) : options.pattern;\n\n const isValid = regexPattern.test(value);\n return {\n name: this.name,\n result: isValid,\n message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,\n value: value\n };\n }\n\n}","import { find, isArray, isEmpty, isNull, isNumber, isString, isUndefined } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\n\nexport interface AXRequiredValidationRuleOptions extends AXValidationRuleOptions {\n}\n\n// Augment the AXValidationRuleOptionsMap\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'required': AXRequiredValidationRuleOptions;\n }\n}\n\nexport class AXRequiredValidationRule implements AXValidationRule {\n\n get name(): string {\n return 'required';\n }\n\n validate(value?: unknown): AXValidationRuleResult {\n const rules = [\n { test: val => isNull(val) || isUndefined(val) },\n { test: val => isString(val) && isEmpty(val.trim()) },\n { test: val => isNumber(val) && isNaN(val) },\n { test: val => isArray(val) && isEmpty(val) }\n ];\n\n const failedRule = find(rules, rule => rule.test(value));\n const isValid = !failedRule;\n const message = failedRule ? \"This filed is required\" : null;\n\n return {\n name: this.name,\n result: isValid,\n message: message,\n value\n };\n }\n}","import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport type AXCallbackValidation<T> = (value: T) => Promise<{ result: boolean, message?: string }> | { result: boolean, message?: string };\n\nexport interface AXCallbackValidationRuleOptions<T> extends AXValidationRuleOptions {\n validate: AXCallbackValidation<T>\n}\n\n// Augment the AXValidationRuleOptionsMap\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'callback': AXCallbackValidationRuleOptions<unknown>;\n }\n}\n\nexport class AXCallbackValidationRule<T> implements AXValidationRule {\n\n get name(): string {\n return 'callback';\n }\n\n validate(value: T, options: AXCallbackValidationRuleOptions<T>): AXValidationRuleResult | Promise<AXValidationRuleResult> {\n const validationResult = options?.validate(value) || { result: false, message: \"Invalid callback function\" };\n const createResult = (result: { result: boolean, message?: string }) => ({\n name: this.name,\n result: result.result,\n message: result.message || '',\n value: value\n });\n\n if (validationResult instanceof Promise) {\n return validationResult.then(createResult);\n }\n\n return createResult(validationResult);\n }\n}","import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXMinLengthValidationRuleOptions extends AXValidationRuleOptions {\n value: number;\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'minLength': AXMinLengthValidationRuleOptions;\n }\n}\n\nexport class AXMinLengthValidationRule implements AXValidationRule {\n get name(): string {\n return 'minLength';\n }\n\n validate(value: string, options: AXMinLengthValidationRuleOptions): AXValidationRuleResult {\n const isValid = value?.length >= options.value;\n return {\n name: this.name,\n result: isValid,\n message: isValid ? '' : `The value must be at least ${options.value} characters long.`,\n value: value\n };\n }\n}","// ax-max-length-validation-rule.ts\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXMaxLengthValidationRuleOptions extends AXValidationRuleOptions {\n value: number;\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'maxLength': AXMaxLengthValidationRuleOptions;\n }\n}\n\nexport class AXMaxLengthValidationRule implements AXValidationRule {\n get name(): string {\n return 'maxLength';\n }\n\n validate(value: string, options: AXMaxLengthValidationRuleOptions): AXValidationRuleResult {\n const isValid = value?.length <= options.value;\n return {\n name: this.name,\n result: isValid,\n message: isValid ? '' : `The value must not exceed ${options.value} characters.`,\n value: value\n };\n }\n}\n","// ax-max-length-validation-rule.ts\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXLengthValidationRuleOptions extends AXValidationRuleOptions {\n min: number;\n max: number;\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'length': AXLengthValidationRuleOptions;\n }\n}\n\nexport class AXLengthValidationRule implements AXValidationRule {\n get name(): string {\n return 'length';\n }\n\n validate(value: string, options: AXLengthValidationRuleOptions): AXValidationRuleResult {\n const isValid = value?.length >= options.min && value?.length <= options.max;\n return {\n name: this.name,\n result: isValid,\n message: isValid ? null : `The value must be between ${options.min} and ${options.max} chars`,\n value: value\n };\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleOptionsMap, AXValidationRuleResult, AXValidationSummary } from \"./validation\";\nimport { AXTranslator } from \"@acorex/core/translation\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXValidationRegistryService {\n private plugins: AXValidationRule[] = [];\n\n register(...plugin: AXValidationRule[]) {\n this.plugins.push(...plugin.filter(p => !this.plugins.some(c => c.name == p.name)));\n }\n\n get validators(): AXValidationRule[] {\n return this.plugins;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXValidationService {\n constructor(\n private pluginRegistry: AXValidationRegistryService\n ) { }\n\n validate(ruleName: string, value: unknown, options?: AXValidationRuleOptions): AXValidationRuleResult | Promise<AXValidationRuleResult> {\n const validator = this.pluginRegistry.validators.find((c) => c.name == ruleName);\n if (!validator) {\n return {\n name: ruleName,\n result: false,\n message: AXTranslator.get('validation.messages.invalid-rull-name', { name: ruleName }),\n value\n };\n }\n return validator.validate(value, options);\n }\n\n\n ruleFor(value: unknown): AXValidationRuleChain {\n return new AXValidationRuleChain(this, value);\n }\n}\n\nclass AXValidationRuleChain {\n private rules: { name: string, options?: AXValidationRuleOptions }[] = [];\n private validationSummary: AXValidationSummary = { result: true, rules: [] };\n\n constructor(private validationService: AXValidationService, private initialValue: unknown) { }\n\n addRule<K extends keyof AXValidationRuleOptionsMap>(name: K, options?: AXValidationRuleOptionsMap[K]): AXValidationRuleChain {\n this.rules.push({ name, options });\n return this;\n }\n\n async validate(): Promise<AXValidationSummary> {\n for (const rule of this.rules) {\n const result = await this.validationService.validate(rule.name, this.initialValue, rule.options);\n this.validationSummary.rules.push(result);\n if (!result.result) {\n this.validationSummary.result = false;\n }\n }\n return this.validationSummary;\n }\n}\n","import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AXValidationRegistryService } from './validation.service';\nimport { AXValidationRule } from './validation';\nimport { AXRegexValidationRule } from './rules/regex-rule';\nimport { AXRequiredValidationRule } from './rules/required-rule';\nimport { AXCallbackValidationRule } from './rules/callback-rule';\nimport { AXMinLengthValidationRule } from './rules/minlength-rule';\nimport { AXMaxLengthValidationRule } from './rules/maxlength-rule';\nimport { AXLengthValidationRule } from './rules/length-rule';\n\n\n@NgModule({\n imports: [],\n})\nexport class AXValidationModule {\n\n static forRoot(config?: { validators?: AXValidationRule[] }): ModuleWithProviders<AXValidationModule> {\n return {\n ngModule: AXValidationModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: (pluginRegistry: AXValidationRegistryService) => () => {\n if (config?.validators?.length)\n pluginRegistry.register(...config.validators);\n },\n deps: [AXValidationRegistryService],\n multi: true\n }\n ]\n };\n }\n\n constructor(pluginRegistry: AXValidationRegistryService) {\n pluginRegistry.register(\n new AXRegexValidationRule(),\n new AXRequiredValidationRule(),\n new AXCallbackValidationRule(),\n new AXMinLengthValidationRule(),\n new AXMaxLengthValidationRule(),\n new AXLengthValidationRule(),\n )\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXValidationRegistryService"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-validation.mjs","sources":["../../../../libs/core/validation/src/lib/rules/regex-rule.ts","../../../../libs/core/validation/src/lib/rules/required-rule.ts","../../../../libs/core/validation/src/lib/rules/callback-rule.ts","../../../../libs/core/validation/src/lib/rules/minlength-rule.ts","../../../../libs/core/validation/src/lib/rules/maxlength-rule.ts","../../../../libs/core/validation/src/lib/rules/length-rule.ts","../../../../libs/core/validation/src/lib/rules/equal-rule.ts","../../../../libs/core/validation/src/lib/rules/less-than-rule.ts","../../../../libs/core/validation/src/lib/rules/greater-than.ts","../../../../libs/core/validation/src/lib/validation.config.ts","../../../../libs/core/validation/src/lib/validation.service.ts","../../../../libs/core/validation/src/lib/validation.module.ts","../../../../libs/core/validation/src/acorex-core-validation.ts"],"sourcesContent":["import { isEmpty, isString } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\n\nexport interface AXRegexValidationRuleOptions extends AXValidationRuleOptions {\n pattern: string | RegExp;\n}\n\n// Augment the AXValidationRuleOptionsMap\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'regex': AXRegexValidationRuleOptions;\n }\n}\n\nexport class AXRegexValidationRule implements AXValidationRule {\n\n get name(): string {\n return 'regex';\n }\n\n validate(value: string, options: AXRegexValidationRuleOptions): AXValidationRuleResult {\n // Convert string pattern to RegExp if necessary\n const regexPattern = typeof options.pattern === 'string' ? new RegExp(options.pattern) : options.pattern;\n\n if (!value || (isString(value) && isEmpty(value.trim()))) {\n return {\n rule: this.name,\n result: true,\n message: null,\n value: value\n };\n }\n else if (!isString(value)) {\n return {\n rule: this.name,\n result: false,\n message: `${value} is not string value.`,\n value: value\n };\n }\n\n const isValid = regexPattern.test(value);\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : options?.message ?? `The value does not match the pattern ${regexPattern}.`,\n value: value\n };\n }\n\n}","import { find, isArray, isEmpty, isNull, isNumber, isString, isUndefined } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\nimport { AXTranslator } from \"@acorex/core/translation\";\n\n\nexport interface AXRequiredValidationRuleOptions extends AXValidationRuleOptions {\n}\n\n// Augment the AXValidationRuleOptionsMap\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'required': AXRequiredValidationRuleOptions;\n }\n}\n\nexport class AXRequiredValidationRule implements AXValidationRule {\n\n get name(): string {\n return 'required';\n }\n\n validate(value?: unknown, options?: AXRequiredValidationRuleOptions): AXValidationRuleResult {\n const rules = [\n { test: val => isNull(val) || isUndefined(val) },\n { test: val => isString(val) && isEmpty(val.trim()) },\n { test: val => isNumber(val) && isNaN(val) },\n { test: val => isArray(val) && isEmpty(val) }\n ];\n\n const failedRule = find(rules, rule => rule.test(value));\n const isValid = !failedRule;\n const message = failedRule ? options?.message ?? AXTranslator.get(\"validation.messages.required\", { name: options?.['title'] ?? options?.['name'] }) : null;\n\n return {\n rule: this.name,\n result: isValid,\n message: message,\n value\n };\n }\n}","import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport type AXCallbackValidation<T> = (value: T, options?: AXCallbackValidationRuleOptions<T>) => Promise<{ result: boolean, message?: string }> | { result: boolean, message?: string };\n\nexport interface AXCallbackValidationRuleOptions<T> extends AXValidationRuleOptions {\n validate: AXCallbackValidation<T>\n}\n\n// Augment the AXValidationRuleOptionsMap\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'callback': AXCallbackValidationRuleOptions<unknown>;\n }\n}\n\nexport class AXCallbackValidationRule<T> implements AXValidationRule {\n\n get name(): string {\n return 'callback';\n }\n\n validate(value: T, options: AXCallbackValidationRuleOptions<T>): AXValidationRuleResult | Promise<AXValidationRuleResult> {\n const validationResult = options?.validate(value, options) || { result: false, message: \"Invalid callback function\" };\n const createResult = (result: { result: boolean, message?: string }) => ({\n rule: this.name,\n result: result.result,\n message: result.message ?? options?.message ?? '',\n value: value\n });\n\n if (validationResult instanceof Promise) {\n return validationResult.then(createResult);\n }\n\n return createResult(validationResult);\n }\n}","import { isEmpty } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXMinLengthValidationRuleOptions extends AXValidationRuleOptions {\n value: number;\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'minLength': AXMinLengthValidationRuleOptions;\n }\n}\n\nexport class AXMinLengthValidationRule implements AXValidationRule {\n get name(): string {\n return 'minLength';\n }\n\n validate(value: string, options: AXMinLengthValidationRuleOptions): AXValidationRuleResult {\n const isValid = isEmpty(value) ? true : (value?.length >= options.value);\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : options?.message ?? `The value must be at least ${options.value} characters long.`,\n value: value\n };\n }\n}","// ax-max-length-validation-rule.ts\nimport { isEmpty } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXMaxLengthValidationRuleOptions extends AXValidationRuleOptions {\n value: number;\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'maxLength': AXMaxLengthValidationRuleOptions;\n }\n}\n\nexport class AXMaxLengthValidationRule implements AXValidationRule {\n get name(): string {\n return 'maxLength';\n }\n\n validate(value: string, options: AXMaxLengthValidationRuleOptions): AXValidationRuleResult {\n const isValid = isEmpty(value) ? true : (value?.length <= options.value);\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : options?.message ?? `The value must not exceed ${options.value} characters.`,\n value: value\n };\n }\n}\n","// ax-max-length-validation-rule.ts\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXLengthValidationRuleOptions extends AXValidationRuleOptions {\n min: number;\n max: number;\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'length': AXLengthValidationRuleOptions;\n }\n}\n\nexport class AXLengthValidationRule implements AXValidationRule {\n get name(): string {\n return 'length';\n }\n\n validate(value: string, options: AXLengthValidationRuleOptions): AXValidationRuleResult {\n const isValid = value?.length >= options.min && value?.length <= options.max;\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? null : options?.message ?? `The value must be between ${options.min} and ${options.max} chars`,\n value: value\n };\n }\n}\n","// ax-equal-validation-rule.ts\nimport { isEqual } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXEqualValidationRuleOptions extends AXValidationRuleOptions {\n value: any;\n not?: boolean; // Optional flag to invert the validation logic\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'equal': AXEqualValidationRuleOptions;\n }\n}\n\nexport class AXEqualValidationRule implements AXValidationRule {\n get name(): string {\n return 'equal';\n }\n\n validate(value: any, options: AXEqualValidationRuleOptions): AXValidationRuleResult {\n const isValueEqual = isEqual(value, options.value);\n const isValid = options.not ? !isValueEqual : isValueEqual;\n\n const defaultMessage = `The value must ${options.not ? 'not ' : ''}be equal to ${options.value}.`;\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : options?.message ?? defaultMessage,\n value: value\n };\n }\n}\n","// ax-less-than-validation-rule.ts\nimport { isNull, isUndefined } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXLessThanValidationRuleOptions extends AXValidationRuleOptions {\n value: number;\n inclusive?: boolean; // Optional flag for inclusiveness\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'lessThan': AXLessThanValidationRuleOptions;\n }\n}\n\nexport class AXLessThanValidationRule implements AXValidationRule {\n get name(): string {\n return 'lessThan';\n }\n\n validate(value: number, options: AXLessThanValidationRuleOptions): AXValidationRuleResult {\n const isValid = (isNull(value) || isUndefined(value)) ? true : (options.inclusive ? value <= options.value : value < options.value);\n const baseMessage = `The value must be ${options.inclusive ? 'less than or equal to' : 'less than'} ${options.value}.`;\n\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : options?.message ?? baseMessage,\n value: value\n };\n }\n}\n","// ax-greater-than-validation-rule.ts\nimport { isNull, isUndefined } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXGreaterThanValidationRuleOptions extends AXValidationRuleOptions {\n value: number;\n inclusive?: boolean; // Optional flag for inclusiveness\n}\n\ndeclare module '../validation' {\n interface AXValidationRuleOptionsMap {\n 'greaterThan': AXGreaterThanValidationRuleOptions;\n }\n}\n\nexport class AXGreaterThanValidationRule implements AXValidationRule {\n get name(): string {\n return 'greaterThan';\n }\n\n validate(value: number, options: AXGreaterThanValidationRuleOptions): AXValidationRuleResult {\n const isValid = (isNull(value) || isUndefined(value)) ? true : (options.inclusive ? value >= options.value : value > options.value);\n const baseMessage = `The value must be ${options.inclusive ? 'greater than or equal to' : 'greater than'} ${options.value}.`;\n\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : options?.message ?? baseMessage,\n value: value\n };\n }\n}\n","import { AXTranslator } from '@acorex/core/translation';\nimport { InjectionToken } from '@angular/core';\nimport { AXValidationRuleOptions, AXValidationRuleOptionsMap } from './validation';\n\nexport type AXValidationConfigRules = {\n [key: string]: {\n rule: keyof AXValidationRuleOptionsMap;\n options: AXValidationRuleOptions\n };\n}\n\nexport interface AXValidationConfig {\n rules: AXValidationConfigRules;\n}\n\nexport const AX_VALIDATION_CONFIG = new InjectionToken<AXValidationConfig>('AX_VALIDATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXValidationDefaultConfig;\n },\n});\n\nexport const AXValidationDefaultConfig: AXValidationConfig = {\n rules: {\n email: {\n rule: 'regex',\n options: {\n pattern:\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n message: AXTranslator.get('validation.messages.email'),\n }\n },\n phone: {\n rule: 'regex',\n options: {\n pattern: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/,\n message: AXTranslator.get('validation.messages.phone'),\n }\n },\n },\n};\n\nexport type PartialFormConfig = Partial<AXValidationConfig>;\n\nexport function validationConfig(config: PartialFormConfig = {}): AXValidationConfig {\n const result = {\n ...AXValidationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleOptionsMap, AXValidationRuleResult, AXValidationSummary } from \"./validation\";\nimport { AXTranslator } from \"@acorex/core/translation\";\nimport { AXValidationConfigRules, AX_VALIDATION_CONFIG } from \"./validation.config\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXValidationRegistryService {\n private plugins: AXValidationRule[] = [];\n\n private configs = inject(AX_VALIDATION_CONFIG);\n\n public get customRules(): AXValidationConfigRules {\n return this.configs.rules;\n }\n\n register(...plugin: AXValidationRule[]) {\n this.plugins.push(...plugin.filter(p => !this.plugins.some(c => c.name == p.name)));\n }\n\n get(ruleName: string): AXValidationRule | undefined {\n return this.plugins.find((c) => c.name == ruleName)\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXValidationService {\n constructor(\n private pluginRegistry: AXValidationRegistryService,\n\n ) { }\n\n validate(ruleName: string, value: unknown, options?: AXValidationRuleOptions): AXValidationRuleResult | Promise<AXValidationRuleResult> {\n const customRule = this.pluginRegistry.customRules[ruleName];\n const validator = this.pluginRegistry.get(ruleName);\n if (!validator && !customRule) {\n return {\n rule: ruleName,\n result: false,\n message: AXTranslator.get('validation.messages.invalid-rull-name', { name: ruleName }),\n value\n };\n }\n if (validator)\n return validator.validate(value, options);\n else {\n\n return this.validate(customRule.rule, value, customRule.options);\n }\n\n }\n\n\n ruleFor(value: unknown): AXValidationRuleChain {\n return new AXValidationRuleChain(this, value);\n }\n}\n\nclass AXValidationRuleChain {\n private rules: { name: string, options?: AXValidationRuleOptions }[] = [];\n private validationSummary: AXValidationSummary = { result: true, rules: [] };\n\n constructor(private validationService: AXValidationService, private initialValue: unknown) { }\n\n addRule<K extends keyof AXValidationRuleOptionsMap>(name: K, options?: AXValidationRuleOptionsMap[K]): AXValidationRuleChain {\n this.rules.push({ name, options });\n return this;\n }\n\n async validate(): Promise<AXValidationSummary> {\n for (const rule of this.rules) {\n const result = await this.validationService.validate(rule.name, this.initialValue, rule.options);\n this.validationSummary.rules.push(result);\n if (!result.result) {\n this.validationSummary.result = false;\n }\n }\n return this.validationSummary;\n }\n}\n","import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AXValidationRegistryService } from './validation.service';\nimport { AXValidationRule } from './validation';\nimport { AXRegexValidationRule } from './rules/regex-rule';\nimport { AXRequiredValidationRule } from './rules/required-rule';\nimport { AXCallbackValidationRule } from './rules/callback-rule';\nimport { AXMinLengthValidationRule } from './rules/minlength-rule';\nimport { AXMaxLengthValidationRule } from './rules/maxlength-rule';\nimport { AXLengthValidationRule } from './rules/length-rule';\nimport { AXEqualValidationRule } from './rules/equal-rule';\nimport { AXLessThanValidationRule } from './rules/less-than-rule';\nimport { AXGreaterThanValidationRule } from './rules/greater-than';\n\n\n@NgModule({\n imports: [],\n})\nexport class AXValidationModule {\n\n static forRoot(config?: { validators?: AXValidationRule[] }): ModuleWithProviders<AXValidationModule> {\n return {\n ngModule: AXValidationModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: (pluginRegistry: AXValidationRegistryService) => () => {\n if (config?.validators?.length)\n pluginRegistry.register(...config.validators);\n },\n deps: [AXValidationRegistryService],\n multi: true\n }\n ]\n };\n }\n\n constructor(pluginRegistry: AXValidationRegistryService) {\n pluginRegistry.register(\n new AXRegexValidationRule(),\n new AXRequiredValidationRule(),\n new AXCallbackValidationRule(),\n //\n new AXMinLengthValidationRule(),\n new AXMaxLengthValidationRule(),\n new AXLengthValidationRule(),\n //\n new AXEqualValidationRule(),\n new AXLessThanValidationRule(),\n new AXGreaterThanValidationRule()\n )\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXValidationRegistryService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/core",
3
- "version": "7.17.22",
3
+ "version": "7.17.24",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=17.0.3",
@@ -1,10 +1,10 @@
1
1
  import { OnDestroy } from '@angular/core';
2
- import { Observable } from 'rxjs';
2
+ import { Observable, Subject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare function AXAutoUnsubscriber(): (constructor: any) => void;
5
5
  export declare class AXUnsubscriber implements OnDestroy {
6
6
  private readonly _destroy$;
7
- readonly takeUntilDestroy: <T>(origin: Observable<T>) => Observable<T>;
7
+ readonly takeUntilDestroy: <T>(origin: Observable<T> | Subject<T>) => Observable<T> | Subject<T>;
8
8
  unsubscribe(): void;
9
9
  ngOnDestroy(): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AXUnsubscriber, never>;
@@ -5,5 +5,8 @@ export * from './lib/rules/callback-rule';
5
5
  export * from './lib/rules/minlength-rule';
6
6
  export * from './lib/rules/maxlength-rule';
7
7
  export * from './lib/rules/length-rule';
8
+ export * from './lib/rules/equal-rule';
9
+ export * from './lib/rules/less-than-rule';
10
+ export * from './lib/rules/greater-than';
8
11
  export * from './lib/validation.service';
9
12
  export * from './lib/validation.module';
@@ -1,5 +1,5 @@
1
1
  import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
2
- export type AXCallbackValidation<T> = (value: T) => Promise<{
2
+ export type AXCallbackValidation<T> = (value: T, options?: AXCallbackValidationRuleOptions<T>) => Promise<{
3
3
  result: boolean;
4
4
  message?: string;
5
5
  }> | {
@@ -0,0 +1,14 @@
1
+ import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
2
+ export interface AXEqualValidationRuleOptions extends AXValidationRuleOptions {
3
+ value: any;
4
+ not?: boolean;
5
+ }
6
+ declare module '../validation' {
7
+ interface AXValidationRuleOptionsMap {
8
+ 'equal': AXEqualValidationRuleOptions;
9
+ }
10
+ }
11
+ export declare class AXEqualValidationRule implements AXValidationRule {
12
+ get name(): string;
13
+ validate(value: any, options: AXEqualValidationRuleOptions): AXValidationRuleResult;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
2
+ export interface AXGreaterThanValidationRuleOptions extends AXValidationRuleOptions {
3
+ value: number;
4
+ inclusive?: boolean;
5
+ }
6
+ declare module '../validation' {
7
+ interface AXValidationRuleOptionsMap {
8
+ 'greaterThan': AXGreaterThanValidationRuleOptions;
9
+ }
10
+ }
11
+ export declare class AXGreaterThanValidationRule implements AXValidationRule {
12
+ get name(): string;
13
+ validate(value: number, options: AXGreaterThanValidationRuleOptions): AXValidationRuleResult;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
2
+ export interface AXLessThanValidationRuleOptions extends AXValidationRuleOptions {
3
+ value: number;
4
+ inclusive?: boolean;
5
+ }
6
+ declare module '../validation' {
7
+ interface AXValidationRuleOptionsMap {
8
+ 'lessThan': AXLessThanValidationRuleOptions;
9
+ }
10
+ }
11
+ export declare class AXLessThanValidationRule implements AXValidationRule {
12
+ get name(): string;
13
+ validate(value: number, options: AXLessThanValidationRuleOptions): AXValidationRuleResult;
14
+ }
@@ -8,5 +8,5 @@ declare module '../validation' {
8
8
  }
9
9
  export declare class AXRequiredValidationRule implements AXValidationRule {
10
10
  get name(): string;
11
- validate(value?: unknown): AXValidationRuleResult;
11
+ validate(value?: unknown, options?: AXRequiredValidationRuleOptions): AXValidationRuleResult;
12
12
  }
@@ -0,0 +1,15 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { AXValidationRuleOptions, AXValidationRuleOptionsMap } from './validation';
3
+ export type AXValidationConfigRules = {
4
+ [key: string]: {
5
+ rule: keyof AXValidationRuleOptionsMap;
6
+ options: AXValidationRuleOptions;
7
+ };
8
+ };
9
+ export interface AXValidationConfig {
10
+ rules: AXValidationConfigRules;
11
+ }
12
+ export declare const AX_VALIDATION_CONFIG: InjectionToken<AXValidationConfig>;
13
+ export declare const AXValidationDefaultConfig: AXValidationConfig;
14
+ export type PartialFormConfig = Partial<AXValidationConfig>;
15
+ export declare function validationConfig(config?: PartialFormConfig): AXValidationConfig;
@@ -1,4 +1,5 @@
1
1
  export interface AXValidationRuleOptions {
2
+ message?: string;
2
3
  [key: string]: unknown;
3
4
  }
4
5
  export interface AXValidationRuleOptionsMap {
@@ -8,10 +9,11 @@ export interface AXValidationRule {
8
9
  validate(value: unknown, options?: AXValidationRuleOptions): AXValidationRuleResult | Promise<AXValidationRuleResult>;
9
10
  }
10
11
  export interface AXValidationRuleResult {
11
- name: string;
12
+ rule: string;
12
13
  value?: unknown;
13
14
  message?: string | null;
14
15
  result: boolean;
16
+ [key: string]: unknown;
15
17
  }
16
18
  export interface AXValidationSummary {
17
19
  result: boolean;
@@ -1,9 +1,12 @@
1
1
  import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleOptionsMap, AXValidationRuleResult, AXValidationSummary } from "./validation";
2
+ import { AXValidationConfigRules } from "./validation.config";
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class AXValidationRegistryService {
4
5
  private plugins;
6
+ private configs;
7
+ get customRules(): AXValidationConfigRules;
5
8
  register(...plugin: AXValidationRule[]): void;
6
- get validators(): AXValidationRule[];
9
+ get(ruleName: string): AXValidationRule | undefined;
7
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AXValidationRegistryService, never>;
8
11
  static ɵprov: i0.ɵɵInjectableDeclaration<AXValidationRegistryService>;
9
12
  }