@acorex/core 7.17.21 → 7.17.23
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/utils/lib/auto-unsubscribe.mjs +1 -1
- package/esm2022/validation/index.mjs +13 -3
- package/esm2022/validation/lib/rules/callback-rule.mjs +19 -0
- package/esm2022/validation/lib/rules/equal-rule.mjs +19 -0
- package/esm2022/validation/lib/rules/length-rule.mjs +15 -0
- package/esm2022/validation/lib/rules/less-than-rule.mjs +17 -0
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +17 -0
- package/esm2022/validation/lib/rules/minlength-rule.mjs +16 -0
- package/esm2022/validation/lib/rules/regex-rule.mjs +34 -0
- package/esm2022/validation/lib/rules/required-rule.mjs +25 -0
- package/esm2022/validation/lib/validation.config.mjs +34 -0
- package/esm2022/validation/lib/validation.mjs +1 -1
- package/esm2022/validation/lib/validation.module.mjs +14 -4
- package/esm2022/validation/lib/validation.service.mjs +26 -16
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +193 -32
- package/fesm2022/acorex-core-validation.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/lib/auto-unsubscribe.d.ts +2 -2
- package/validation/index.d.ts +8 -2
- package/validation/lib/rules/callback-rule.d.ts +20 -0
- package/validation/lib/rules/equal-rule.d.ts +14 -0
- package/validation/lib/rules/length-rule.d.ts +14 -0
- package/validation/lib/rules/less-than-rule.d.ts +13 -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.config.d.ts +15 -0
- package/validation/lib/validation.d.ts +8 -5
- package/validation/lib/validation.service.d.ts +9 -6
- 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,57 +1,208 @@
|
|
1
|
-
import {
|
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
|
-
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
|
-
|
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
|
+
}
|
29
|
+
const isValid = regexPattern.test(value);
|
14
30
|
return {
|
15
|
-
|
31
|
+
rule: this.name,
|
16
32
|
result: isValid,
|
17
|
-
message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,
|
18
|
-
value:
|
33
|
+
message: isValid ? '' : options?.message ?? `The value does not match the pattern ${regexPattern}.`,
|
34
|
+
value: value
|
19
35
|
};
|
20
36
|
}
|
21
37
|
}
|
22
38
|
|
23
|
-
class
|
39
|
+
class AXRequiredValidationRule {
|
24
40
|
get name() {
|
25
41
|
return 'required';
|
26
42
|
}
|
27
|
-
validate(
|
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()) },
|
31
47
|
{ test: val => isNumber(val) && isNaN(val) },
|
32
48
|
{ test: val => isArray(val) && isEmpty(val) }
|
33
49
|
];
|
34
|
-
const failedRule = find(rules, rule => rule.test(
|
50
|
+
const failedRule = find(rules, rule => rule.test(value));
|
35
51
|
const isValid = !failedRule;
|
36
|
-
const message = failedRule ?
|
52
|
+
const message = failedRule ? options?.message ?? AXTranslator.get("validation.messages.required", { name: options?.['title'] ?? options?.['name'] }) : null;
|
37
53
|
return {
|
38
|
-
|
54
|
+
rule: this.name,
|
39
55
|
result: isValid,
|
40
56
|
message: message,
|
41
|
-
value
|
57
|
+
value
|
58
|
+
};
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
class AXCallbackValidationRule {
|
63
|
+
get name() {
|
64
|
+
return 'callback';
|
65
|
+
}
|
66
|
+
validate(value, options) {
|
67
|
+
const validationResult = options?.validate(value) || { result: false, message: "Invalid callback function" };
|
68
|
+
const createResult = (result) => ({
|
69
|
+
rule: this.name,
|
70
|
+
result: result.result,
|
71
|
+
message: result.message ?? options?.message ?? '',
|
72
|
+
value: value
|
73
|
+
});
|
74
|
+
if (validationResult instanceof Promise) {
|
75
|
+
return validationResult.then(createResult);
|
76
|
+
}
|
77
|
+
return createResult(validationResult);
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
class AXMinLengthValidationRule {
|
82
|
+
get name() {
|
83
|
+
return 'minLength';
|
84
|
+
}
|
85
|
+
validate(value, options) {
|
86
|
+
const isValid = isEmpty(value) ? true : (value?.length >= options.value);
|
87
|
+
return {
|
88
|
+
rule: this.name,
|
89
|
+
result: isValid,
|
90
|
+
message: isValid ? '' : options?.message ?? `The value must be at least ${options.value} characters long.`,
|
91
|
+
value: value
|
92
|
+
};
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
// ax-max-length-validation-rule.ts
|
97
|
+
class AXMaxLengthValidationRule {
|
98
|
+
get name() {
|
99
|
+
return 'maxLength';
|
100
|
+
}
|
101
|
+
validate(value, options) {
|
102
|
+
const isValid = isEmpty(value) ? true : (value?.length <= options.value);
|
103
|
+
return {
|
104
|
+
rule: this.name,
|
105
|
+
result: isValid,
|
106
|
+
message: isValid ? '' : options?.message ?? `The value must not exceed ${options.value} characters.`,
|
107
|
+
value: value
|
42
108
|
};
|
43
109
|
}
|
44
110
|
}
|
45
111
|
|
112
|
+
class AXLengthValidationRule {
|
113
|
+
get name() {
|
114
|
+
return 'length';
|
115
|
+
}
|
116
|
+
validate(value, options) {
|
117
|
+
const isValid = value?.length >= options.min && value?.length <= options.max;
|
118
|
+
return {
|
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 = isEmpty(value) ? false : value < options.value;
|
152
|
+
return {
|
153
|
+
rule: this.name,
|
154
|
+
result: isValid,
|
155
|
+
message: isValid ? null : options?.message ?? `The value must be less than ${options.value}.`,
|
156
|
+
value: value
|
157
|
+
};
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
const AX_VALIDATION_CONFIG = new InjectionToken('AX_VALIDATION_CONFIG', {
|
162
|
+
providedIn: 'root',
|
163
|
+
factory: () => {
|
164
|
+
return AXValidationDefaultConfig;
|
165
|
+
},
|
166
|
+
});
|
167
|
+
const AXValidationDefaultConfig = {
|
168
|
+
rules: {
|
169
|
+
email: {
|
170
|
+
rule: 'regex',
|
171
|
+
options: {
|
172
|
+
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,}))$/,
|
173
|
+
message: AXTranslator.get('validation.messages.email'),
|
174
|
+
}
|
175
|
+
},
|
176
|
+
phone: {
|
177
|
+
rule: 'regex',
|
178
|
+
options: {
|
179
|
+
pattern: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/,
|
180
|
+
message: AXTranslator.get('validation.messages.phone'),
|
181
|
+
}
|
182
|
+
},
|
183
|
+
},
|
184
|
+
};
|
185
|
+
function validationConfig(config = {}) {
|
186
|
+
const result = {
|
187
|
+
...AXValidationDefaultConfig,
|
188
|
+
...config,
|
189
|
+
};
|
190
|
+
return result;
|
191
|
+
}
|
192
|
+
|
46
193
|
class AXValidationRegistryService {
|
47
194
|
constructor() {
|
48
195
|
this.plugins = [];
|
196
|
+
this.configs = inject(AX_VALIDATION_CONFIG);
|
197
|
+
}
|
198
|
+
get customRules() {
|
199
|
+
return this.configs.rules;
|
49
200
|
}
|
50
201
|
register(...plugin) {
|
51
202
|
this.plugins.push(...plugin.filter(p => !this.plugins.some(c => c.name == p.name)));
|
52
203
|
}
|
53
|
-
get
|
54
|
-
return this.plugins;
|
204
|
+
get(ruleName) {
|
205
|
+
return this.plugins.find((c) => c.name == ruleName);
|
55
206
|
}
|
56
207
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
57
208
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, providedIn: 'root' }); }
|
@@ -66,19 +217,24 @@ class AXValidationService {
|
|
66
217
|
constructor(pluginRegistry) {
|
67
218
|
this.pluginRegistry = pluginRegistry;
|
68
219
|
}
|
69
|
-
validate(
|
70
|
-
const
|
71
|
-
|
220
|
+
validate(ruleName, value, options) {
|
221
|
+
const customRule = this.pluginRegistry.customRules[ruleName];
|
222
|
+
const validator = this.pluginRegistry.get(ruleName);
|
223
|
+
if (!validator && !customRule) {
|
72
224
|
return {
|
73
|
-
|
225
|
+
rule: ruleName,
|
74
226
|
result: false,
|
75
|
-
message: AXTranslator.get('validation.messages.invalid-rull-name'),
|
76
|
-
value
|
227
|
+
message: AXTranslator.get('validation.messages.invalid-rull-name', { name: ruleName }),
|
228
|
+
value
|
77
229
|
};
|
78
230
|
}
|
79
|
-
|
231
|
+
if (validator)
|
232
|
+
return validator.validate(value, options);
|
233
|
+
else {
|
234
|
+
return this.validate(customRule.rule, value, customRule.options);
|
235
|
+
}
|
80
236
|
}
|
81
|
-
|
237
|
+
ruleFor(value) {
|
82
238
|
return new AXValidationRuleChain(this, value);
|
83
239
|
}
|
84
240
|
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 +251,13 @@ class AXValidationRuleChain {
|
|
95
251
|
this.rules = [];
|
96
252
|
this.validationSummary = { result: true, rules: [] };
|
97
253
|
}
|
98
|
-
addRule(name,
|
99
|
-
this.rules.push({ name,
|
254
|
+
addRule(name, options) {
|
255
|
+
this.rules.push({ name, options });
|
100
256
|
return this;
|
101
257
|
}
|
102
|
-
async
|
258
|
+
async validate() {
|
103
259
|
for (const rule of this.rules) {
|
104
|
-
const result = await this.validationService.validate(rule.name, rule.
|
260
|
+
const result = await this.validationService.validate(rule.name, this.initialValue, rule.options);
|
105
261
|
this.validationSummary.rules.push(result);
|
106
262
|
if (!result.result) {
|
107
263
|
this.validationSummary.result = false;
|
@@ -111,6 +267,7 @@ class AXValidationRuleChain {
|
|
111
267
|
}
|
112
268
|
}
|
113
269
|
|
270
|
+
// import { AXNotEqualValidationRule } from './rules/not-equal-rule';
|
114
271
|
class AXValidationModule {
|
115
272
|
static forRoot(config) {
|
116
273
|
return {
|
@@ -129,7 +286,11 @@ class AXValidationModule {
|
|
129
286
|
};
|
130
287
|
}
|
131
288
|
constructor(pluginRegistry) {
|
132
|
-
pluginRegistry.register(new
|
289
|
+
pluginRegistry.register(new AXRegexValidationRule(), new AXRequiredValidationRule(), new AXCallbackValidationRule(),
|
290
|
+
//
|
291
|
+
new AXMinLengthValidationRule(), new AXMaxLengthValidationRule(), new AXLengthValidationRule(),
|
292
|
+
//
|
293
|
+
new AXEqualValidationRule());
|
133
294
|
}
|
134
295
|
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
296
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule }); }
|
@@ -146,5 +307,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
146
307
|
* Generated bundle index. Do not edit.
|
147
308
|
*/
|
148
309
|
|
149
|
-
export {
|
310
|
+
export { AXCallbackValidationRule, AXEqualValidationRule, AXLengthValidationRule, AXLessThanValidationRule, AXMaxLengthValidationRule, AXMinLengthValidationRule, AXRegexValidationRule, AXRequiredValidationRule, AXValidationModule, AXValidationRegistryService, AXValidationService };
|
150
311
|
//# 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":";;;;;MAEa,gBAAgB,CAAA;AAEzB,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,QAAQ,CAAC,OAAoD,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,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,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;YAC/E,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAC;KACL;AAEJ;;MClBY,mBAAmB,CAAA;AAE5B,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,UAAU,CAAC;KACrB;AAED,IAAA,QAAQ,CAAC,OAA4B,EAAA;AACjC,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,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,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,EAAE,OAAO,CAAC,KAAK;SACvB,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;IAEL,QAAQ,CAAC,IAAY,EAAE,OAA4B,EAAA;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;AACH,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,uCAAuC,CAAC;gBAClE,KAAK,EAAE,OAAO,CAAC,KAAK;aACvB,CAAC;AACL,SAAA;AACD,QAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACtC;AAGD,IAAA,KAAK,CAAC,KAAc,EAAA;AAChB,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,GAAqD,EAAE,CAAC;QAC7D,IAAiB,CAAA,iBAAA,GAAwB,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KAEiB;IAE9F,OAAO,CAAC,IAAY,EAAE,OAA4C,EAAA;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7E,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,MAAM,OAAO,GAAA;AACT,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC3B,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9E,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;;MCvDY,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,CAAC,IAAI,gBAAgB,EAAE,EAAE,IAAI,mBAAmB,EAAE,CAAC,CAAA;KAC7E;8GArBQ,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;;;ACTD;;AAEG;;;;"}
|
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/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) => 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 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, isEmpty } 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 { isEmpty } from \"lodash-es\";\nimport { AXValidationRule, AXValidationRuleOptions, AXValidationRuleResult } from \"../validation\";\n\nexport interface AXLessThanValidationRuleOptions extends AXValidationRuleOptions {\n value: number;\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 = isEmpty(value) ? false : value < options.value;\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? null : options?.message ?? `The value must be less than ${options.value}.`,\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';\n// import { AXNotEqualValidationRule } from './rules/not-equal-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 //\n new AXMinLengthValidationRule(),\n new AXMaxLengthValidationRule(),\n new AXLengthValidationRule(),\n //\n new AXEqualValidationRule()\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,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>;
|
package/validation/index.d.ts
CHANGED
@@ -1,5 +1,11 @@
|
|
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';
|
8
|
+
export * from './lib/rules/equal-rule';
|
9
|
+
export * from './lib/rules/less-than-rule';
|
4
10
|
export * from './lib/validation.service';
|
5
11
|
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 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 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 AXLessThanValidationRuleOptions extends AXValidationRuleOptions {
|
3
|
+
value: number;
|
4
|
+
}
|
5
|
+
declare module '../validation' {
|
6
|
+
interface AXValidationRuleOptionsMap {
|
7
|
+
'lessThan': AXLessThanValidationRuleOptions;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
export declare class AXLessThanValidationRule implements AXValidationRule {
|
11
|
+
get name(): string;
|
12
|
+
validate(value: number, options: AXLessThanValidationRuleOptions): AXValidationRuleResult;
|
13
|
+
}
|
@@ -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, options?: AXRequiredValidationRuleOptions): AXValidationRuleResult;
|
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,16 +1,19 @@
|
|
1
|
-
export interface
|
2
|
-
|
1
|
+
export interface AXValidationRuleOptions {
|
2
|
+
message?: string;
|
3
3
|
[key: string]: unknown;
|
4
4
|
}
|
5
|
+
export interface AXValidationRuleOptionsMap {
|
6
|
+
}
|
5
7
|
export interface AXValidationRule {
|
6
8
|
get name(): string;
|
7
|
-
validate(
|
9
|
+
validate(value: unknown, options?: AXValidationRuleOptions): AXValidationRuleResult | Promise<AXValidationRuleResult>;
|
8
10
|
}
|
9
11
|
export interface AXValidationRuleResult {
|
10
|
-
|
12
|
+
rule: string;
|
11
13
|
value?: unknown;
|
12
|
-
message?: string;
|
14
|
+
message?: string | null;
|
13
15
|
result: boolean;
|
16
|
+
[key: string]: unknown;
|
14
17
|
}
|
15
18
|
export interface AXValidationSummary {
|
16
19
|
result: boolean;
|
@@ -1,17 +1,20 @@
|
|
1
|
-
import { AXValidationRule,
|
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
|
9
|
+
get(ruleName: string): AXValidationRule | undefined;
|
7
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXValidationRegistryService, never>;
|
8
11
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXValidationRegistryService>;
|
9
12
|
}
|
10
13
|
export declare class AXValidationService {
|
11
14
|
private pluginRegistry;
|
12
15
|
constructor(pluginRegistry: AXValidationRegistryService);
|
13
|
-
validate(
|
14
|
-
|
16
|
+
validate(ruleName: string, value: unknown, options?: AXValidationRuleOptions): AXValidationRuleResult | Promise<AXValidationRuleResult>;
|
17
|
+
ruleFor(value: unknown): AXValidationRuleChain;
|
15
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXValidationService, never>;
|
16
19
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXValidationService>;
|
17
20
|
}
|
@@ -21,7 +24,7 @@ declare class AXValidationRuleChain {
|
|
21
24
|
private rules;
|
22
25
|
private validationSummary;
|
23
26
|
constructor(validationService: AXValidationService, initialValue: unknown);
|
24
|
-
addRule(name:
|
25
|
-
|
27
|
+
addRule<K extends keyof AXValidationRuleOptionsMap>(name: K, options?: AXValidationRuleOptionsMap[K]): AXValidationRuleChain;
|
28
|
+
validate(): Promise<AXValidationSummary>;
|
26
29
|
}
|
27
30
|
export {};
|