@arikajs/validation 0.0.1
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/LICENSE +21 -0
- package/README.md +271 -0
- package/dist/ErrorBag.d.ts +28 -0
- package/dist/ErrorBag.d.ts.map +1 -0
- package/dist/ErrorBag.js +49 -0
- package/dist/ErrorBag.js.map +1 -0
- package/dist/Rule.d.ts +11 -0
- package/dist/Rule.d.ts.map +1 -0
- package/dist/Rule.js +3 -0
- package/dist/Rule.js.map +1 -0
- package/dist/Rules/Email.d.ts +6 -0
- package/dist/Rules/Email.d.ts.map +1 -0
- package/dist/Rules/Email.js +18 -0
- package/dist/Rules/Email.js.map +1 -0
- package/dist/Rules/Max.d.ts +8 -0
- package/dist/Rules/Max.d.ts.map +1 -0
- package/dist/Rules/Max.js +24 -0
- package/dist/Rules/Max.js.map +1 -0
- package/dist/Rules/Min.d.ts +8 -0
- package/dist/Rules/Min.d.ts.map +1 -0
- package/dist/Rules/Min.js +24 -0
- package/dist/Rules/Min.js.map +1 -0
- package/dist/Rules/Number.d.ts +6 -0
- package/dist/Rules/Number.d.ts.map +1 -0
- package/dist/Rules/Number.js +15 -0
- package/dist/Rules/Number.js.map +1 -0
- package/dist/Rules/Required.d.ts +6 -0
- package/dist/Rules/Required.d.ts.map +1 -0
- package/dist/Rules/Required.js +22 -0
- package/dist/Rules/Required.js.map +1 -0
- package/dist/Rules/RequiredIf.d.ts +11 -0
- package/dist/Rules/RequiredIf.d.ts.map +1 -0
- package/dist/Rules/RequiredIf.js +25 -0
- package/dist/Rules/RequiredIf.js.map +1 -0
- package/dist/Rules/String.d.ts +6 -0
- package/dist/Rules/String.d.ts.map +1 -0
- package/dist/Rules/String.js +15 -0
- package/dist/Rules/String.js.map +1 -0
- package/dist/ValidationError.d.ts +5 -0
- package/dist/ValidationError.d.ts.map +1 -0
- package/dist/ValidationError.js +12 -0
- package/dist/ValidationError.js.map +1 -0
- package/dist/Validator.d.ts +31 -0
- package/dist/Validator.d.ts.map +1 -0
- package/dist/Validator.js +193 -0
- package/dist/Validator.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/src/ErrorBag.d.ts +28 -0
- package/dist/src/ErrorBag.d.ts.map +1 -0
- package/dist/src/ErrorBag.js +49 -0
- package/dist/src/ErrorBag.js.map +1 -0
- package/dist/src/Rule.d.ts +11 -0
- package/dist/src/Rule.d.ts.map +1 -0
- package/dist/src/Rule.js +3 -0
- package/dist/src/Rule.js.map +1 -0
- package/dist/src/Rules/Email.d.ts +6 -0
- package/dist/src/Rules/Email.d.ts.map +1 -0
- package/dist/src/Rules/Email.js +18 -0
- package/dist/src/Rules/Email.js.map +1 -0
- package/dist/src/Rules/Max.d.ts +8 -0
- package/dist/src/Rules/Max.d.ts.map +1 -0
- package/dist/src/Rules/Max.js +24 -0
- package/dist/src/Rules/Max.js.map +1 -0
- package/dist/src/Rules/Min.d.ts +8 -0
- package/dist/src/Rules/Min.d.ts.map +1 -0
- package/dist/src/Rules/Min.js +24 -0
- package/dist/src/Rules/Min.js.map +1 -0
- package/dist/src/Rules/Number.d.ts +6 -0
- package/dist/src/Rules/Number.d.ts.map +1 -0
- package/dist/src/Rules/Number.js +15 -0
- package/dist/src/Rules/Number.js.map +1 -0
- package/dist/src/Rules/Required.d.ts +6 -0
- package/dist/src/Rules/Required.d.ts.map +1 -0
- package/dist/src/Rules/Required.js +22 -0
- package/dist/src/Rules/Required.js.map +1 -0
- package/dist/src/Rules/RequiredIf.d.ts +11 -0
- package/dist/src/Rules/RequiredIf.d.ts.map +1 -0
- package/dist/src/Rules/RequiredIf.js +25 -0
- package/dist/src/Rules/RequiredIf.js.map +1 -0
- package/dist/src/Rules/String.d.ts +6 -0
- package/dist/src/Rules/String.d.ts.map +1 -0
- package/dist/src/Rules/String.js +15 -0
- package/dist/src/Rules/String.js.map +1 -0
- package/dist/src/ValidationError.d.ts +5 -0
- package/dist/src/ValidationError.d.ts.map +1 -0
- package/dist/src/ValidationError.js +12 -0
- package/dist/src/ValidationError.js.map +1 -0
- package/dist/src/Validator.d.ts +31 -0
- package/dist/src/Validator.d.ts.map +1 -0
- package/dist/src/Validator.js +193 -0
- package/dist/src/Validator.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +27 -0
- package/dist/src/index.js.map +1 -0
- package/dist/tests/AdvancedValidation.test.d.ts +2 -0
- package/dist/tests/AdvancedValidation.test.d.ts.map +1 -0
- package/dist/tests/AdvancedValidation.test.js +97 -0
- package/dist/tests/AdvancedValidation.test.js.map +1 -0
- package/dist/tests/Validator.test.d.ts +2 -0
- package/dist/tests/Validator.test.d.ts.map +1 -0
- package/dist/tests/Validator.test.js +133 -0
- package/dist/tests/Validator.test.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.js","sourceRoot":"","sources":["../../src/Rules/String.ts"],"names":[],"mappings":";;;AAEA,MAAa,QAAQ;IACjB,QAAQ,CAAC,KAAU;QACf,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAED,OAAO;QACH,OAAO,kCAAkC,CAAC;IAC9C,CAAC;CACJ;AATD,4BASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationError.d.ts","sourceRoot":"","sources":["../src/ValidationError.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAAhC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAItD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationError = void 0;
|
|
4
|
+
class ValidationError extends Error {
|
|
5
|
+
constructor(errors) {
|
|
6
|
+
super('The given data was invalid.');
|
|
7
|
+
this.errors = errors;
|
|
8
|
+
this.name = 'ValidationError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ValidationError = ValidationError;
|
|
12
|
+
//# sourceMappingURL=ValidationError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../src/ValidationError.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAgB,SAAQ,KAAK;IACtC,YAAmB,MAAgC;QAC/C,KAAK,CAAC,6BAA6B,CAAC,CAAC;QADtB,WAAM,GAAN,MAAM,CAA0B;QAE/C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ;AALD,0CAKC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Rule } from './Rule';
|
|
2
|
+
export declare class Validator {
|
|
3
|
+
private data;
|
|
4
|
+
private initialRules;
|
|
5
|
+
private errorBag;
|
|
6
|
+
private messages;
|
|
7
|
+
private customRules;
|
|
8
|
+
private validatedData;
|
|
9
|
+
constructor(data: Record<string, any>, rules?: Record<string, string | Rule | (string | Rule)[]>, messages?: Record<string, string>);
|
|
10
|
+
/**
|
|
11
|
+
* Determine if the data passes the validation rules.
|
|
12
|
+
*/
|
|
13
|
+
validate(): Promise<boolean>;
|
|
14
|
+
private isRequirementRule;
|
|
15
|
+
fails(): Promise<boolean>;
|
|
16
|
+
errors(): Record<string, string[]>;
|
|
17
|
+
validated(): Record<string, any>;
|
|
18
|
+
/**
|
|
19
|
+
* Register a custom validation rule.
|
|
20
|
+
*/
|
|
21
|
+
extend(name: string, rule: Rule): void;
|
|
22
|
+
private parseRules;
|
|
23
|
+
private createRuleFromString;
|
|
24
|
+
private getValue;
|
|
25
|
+
private setValidatedValue;
|
|
26
|
+
private isEmpty;
|
|
27
|
+
private formatMessage;
|
|
28
|
+
private expandRules;
|
|
29
|
+
private expandWildcards;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=Validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAU9B,qBAAa,SAAS;IAClB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,YAAY,CAAoD;IACxE,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,aAAa,CAA2B;gBAG5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAM,EAC7D,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAczC;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAoDzC,OAAO,CAAC,iBAAiB;IAIZ,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAIlC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAIvC;;OAEG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAI7C,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;CAwB1B"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Validator = void 0;
|
|
4
|
+
const ErrorBag_1 = require("./ErrorBag");
|
|
5
|
+
const Required_1 = require("./Rules/Required");
|
|
6
|
+
const Email_1 = require("./Rules/Email");
|
|
7
|
+
const Min_1 = require("./Rules/Min");
|
|
8
|
+
const Max_1 = require("./Rules/Max");
|
|
9
|
+
const String_1 = require("./Rules/String");
|
|
10
|
+
const Number_1 = require("./Rules/Number");
|
|
11
|
+
const RequiredIf_1 = require("./Rules/RequiredIf");
|
|
12
|
+
class Validator {
|
|
13
|
+
constructor(data, rules = {}, messages = {}) {
|
|
14
|
+
this.messages = {};
|
|
15
|
+
this.customRules = new Map();
|
|
16
|
+
this.validatedData = {};
|
|
17
|
+
this.data = data;
|
|
18
|
+
this.initialRules = rules;
|
|
19
|
+
this.messages = messages;
|
|
20
|
+
this.errorBag = new ErrorBag_1.ErrorBag();
|
|
21
|
+
// Register default rules
|
|
22
|
+
this.customRules.set('required', new Required_1.Required());
|
|
23
|
+
this.customRules.set('email', new Email_1.Email());
|
|
24
|
+
this.customRules.set('string', new String_1.IsString());
|
|
25
|
+
this.customRules.set('number', new Number_1.IsNumber());
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Determine if the data passes the validation rules.
|
|
29
|
+
*/
|
|
30
|
+
async validate() {
|
|
31
|
+
this.errorBag = new ErrorBag_1.ErrorBag();
|
|
32
|
+
this.validatedData = {};
|
|
33
|
+
const expandedRules = this.expandRules(this.initialRules);
|
|
34
|
+
for (const [attribute, rules] of Object.entries(expandedRules)) {
|
|
35
|
+
const ruleSet = this.parseRules(rules);
|
|
36
|
+
const value = this.getValue(attribute);
|
|
37
|
+
const isNullable = ruleSet.some(r => r.name === 'nullable');
|
|
38
|
+
const shouldBail = ruleSet.some(r => r.name === 'bail');
|
|
39
|
+
// Handle nullable
|
|
40
|
+
if (isNullable && (value === null || value === undefined)) {
|
|
41
|
+
this.setValidatedValue(attribute, value);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
let failed = false;
|
|
45
|
+
for (const rule of ruleSet) {
|
|
46
|
+
// Skip pseudo-rules
|
|
47
|
+
if (rule.name === 'nullable' || rule.name === 'bail') {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// If value is null/undefined/empty and rule is NOT 'required' (or similar), skip validation
|
|
51
|
+
if (this.isEmpty(value) && !this.isRequirementRule(rule)) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const passes = await rule.validate(value, attribute);
|
|
55
|
+
if (!passes) {
|
|
56
|
+
const message = this.formatMessage(rule.message(), attribute);
|
|
57
|
+
this.errorBag.add(attribute, message);
|
|
58
|
+
failed = true;
|
|
59
|
+
if (shouldBail) {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (!failed) {
|
|
65
|
+
this.setValidatedValue(attribute, value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return this.errorBag.isEmpty();
|
|
69
|
+
}
|
|
70
|
+
isRequirementRule(rule) {
|
|
71
|
+
return rule instanceof Required_1.Required || rule instanceof RequiredIf_1.RequiredIf;
|
|
72
|
+
}
|
|
73
|
+
async fails() {
|
|
74
|
+
return !(await this.validate());
|
|
75
|
+
}
|
|
76
|
+
errors() {
|
|
77
|
+
return this.errorBag.all();
|
|
78
|
+
}
|
|
79
|
+
validated() {
|
|
80
|
+
return this.validatedData;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Register a custom validation rule.
|
|
84
|
+
*/
|
|
85
|
+
extend(name, rule) {
|
|
86
|
+
this.customRules.set(name, rule);
|
|
87
|
+
}
|
|
88
|
+
parseRules(rules) {
|
|
89
|
+
let parsed;
|
|
90
|
+
if (typeof rules === 'string') {
|
|
91
|
+
parsed = rules.split('|');
|
|
92
|
+
}
|
|
93
|
+
else if (Array.isArray(rules)) {
|
|
94
|
+
parsed = rules;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
parsed = [rules];
|
|
98
|
+
}
|
|
99
|
+
return parsed.flatMap(r => {
|
|
100
|
+
if (typeof r === 'string') {
|
|
101
|
+
return r.split('|').map(sub => this.createRuleFromString(sub));
|
|
102
|
+
}
|
|
103
|
+
return r;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
createRuleFromString(ruleString) {
|
|
107
|
+
const [fullRule, ...rest] = ruleString.split(':');
|
|
108
|
+
const name = fullRule.trim();
|
|
109
|
+
const params = rest.length > 0 ? rest.join(':') : '';
|
|
110
|
+
const parameters = params ? params.split(',') : [];
|
|
111
|
+
switch (name) {
|
|
112
|
+
case 'min':
|
|
113
|
+
return new Min_1.Min(Number(parameters[0]));
|
|
114
|
+
case 'max':
|
|
115
|
+
return new Max_1.Max(Number(parameters[0]));
|
|
116
|
+
case 'required_if':
|
|
117
|
+
return new RequiredIf_1.RequiredIf(parameters[0], parameters[1], this.data);
|
|
118
|
+
case 'nullable':
|
|
119
|
+
case 'bail':
|
|
120
|
+
// Return a dummy rule that we'll handle in the main loop
|
|
121
|
+
return {
|
|
122
|
+
name,
|
|
123
|
+
validate: async () => true,
|
|
124
|
+
message: () => ''
|
|
125
|
+
};
|
|
126
|
+
default:
|
|
127
|
+
const rule = this.customRules.get(name);
|
|
128
|
+
if (!rule) {
|
|
129
|
+
throw new Error(`Validation rule '${name}' not found.`);
|
|
130
|
+
}
|
|
131
|
+
return rule;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
getValue(key) {
|
|
135
|
+
return key.split('.').reduce((o, i) => (o ? o[i] : undefined), this.data);
|
|
136
|
+
}
|
|
137
|
+
setValidatedValue(path, value) {
|
|
138
|
+
const keys = path.split('.');
|
|
139
|
+
let current = this.validatedData;
|
|
140
|
+
for (let i = 0; i < keys.length; i++) {
|
|
141
|
+
const key = keys[i];
|
|
142
|
+
if (i === keys.length - 1) {
|
|
143
|
+
current[key] = value;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
current[key] = current[key] || {};
|
|
147
|
+
current = current[key];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
isEmpty(value) {
|
|
152
|
+
return value === null || value === undefined || value === '';
|
|
153
|
+
}
|
|
154
|
+
formatMessage(message, attribute) {
|
|
155
|
+
return message.replace(':attribute', attribute);
|
|
156
|
+
}
|
|
157
|
+
expandRules(rules) {
|
|
158
|
+
const expanded = {};
|
|
159
|
+
for (const [key, rule] of Object.entries(rules)) {
|
|
160
|
+
if (key.includes('*')) {
|
|
161
|
+
this.expandWildcards(key, rule, this.data, expanded);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
expanded[key] = rule;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return expanded;
|
|
168
|
+
}
|
|
169
|
+
expandWildcards(path, rule, data, expanded) {
|
|
170
|
+
const parts = path.split('.');
|
|
171
|
+
const starIndex = parts.indexOf('*');
|
|
172
|
+
if (starIndex === -1) {
|
|
173
|
+
expanded[path] = rule;
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const before = parts.slice(0, starIndex).join('.');
|
|
177
|
+
const after = parts.slice(starIndex + 1).join('.');
|
|
178
|
+
const collection = this.getValue(before);
|
|
179
|
+
if (Array.isArray(collection)) {
|
|
180
|
+
for (let i = 0; i < collection.length; i++) {
|
|
181
|
+
const subPath = after ? `${before}.${i}.${after}` : `${before}.${i}`;
|
|
182
|
+
if (subPath.includes('*')) {
|
|
183
|
+
this.expandWildcards(subPath, rule, data, expanded);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
expanded[subPath] = rule;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
exports.Validator = Validator;
|
|
193
|
+
//# sourceMappingURL=Validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validator.js","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './Rule';
|
|
2
|
+
export * from './Validator';
|
|
3
|
+
export * from './ErrorBag';
|
|
4
|
+
export * from './ValidationError';
|
|
5
|
+
export * from './Rules/Required';
|
|
6
|
+
export * from './Rules/Email';
|
|
7
|
+
export * from './Rules/Min';
|
|
8
|
+
export * from './Rules/Max';
|
|
9
|
+
export * from './Rules/String';
|
|
10
|
+
export * from './Rules/Number';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Rule"), exports);
|
|
18
|
+
__exportStar(require("./Validator"), exports);
|
|
19
|
+
__exportStar(require("./ErrorBag"), exports);
|
|
20
|
+
__exportStar(require("./ValidationError"), exports);
|
|
21
|
+
__exportStar(require("./Rules/Required"), exports);
|
|
22
|
+
__exportStar(require("./Rules/Email"), exports);
|
|
23
|
+
__exportStar(require("./Rules/Min"), exports);
|
|
24
|
+
__exportStar(require("./Rules/Max"), exports);
|
|
25
|
+
__exportStar(require("./Rules/String"), exports);
|
|
26
|
+
__exportStar(require("./Rules/Number"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,8CAA4B;AAC5B,6CAA2B;AAC3B,oDAAkC;AAClC,mDAAiC;AACjC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,iDAA+B;AAC/B,iDAA+B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare class ErrorBag {
|
|
2
|
+
private errors;
|
|
3
|
+
/**
|
|
4
|
+
* Add an error message for a specific field.
|
|
5
|
+
*/
|
|
6
|
+
add(field: string, message: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* Determine if the error bag is empty.
|
|
9
|
+
*/
|
|
10
|
+
isEmpty(): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Determine if there are any errors.
|
|
13
|
+
*/
|
|
14
|
+
isNotEmpty(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Get all error messages.
|
|
17
|
+
*/
|
|
18
|
+
all(): Record<string, string[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Get the first error message for a specific field.
|
|
21
|
+
*/
|
|
22
|
+
first(field: string): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Determine if a field has an error.
|
|
25
|
+
*/
|
|
26
|
+
has(field: string): boolean;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ErrorBag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBag.d.ts","sourceRoot":"","sources":["../../src/ErrorBag.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAgC;IAE9C;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOhD;;OAEG;IACI,OAAO,IAAI,OAAO;IAIzB;;OAEG;IACI,UAAU,IAAI,OAAO;IAI5B;;OAEG;IACI,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAItC;;OAEG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGrC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorBag = void 0;
|
|
4
|
+
class ErrorBag {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.errors = {};
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Add an error message for a specific field.
|
|
10
|
+
*/
|
|
11
|
+
add(field, message) {
|
|
12
|
+
if (!this.errors[field]) {
|
|
13
|
+
this.errors[field] = [];
|
|
14
|
+
}
|
|
15
|
+
this.errors[field].push(message);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Determine if the error bag is empty.
|
|
19
|
+
*/
|
|
20
|
+
isEmpty() {
|
|
21
|
+
return Object.keys(this.errors).length === 0;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Determine if there are any errors.
|
|
25
|
+
*/
|
|
26
|
+
isNotEmpty() {
|
|
27
|
+
return !this.isEmpty();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get all error messages.
|
|
31
|
+
*/
|
|
32
|
+
all() {
|
|
33
|
+
return this.errors;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the first error message for a specific field.
|
|
37
|
+
*/
|
|
38
|
+
first(field) {
|
|
39
|
+
return this.errors[field] ? this.errors[field][0] : null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Determine if a field has an error.
|
|
43
|
+
*/
|
|
44
|
+
has(field) {
|
|
45
|
+
return !!this.errors[field];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.ErrorBag = ErrorBag;
|
|
49
|
+
//# sourceMappingURL=ErrorBag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBag.js","sourceRoot":"","sources":["../../src/ErrorBag.ts"],"names":[],"mappings":";;;AAAA,MAAa,QAAQ;IAArB;QACY,WAAM,GAA6B,EAAE,CAAC;IA8ClD,CAAC;IA5CG;;OAEG;IACI,GAAG,CAAC,KAAa,EAAE,OAAe;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,OAAO;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,UAAU;QACb,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,GAAG;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAAa;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACJ;AA/CD,4BA+CC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Rule {
|
|
2
|
+
/**
|
|
3
|
+
* Determine if the validation rule passes.
|
|
4
|
+
*/
|
|
5
|
+
validate(value: any, attribute: string, params?: string[]): boolean | Promise<boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Get the validation error message.
|
|
8
|
+
*/
|
|
9
|
+
message(): string;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=Rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rule.d.ts","sourceRoot":"","sources":["../../src/Rule.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACjB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvF;;OAEG;IACH,OAAO,IAAI,MAAM,CAAC;CACrB"}
|
package/dist/src/Rule.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rule.js","sourceRoot":"","sources":["../../src/Rule.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../../src/Rules/Email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,KAAM,YAAW,IAAI;IAC9B,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAQ7B,OAAO,IAAI,MAAM;CAGpB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Email = void 0;
|
|
4
|
+
class Email {
|
|
5
|
+
validate(value) {
|
|
6
|
+
if (!value)
|
|
7
|
+
return true; // Let 'required' handle empty values
|
|
8
|
+
if (typeof value !== 'string')
|
|
9
|
+
return false;
|
|
10
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
11
|
+
return emailRegex.test(value);
|
|
12
|
+
}
|
|
13
|
+
message() {
|
|
14
|
+
return 'The :attribute must be a valid email address.';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.Email = Email;
|
|
18
|
+
//# sourceMappingURL=Email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.js","sourceRoot":"","sources":["../../../src/Rules/Email.ts"],"names":[],"mappings":";;;AAEA,MAAa,KAAK;IACd,QAAQ,CAAC,KAAU;QACf,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,CAAC,qCAAqC;QAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5C,MAAM,UAAU,GAAG,4BAA4B,CAAC;QAChD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACH,OAAO,+CAA+C,CAAC;IAC3D,CAAC;CACJ;AAZD,sBAYC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Max.d.ts","sourceRoot":"","sources":["../../../src/Rules/Max.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,GAAI,YAAW,IAAI;IAC5B,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,EAAE,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAc7B,OAAO,IAAI,MAAM;CAGpB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Max = void 0;
|
|
4
|
+
class Max {
|
|
5
|
+
constructor(max) {
|
|
6
|
+
this.max = max;
|
|
7
|
+
}
|
|
8
|
+
validate(value) {
|
|
9
|
+
if (value === null || value === undefined)
|
|
10
|
+
return true;
|
|
11
|
+
if (typeof value === 'number') {
|
|
12
|
+
return value <= this.max;
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'string' || Array.isArray(value)) {
|
|
15
|
+
return value.length <= this.max;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
message() {
|
|
20
|
+
return `The :attribute must not be greater than ${this.max}.`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.Max = Max;
|
|
24
|
+
//# sourceMappingURL=Max.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Max.js","sourceRoot":"","sources":["../../../src/Rules/Max.ts"],"names":[],"mappings":";;;AAEA,MAAa,GAAG;IAGZ,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,KAAU;QACf,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAEvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QACH,OAAO,2CAA2C,IAAI,CAAC,GAAG,GAAG,CAAC;IAClE,CAAC;CACJ;AAxBD,kBAwBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Min.d.ts","sourceRoot":"","sources":["../../../src/Rules/Min.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,GAAI,YAAW,IAAI;IAC5B,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,EAAE,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAc7B,OAAO,IAAI,MAAM;CAGpB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Min = void 0;
|
|
4
|
+
class Min {
|
|
5
|
+
constructor(min) {
|
|
6
|
+
this.min = min;
|
|
7
|
+
}
|
|
8
|
+
validate(value) {
|
|
9
|
+
if (value === null || value === undefined)
|
|
10
|
+
return true;
|
|
11
|
+
if (typeof value === 'number') {
|
|
12
|
+
return value >= this.min;
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'string' || Array.isArray(value)) {
|
|
15
|
+
return value.length >= this.min;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
message() {
|
|
20
|
+
return `The :attribute must be at least ${this.min}.`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.Min = Min;
|
|
24
|
+
//# sourceMappingURL=Min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Min.js","sourceRoot":"","sources":["../../../src/Rules/Min.ts"],"names":[],"mappings":";;;AAEA,MAAa,GAAG;IAGZ,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,KAAU;QACf,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAEvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QACH,OAAO,mCAAmC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC1D,CAAC;CACJ;AAxBD,kBAwBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Number.d.ts","sourceRoot":"","sources":["../../../src/Rules/Number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,QAAS,YAAW,IAAI;IACjC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAK7B,OAAO,IAAI,MAAM;CAGpB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IsNumber = void 0;
|
|
4
|
+
class IsNumber {
|
|
5
|
+
validate(value) {
|
|
6
|
+
if (value === null || value === undefined)
|
|
7
|
+
return true;
|
|
8
|
+
return typeof value === 'number' && !isNaN(value);
|
|
9
|
+
}
|
|
10
|
+
message() {
|
|
11
|
+
return 'The :attribute must be a number.';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.IsNumber = IsNumber;
|
|
15
|
+
//# sourceMappingURL=Number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Number.js","sourceRoot":"","sources":["../../../src/Rules/Number.ts"],"names":[],"mappings":";;;AAEA,MAAa,QAAQ;IACjB,QAAQ,CAAC,KAAU;QACf,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACH,OAAO,kCAAkC,CAAC;IAC9C,CAAC;CACJ;AATD,4BASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Required.d.ts","sourceRoot":"","sources":["../../../src/Rules/Required.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,QAAS,YAAW,IAAI;IACjC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAgB7B,OAAO,IAAI,MAAM;CAGpB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Required = void 0;
|
|
4
|
+
class Required {
|
|
5
|
+
validate(value) {
|
|
6
|
+
if (value === null || value === undefined) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (typeof value === 'string' && value.trim() === '') {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (Array.isArray(value) && value.length === 0) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
message() {
|
|
18
|
+
return 'The :attribute field is required.';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.Required = Required;
|
|
22
|
+
//# sourceMappingURL=Required.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Required.js","sourceRoot":"","sources":["../../../src/Rules/Required.ts"],"names":[],"mappings":";;;AAEA,MAAa,QAAQ;IACjB,QAAQ,CAAC,KAAU;QACf,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,OAAO,mCAAmC,CAAC;IAC/C,CAAC;CACJ;AApBD,4BAoBC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Rule } from '../Rule';
|
|
2
|
+
export declare class RequiredIf implements Rule {
|
|
3
|
+
private otherField;
|
|
4
|
+
private otherValue;
|
|
5
|
+
private data;
|
|
6
|
+
constructor(otherField: string, otherValue: any, data: any);
|
|
7
|
+
validate(value: any): Promise<boolean>;
|
|
8
|
+
message(): string;
|
|
9
|
+
private getDataValue;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=RequiredIf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequiredIf.d.ts","sourceRoot":"","sources":["../../../src/Rules/RequiredIf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,UAAW,YAAW,IAAI;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,IAAI,CAAM;gBAEN,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAMpD,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5C,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,YAAY;CAGvB"}
|