@acorex/core 7.17.21 → 7.17.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/validation/index.mjs +9 -3
- package/esm2022/validation/lib/rules/callback-rule.mjs +19 -0
- package/esm2022/validation/lib/rules/length-rule.mjs +15 -0
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +15 -0
- package/esm2022/validation/lib/rules/minlength-rule.mjs +15 -0
- package/esm2022/validation/lib/rules/regex-rule.mjs +17 -0
- package/esm2022/validation/lib/rules/required-rule.mjs +24 -0
- package/esm2022/validation/lib/validation.mjs +1 -1
- package/esm2022/validation/lib/validation.module.mjs +8 -4
- package/esm2022/validation/lib/validation.service.mjs +12 -12
- package/fesm2022/acorex-core-validation.mjs +86 -22
- package/fesm2022/acorex-core-validation.mjs.map +1 -1
- package/package.json +1 -1
- package/validation/index.d.ts +6 -2
- package/validation/lib/rules/callback-rule.d.ts +20 -0
- package/validation/lib/rules/length-rule.d.ts +14 -0
- package/validation/lib/rules/maxlength-rule.d.ts +13 -0
- package/validation/lib/rules/minlength-rule.d.ts +13 -0
- package/validation/lib/rules/regex-rule.d.ts +13 -0
- package/validation/lib/rules/required-rule.d.ts +12 -0
- package/validation/lib/validation.d.ts +5 -4
- package/validation/lib/validation.service.d.ts +5 -5
- package/esm2022/validation/lib/regex-validator.mjs +0 -17
- package/esm2022/validation/lib/required-validator.mjs +0 -24
- package/validation/lib/regex-validator.d.ts +0 -8
- package/validation/lib/required-validator.d.ts +0 -7
@@ -1,6 +1,12 @@
|
|
1
1
|
export * from './lib/validation';
|
2
|
-
|
3
|
-
export * from './lib/
|
2
|
+
//
|
3
|
+
export * from './lib/rules/regex-rule';
|
4
|
+
export * from './lib/rules/required-rule';
|
5
|
+
export * from './lib/rules/callback-rule';
|
6
|
+
export * from './lib/rules/minlength-rule';
|
7
|
+
export * from './lib/rules/maxlength-rule';
|
8
|
+
export * from './lib/rules/length-rule';
|
9
|
+
//
|
4
10
|
export * from './lib/validation.service';
|
5
11
|
export * from './lib/validation.module';
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxFQUFFO0FBQ0YsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsRUFBRTtBQUNGLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24nO1xuLy9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL3JlZ2V4LXJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvcmVxdWlyZWQtcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9jYWxsYmFjay1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21heGxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2xlbmd0aC1ydWxlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdGlvbi5tb2R1bGUnOyJdfQ==
|
@@ -0,0 +1,19 @@
|
|
1
|
+
export class AXCallbackValidationRule {
|
2
|
+
get name() {
|
3
|
+
return 'callback';
|
4
|
+
}
|
5
|
+
validate(value, options) {
|
6
|
+
const validationResult = options?.validate(value) || { result: false, message: "Invalid callback function" };
|
7
|
+
const createResult = (result) => ({
|
8
|
+
name: this.name,
|
9
|
+
result: result.result,
|
10
|
+
message: result.message || '',
|
11
|
+
value: value
|
12
|
+
});
|
13
|
+
if (validationResult instanceof Promise) {
|
14
|
+
return validationResult.then(createResult);
|
15
|
+
}
|
16
|
+
return createResult(validationResult);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGJhY2stcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvY2FsbGJhY2stcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLE9BQU8sd0JBQXdCO0lBRWpDLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBUSxFQUFFLE9BQTJDO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLENBQUM7UUFDN0csTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUE2QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzdCLEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxnQkFBZ0IsWUFBWSxPQUFPLEVBQUU7WUFDckMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgQVhDYWxsYmFja1ZhbGlkYXRpb248VD4gPSAodmFsdWU6IFQpID0+IFByb21pc2U8eyByZXN1bHQ6IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcgfT4gfCB7IHJlc3VsdDogYm9vbGVhbiwgbWVzc2FnZT86IHN0cmluZyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZU9wdGlvbnM8VD4gZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgdmFsaWRhdGU6IEFYQ2FsbGJhY2tWYWxpZGF0aW9uPFQ+XG59XG5cbi8vIEF1Z21lbnQgdGhlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdjYWxsYmFjayc6IEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZU9wdGlvbnM8dW5rbm93bj47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlPFQ+IGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ2NhbGxiYWNrJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogVCwgb3B0aW9uczogQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlT3B0aW9uczxUPik6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfCBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IG9wdGlvbnM/LnZhbGlkYXRlKHZhbHVlKSB8fCB7IHJlc3VsdDogZmFsc2UsIG1lc3NhZ2U6IFwiSW52YWxpZCBjYWxsYmFjayBmdW5jdGlvblwiIH07XG4gICAgICAgIGNvbnN0IGNyZWF0ZVJlc3VsdCA9IChyZXN1bHQ6IHsgcmVzdWx0OiBib29sZWFuLCBtZXNzYWdlPzogc3RyaW5nIH0pID0+ICh7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdC5yZXN1bHQsXG4gICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQubWVzc2FnZSB8fCAnJyxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0LnRoZW4oY3JlYXRlUmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjcmVhdGVSZXN1bHQodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgfVxufSJdfQ==
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export class AXLengthValidationRule {
|
2
|
+
get name() {
|
3
|
+
return 'length';
|
4
|
+
}
|
5
|
+
validate(value, options) {
|
6
|
+
const isValid = value?.length >= options.min && value?.length <= options.max;
|
7
|
+
return {
|
8
|
+
name: this.name,
|
9
|
+
result: isValid,
|
10
|
+
message: isValid ? null : `The value must be between ${options.min} and ${options.max} chars`,
|
11
|
+
value: value
|
12
|
+
};
|
13
|
+
}
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL2xlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sT0FBTyxzQkFBc0I7SUFDL0IsSUFBSSxJQUFJO1FBQ0osT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBc0M7UUFDMUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM3RSxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixPQUFPLENBQUMsR0FBRyxRQUFRLE9BQU8sQ0FBQyxHQUFHLFFBQVE7WUFDN0YsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXgtbWF4LWxlbmd0aC12YWxpZGF0aW9uLXJ1bGUudHNcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBWExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICBtaW46IG51bWJlcjtcbiAgICBtYXg6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3ZhbGlkYXRpb24nIHtcbiAgICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgICAgICAnbGVuZ3RoJzogQVhMZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhMZW5ndGhWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbGVuZ3RoJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBBWExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQge1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsdWU/Lmxlbmd0aCA+PSBvcHRpb25zLm1pbiAmJiB2YWx1ZT8ubGVuZ3RoIDw9IG9wdGlvbnMubWF4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/IG51bGwgOiBgVGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAke29wdGlvbnMubWlufSBhbmQgJHtvcHRpb25zLm1heH0gY2hhcnNgLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export class AXMaxLengthValidationRule {
|
2
|
+
get name() {
|
3
|
+
return 'maxLength';
|
4
|
+
}
|
5
|
+
validate(value, options) {
|
6
|
+
const isValid = value?.length <= options.value;
|
7
|
+
return {
|
8
|
+
name: this.name,
|
9
|
+
result: isValid,
|
10
|
+
message: isValid ? '' : `The value must not exceed ${options.value} characters.`,
|
11
|
+
value: value
|
12
|
+
};
|
13
|
+
}
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4bGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL21heGxlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBeUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQy9DLE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLE9BQU8sQ0FBQyxLQUFLLGNBQWM7WUFDaEYsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXgtbWF4LWxlbmd0aC12YWxpZGF0aW9uLXJ1bGUudHNcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBWE1heExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICB2YWx1ZTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdtYXhMZW5ndGgnOiBBWE1heExlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWE1heExlbmd0aFZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdtYXhMZW5ndGgnO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM6IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSB2YWx1ZT8ubGVuZ3RoIDw9IG9wdGlvbnMudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gJycgOiBgVGhlIHZhbHVlIG11c3Qgbm90IGV4Y2VlZCAke29wdGlvbnMudmFsdWV9IGNoYXJhY3RlcnMuYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export class AXMinLengthValidationRule {
|
2
|
+
get name() {
|
3
|
+
return 'minLength';
|
4
|
+
}
|
5
|
+
validate(value, options) {
|
6
|
+
const isValid = value?.length >= options.value;
|
7
|
+
return {
|
8
|
+
name: this.name,
|
9
|
+
result: isValid,
|
10
|
+
message: isValid ? '' : `The value must be at least ${options.value} characters long.`,
|
11
|
+
value: value
|
12
|
+
};
|
13
|
+
}
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlubGVuZ3RoLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsT0FBeUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQy9DLE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsOEJBQThCLE9BQU8sQ0FBQyxLQUFLLG1CQUFtQjtZQUN0RixLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlLCBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgdmFsdWU6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3ZhbGlkYXRpb24nIHtcbiAgICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgICAgICAnbWluTGVuZ3RoJzogQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbWluTGVuZ3RoJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBBWE1pbkxlbmd0aFZhbGlkYXRpb25SdWxlT3B0aW9ucyk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQge1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsdWU/Lmxlbmd0aCA+PSBvcHRpb25zLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogYFRoZSB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0ICR7b3B0aW9ucy52YWx1ZX0gY2hhcmFjdGVycyBsb25nLmAsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfTtcbiAgICB9XG59Il19
|
@@ -0,0 +1,17 @@
|
|
1
|
+
export class AXRegexValidationRule {
|
2
|
+
get name() {
|
3
|
+
return 'regex';
|
4
|
+
}
|
5
|
+
validate(value, options) {
|
6
|
+
// Convert string pattern to RegExp if necessary
|
7
|
+
const regexPattern = typeof options.pattern === 'string' ? new RegExp(options.pattern) : options.pattern;
|
8
|
+
const isValid = regexPattern.test(value);
|
9
|
+
return {
|
10
|
+
name: this.name,
|
11
|
+
result: isValid,
|
12
|
+
message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,
|
13
|
+
value: value
|
14
|
+
};
|
15
|
+
}
|
16
|
+
}
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXgtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvcmVnZXgtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQSxNQUFNLE9BQU8scUJBQXFCO0lBRTlCLElBQUksSUFBSTtRQUNKLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLE9BQXFDO1FBQ3pELGdEQUFnRDtRQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFekcsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHdDQUF3QyxZQUFZLEdBQUc7WUFDL0UsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvblwiO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhSZWdleFZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgICBwYXR0ZXJuOiBzdHJpbmcgfCBSZWdFeHA7XG59XG5cbi8vIEF1Z21lbnQgdGhlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdyZWdleCc6IEFYUmVnZXhWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhSZWdleFZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlZ2V4JztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBBWFJlZ2V4VmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHBhdHRlcm4gdG8gUmVnRXhwIGlmIG5lY2Vzc2FyeVxuICAgICAgICBjb25zdCByZWdleFBhdHRlcm4gPSB0eXBlb2Ygb3B0aW9ucy5wYXR0ZXJuID09PSAnc3RyaW5nJyA/IG5ldyBSZWdFeHAob3B0aW9ucy5wYXR0ZXJuKSA6IG9wdGlvbnMucGF0dGVybjtcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gcmVnZXhQYXR0ZXJuLnRlc3QodmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogYFRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVybiAke3JlZ2V4UGF0dGVybn0uYCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cblxufSJdfQ==
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { find, isArray, isEmpty, isNull, isNumber, isString, isUndefined } from "lodash-es";
|
2
|
+
export class AXRequiredValidationRule {
|
3
|
+
get name() {
|
4
|
+
return 'required';
|
5
|
+
}
|
6
|
+
validate(value) {
|
7
|
+
const rules = [
|
8
|
+
{ test: val => isNull(val) || isUndefined(val) },
|
9
|
+
{ test: val => isString(val) && isEmpty(val.trim()) },
|
10
|
+
{ test: val => isNumber(val) && isNaN(val) },
|
11
|
+
{ test: val => isArray(val) && isEmpty(val) }
|
12
|
+
];
|
13
|
+
const failedRule = find(rules, rule => rule.test(value));
|
14
|
+
const isValid = !failedRule;
|
15
|
+
const message = failedRule ? "This filed is required" : null;
|
16
|
+
return {
|
17
|
+
name: this.name,
|
18
|
+
result: isValid,
|
19
|
+
message: message,
|
20
|
+
value
|
21
|
+
};
|
22
|
+
}
|
23
|
+
}
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvcmVxdWlyZWQtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBYzVGLE1BQU0sT0FBTyx3QkFBd0I7SUFFakMsSUFBSSxJQUFJO1FBQ0osT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFlO1FBQ3BCLE1BQU0sS0FBSyxHQUFHO1lBQ1YsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNyRCxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1NBQ2hELENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU3RCxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLO1NBQ1IsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbmQsIGlzQXJyYXksIGlzRW1wdHksIGlzTnVsbCwgaXNOdW1iZXIsIGlzU3RyaW5nLCBpc1VuZGVmaW5lZCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUmVxdWlyZWRWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG59XG5cbi8vIEF1Z21lbnQgdGhlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbicge1xuICAgIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgICAgICdyZXF1aXJlZCc6IEFYUmVxdWlyZWRWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhSZXF1aXJlZFZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh2YWx1ZT86IHVua25vd24pOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgY29uc3QgcnVsZXMgPSBbXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc051bGwodmFsKSB8fCBpc1VuZGVmaW5lZCh2YWwpIH0sXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc1N0cmluZyh2YWwpICYmIGlzRW1wdHkodmFsLnRyaW0oKSkgfSxcbiAgICAgICAgICAgIHsgdGVzdDogdmFsID0+IGlzTnVtYmVyKHZhbCkgJiYgaXNOYU4odmFsKSB9LFxuICAgICAgICAgICAgeyB0ZXN0OiB2YWwgPT4gaXNBcnJheSh2YWwpICYmIGlzRW1wdHkodmFsKSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmFpbGVkUnVsZSA9IGZpbmQocnVsZXMsIHJ1bGUgPT4gcnVsZS50ZXN0KHZhbHVlKSk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSAhZmFpbGVkUnVsZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGZhaWxlZFJ1bGUgPyBcIlRoaXMgZmlsZWQgaXMgcmVxdWlyZWRcIiA6IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93blxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgIC8vIGluaXRpYWxseSBlbXB0eSwgYnV0IHdpbGwgYmUgZXh0ZW5kZWQgYnkgb3RoZXIgbW9kdWxlc1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZSB7XG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICAgIHZhbGlkYXRlKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMpOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHwgUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU/OiB1bmtub3duO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsO1xuICAgIHJlc3VsdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25TdW1tYXJ5IHtcbiAgICByZXN1bHQ6IGJvb2xlYW47XG4gICAgcnVsZXM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXVxufVxuIl19
|
@@ -1,7 +1,11 @@
|
|
1
1
|
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
2
2
|
import { AXValidationRegistryService } from './validation.service';
|
3
|
-
import {
|
4
|
-
import {
|
3
|
+
import { AXRegexValidationRule } from './rules/regex-rule';
|
4
|
+
import { AXRequiredValidationRule } from './rules/required-rule';
|
5
|
+
import { AXCallbackValidationRule } from './rules/callback-rule';
|
6
|
+
import { AXMinLengthValidationRule } from './rules/minlength-rule';
|
7
|
+
import { AXMaxLengthValidationRule } from './rules/maxlength-rule';
|
8
|
+
import { AXLengthValidationRule } from './rules/length-rule';
|
5
9
|
import * as i0 from "@angular/core";
|
6
10
|
import * as i1 from "./validation.service";
|
7
11
|
export class AXValidationModule {
|
@@ -22,7 +26,7 @@ export class AXValidationModule {
|
|
22
26
|
};
|
23
27
|
}
|
24
28
|
constructor(pluginRegistry) {
|
25
|
-
pluginRegistry.register(new
|
29
|
+
pluginRegistry.register(new AXRegexValidationRule(), new AXRequiredValidationRule(), new AXCallbackValidationRule(), new AXMinLengthValidationRule(), new AXMaxLengthValidationRule(), new AXLengthValidationRule());
|
26
30
|
}
|
27
31
|
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 }); }
|
28
32
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule }); }
|
@@ -34,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
34
38
|
imports: [],
|
35
39
|
}]
|
36
40
|
}], ctorParameters: () => [{ type: i1.AXValidationRegistryService }] });
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3ZhbGlkYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTTdELE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUE0QztRQUN2RCxPQUFPO1lBQ0gsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxDQUFDLGNBQTJDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTt3QkFDOUQsSUFBSSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07NEJBQzFCLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3RELENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ25DLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksY0FBMkM7UUFDbkQsY0FBYyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxxQkFBcUIsRUFBRSxFQUMzQixJQUFJLHdCQUF3QixFQUFFLEVBQzlCLElBQUksd0JBQXdCLEVBQUUsRUFDOUIsSUFBSSx5QkFBeUIsRUFBRSxFQUMvQixJQUFJLHlCQUF5QixFQUFFLEVBQy9CLElBQUksc0JBQXNCLEVBQUUsQ0FDL0IsQ0FBQTtJQUNMLENBQUM7OEdBNUJRLGtCQUFrQjsrR0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IEFYUmVnZXhWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvcmVnZXgtcnVsZSc7XG5pbXBvcnQgeyBBWFJlcXVpcmVkVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL3JlcXVpcmVkLXJ1bGUnO1xuaW1wb3J0IHsgQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9jYWxsYmFjay1ydWxlJztcbmltcG9ydCB7IEFYTWluTGVuZ3RoVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL21pbmxlbmd0aC1ydWxlJztcbmltcG9ydCB7IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL21heGxlbmd0aC1ydWxlJztcbmltcG9ydCB7IEFYTGVuZ3RoVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL2xlbmd0aC1ydWxlJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFZhbGlkYXRpb25Nb2R1bGUge1xuXG4gICAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogeyB2YWxpZGF0b3JzPzogQVhWYWxpZGF0aW9uUnVsZVtdIH0pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYVmFsaWRhdGlvbk1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IEFYVmFsaWRhdGlvbk1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiAocGx1Z2luUmVnaXN0cnk6IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZz8udmFsaWRhdG9ycz8ubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpblJlZ2lzdHJ5LnJlZ2lzdGVyKC4uLmNvbmZpZy52YWxpZGF0b3JzKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGVwczogW0FYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHBsdWdpblJlZ2lzdHJ5OiBBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2UpIHtcbiAgICAgICAgcGx1Z2luUmVnaXN0cnkucmVnaXN0ZXIoXG4gICAgICAgICAgICBuZXcgQVhSZWdleFZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgICAgICBuZXcgQVhSZXF1aXJlZFZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgICAgICBuZXcgQVhDYWxsYmFja1ZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgICAgICBuZXcgQVhNaW5MZW5ndGhWYWxpZGF0aW9uUnVsZSgpLFxuICAgICAgICAgICAgbmV3IEFYTWF4TGVuZ3RoVmFsaWRhdGlvblJ1bGUoKSxcbiAgICAgICAgICAgIG5ldyBBWExlbmd0aFZhbGlkYXRpb25SdWxlKCksXG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
|
@@ -24,19 +24,19 @@ export class AXValidationService {
|
|
24
24
|
constructor(pluginRegistry) {
|
25
25
|
this.pluginRegistry = pluginRegistry;
|
26
26
|
}
|
27
|
-
validate(
|
28
|
-
const validator = this.pluginRegistry.validators.find((c) => c.name ==
|
27
|
+
validate(ruleName, value, options) {
|
28
|
+
const validator = this.pluginRegistry.validators.find((c) => c.name == ruleName);
|
29
29
|
if (!validator) {
|
30
30
|
return {
|
31
|
-
name:
|
31
|
+
name: ruleName,
|
32
32
|
result: false,
|
33
|
-
message: AXTranslator.get('validation.messages.invalid-rull-name'),
|
34
|
-
value
|
33
|
+
message: AXTranslator.get('validation.messages.invalid-rull-name', { name: ruleName }),
|
34
|
+
value
|
35
35
|
};
|
36
36
|
}
|
37
|
-
return validator.validate(
|
37
|
+
return validator.validate(value, options);
|
38
38
|
}
|
39
|
-
|
39
|
+
ruleFor(value) {
|
40
40
|
return new AXValidationRuleChain(this, value);
|
41
41
|
}
|
42
42
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationService, deps: [{ token: AXValidationRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
@@ -53,13 +53,13 @@ class AXValidationRuleChain {
|
|
53
53
|
this.rules = [];
|
54
54
|
this.validationSummary = { result: true, rules: [] };
|
55
55
|
}
|
56
|
-
addRule(name,
|
57
|
-
this.rules.push({ name,
|
56
|
+
addRule(name, options) {
|
57
|
+
this.rules.push({ name, options });
|
58
58
|
return this;
|
59
59
|
}
|
60
|
-
async
|
60
|
+
async validate() {
|
61
61
|
for (const rule of this.rules) {
|
62
|
-
const result = await this.validationService.validate(rule.name, rule.
|
62
|
+
const result = await this.validationService.validate(rule.name, this.initialValue, rule.options);
|
63
63
|
this.validationSummary.rules.push(result);
|
64
64
|
if (!result.result) {
|
65
65
|
this.validationSummary.result = false;
|
@@ -68,4 +68,4 @@ class AXValidationRuleChain {
|
|
68
68
|
return this.validationSummary;
|
69
69
|
}
|
70
70
|
}
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBS3hELE1BQU0sT0FBTywyQkFBMkI7SUFIeEM7UUFJWSxZQUFPLEdBQXVCLEVBQUUsQ0FBQztLQVM1QztJQVBHLFFBQVEsQ0FBQyxHQUFHLE1BQTBCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOzhHQVRRLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRnhCLE1BQU07OzJGQUVULDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7O0FBY0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixZQUNZLGNBQTJDO1FBQTNDLG1CQUFjLEdBQWQsY0FBYyxDQUE2QjtJQUNuRCxDQUFDO0lBRUwsUUFBUSxDQUFDLFFBQWdCLEVBQUUsS0FBYyxFQUFFLE9BQWlDO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osT0FBTztnQkFDSCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDdEYsS0FBSzthQUNSLENBQUM7U0FDTDtRQUNELE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUFjO1FBQ2xCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FyQlEsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FETixNQUFNOzsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUF5QmxDLE1BQU0scUJBQXFCO0lBSXZCLFlBQW9CLGlCQUFzQyxFQUFVLFlBQXFCO1FBQXJFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBUztRQUhqRixVQUFLLEdBQTBELEVBQUUsQ0FBQztRQUNsRSxzQkFBaUIsR0FBd0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVnQixDQUFDO0lBRTlGLE9BQU8sQ0FBNkMsSUFBTyxFQUFFLE9BQXVDO1FBQ2hHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUN6QztTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlLCBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQsIEFYVmFsaWRhdGlvblN1bW1hcnkgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tIFwiQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHBsdWdpbnM6IEFYVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xuXG4gICAgcmVnaXN0ZXIoLi4ucGx1Z2luOiBBWFZhbGlkYXRpb25SdWxlW10pIHtcbiAgICAgICAgdGhpcy5wbHVnaW5zLnB1c2goLi4ucGx1Z2luLmZpbHRlcihwID0+ICF0aGlzLnBsdWdpbnMuc29tZShjID0+IGMubmFtZSA9PSBwLm5hbWUpKSk7XG4gICAgfVxuXG4gICAgZ2V0IHZhbGlkYXRvcnMoKTogQVhWYWxpZGF0aW9uUnVsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2lucztcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcGx1Z2luUmVnaXN0cnk6IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZVxuICAgICkgeyB9XG5cbiAgICB2YWxpZGF0ZShydWxlTmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zKTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB8IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLnBsdWdpblJlZ2lzdHJ5LnZhbGlkYXRvcnMuZmluZCgoYykgPT4gYy5uYW1lID09IHJ1bGVOYW1lKTtcbiAgICAgICAgaWYgKCF2YWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogcnVsZU5hbWUsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBBWFRyYW5zbGF0b3IuZ2V0KCd2YWxpZGF0aW9uLm1lc3NhZ2VzLmludmFsaWQtcnVsbC1uYW1lJywgeyBuYW1lOiBydWxlTmFtZSB9KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdG9yLnZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG5cblxuICAgIHJ1bGVGb3IodmFsdWU6IHVua25vd24pOiBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgICAgICByZXR1cm4gbmV3IEFYVmFsaWRhdGlvblJ1bGVDaGFpbih0aGlzLCB2YWx1ZSk7XG4gICAgfVxufVxuXG5jbGFzcyBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgIHByaXZhdGUgcnVsZXM6IHsgbmFtZTogc3RyaW5nLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMgfVtdID0gW107XG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU3VtbWFyeTogQVhWYWxpZGF0aW9uU3VtbWFyeSA9IHsgcmVzdWx0OiB0cnVlLCBydWxlczogW10gfTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IEFYVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgaW5pdGlhbFZhbHVlOiB1bmtub3duKSB7IH1cblxuICAgIGFkZFJ1bGU8SyBleHRlbmRzIGtleW9mIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwPihuYW1lOiBLLCBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXBbS10pOiBBWFZhbGlkYXRpb25SdWxlQ2hhaW4ge1xuICAgICAgICB0aGlzLnJ1bGVzLnB1c2goeyBuYW1lLCBvcHRpb25zIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBhc3luYyB2YWxpZGF0ZSgpOiBQcm9taXNlPEFYVmFsaWRhdGlvblN1bW1hcnk+IHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMucnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGUocnVsZS5uYW1lLCB0aGlzLmluaXRpYWxWYWx1ZSwgcnVsZS5vcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblN1bW1hcnkucnVsZXMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeS5yZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uU3VtbWFyeTtcbiAgICB9XG59XG4iXX0=
|
@@ -3,42 +3,106 @@ import * as i0 from '@angular/core';
|
|
3
3
|
import { Injectable, APP_INITIALIZER, NgModule } from '@angular/core';
|
4
4
|
import { AXTranslator } from '@acorex/core/translation';
|
5
5
|
|
6
|
-
class
|
6
|
+
class AXRegexValidationRule {
|
7
7
|
get name() {
|
8
8
|
return 'regex';
|
9
9
|
}
|
10
|
-
validate(
|
10
|
+
validate(value, options) {
|
11
11
|
// Convert string pattern to RegExp if necessary
|
12
|
-
const regexPattern = typeof
|
13
|
-
const isValid = regexPattern.test(
|
12
|
+
const regexPattern = typeof options.pattern === 'string' ? new RegExp(options.pattern) : options.pattern;
|
13
|
+
const isValid = regexPattern.test(value);
|
14
14
|
return {
|
15
15
|
name: this.name,
|
16
16
|
result: isValid,
|
17
17
|
message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,
|
18
|
-
value:
|
18
|
+
value: value
|
19
19
|
};
|
20
20
|
}
|
21
21
|
}
|
22
22
|
|
23
|
-
class
|
23
|
+
class AXRequiredValidationRule {
|
24
24
|
get name() {
|
25
25
|
return 'required';
|
26
26
|
}
|
27
|
-
validate(
|
27
|
+
validate(value) {
|
28
28
|
const rules = [
|
29
29
|
{ test: val => isNull(val) || isUndefined(val) },
|
30
30
|
{ test: val => isString(val) && isEmpty(val.trim()) },
|
31
31
|
{ test: val => isNumber(val) && isNaN(val) },
|
32
32
|
{ test: val => isArray(val) && isEmpty(val) }
|
33
33
|
];
|
34
|
-
const failedRule = find(rules, rule => rule.test(
|
34
|
+
const failedRule = find(rules, rule => rule.test(value));
|
35
35
|
const isValid = !failedRule;
|
36
36
|
const message = failedRule ? "This filed is required" : null;
|
37
37
|
return {
|
38
38
|
name: this.name,
|
39
39
|
result: isValid,
|
40
40
|
message: message,
|
41
|
-
value
|
41
|
+
value
|
42
|
+
};
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
class AXCallbackValidationRule {
|
47
|
+
get name() {
|
48
|
+
return 'callback';
|
49
|
+
}
|
50
|
+
validate(value, options) {
|
51
|
+
const validationResult = options?.validate(value) || { result: false, message: "Invalid callback function" };
|
52
|
+
const createResult = (result) => ({
|
53
|
+
name: this.name,
|
54
|
+
result: result.result,
|
55
|
+
message: result.message || '',
|
56
|
+
value: value
|
57
|
+
});
|
58
|
+
if (validationResult instanceof Promise) {
|
59
|
+
return validationResult.then(createResult);
|
60
|
+
}
|
61
|
+
return createResult(validationResult);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
class AXMinLengthValidationRule {
|
66
|
+
get name() {
|
67
|
+
return 'minLength';
|
68
|
+
}
|
69
|
+
validate(value, options) {
|
70
|
+
const isValid = value?.length >= options.value;
|
71
|
+
return {
|
72
|
+
name: this.name,
|
73
|
+
result: isValid,
|
74
|
+
message: isValid ? '' : `The value must be at least ${options.value} characters long.`,
|
75
|
+
value: value
|
76
|
+
};
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
class AXMaxLengthValidationRule {
|
81
|
+
get name() {
|
82
|
+
return 'maxLength';
|
83
|
+
}
|
84
|
+
validate(value, options) {
|
85
|
+
const isValid = value?.length <= options.value;
|
86
|
+
return {
|
87
|
+
name: this.name,
|
88
|
+
result: isValid,
|
89
|
+
message: isValid ? '' : `The value must not exceed ${options.value} characters.`,
|
90
|
+
value: value
|
91
|
+
};
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
class AXLengthValidationRule {
|
96
|
+
get name() {
|
97
|
+
return 'length';
|
98
|
+
}
|
99
|
+
validate(value, options) {
|
100
|
+
const isValid = value?.length >= options.min && value?.length <= options.max;
|
101
|
+
return {
|
102
|
+
name: this.name,
|
103
|
+
result: isValid,
|
104
|
+
message: isValid ? null : `The value must be between ${options.min} and ${options.max} chars`,
|
105
|
+
value: value
|
42
106
|
};
|
43
107
|
}
|
44
108
|
}
|
@@ -66,19 +130,19 @@ class AXValidationService {
|
|
66
130
|
constructor(pluginRegistry) {
|
67
131
|
this.pluginRegistry = pluginRegistry;
|
68
132
|
}
|
69
|
-
validate(
|
70
|
-
const validator = this.pluginRegistry.validators.find((c) => c.name ==
|
133
|
+
validate(ruleName, value, options) {
|
134
|
+
const validator = this.pluginRegistry.validators.find((c) => c.name == ruleName);
|
71
135
|
if (!validator) {
|
72
136
|
return {
|
73
|
-
name:
|
137
|
+
name: ruleName,
|
74
138
|
result: false,
|
75
|
-
message: AXTranslator.get('validation.messages.invalid-rull-name'),
|
76
|
-
value
|
139
|
+
message: AXTranslator.get('validation.messages.invalid-rull-name', { name: ruleName }),
|
140
|
+
value
|
77
141
|
};
|
78
142
|
}
|
79
|
-
return validator.validate(
|
143
|
+
return validator.validate(value, options);
|
80
144
|
}
|
81
|
-
|
145
|
+
ruleFor(value) {
|
82
146
|
return new AXValidationRuleChain(this, value);
|
83
147
|
}
|
84
148
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationService, deps: [{ token: AXValidationRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
@@ -95,13 +159,13 @@ class AXValidationRuleChain {
|
|
95
159
|
this.rules = [];
|
96
160
|
this.validationSummary = { result: true, rules: [] };
|
97
161
|
}
|
98
|
-
addRule(name,
|
99
|
-
this.rules.push({ name,
|
162
|
+
addRule(name, options) {
|
163
|
+
this.rules.push({ name, options });
|
100
164
|
return this;
|
101
165
|
}
|
102
|
-
async
|
166
|
+
async validate() {
|
103
167
|
for (const rule of this.rules) {
|
104
|
-
const result = await this.validationService.validate(rule.name, rule.
|
168
|
+
const result = await this.validationService.validate(rule.name, this.initialValue, rule.options);
|
105
169
|
this.validationSummary.rules.push(result);
|
106
170
|
if (!result.result) {
|
107
171
|
this.validationSummary.result = false;
|
@@ -129,7 +193,7 @@ class AXValidationModule {
|
|
129
193
|
};
|
130
194
|
}
|
131
195
|
constructor(pluginRegistry) {
|
132
|
-
pluginRegistry.register(new
|
196
|
+
pluginRegistry.register(new AXRegexValidationRule(), new AXRequiredValidationRule(), new AXCallbackValidationRule(), new AXMinLengthValidationRule(), new AXMaxLengthValidationRule(), new AXLengthValidationRule());
|
133
197
|
}
|
134
198
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule, deps: [{ token: AXValidationRegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
135
199
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule }); }
|
@@ -146,5 +210,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
146
210
|
* Generated bundle index. Do not edit.
|
147
211
|
*/
|
148
212
|
|
149
|
-
export {
|
213
|
+
export { AXCallbackValidationRule, AXLengthValidationRule, AXMaxLengthValidationRule, AXMinLengthValidationRule, AXRegexValidationRule, AXRequiredValidationRule, AXValidationModule, AXValidationRegistryService, AXValidationService };
|
150
214
|
//# sourceMappingURL=acorex-core-validation.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-core-validation.mjs","sources":["../../../../libs/core/validation/src/lib/regex-validator.ts","../../../../libs/core/validation/src/lib/required-validator.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, AXValidationRuleResult } from \"./validation\";\n\nexport class AXRegexValidator implements AXValidationRule {\n\n get name(): string {\n return 'regex';\n }\n\n validate(context: { value: string, pattern: string | RegExp }): AXValidationRuleResult {\n // Convert string pattern to RegExp if necessary\n const regexPattern = typeof context.pattern === 'string' ? new RegExp(context.pattern) : context.pattern;\n\n const isValid = regexPattern.test(context.value);\n return {\n name: this.name,\n result: isValid,\n message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,\n value: context.value\n };\n }\n\n}","import { find, isArray, isEmpty, isNull, isNumber, isString, isUndefined } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleResult } from \"./validation\";\n\nexport class AXRequiredValidator implements AXValidationRule {\n\n get name(): string {\n return 'required';\n }\n\n validate(context: { 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(context.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: context.value\n };\n }\n}","import { Injectable } from \"@angular/core\";\nimport { AXValidationRule, AXValidationContext, 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(name: string, context: AXValidationContext): AXValidationRuleResult | Promise<AXValidationRuleResult> {\n const validator = this.pluginRegistry.validators.find((c) => c.name == name);\n if (!validator) {\n return {\n name: name,\n result: false,\n message: AXTranslator.get('validation.messages.invalid-rull-name'),\n value: context.value\n };\n }\n return validator.validate(context);\n }\n\n\n chain(value: unknown) {\n return new AXValidationRuleChain(this, value);\n }\n}\n\nclass AXValidationRuleChain {\n private rules: { name: string, context: AXValidationContext }[] = [];\n private validationSummary: AXValidationSummary = { result: true, rules: [] };\n\n constructor(private validationService: AXValidationService, private initialValue: unknown) { }\n\n addRule(name: string, context?: Omit<AXValidationContext, 'value'>): AXValidationRuleChain {\n this.rules.push({ name, context: { ...context, value: this.initialValue } });\n return this;\n }\n\n async execute(): Promise<AXValidationSummary> {\n for (const rule of this.rules) {\n const result = await this.validationService.validate(rule.name, rule.context);\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 { AXRegexValidator } from './regex-validator';\nimport { AXRequiredValidator } from './required-validator';\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(new AXRegexValidator(), new AXRequiredValidator())\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/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":";;;;;MAca,qBAAqB,CAAA;AAE9B,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,OAAO,CAAC;KAClB;IAED,QAAQ,CAAC,KAAa,EAAE,OAAqC,EAAA;;QAEzD,MAAM,YAAY,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAEzG,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,OAAO,GAAG,EAAE,GAAG,CAAwC,qCAAA,EAAA,YAAY,CAAG,CAAA,CAAA;AAC/E,YAAA,KAAK,EAAE,KAAK;SACf,CAAC;KACL;AAEJ;;MCnBY,wBAAwB,CAAA;AAEjC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,UAAU,CAAC;KACrB;AAED,IAAA,QAAQ,CAAC,KAAe,EAAA;AACpB,QAAA,MAAM,KAAK,GAAG;AACV,YAAA,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAChD,YAAA,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;AACrD,YAAA,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAA,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;SAChD,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC;QAC5B,MAAM,OAAO,GAAG,UAAU,GAAG,wBAAwB,GAAG,IAAI,CAAC;QAE7D,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,OAAO,EAAE,OAAO;YAChB,KAAK;SACR,CAAC;KACL;AACJ;;MCxBY,wBAAwB,CAAA;AAEjC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,UAAU,CAAC;KACrB;IAED,QAAQ,CAAC,KAAQ,EAAE,OAA2C,EAAA;AAC1D,QAAA,MAAM,gBAAgB,GAAG,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAC7G,QAAA,MAAM,YAAY,GAAG,CAAC,MAA6C,MAAM;YACrE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,YAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;AAC7B,YAAA,KAAK,EAAE,KAAK;AACf,SAAA,CAAC,CAAC;QAEH,IAAI,gBAAgB,YAAY,OAAO,EAAE;AACrC,YAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,SAAA;AAED,QAAA,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACzC;AACJ;;MCxBY,yBAAyB,CAAA;AAClC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,WAAW,CAAC;KACtB;IAED,QAAQ,CAAC,KAAa,EAAE,OAAyC,EAAA;QAC7D,MAAM,OAAO,GAAG,KAAK,EAAE,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;QAC/C,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,OAAO,EAAE,OAAO,GAAG,EAAE,GAAG,CAAA,2BAAA,EAA8B,OAAO,CAAC,KAAK,CAAmB,iBAAA,CAAA;AACtF,YAAA,KAAK,EAAE,KAAK;SACf,CAAC;KACL;AACJ;;MCbY,yBAAyB,CAAA;AAClC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,WAAW,CAAC;KACtB;IAED,QAAQ,CAAC,KAAa,EAAE,OAAyC,EAAA;QAC7D,MAAM,OAAO,GAAG,KAAK,EAAE,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;QAC/C,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,OAAO,EAAE,OAAO,GAAG,EAAE,GAAG,CAAA,0BAAA,EAA6B,OAAO,CAAC,KAAK,CAAc,YAAA,CAAA;AAChF,YAAA,KAAK,EAAE,KAAK;SACf,CAAC;KACL;AACJ;;MCbY,sBAAsB,CAAA;AAC/B,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,QAAQ,CAAC;KACnB;IAED,QAAQ,CAAC,KAAa,EAAE,OAAsC,EAAA;AAC1D,QAAA,MAAM,OAAO,GAAG,KAAK,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,KAAK,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;QAC7E,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,CAAA,0BAAA,EAA6B,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,GAAG,CAAQ,MAAA,CAAA;AAC7F,YAAA,KAAK,EAAE,KAAK;SACf,CAAC;KACL;AACJ;;MCrBY,2BAA2B,CAAA;AAHxC,IAAA,WAAA,GAAA;QAIY,IAAO,CAAA,OAAA,GAAuB,EAAE,CAAC;AAS5C,KAAA;IAPG,QAAQ,CAAC,GAAG,MAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACvF;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;8GATQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;MAcY,mBAAmB,CAAA;AAC5B,IAAA,WAAA,CACY,cAA2C,EAAA;QAA3C,IAAc,CAAA,cAAA,GAAd,cAAc,CAA6B;KAClD;AAEL,IAAA,QAAQ,CAAC,QAAgB,EAAE,KAAc,EAAE,OAAiC,EAAA;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;AACH,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACtF,KAAK;aACR,CAAC;AACL,SAAA;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC7C;AAGD,IAAA,OAAO,CAAC,KAAc,EAAA;AAClB,QAAA,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACjD;8GArBQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;AAyBlC,MAAM,qBAAqB,CAAA;IAIvB,WAAoB,CAAA,iBAAsC,EAAU,YAAqB,EAAA;QAArE,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAS;QAHjF,IAAK,CAAA,KAAA,GAA0D,EAAE,CAAC;QAClE,IAAiB,CAAA,iBAAA,GAAwB,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KAEiB;IAE9F,OAAO,CAA6C,IAAO,EAAE,OAAuC,EAAA;QAChG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,MAAM,QAAQ,GAAA;AACV,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,KAAK,CAAC;AACzC,aAAA;AACJ,SAAA;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AACJ;;MCnDY,kBAAkB,CAAA;IAE3B,OAAO,OAAO,CAAC,MAA4C,EAAA;QACvD,OAAO;AACH,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE;AACP,gBAAA;AACI,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,UAAU,EAAE,CAAC,cAA2C,KAAK,MAAK;AAC9D,wBAAA,IAAI,MAAM,EAAE,UAAU,EAAE,MAAM;4BAC1B,cAAc,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;qBACrD;oBACD,IAAI,EAAE,CAAC,2BAA2B,CAAC;AACnC,oBAAA,KAAK,EAAE,IAAI;AACd,iBAAA;AACJ,aAAA;SACJ,CAAC;KACL;AAED,IAAA,WAAA,CAAY,cAA2C,EAAA;QACnD,cAAc,CAAC,QAAQ,CACnB,IAAI,qBAAqB,EAAE,EAC3B,IAAI,wBAAwB,EAAE,EAC9B,IAAI,wBAAwB,EAAE,EAC9B,IAAI,yBAAyB,EAAE,EAC/B,IAAI,yBAAyB,EAAE,EAC/B,IAAI,sBAAsB,EAAE,CAC/B,CAAA;KACJ;8GA5BQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,EAAE;AACd,iBAAA,CAAA;;;ACbD;;AAEG;;;;"}
|
package/package.json
CHANGED
package/validation/index.d.ts
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
export * from './lib/validation';
|
2
|
-
export * from './lib/regex-
|
3
|
-
export * from './lib/required-
|
2
|
+
export * from './lib/rules/regex-rule';
|
3
|
+
export * from './lib/rules/required-rule';
|
4
|
+
export * from './lib/rules/callback-rule';
|
5
|
+
export * from './lib/rules/minlength-rule';
|
6
|
+
export * from './lib/rules/maxlength-rule';
|
7
|
+
export * from './lib/rules/length-rule';
|
4
8
|
export * from './lib/validation.service';
|
5
9
|
export * from './lib/validation.module';
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
|
2
|
+
export type AXCallbackValidation<T> = (value: T) => Promise<{
|
3
|
+
result: boolean;
|
4
|
+
message?: string;
|
5
|
+
}> | {
|
6
|
+
result: boolean;
|
7
|
+
message?: string;
|
8
|
+
};
|
9
|
+
export interface AXCallbackValidationRuleOptions<T> extends AXValidationRuleOptions {
|
10
|
+
validate: AXCallbackValidation<T>;
|
11
|
+
}
|
12
|
+
declare module '../validation' {
|
13
|
+
interface AXValidationRuleOptionsMap {
|
14
|
+
'callback': AXCallbackValidationRuleOptions<unknown>;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
export declare class AXCallbackValidationRule<T> implements AXValidationRule {
|
18
|
+
get name(): string;
|
19
|
+
validate(value: T, options: AXCallbackValidationRuleOptions<T>): AXValidationRuleResult | Promise<AXValidationRuleResult>;
|
20
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
|
2
|
+
export interface AXLengthValidationRuleOptions extends AXValidationRuleOptions {
|
3
|
+
min: number;
|
4
|
+
max: number;
|
5
|
+
}
|
6
|
+
declare module '../validation' {
|
7
|
+
interface AXValidationRuleOptionsMap {
|
8
|
+
'length': AXLengthValidationRuleOptions;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
export declare class AXLengthValidationRule implements AXValidationRule {
|
12
|
+
get name(): string;
|
13
|
+
validate(value: string, options: AXLengthValidationRuleOptions): AXValidationRuleResult;
|
14
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
|
2
|
+
export interface AXMaxLengthValidationRuleOptions extends AXValidationRuleOptions {
|
3
|
+
value: number;
|
4
|
+
}
|
5
|
+
declare module '../validation' {
|
6
|
+
interface AXValidationRuleOptionsMap {
|
7
|
+
'maxLength': AXMaxLengthValidationRuleOptions;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
export declare class AXMaxLengthValidationRule implements AXValidationRule {
|
11
|
+
get name(): string;
|
12
|
+
validate(value: string, options: AXMaxLengthValidationRuleOptions): AXValidationRuleResult;
|
13
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
|
2
|
+
export interface AXMinLengthValidationRuleOptions extends AXValidationRuleOptions {
|
3
|
+
value: number;
|
4
|
+
}
|
5
|
+
declare module '../validation' {
|
6
|
+
interface AXValidationRuleOptionsMap {
|
7
|
+
'minLength': AXMinLengthValidationRuleOptions;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
export declare class AXMinLengthValidationRule implements AXValidationRule {
|
11
|
+
get name(): string;
|
12
|
+
validate(value: string, options: AXMinLengthValidationRuleOptions): AXValidationRuleResult;
|
13
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
|
2
|
+
export interface AXRegexValidationRuleOptions extends AXValidationRuleOptions {
|
3
|
+
pattern: string | RegExp;
|
4
|
+
}
|
5
|
+
declare module '../validation' {
|
6
|
+
interface AXValidationRuleOptionsMap {
|
7
|
+
'regex': AXRegexValidationRuleOptions;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
export declare class AXRegexValidationRule implements AXValidationRule {
|
11
|
+
get name(): string;
|
12
|
+
validate(value: string, options: AXRegexValidationRuleOptions): AXValidationRuleResult;
|
13
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from "../validation";
|
2
|
+
export interface AXRequiredValidationRuleOptions extends AXValidationRuleOptions {
|
3
|
+
}
|
4
|
+
declare module '../validation' {
|
5
|
+
interface AXValidationRuleOptionsMap {
|
6
|
+
'required': AXRequiredValidationRuleOptions;
|
7
|
+
}
|
8
|
+
}
|
9
|
+
export declare class AXRequiredValidationRule implements AXValidationRule {
|
10
|
+
get name(): string;
|
11
|
+
validate(value?: unknown): AXValidationRuleResult;
|
12
|
+
}
|
@@ -1,15 +1,16 @@
|
|
1
|
-
export interface
|
2
|
-
value: unknown;
|
1
|
+
export interface AXValidationRuleOptions {
|
3
2
|
[key: string]: unknown;
|
4
3
|
}
|
4
|
+
export interface AXValidationRuleOptionsMap {
|
5
|
+
}
|
5
6
|
export interface AXValidationRule {
|
6
7
|
get name(): string;
|
7
|
-
validate(
|
8
|
+
validate(value: unknown, options?: AXValidationRuleOptions): AXValidationRuleResult | Promise<AXValidationRuleResult>;
|
8
9
|
}
|
9
10
|
export interface AXValidationRuleResult {
|
10
11
|
name: string;
|
11
12
|
value?: unknown;
|
12
|
-
message?: string;
|
13
|
+
message?: string | null;
|
13
14
|
result: boolean;
|
14
15
|
}
|
15
16
|
export interface AXValidationSummary {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { AXValidationRule,
|
1
|
+
import { AXValidationRule, AXValidationRuleOptions, AXValidationRuleOptionsMap, AXValidationRuleResult, AXValidationSummary } from "./validation";
|
2
2
|
import * as i0 from "@angular/core";
|
3
3
|
export declare class AXValidationRegistryService {
|
4
4
|
private plugins;
|
@@ -10,8 +10,8 @@ export declare class AXValidationRegistryService {
|
|
10
10
|
export declare class AXValidationService {
|
11
11
|
private pluginRegistry;
|
12
12
|
constructor(pluginRegistry: AXValidationRegistryService);
|
13
|
-
validate(
|
14
|
-
|
13
|
+
validate(ruleName: string, value: unknown, options?: AXValidationRuleOptions): AXValidationRuleResult | Promise<AXValidationRuleResult>;
|
14
|
+
ruleFor(value: unknown): AXValidationRuleChain;
|
15
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXValidationService, never>;
|
16
16
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXValidationService>;
|
17
17
|
}
|
@@ -21,7 +21,7 @@ declare class AXValidationRuleChain {
|
|
21
21
|
private rules;
|
22
22
|
private validationSummary;
|
23
23
|
constructor(validationService: AXValidationService, initialValue: unknown);
|
24
|
-
addRule(name:
|
25
|
-
|
24
|
+
addRule<K extends keyof AXValidationRuleOptionsMap>(name: K, options?: AXValidationRuleOptionsMap[K]): AXValidationRuleChain;
|
25
|
+
validate(): Promise<AXValidationSummary>;
|
26
26
|
}
|
27
27
|
export {};
|
@@ -1,17 +0,0 @@
|
|
1
|
-
export class AXRegexValidator {
|
2
|
-
get name() {
|
3
|
-
return 'regex';
|
4
|
-
}
|
5
|
-
validate(context) {
|
6
|
-
// Convert string pattern to RegExp if necessary
|
7
|
-
const regexPattern = typeof context.pattern === 'string' ? new RegExp(context.pattern) : context.pattern;
|
8
|
-
const isValid = regexPattern.test(context.value);
|
9
|
-
return {
|
10
|
-
name: this.name,
|
11
|
-
result: isValid,
|
12
|
-
message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,
|
13
|
-
value: context.value
|
14
|
-
};
|
15
|
-
}
|
16
|
-
}
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXgtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi9yZWdleC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixJQUFJLElBQUk7UUFDSixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQW9EO1FBQ3pELGdEQUFnRDtRQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFekcsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0MsWUFBWSxHQUFHO1lBQy9FLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUN2QixDQUFDO0lBQ04sQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEFYUmVnZXhWYWxpZGF0b3IgaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcblxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAncmVnZXgnO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKGNvbnRleHQ6IHsgdmFsdWU6IHN0cmluZywgcGF0dGVybjogc3RyaW5nIHwgUmVnRXhwIH0pOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgcGF0dGVybiB0byBSZWdFeHAgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGNvbnN0IHJlZ2V4UGF0dGVybiA9IHR5cGVvZiBjb250ZXh0LnBhdHRlcm4gPT09ICdzdHJpbmcnID8gbmV3IFJlZ0V4cChjb250ZXh0LnBhdHRlcm4pIDogY29udGV4dC5wYXR0ZXJuO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSByZWdleFBhdHRlcm4udGVzdChjb250ZXh0LnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6IGBUaGUgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm4gJHtyZWdleFBhdHRlcm59LmAsXG4gICAgICAgICAgICB2YWx1ZTogY29udGV4dC52YWx1ZVxuICAgICAgICB9O1xuICAgIH1cblxufSJdfQ==
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import { find, isArray, isEmpty, isNull, isNumber, isString, isUndefined } from "lodash-es";
|
2
|
-
export class AXRequiredValidator {
|
3
|
-
get name() {
|
4
|
-
return 'required';
|
5
|
-
}
|
6
|
-
validate(context) {
|
7
|
-
const rules = [
|
8
|
-
{ test: val => isNull(val) || isUndefined(val) },
|
9
|
-
{ test: val => isString(val) && isEmpty(val.trim()) },
|
10
|
-
{ test: val => isNumber(val) && isNaN(val) },
|
11
|
-
{ test: val => isArray(val) && isEmpty(val) }
|
12
|
-
];
|
13
|
-
const failedRule = find(rules, rule => rule.test(context.value));
|
14
|
-
const isValid = !failedRule;
|
15
|
-
const message = failedRule ? "This filed is required" : null;
|
16
|
-
return {
|
17
|
-
name: this.name,
|
18
|
-
result: isValid,
|
19
|
-
message: message,
|
20
|
-
value: context.value
|
21
|
-
};
|
22
|
-
}
|
23
|
-
}
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi9yZXF1aXJlZC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc1RixNQUFNLE9BQU8sbUJBQW1CO0lBRTVCLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBNEI7UUFDakMsTUFBTSxLQUFLLEdBQUc7WUFDVixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3JELEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDaEQsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU3RCxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7U0FDdkIsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbmQsIGlzQXJyYXksIGlzRW1wdHksIGlzTnVsbCwgaXNOdW1iZXIsIGlzU3RyaW5nLCBpc1VuZGVmaW5lZCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBBWFJlcXVpcmVkVmFsaWRhdG9yIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZShjb250ZXh0OiB7IHZhbHVlPzogdW5rbm93biB9KTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gW1xuICAgICAgICAgICAgeyB0ZXN0OiB2YWwgPT4gaXNOdWxsKHZhbCkgfHwgaXNVbmRlZmluZWQodmFsKSB9LFxuICAgICAgICAgICAgeyB0ZXN0OiB2YWwgPT4gaXNTdHJpbmcodmFsKSAmJiBpc0VtcHR5KHZhbC50cmltKCkpIH0sXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc051bWJlcih2YWwpICYmIGlzTmFOKHZhbCkgfSxcbiAgICAgICAgICAgIHsgdGVzdDogdmFsID0+IGlzQXJyYXkodmFsKSAmJiBpc0VtcHR5KHZhbCkgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGZhaWxlZFJ1bGUgPSBmaW5kKHJ1bGVzLCBydWxlID0+IHJ1bGUudGVzdChjb250ZXh0LnZhbHVlKSk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSAhZmFpbGVkUnVsZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGZhaWxlZFJ1bGUgPyBcIlRoaXMgZmlsZWQgaXMgcmVxdWlyZWRcIiA6IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICB2YWx1ZTogY29udGV4dC52YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
|