namefully 1.0.9 → 1.2.0
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 -674
- package/dist/example/index.js +2734 -0
- package/dist/lib/config.d.ts +121 -0
- package/dist/lib/config.js +189 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/constants.d.ts +4 -0
- package/dist/lib/constants.js +31 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/error.d.ts +172 -0
- package/dist/lib/error.js +210 -0
- package/dist/lib/error.js.map +1 -0
- package/dist/lib/{usecases/index.d.ts → example/example.d.ts} +0 -0
- package/dist/lib/full-name.d.ts +71 -0
- package/dist/lib/full-name.js +147 -0
- package/dist/lib/full-name.js.map +1 -0
- package/dist/lib/index.d.ts +16 -6
- package/dist/lib/index.js +29 -8
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/name.d.ts +177 -0
- package/dist/lib/name.js +322 -0
- package/dist/lib/name.js.map +1 -0
- package/dist/lib/namefully.d.ts +303 -208
- package/dist/lib/namefully.js +603 -442
- package/dist/lib/namefully.js.map +1 -1
- package/dist/lib/parser.d.ts +46 -0
- package/dist/lib/parser.js +173 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/src/config.d.ts +121 -0
- package/dist/lib/src/constants.d.ts +4 -0
- package/dist/lib/src/error.d.ts +172 -0
- package/dist/lib/src/full-name.d.ts +71 -0
- package/dist/lib/src/index.d.ts +16 -6
- package/dist/lib/src/name.d.ts +177 -0
- package/dist/lib/src/namefully.d.ts +303 -208
- package/dist/lib/src/parser.d.ts +46 -0
- package/dist/lib/src/types.d.ts +127 -0
- package/dist/lib/src/utils.d.ts +63 -0
- package/dist/lib/src/validator.d.ts +66 -0
- package/dist/lib/types.d.ts +127 -0
- package/dist/lib/types.js +181 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +63 -0
- package/dist/lib/utils.js +138 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/validator.d.ts +66 -0
- package/dist/lib/validator.js +332 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/umd/namefully.js +2191 -2111
- package/dist/umd/namefully.js.map +1 -1
- package/dist/umd/namefully.min.js +1 -1
- package/dist/umd/namefully.min.js.LICENSE.txt +8 -20
- package/dist/umd/namefully.min.js.map +1 -1
- package/package.json +50 -53
- package/readme.md +151 -175
- package/changelog.md +0 -114
- package/dist/lib/core/constants.d.ts +0 -26
- package/dist/lib/core/constants.js +0 -42
- package/dist/lib/core/constants.js.map +0 -1
- package/dist/lib/core/index.d.ts +0 -9
- package/dist/lib/core/index.js +0 -13
- package/dist/lib/core/index.js.map +0 -1
- package/dist/lib/core/parsers/array-name.parser.d.ts +0 -42
- package/dist/lib/core/parsers/array-name.parser.js +0 -84
- package/dist/lib/core/parsers/array-name.parser.js.map +0 -1
- package/dist/lib/core/parsers/array-string.parser.d.ts +0 -48
- package/dist/lib/core/parsers/array-string.parser.js +0 -96
- package/dist/lib/core/parsers/array-string.parser.js.map +0 -1
- package/dist/lib/core/parsers/index.d.ts +0 -11
- package/dist/lib/core/parsers/index.js +0 -11
- package/dist/lib/core/parsers/index.js.map +0 -1
- package/dist/lib/core/parsers/nama.parser.d.ts +0 -34
- package/dist/lib/core/parsers/nama.parser.js +0 -75
- package/dist/lib/core/parsers/nama.parser.js.map +0 -1
- package/dist/lib/core/parsers/parser.d.ts +0 -29
- package/dist/lib/core/parsers/parser.js +0 -3
- package/dist/lib/core/parsers/parser.js.map +0 -1
- package/dist/lib/core/parsers/string.parser.d.ts +0 -61
- package/dist/lib/core/parsers/string.parser.js +0 -63
- package/dist/lib/core/parsers/string.parser.js.map +0 -1
- package/dist/lib/core/utils/utils.d.ts +0 -14
- package/dist/lib/core/utils/utils.js +0 -67
- package/dist/lib/core/utils/utils.js.map +0 -1
- package/dist/lib/models/enums.d.ts +0 -91
- package/dist/lib/models/enums.js +0 -98
- package/dist/lib/models/enums.js.map +0 -1
- package/dist/lib/models/firstname.d.ts +0 -41
- package/dist/lib/models/firstname.js +0 -59
- package/dist/lib/models/firstname.js.map +0 -1
- package/dist/lib/models/index.d.ts +0 -12
- package/dist/lib/models/index.js +0 -15
- package/dist/lib/models/index.js.map +0 -1
- package/dist/lib/models/lastname.d.ts +0 -44
- package/dist/lib/models/lastname.js +0 -86
- package/dist/lib/models/lastname.js.map +0 -1
- package/dist/lib/models/misc.d.ts +0 -80
- package/dist/lib/models/misc.js +0 -3
- package/dist/lib/models/misc.js.map +0 -1
- package/dist/lib/models/name.d.ts +0 -48
- package/dist/lib/models/name.js +0 -72
- package/dist/lib/models/name.js.map +0 -1
- package/dist/lib/models/summary.d.ts +0 -23
- package/dist/lib/models/summary.js +0 -60
- package/dist/lib/models/summary.js.map +0 -1
- package/dist/lib/src/core/constants.d.ts +0 -26
- package/dist/lib/src/core/index.d.ts +0 -9
- package/dist/lib/src/core/parsers/array-name.parser.d.ts +0 -42
- package/dist/lib/src/core/parsers/array-string.parser.d.ts +0 -48
- package/dist/lib/src/core/parsers/index.d.ts +0 -11
- package/dist/lib/src/core/parsers/nama.parser.d.ts +0 -34
- package/dist/lib/src/core/parsers/parser.d.ts +0 -29
- package/dist/lib/src/core/parsers/string.parser.d.ts +0 -61
- package/dist/lib/src/core/utils/utils.d.ts +0 -14
- package/dist/lib/src/models/enums.d.ts +0 -91
- package/dist/lib/src/models/firstname.d.ts +0 -41
- package/dist/lib/src/models/index.d.ts +0 -12
- package/dist/lib/src/models/lastname.d.ts +0 -44
- package/dist/lib/src/models/misc.d.ts +0 -80
- package/dist/lib/src/models/name.d.ts +0 -48
- package/dist/lib/src/models/summary.d.ts +0 -23
- package/dist/lib/src/validators/array-name.validator.d.ts +0 -25
- package/dist/lib/src/validators/array-string.validator.d.ts +0 -43
- package/dist/lib/src/validators/common/validation-error.d.ts +0 -19
- package/dist/lib/src/validators/common/validation-rule.d.ts +0 -69
- package/dist/lib/src/validators/common/validation-type.d.ts +0 -24
- package/dist/lib/src/validators/firstname.validator.d.ts +0 -20
- package/dist/lib/src/validators/fullname.validator.d.ts +0 -21
- package/dist/lib/src/validators/index.d.ts +0 -21
- package/dist/lib/src/validators/lastname.validator.d.ts +0 -20
- package/dist/lib/src/validators/middlename.validator.d.ts +0 -20
- package/dist/lib/src/validators/nama.validator.d.ts +0 -21
- package/dist/lib/src/validators/namon.validator.d.ts +0 -20
- package/dist/lib/src/validators/prefix.validator.d.ts +0 -14
- package/dist/lib/src/validators/string-name.validator.d.ts +0 -20
- package/dist/lib/src/validators/suffix.validator.d.ts +0 -14
- package/dist/lib/src/validators/validator.d.ts +0 -13
- package/dist/lib/usecases/compress.usecase.d.ts +0 -8
- package/dist/lib/usecases/constants.d.ts +0 -7
- package/dist/lib/usecases/describe.usecase.d.ts +0 -12
- package/dist/lib/usecases/format.usecase.d.ts +0 -6
- package/dist/lib/usecases/namefully.usecase.d.ts +0 -14
- package/dist/lib/usecases/shorten.usecase.d.ts +0 -6
- package/dist/lib/validators/array-name.validator.d.ts +0 -25
- package/dist/lib/validators/array-name.validator.js +0 -82
- package/dist/lib/validators/array-name.validator.js.map +0 -1
- package/dist/lib/validators/array-string.validator.d.ts +0 -43
- package/dist/lib/validators/array-string.validator.js +0 -80
- package/dist/lib/validators/array-string.validator.js.map +0 -1
- package/dist/lib/validators/common/validation-error.d.ts +0 -19
- package/dist/lib/validators/common/validation-error.js +0 -26
- package/dist/lib/validators/common/validation-error.js.map +0 -1
- package/dist/lib/validators/common/validation-rule.d.ts +0 -69
- package/dist/lib/validators/common/validation-rule.js +0 -73
- package/dist/lib/validators/common/validation-rule.js.map +0 -1
- package/dist/lib/validators/common/validation-type.d.ts +0 -24
- package/dist/lib/validators/common/validation-type.js +0 -28
- package/dist/lib/validators/common/validation-type.js.map +0 -1
- package/dist/lib/validators/firstname.validator.d.ts +0 -20
- package/dist/lib/validators/firstname.validator.js +0 -29
- package/dist/lib/validators/firstname.validator.js.map +0 -1
- package/dist/lib/validators/fullname.validator.d.ts +0 -21
- package/dist/lib/validators/fullname.validator.js +0 -38
- package/dist/lib/validators/fullname.validator.js.map +0 -1
- package/dist/lib/validators/index.d.ts +0 -21
- package/dist/lib/validators/index.js +0 -35
- package/dist/lib/validators/index.js.map +0 -1
- package/dist/lib/validators/lastname.validator.d.ts +0 -20
- package/dist/lib/validators/lastname.validator.js +0 -29
- package/dist/lib/validators/lastname.validator.js.map +0 -1
- package/dist/lib/validators/middlename.validator.d.ts +0 -20
- package/dist/lib/validators/middlename.validator.js +0 -38
- package/dist/lib/validators/middlename.validator.js.map +0 -1
- package/dist/lib/validators/nama.validator.d.ts +0 -21
- package/dist/lib/validators/nama.validator.js +0 -43
- package/dist/lib/validators/nama.validator.js.map +0 -1
- package/dist/lib/validators/namon.validator.d.ts +0 -20
- package/dist/lib/validators/namon.validator.js +0 -29
- package/dist/lib/validators/namon.validator.js.map +0 -1
- package/dist/lib/validators/prefix.validator.d.ts +0 -14
- package/dist/lib/validators/prefix.validator.js +0 -31
- package/dist/lib/validators/prefix.validator.js.map +0 -1
- package/dist/lib/validators/string-name.validator.d.ts +0 -20
- package/dist/lib/validators/string-name.validator.js +0 -29
- package/dist/lib/validators/string-name.validator.js.map +0 -1
- package/dist/lib/validators/suffix.validator.d.ts +0 -14
- package/dist/lib/validators/suffix.validator.js +0 -31
- package/dist/lib/validators/suffix.validator.js.map +0 -1
- package/dist/lib/validators/validator.d.ts +0 -13
- package/dist/lib/validators/validator.js +0 -9
- package/dist/lib/validators/validator.js.map +0 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNameArray = exports.isStringArray = exports.toggleCase = exports.decapitalize = exports.capitalize = exports.NameIndex = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const name_1 = require("./name");
|
|
6
|
+
const types_1 = require("./types");
|
|
7
|
+
/**
|
|
8
|
+
* A fixed set of values to handle specific positions for list of names.
|
|
9
|
+
*
|
|
10
|
+
* As for list of names, this helps to follow a specific order based on the
|
|
11
|
+
* count of elements. It is expected that the list has to be between two and
|
|
12
|
+
* five elements. Also, the order of appearance set in the configuration
|
|
13
|
+
* influences how the parsing is carried out.
|
|
14
|
+
*
|
|
15
|
+
* Ordered by first name, the parser works as follows:
|
|
16
|
+
* - 2 elements: firstName lastName
|
|
17
|
+
* - 3 elements: firstName middleName lastName
|
|
18
|
+
* - 4 elements: prefix firstName middleName lastName
|
|
19
|
+
* - 5 elements: prefix firstName middleName lastName suffix
|
|
20
|
+
*
|
|
21
|
+
* Ordered by last name, the parser works as follows:
|
|
22
|
+
* - 2 elements: lastName firstName
|
|
23
|
+
* - 3 elements: lastName firstName middleName
|
|
24
|
+
* - 4 elements: prefix lastName firstName middleName
|
|
25
|
+
* - 5 elements: prefix lastName firstName middleName suffix
|
|
26
|
+
*
|
|
27
|
+
* For example, `Jane Smith` (ordered by first name) is expected to be indexed:
|
|
28
|
+
* `['Jane', 'Smith']`.
|
|
29
|
+
*/
|
|
30
|
+
class NameIndex {
|
|
31
|
+
constructor(prefix, firstName, middleName, lastName, suffix) {
|
|
32
|
+
this.prefix = prefix;
|
|
33
|
+
this.firstName = firstName;
|
|
34
|
+
this.middleName = middleName;
|
|
35
|
+
this.lastName = lastName;
|
|
36
|
+
this.suffix = suffix;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The minimum number of parts in a list of names.
|
|
40
|
+
*/
|
|
41
|
+
static get min() {
|
|
42
|
+
return constants_1.MIN_NUMBER_OF_NAME_PARTS;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The maximum number of parts in a list of names.
|
|
46
|
+
*/
|
|
47
|
+
static get max() {
|
|
48
|
+
return constants_1.MAX_NUMBER_OF_NAME_PARTS;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The default or base indexing: firstName lastName.
|
|
52
|
+
*/
|
|
53
|
+
static base() {
|
|
54
|
+
return new this(-1, 0, -1, 1, -1);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Gets the name index for a list of names based on the `count` of elements
|
|
58
|
+
* and their `order` of appearance.
|
|
59
|
+
*/
|
|
60
|
+
static when(order, count = 2) {
|
|
61
|
+
if (order === types_1.NameOrder.FIRST_NAME) {
|
|
62
|
+
switch (count) {
|
|
63
|
+
case 2: // first name + last name
|
|
64
|
+
return new this(-1, 0, -1, 1, -1);
|
|
65
|
+
case 3: // first name + middle name + last name
|
|
66
|
+
return new this(-1, 0, 1, 2, -1);
|
|
67
|
+
case 4: // prefix + first name + middle name + last name
|
|
68
|
+
return new this(0, 1, 2, 3, -1);
|
|
69
|
+
case 5: // prefix + first name + middle name + last name + suffix
|
|
70
|
+
return new this(0, 1, 2, 3, 4);
|
|
71
|
+
default:
|
|
72
|
+
return NameIndex.base();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
switch (count) {
|
|
77
|
+
case 2: // last name + first name
|
|
78
|
+
return new this(-1, 1, -1, 0, -1);
|
|
79
|
+
case 3: // last name + first name + middle name
|
|
80
|
+
return new this(-1, 1, 2, 0, -1);
|
|
81
|
+
case 4: // prefix + last name + first name + middle name
|
|
82
|
+
return new this(0, 2, 3, 1, -1);
|
|
83
|
+
case 5: // prefix + last name + first name + middle name + suffix
|
|
84
|
+
return new this(0, 2, 3, 1, 4);
|
|
85
|
+
default:
|
|
86
|
+
return NameIndex.base();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.NameIndex = NameIndex;
|
|
92
|
+
/**
|
|
93
|
+
* Capitalizes a string via a `CapsRange` option.
|
|
94
|
+
*/
|
|
95
|
+
function capitalize(str, range = types_1.CapsRange.INITIAL) {
|
|
96
|
+
if (!str || range === types_1.CapsRange.NONE)
|
|
97
|
+
return str;
|
|
98
|
+
const initial = str[0].toUpperCase();
|
|
99
|
+
const rest = str.slice(1).toLowerCase();
|
|
100
|
+
return range === types_1.CapsRange.INITIAL ? initial.concat(rest) : str.toUpperCase();
|
|
101
|
+
}
|
|
102
|
+
exports.capitalize = capitalize;
|
|
103
|
+
/**
|
|
104
|
+
* Decapitalizes a string via a `CapsRange` option.
|
|
105
|
+
*/
|
|
106
|
+
function decapitalize(str, range = types_1.CapsRange.INITIAL) {
|
|
107
|
+
if (!str || range === types_1.CapsRange.NONE)
|
|
108
|
+
return str;
|
|
109
|
+
const initial = str[0].toLowerCase();
|
|
110
|
+
const rest = str.slice(1);
|
|
111
|
+
return range === types_1.CapsRange.INITIAL ? initial.concat(rest) : str.toLowerCase();
|
|
112
|
+
}
|
|
113
|
+
exports.decapitalize = decapitalize;
|
|
114
|
+
/**
|
|
115
|
+
* Toggles a string representation.
|
|
116
|
+
*/
|
|
117
|
+
function toggleCase(str) {
|
|
118
|
+
const chars = [];
|
|
119
|
+
for (const c of str) {
|
|
120
|
+
if (c === c.toUpperCase()) {
|
|
121
|
+
chars.push(c.toLowerCase());
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
chars.push(c.toUpperCase());
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return chars.join('');
|
|
128
|
+
}
|
|
129
|
+
exports.toggleCase = toggleCase;
|
|
130
|
+
function isStringArray(value) {
|
|
131
|
+
return Array.isArray(value) && value.length > 0 && value.every((e) => typeof e === 'string');
|
|
132
|
+
}
|
|
133
|
+
exports.isStringArray = isStringArray;
|
|
134
|
+
function isNameArray(value) {
|
|
135
|
+
return Array.isArray(value) && value.length > 0 && value.every((e) => e instanceof name_1.Name);
|
|
136
|
+
}
|
|
137
|
+
exports.isNameArray = isNameArray;
|
|
138
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { FirstName, LastName, Name } from './name';
|
|
2
|
+
import { Namon } from './types';
|
|
3
|
+
import { NameIndex } from './utils';
|
|
4
|
+
export interface Validator<T> {
|
|
5
|
+
validate(value: T): void;
|
|
6
|
+
}
|
|
7
|
+
declare class ArrayValidator<T extends string | Name> implements Validator<T[]> {
|
|
8
|
+
validate(values: T[]): void;
|
|
9
|
+
}
|
|
10
|
+
declare class NamonValidator implements Validator<string | Name> {
|
|
11
|
+
private static validator;
|
|
12
|
+
private constructor();
|
|
13
|
+
static create(): NamonValidator;
|
|
14
|
+
validate(value: string | Name, type?: Namon): void;
|
|
15
|
+
}
|
|
16
|
+
declare class FirstNameValidator implements Validator<string | FirstName> {
|
|
17
|
+
private static validator;
|
|
18
|
+
private constructor();
|
|
19
|
+
static create(): FirstNameValidator;
|
|
20
|
+
validate(value: string | FirstName): void;
|
|
21
|
+
}
|
|
22
|
+
declare class MiddleNameValidator implements Validator<string | string[] | Name[]> {
|
|
23
|
+
private static validator;
|
|
24
|
+
private constructor();
|
|
25
|
+
static create(): MiddleNameValidator;
|
|
26
|
+
validate(value: string | string[] | Name[]): void;
|
|
27
|
+
}
|
|
28
|
+
declare class LastNameValidator implements Validator<string | LastName> {
|
|
29
|
+
private static validator;
|
|
30
|
+
private constructor();
|
|
31
|
+
static create(): LastNameValidator;
|
|
32
|
+
validate(value: string | LastName): void;
|
|
33
|
+
}
|
|
34
|
+
export declare class NamaValidator implements Validator<Map<Namon, string>> {
|
|
35
|
+
private static validator;
|
|
36
|
+
private constructor();
|
|
37
|
+
static create(): NamaValidator;
|
|
38
|
+
validate(value: Map<Namon, string>): void;
|
|
39
|
+
validateKeys(nama: Map<Namon, string>): void;
|
|
40
|
+
}
|
|
41
|
+
export declare class ArrayStringValidator extends ArrayValidator<string> {
|
|
42
|
+
readonly index: NameIndex;
|
|
43
|
+
constructor(index?: NameIndex);
|
|
44
|
+
validate(values: string[]): void;
|
|
45
|
+
validateIndex(values: string[]): void;
|
|
46
|
+
}
|
|
47
|
+
export declare class ArrayNameValidator implements Validator<Name[]> {
|
|
48
|
+
private static validator;
|
|
49
|
+
private constructor();
|
|
50
|
+
static create(): ArrayNameValidator;
|
|
51
|
+
validate(value: Name[]): void;
|
|
52
|
+
private hasBasicNames;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A list of validators for a specific namon.
|
|
56
|
+
*/
|
|
57
|
+
export declare abstract class Validators {
|
|
58
|
+
static namon: NamonValidator;
|
|
59
|
+
static nama: NamaValidator;
|
|
60
|
+
static prefix: NamonValidator;
|
|
61
|
+
static firstName: FirstNameValidator;
|
|
62
|
+
static middleName: MiddleNameValidator;
|
|
63
|
+
static lastName: LastNameValidator;
|
|
64
|
+
static suffix: NamonValidator;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Validators = exports.ArrayNameValidator = exports.ArrayStringValidator = exports.NamaValidator = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const error_1 = require("./error");
|
|
6
|
+
const name_1 = require("./name");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
/**
|
|
10
|
+
* Represents a set of validation rules (regex)
|
|
11
|
+
*
|
|
12
|
+
* This regex is intented to match specific alphabets only as a person name does
|
|
13
|
+
* not contain special characters. `\w` does not cover non-Latin characters. So,
|
|
14
|
+
* it is extended using unicode chars to cover more cases (e.g., Icelandic).
|
|
15
|
+
* It matches as follows:
|
|
16
|
+
* [a-z]: Latin alphabet from a (index 97) to z (index 122)
|
|
17
|
+
* [A-Z]: Latin alphabet from A (index 65) to Z (index 90)
|
|
18
|
+
* [\u00C0-\u00D6]: Latin/German chars from À (index 192) to Ö (index 214)
|
|
19
|
+
* [\u00D8-\u00f6]: German/Icelandic chars from Ø (index 216) to ö (index 246)
|
|
20
|
+
* [\u00f8-\u00ff]: German/Icelandic chars from ø (index 248) to ÿ (index 255)
|
|
21
|
+
* [\u0400-\u04FF]: Cyrillic alphabet from Ѐ (index 1024) to ӿ (index 1279)
|
|
22
|
+
* [Ά-ωΑ-ώ]: Greek alphabet from Ά (index 902) to ω (index 969)
|
|
23
|
+
*/
|
|
24
|
+
class ValidationRule {
|
|
25
|
+
}
|
|
26
|
+
ValidationRule.base = /[a-zA-Z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\u0400-\u04FFΆ-ωΑ-ώ]/;
|
|
27
|
+
/**
|
|
28
|
+
* Matches one name part (namon) that is of nature:
|
|
29
|
+
* - Latin (English, Spanish, French, etc.)
|
|
30
|
+
* - European (Greek, Cyrillic, Icelandic, German)
|
|
31
|
+
* - hyphenated
|
|
32
|
+
* - with apostrophe
|
|
33
|
+
* - with space
|
|
34
|
+
*/
|
|
35
|
+
ValidationRule.namon = new RegExp(`^${ValidationRule.base.source}+(([' -]${ValidationRule.base.source})?${ValidationRule.base.source}*)*$`);
|
|
36
|
+
/**
|
|
37
|
+
* Matches one name part (namon) that is of nature:
|
|
38
|
+
* - Latin (English, Spanish, French, etc.)
|
|
39
|
+
* - European (Greek, Cyrillic, Icelandic, German)
|
|
40
|
+
* - hyphenated
|
|
41
|
+
* - with apostrophe
|
|
42
|
+
*/
|
|
43
|
+
ValidationRule.firstName = ValidationRule.namon;
|
|
44
|
+
/**
|
|
45
|
+
* Matches 1+ names part (namon) that are of nature:
|
|
46
|
+
* - Latin (English, Spanish, French, etc.)
|
|
47
|
+
* - European (Greek, Cyrillic, Icelandic, German)
|
|
48
|
+
* - hyphenated
|
|
49
|
+
* - with apostrophe
|
|
50
|
+
* - with space
|
|
51
|
+
*/
|
|
52
|
+
ValidationRule.middleName = new RegExp(`^${ValidationRule.base.source}+(([' -]${ValidationRule.base.source})?${ValidationRule.base.source}*)*$`);
|
|
53
|
+
/**
|
|
54
|
+
* Matches one name part (namon) that is of nature:
|
|
55
|
+
* - Latin (English, Spanish, French, etc.)
|
|
56
|
+
* - European (Greek, Cyrillic, Icelandic, German)
|
|
57
|
+
* - hyphenated
|
|
58
|
+
* - with apostrophe
|
|
59
|
+
* - with space
|
|
60
|
+
*/
|
|
61
|
+
ValidationRule.lastName = ValidationRule.namon;
|
|
62
|
+
class ArrayValidator {
|
|
63
|
+
validate(values) {
|
|
64
|
+
if (values.length === 0 ||
|
|
65
|
+
values.length < constants_1.MIN_NUMBER_OF_NAME_PARTS ||
|
|
66
|
+
values.length > constants_1.MAX_NUMBER_OF_NAME_PARTS) {
|
|
67
|
+
throw new error_1.InputError({
|
|
68
|
+
source: values.map((n) => n.toString()),
|
|
69
|
+
message: `expecting a list of ${constants_1.MIN_NUMBER_OF_NAME_PARTS}-${constants_1.MIN_NUMBER_OF_NAME_PARTS} elements`,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
class NamonValidator {
|
|
75
|
+
constructor() { }
|
|
76
|
+
static create() {
|
|
77
|
+
return this.validator || (this.validator = new this());
|
|
78
|
+
}
|
|
79
|
+
validate(value, type) {
|
|
80
|
+
if (value instanceof name_1.Name) {
|
|
81
|
+
NameValidator.create().validate(value, type);
|
|
82
|
+
}
|
|
83
|
+
else if (typeof value === 'string') {
|
|
84
|
+
if (!ValidationRule.namon.test(value)) {
|
|
85
|
+
throw new error_1.ValidationError({
|
|
86
|
+
source: value,
|
|
87
|
+
nameType: 'namon',
|
|
88
|
+
message: 'invalid content',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
throw new error_1.InputError({
|
|
94
|
+
source: typeof value,
|
|
95
|
+
message: 'expecting types of string | Name',
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
class FirstNameValidator {
|
|
101
|
+
constructor() { }
|
|
102
|
+
static create() {
|
|
103
|
+
return this.validator || (this.validator = new this());
|
|
104
|
+
}
|
|
105
|
+
validate(value) {
|
|
106
|
+
if (value instanceof name_1.FirstName) {
|
|
107
|
+
value.asNames.forEach((name) => this.validate(name.value));
|
|
108
|
+
}
|
|
109
|
+
else if (typeof value === 'string') {
|
|
110
|
+
if (!ValidationRule.firstName.test(value)) {
|
|
111
|
+
throw new error_1.ValidationError({
|
|
112
|
+
source: value,
|
|
113
|
+
nameType: 'firstName',
|
|
114
|
+
message: 'invalid content',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new error_1.InputError({
|
|
120
|
+
source: typeof value,
|
|
121
|
+
message: 'expecting types string | FirstName',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
class MiddleNameValidator {
|
|
127
|
+
constructor() { }
|
|
128
|
+
static create() {
|
|
129
|
+
return this.validator || (this.validator = new this());
|
|
130
|
+
}
|
|
131
|
+
validate(value) {
|
|
132
|
+
if (typeof value === 'string') {
|
|
133
|
+
if (!ValidationRule.middleName.test(value)) {
|
|
134
|
+
throw new error_1.ValidationError({
|
|
135
|
+
source: value,
|
|
136
|
+
nameType: 'middleName',
|
|
137
|
+
message: 'invalid content',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (Array.isArray(value)) {
|
|
142
|
+
try {
|
|
143
|
+
const validator = NamonValidator.create();
|
|
144
|
+
for (const name of value)
|
|
145
|
+
validator.validate(name, types_1.Namon.MIDDLE_NAME);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
throw new error_1.ValidationError({
|
|
149
|
+
source: value,
|
|
150
|
+
nameType: 'middleName',
|
|
151
|
+
message: error === null || error === void 0 ? void 0 : error.message,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
throw new error_1.InputError({
|
|
157
|
+
source: typeof value,
|
|
158
|
+
message: 'expecting types of string | string[] | Name[]',
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
class LastNameValidator {
|
|
164
|
+
constructor() { }
|
|
165
|
+
static create() {
|
|
166
|
+
return this.validator || (this.validator = new this());
|
|
167
|
+
}
|
|
168
|
+
validate(value) {
|
|
169
|
+
if (value instanceof name_1.LastName) {
|
|
170
|
+
value.asNames.forEach((name) => this.validate(name.value));
|
|
171
|
+
}
|
|
172
|
+
else if (typeof value === 'string') {
|
|
173
|
+
if (!ValidationRule.lastName.test(value)) {
|
|
174
|
+
throw new error_1.ValidationError({
|
|
175
|
+
source: value,
|
|
176
|
+
nameType: 'lastName',
|
|
177
|
+
message: 'invalid content',
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
throw new error_1.InputError({
|
|
183
|
+
source: typeof value,
|
|
184
|
+
message: 'expecting types string | LastName',
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
class NameValidator {
|
|
190
|
+
constructor() { }
|
|
191
|
+
static create() {
|
|
192
|
+
return this.validator || (this.validator = new this());
|
|
193
|
+
}
|
|
194
|
+
validate(name, type) {
|
|
195
|
+
if (type && name.type !== type) {
|
|
196
|
+
throw new error_1.ValidationError({
|
|
197
|
+
source: [name],
|
|
198
|
+
nameType: name.type.toString(),
|
|
199
|
+
message: 'wrong type',
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
if (!ValidationRule.namon.test(name.value)) {
|
|
203
|
+
throw new error_1.ValidationError({
|
|
204
|
+
source: [name],
|
|
205
|
+
nameType: name.type.toString(),
|
|
206
|
+
message: 'invalid content',
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
class NamaValidator {
|
|
212
|
+
constructor() { }
|
|
213
|
+
static create() {
|
|
214
|
+
return this.validator || (this.validator = new this());
|
|
215
|
+
}
|
|
216
|
+
validate(value) {
|
|
217
|
+
this.validateKeys(value);
|
|
218
|
+
Validators.firstName.validate(value.get(types_1.Namon.FIRST_NAME));
|
|
219
|
+
Validators.lastName.validate(value.get(types_1.Namon.LAST_NAME));
|
|
220
|
+
if (value.has(types_1.Namon.PREFIX)) {
|
|
221
|
+
Validators.namon.validate(value.get(types_1.Namon.PREFIX));
|
|
222
|
+
}
|
|
223
|
+
if (value.has(types_1.Namon.SUFFIX)) {
|
|
224
|
+
Validators.namon.validate(value.get(types_1.Namon.SUFFIX));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
validateKeys(nama) {
|
|
228
|
+
if (!nama.size) {
|
|
229
|
+
throw new error_1.InputError({ source: undefined, message: 'Map<k,v> must not be empty' });
|
|
230
|
+
}
|
|
231
|
+
else if (nama.size < constants_1.MIN_NUMBER_OF_NAME_PARTS || nama.size > constants_1.MAX_NUMBER_OF_NAME_PARTS) {
|
|
232
|
+
throw new error_1.InputError({
|
|
233
|
+
source: [...nama.values()],
|
|
234
|
+
message: `expecting ${constants_1.MIN_NUMBER_OF_NAME_PARTS}-${constants_1.MIN_NUMBER_OF_NAME_PARTS} fields`,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (!nama.has(types_1.Namon.FIRST_NAME)) {
|
|
238
|
+
throw new error_1.InputError({
|
|
239
|
+
source: [...nama.values()],
|
|
240
|
+
message: '"firstName" is a required key',
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
if (!nama.has(types_1.Namon.LAST_NAME)) {
|
|
244
|
+
throw new error_1.InputError({
|
|
245
|
+
source: [...nama.values()],
|
|
246
|
+
message: '"lastName" is a required key',
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.NamaValidator = NamaValidator;
|
|
252
|
+
class ArrayStringValidator extends ArrayValidator {
|
|
253
|
+
constructor(index = utils_1.NameIndex.base()) {
|
|
254
|
+
super();
|
|
255
|
+
this.index = index;
|
|
256
|
+
}
|
|
257
|
+
validate(values) {
|
|
258
|
+
this.validateIndex(values);
|
|
259
|
+
switch (values.length) {
|
|
260
|
+
case 2:
|
|
261
|
+
Validators.firstName.validate(values[this.index.firstName]);
|
|
262
|
+
Validators.lastName.validate(values[this.index.lastName]);
|
|
263
|
+
break;
|
|
264
|
+
case 3:
|
|
265
|
+
Validators.firstName.validate(values[this.index.firstName]);
|
|
266
|
+
Validators.middleName.validate(values[this.index.middleName]);
|
|
267
|
+
Validators.lastName.validate(values[this.index.lastName]);
|
|
268
|
+
break;
|
|
269
|
+
case 4:
|
|
270
|
+
Validators.namon.validate(values[this.index.prefix]);
|
|
271
|
+
Validators.firstName.validate(values[this.index.firstName]);
|
|
272
|
+
Validators.middleName.validate(values[this.index.middleName]);
|
|
273
|
+
Validators.lastName.validate(values[this.index.lastName]);
|
|
274
|
+
break;
|
|
275
|
+
case 5:
|
|
276
|
+
Validators.namon.validate(values[this.index.prefix]);
|
|
277
|
+
Validators.firstName.validate(values[this.index.firstName]);
|
|
278
|
+
Validators.middleName.validate(values[this.index.middleName]);
|
|
279
|
+
Validators.lastName.validate(values[this.index.lastName]);
|
|
280
|
+
Validators.namon.validate(values[this.index.suffix]);
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
validateIndex(values) {
|
|
285
|
+
super.validate(values);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
exports.ArrayStringValidator = ArrayStringValidator;
|
|
289
|
+
class ArrayNameValidator {
|
|
290
|
+
constructor() { }
|
|
291
|
+
static create() {
|
|
292
|
+
return this.validator || (this.validator = new this());
|
|
293
|
+
}
|
|
294
|
+
validate(value) {
|
|
295
|
+
if (value.length < constants_1.MIN_NUMBER_OF_NAME_PARTS) {
|
|
296
|
+
throw new error_1.InputError({
|
|
297
|
+
source: value,
|
|
298
|
+
message: `expecting at least ${constants_1.MIN_NUMBER_OF_NAME_PARTS} elements`,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
if (!this.hasBasicNames(value)) {
|
|
302
|
+
throw new error_1.InputError({
|
|
303
|
+
source: value,
|
|
304
|
+
message: 'both first and last names are required',
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
hasBasicNames(names) {
|
|
309
|
+
const accumulator = {};
|
|
310
|
+
for (const name of names) {
|
|
311
|
+
if (name.isFirstName || name.isLastName) {
|
|
312
|
+
accumulator[name.type.key] = name.toString();
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return Object.keys(accumulator).length === constants_1.MIN_NUMBER_OF_NAME_PARTS;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
exports.ArrayNameValidator = ArrayNameValidator;
|
|
319
|
+
/**
|
|
320
|
+
* A list of validators for a specific namon.
|
|
321
|
+
*/
|
|
322
|
+
class Validators {
|
|
323
|
+
}
|
|
324
|
+
exports.Validators = Validators;
|
|
325
|
+
Validators.namon = NamonValidator.create();
|
|
326
|
+
Validators.nama = NamaValidator.create();
|
|
327
|
+
Validators.prefix = NamonValidator.create();
|
|
328
|
+
Validators.firstName = FirstNameValidator.create();
|
|
329
|
+
Validators.middleName = MiddleNameValidator.create();
|
|
330
|
+
Validators.lastName = LastNameValidator.create();
|
|
331
|
+
Validators.suffix = NamonValidator.create();
|
|
332
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":";;;AAAA,2CAAgF;AAChF,mCAAqD;AACrD,iCAAkD;AAClD,mCAA+B;AAC/B,mCAAmC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,MAAM,cAAc;;AACT,mBAAI,GAAW,oEAAoE,CAAA;AAE1F;;;;;;;GAOG;AACI,oBAAK,GAAW,IAAI,MAAM,CAC7B,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,WAAW,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,cAAc,CAAC,IAAI,CAAC,MAAM,MAAM,CAC3G,CAAA;AAED;;;;;;GAMG;AACI,wBAAS,GAAW,cAAc,CAAC,KAAK,CAAA;AAE/C;;;;;;;GAOG;AACI,yBAAU,GAAW,IAAI,MAAM,CAClC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,WAAW,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,cAAc,CAAC,IAAI,CAAC,MAAM,MAAM,CAC3G,CAAA;AAED;;;;;;;GAOG;AACI,uBAAQ,GAAW,cAAc,CAAC,KAAK,CAAA;AAOlD,MAAM,cAAc;IAChB,QAAQ,CAAC,MAAW;QAChB,IACI,MAAM,CAAC,MAAM,KAAK,CAAC;YACnB,MAAM,CAAC,MAAM,GAAG,oCAAwB;YACxC,MAAM,CAAC,MAAM,GAAG,oCAAwB,EAC1C;YACE,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACvC,OAAO,EAAE,uBAAuB,oCAAwB,IAAI,oCAAwB,WAAW;aAClG,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAED,MAAM,cAAc;IAEhB,gBAAuB,CAAC;IACxB,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ,CAAC,KAAoB,EAAE,IAAY;QACvC,IAAI,KAAK,YAAY,WAAI,EAAE;YACvB,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;SAC/C;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACnC,MAAM,IAAI,uBAAe,CAAC;oBACtB,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,iBAAiB;iBAC7B,CAAC,CAAA;aACL;SACJ;aAAM;YACH,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,OAAO,KAAK;gBACpB,OAAO,EAAE,kCAAkC;aAC9C,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAED,MAAM,kBAAkB;IAEpB,gBAAuB,CAAC;IACxB,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ,CAAC,KAAyB;QAC9B,IAAI,KAAK,YAAY,gBAAS,EAAE;YAC5B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;SAC7D;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACvC,MAAM,IAAI,uBAAe,CAAC;oBACtB,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,iBAAiB;iBAC7B,CAAC,CAAA;aACL;SACJ;aAAM;YACH,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,OAAO,KAAK;gBACpB,OAAO,EAAE,oCAAoC;aAChD,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAED,MAAM,mBAAmB;IAErB,gBAAuB,CAAC;IACxB,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ,CAAC,KAAiC;QACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACxC,MAAM,IAAI,uBAAe,CAAC;oBACtB,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,iBAAiB;iBAC7B,CAAC,CAAA;aACL;SACJ;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7B,IAAI;gBACA,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,CAAA;gBACzC,KAAK,MAAM,IAAI,IAAI,KAAK;oBAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAK,CAAC,WAAW,CAAC,CAAA;aACxE;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,IAAI,uBAAe,CAAC;oBACtB,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO;iBAC1B,CAAC,CAAA;aACL;SACJ;aAAM;YACH,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,OAAO,KAAK;gBACpB,OAAO,EAAE,+CAA+C;aAC3D,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAED,MAAM,iBAAiB;IAEnB,gBAAuB,CAAC;IACxB,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ,CAAC,KAAwB;QAC7B,IAAI,KAAK,YAAY,eAAQ,EAAE;YAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;SAC7D;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACtC,MAAM,IAAI,uBAAe,CAAC;oBACtB,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,UAAU;oBACpB,OAAO,EAAE,iBAAiB;iBAC7B,CAAC,CAAA;aACL;SACJ;aAAM;YACH,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,OAAO,KAAK;gBACpB,OAAO,EAAE,mCAAmC;aAC/C,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAED,MAAM,aAAa;IAEf,gBAAuB,CAAC;IACxB,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ,CAAC,IAAU,EAAE,IAAY;QAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,uBAAe,CAAC;gBACtB,MAAM,EAAE,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC9B,OAAO,EAAE,YAAY;aACxB,CAAC,CAAA;SACL;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACxC,MAAM,IAAI,uBAAe,CAAC;gBACtB,MAAM,EAAE,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC9B,OAAO,EAAE,iBAAiB;aAC7B,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAED,MAAa,aAAa;IAEtB,gBAAuB,CAAC;IACxB,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ,CAAC,KAAyB;QAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACxB,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,aAAK,CAAC,UAAU,CAAC,CAAC,CAAA;QAC1D,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,aAAK,CAAC,SAAS,CAAC,CAAC,CAAA;QAExD,IAAI,KAAK,CAAC,GAAG,CAAC,aAAK,CAAC,MAAM,CAAC,EAAE;YACzB,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,aAAK,CAAC,MAAM,CAAC,CAAC,CAAA;SACrD;QACD,IAAI,KAAK,CAAC,GAAG,CAAC,aAAK,CAAC,MAAM,CAAC,EAAE;YACzB,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,aAAK,CAAC,MAAM,CAAC,CAAC,CAAA;SACrD;IACL,CAAC;IAED,YAAY,CAAC,IAAwB;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,MAAM,IAAI,kBAAU,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAA;SACrF;aAAM,IAAI,IAAI,CAAC,IAAI,GAAG,oCAAwB,IAAI,IAAI,CAAC,IAAI,GAAG,oCAAwB,EAAE;YACrF,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAE,aAAa,oCAAwB,IAAI,oCAAwB,SAAS;aACtF,CAAC,CAAA;SACL;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAK,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAE,+BAA+B;aAC3C,CAAC,CAAA;SACL;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAK,CAAC,SAAS,CAAC,EAAE;YAC5B,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAE,8BAA8B;aAC1C,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AA5CD,sCA4CC;AAED,MAAa,oBAAqB,SAAQ,cAAsB;IAC5D,YAAqB,QAAQ,iBAAS,CAAC,IAAI,EAAE;QACzC,KAAK,EAAE,CAAA;QADU,UAAK,GAAL,KAAK,CAAmB;IAE7C,CAAC;IAED,QAAQ,CAAC,MAAgB;QACrB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE1B,QAAQ,MAAM,CAAC,MAAM,EAAE;YACnB,KAAK,CAAC;gBACF,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC3D,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACzD,MAAK;YACT,KAAK,CAAC;gBACF,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC3D,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;gBAC7D,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACzD,MAAK;YACT,KAAK,CAAC;gBACF,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;gBACpD,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC3D,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;gBAC7D,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACzD,MAAK;YACT,KAAK,CAAC;gBACF,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;gBACpD,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC3D,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;gBAC7D,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACzD,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;gBACpD,MAAK;SACZ;IACL,CAAC;IAED,aAAa,CAAC,MAAgB;QAC1B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;CACJ;AArCD,oDAqCC;AAED,MAAa,kBAAkB;IAE3B,gBAAuB,CAAC;IACxB,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,IAAI,KAAK,CAAC,MAAM,GAAG,oCAAwB,EAAE;YACzC,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,sBAAsB,oCAAwB,WAAW;aACrE,CAAC,CAAA;SACL;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC5B,MAAM,IAAI,kBAAU,CAAC;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,wCAAwC;aACpD,CAAC,CAAA;SACL;IACL,CAAC;IAEO,aAAa,CAAC,KAAa;QAC/B,MAAM,WAAW,GAA8B,EAAE,CAAA;QACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;gBACrC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;aAC/C;SACJ;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,oCAAwB,CAAA;IACvE,CAAC;CACJ;AAhCD,gDAgCC;AAED;;GAEG;AACH,MAAsB,UAAU;;AAAhC,gCAQC;AAPU,gBAAK,GAAG,cAAc,CAAC,MAAM,EAAE,CAAA;AAC/B,eAAI,GAAG,aAAa,CAAC,MAAM,EAAE,CAAA;AAC7B,iBAAM,GAAG,cAAc,CAAC,MAAM,EAAE,CAAA;AAChC,oBAAS,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAA;AACvC,qBAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAA;AACzC,mBAAQ,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAA;AACrC,iBAAM,GAAG,cAAc,CAAC,MAAM,EAAE,CAAA"}
|