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.
Files changed (189) hide show
  1. package/LICENSE +21 -674
  2. package/dist/example/index.js +2734 -0
  3. package/dist/lib/config.d.ts +121 -0
  4. package/dist/lib/config.js +189 -0
  5. package/dist/lib/config.js.map +1 -0
  6. package/dist/lib/constants.d.ts +4 -0
  7. package/dist/lib/constants.js +31 -0
  8. package/dist/lib/constants.js.map +1 -0
  9. package/dist/lib/error.d.ts +172 -0
  10. package/dist/lib/error.js +210 -0
  11. package/dist/lib/error.js.map +1 -0
  12. package/dist/lib/{usecases/index.d.ts → example/example.d.ts} +0 -0
  13. package/dist/lib/full-name.d.ts +71 -0
  14. package/dist/lib/full-name.js +147 -0
  15. package/dist/lib/full-name.js.map +1 -0
  16. package/dist/lib/index.d.ts +16 -6
  17. package/dist/lib/index.js +29 -8
  18. package/dist/lib/index.js.map +1 -1
  19. package/dist/lib/name.d.ts +177 -0
  20. package/dist/lib/name.js +322 -0
  21. package/dist/lib/name.js.map +1 -0
  22. package/dist/lib/namefully.d.ts +303 -208
  23. package/dist/lib/namefully.js +603 -442
  24. package/dist/lib/namefully.js.map +1 -1
  25. package/dist/lib/parser.d.ts +46 -0
  26. package/dist/lib/parser.js +173 -0
  27. package/dist/lib/parser.js.map +1 -0
  28. package/dist/lib/src/config.d.ts +121 -0
  29. package/dist/lib/src/constants.d.ts +4 -0
  30. package/dist/lib/src/error.d.ts +172 -0
  31. package/dist/lib/src/full-name.d.ts +71 -0
  32. package/dist/lib/src/index.d.ts +16 -6
  33. package/dist/lib/src/name.d.ts +177 -0
  34. package/dist/lib/src/namefully.d.ts +303 -208
  35. package/dist/lib/src/parser.d.ts +46 -0
  36. package/dist/lib/src/types.d.ts +127 -0
  37. package/dist/lib/src/utils.d.ts +63 -0
  38. package/dist/lib/src/validator.d.ts +66 -0
  39. package/dist/lib/types.d.ts +127 -0
  40. package/dist/lib/types.js +181 -0
  41. package/dist/lib/types.js.map +1 -0
  42. package/dist/lib/utils.d.ts +63 -0
  43. package/dist/lib/utils.js +138 -0
  44. package/dist/lib/utils.js.map +1 -0
  45. package/dist/lib/validator.d.ts +66 -0
  46. package/dist/lib/validator.js +332 -0
  47. package/dist/lib/validator.js.map +1 -0
  48. package/dist/umd/namefully.js +2191 -2111
  49. package/dist/umd/namefully.js.map +1 -1
  50. package/dist/umd/namefully.min.js +1 -1
  51. package/dist/umd/namefully.min.js.LICENSE.txt +8 -20
  52. package/dist/umd/namefully.min.js.map +1 -1
  53. package/package.json +50 -53
  54. package/readme.md +151 -175
  55. package/changelog.md +0 -114
  56. package/dist/lib/core/constants.d.ts +0 -26
  57. package/dist/lib/core/constants.js +0 -42
  58. package/dist/lib/core/constants.js.map +0 -1
  59. package/dist/lib/core/index.d.ts +0 -9
  60. package/dist/lib/core/index.js +0 -13
  61. package/dist/lib/core/index.js.map +0 -1
  62. package/dist/lib/core/parsers/array-name.parser.d.ts +0 -42
  63. package/dist/lib/core/parsers/array-name.parser.js +0 -84
  64. package/dist/lib/core/parsers/array-name.parser.js.map +0 -1
  65. package/dist/lib/core/parsers/array-string.parser.d.ts +0 -48
  66. package/dist/lib/core/parsers/array-string.parser.js +0 -96
  67. package/dist/lib/core/parsers/array-string.parser.js.map +0 -1
  68. package/dist/lib/core/parsers/index.d.ts +0 -11
  69. package/dist/lib/core/parsers/index.js +0 -11
  70. package/dist/lib/core/parsers/index.js.map +0 -1
  71. package/dist/lib/core/parsers/nama.parser.d.ts +0 -34
  72. package/dist/lib/core/parsers/nama.parser.js +0 -75
  73. package/dist/lib/core/parsers/nama.parser.js.map +0 -1
  74. package/dist/lib/core/parsers/parser.d.ts +0 -29
  75. package/dist/lib/core/parsers/parser.js +0 -3
  76. package/dist/lib/core/parsers/parser.js.map +0 -1
  77. package/dist/lib/core/parsers/string.parser.d.ts +0 -61
  78. package/dist/lib/core/parsers/string.parser.js +0 -63
  79. package/dist/lib/core/parsers/string.parser.js.map +0 -1
  80. package/dist/lib/core/utils/utils.d.ts +0 -14
  81. package/dist/lib/core/utils/utils.js +0 -67
  82. package/dist/lib/core/utils/utils.js.map +0 -1
  83. package/dist/lib/models/enums.d.ts +0 -91
  84. package/dist/lib/models/enums.js +0 -98
  85. package/dist/lib/models/enums.js.map +0 -1
  86. package/dist/lib/models/firstname.d.ts +0 -41
  87. package/dist/lib/models/firstname.js +0 -59
  88. package/dist/lib/models/firstname.js.map +0 -1
  89. package/dist/lib/models/index.d.ts +0 -12
  90. package/dist/lib/models/index.js +0 -15
  91. package/dist/lib/models/index.js.map +0 -1
  92. package/dist/lib/models/lastname.d.ts +0 -44
  93. package/dist/lib/models/lastname.js +0 -86
  94. package/dist/lib/models/lastname.js.map +0 -1
  95. package/dist/lib/models/misc.d.ts +0 -80
  96. package/dist/lib/models/misc.js +0 -3
  97. package/dist/lib/models/misc.js.map +0 -1
  98. package/dist/lib/models/name.d.ts +0 -48
  99. package/dist/lib/models/name.js +0 -72
  100. package/dist/lib/models/name.js.map +0 -1
  101. package/dist/lib/models/summary.d.ts +0 -23
  102. package/dist/lib/models/summary.js +0 -60
  103. package/dist/lib/models/summary.js.map +0 -1
  104. package/dist/lib/src/core/constants.d.ts +0 -26
  105. package/dist/lib/src/core/index.d.ts +0 -9
  106. package/dist/lib/src/core/parsers/array-name.parser.d.ts +0 -42
  107. package/dist/lib/src/core/parsers/array-string.parser.d.ts +0 -48
  108. package/dist/lib/src/core/parsers/index.d.ts +0 -11
  109. package/dist/lib/src/core/parsers/nama.parser.d.ts +0 -34
  110. package/dist/lib/src/core/parsers/parser.d.ts +0 -29
  111. package/dist/lib/src/core/parsers/string.parser.d.ts +0 -61
  112. package/dist/lib/src/core/utils/utils.d.ts +0 -14
  113. package/dist/lib/src/models/enums.d.ts +0 -91
  114. package/dist/lib/src/models/firstname.d.ts +0 -41
  115. package/dist/lib/src/models/index.d.ts +0 -12
  116. package/dist/lib/src/models/lastname.d.ts +0 -44
  117. package/dist/lib/src/models/misc.d.ts +0 -80
  118. package/dist/lib/src/models/name.d.ts +0 -48
  119. package/dist/lib/src/models/summary.d.ts +0 -23
  120. package/dist/lib/src/validators/array-name.validator.d.ts +0 -25
  121. package/dist/lib/src/validators/array-string.validator.d.ts +0 -43
  122. package/dist/lib/src/validators/common/validation-error.d.ts +0 -19
  123. package/dist/lib/src/validators/common/validation-rule.d.ts +0 -69
  124. package/dist/lib/src/validators/common/validation-type.d.ts +0 -24
  125. package/dist/lib/src/validators/firstname.validator.d.ts +0 -20
  126. package/dist/lib/src/validators/fullname.validator.d.ts +0 -21
  127. package/dist/lib/src/validators/index.d.ts +0 -21
  128. package/dist/lib/src/validators/lastname.validator.d.ts +0 -20
  129. package/dist/lib/src/validators/middlename.validator.d.ts +0 -20
  130. package/dist/lib/src/validators/nama.validator.d.ts +0 -21
  131. package/dist/lib/src/validators/namon.validator.d.ts +0 -20
  132. package/dist/lib/src/validators/prefix.validator.d.ts +0 -14
  133. package/dist/lib/src/validators/string-name.validator.d.ts +0 -20
  134. package/dist/lib/src/validators/suffix.validator.d.ts +0 -14
  135. package/dist/lib/src/validators/validator.d.ts +0 -13
  136. package/dist/lib/usecases/compress.usecase.d.ts +0 -8
  137. package/dist/lib/usecases/constants.d.ts +0 -7
  138. package/dist/lib/usecases/describe.usecase.d.ts +0 -12
  139. package/dist/lib/usecases/format.usecase.d.ts +0 -6
  140. package/dist/lib/usecases/namefully.usecase.d.ts +0 -14
  141. package/dist/lib/usecases/shorten.usecase.d.ts +0 -6
  142. package/dist/lib/validators/array-name.validator.d.ts +0 -25
  143. package/dist/lib/validators/array-name.validator.js +0 -82
  144. package/dist/lib/validators/array-name.validator.js.map +0 -1
  145. package/dist/lib/validators/array-string.validator.d.ts +0 -43
  146. package/dist/lib/validators/array-string.validator.js +0 -80
  147. package/dist/lib/validators/array-string.validator.js.map +0 -1
  148. package/dist/lib/validators/common/validation-error.d.ts +0 -19
  149. package/dist/lib/validators/common/validation-error.js +0 -26
  150. package/dist/lib/validators/common/validation-error.js.map +0 -1
  151. package/dist/lib/validators/common/validation-rule.d.ts +0 -69
  152. package/dist/lib/validators/common/validation-rule.js +0 -73
  153. package/dist/lib/validators/common/validation-rule.js.map +0 -1
  154. package/dist/lib/validators/common/validation-type.d.ts +0 -24
  155. package/dist/lib/validators/common/validation-type.js +0 -28
  156. package/dist/lib/validators/common/validation-type.js.map +0 -1
  157. package/dist/lib/validators/firstname.validator.d.ts +0 -20
  158. package/dist/lib/validators/firstname.validator.js +0 -29
  159. package/dist/lib/validators/firstname.validator.js.map +0 -1
  160. package/dist/lib/validators/fullname.validator.d.ts +0 -21
  161. package/dist/lib/validators/fullname.validator.js +0 -38
  162. package/dist/lib/validators/fullname.validator.js.map +0 -1
  163. package/dist/lib/validators/index.d.ts +0 -21
  164. package/dist/lib/validators/index.js +0 -35
  165. package/dist/lib/validators/index.js.map +0 -1
  166. package/dist/lib/validators/lastname.validator.d.ts +0 -20
  167. package/dist/lib/validators/lastname.validator.js +0 -29
  168. package/dist/lib/validators/lastname.validator.js.map +0 -1
  169. package/dist/lib/validators/middlename.validator.d.ts +0 -20
  170. package/dist/lib/validators/middlename.validator.js +0 -38
  171. package/dist/lib/validators/middlename.validator.js.map +0 -1
  172. package/dist/lib/validators/nama.validator.d.ts +0 -21
  173. package/dist/lib/validators/nama.validator.js +0 -43
  174. package/dist/lib/validators/nama.validator.js.map +0 -1
  175. package/dist/lib/validators/namon.validator.d.ts +0 -20
  176. package/dist/lib/validators/namon.validator.js +0 -29
  177. package/dist/lib/validators/namon.validator.js.map +0 -1
  178. package/dist/lib/validators/prefix.validator.d.ts +0 -14
  179. package/dist/lib/validators/prefix.validator.js +0 -31
  180. package/dist/lib/validators/prefix.validator.js.map +0 -1
  181. package/dist/lib/validators/string-name.validator.d.ts +0 -20
  182. package/dist/lib/validators/string-name.validator.js +0 -29
  183. package/dist/lib/validators/string-name.validator.js.map +0 -1
  184. package/dist/lib/validators/suffix.validator.d.ts +0 -14
  185. package/dist/lib/validators/suffix.validator.js +0 -31
  186. package/dist/lib/validators/suffix.validator.js.map +0 -1
  187. package/dist/lib/validators/validator.d.ts +0 -13
  188. package/dist/lib/validators/validator.js +0 -9
  189. package/dist/lib/validators/validator.js.map +0 -1
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Make a type nullable.
3
+ */
4
+ export declare type Nullable<T> = T | null | undefined;
5
+ /**
6
+ * The abbreviation type to indicate whether or not to add period to a prefix
7
+ * using the American or British way.
8
+ */
9
+ export declare enum Title {
10
+ US = "US",
11
+ UK = "UK"
12
+ }
13
+ /**
14
+ * An option indicating how to format a surname.
15
+ *
16
+ * This enum can be set via `Config` or when creating a `LastName`. As this can
17
+ * become ambiguous at the time of handling it, the value set in `Config` is
18
+ * prioritized and viewed as the source of truth for future considerations.
19
+ */
20
+ export declare enum Surname {
21
+ FATHER = "father",
22
+ MOTHER = "mother",
23
+ HYPHENATED = "hyphenated",
24
+ ALL = "all"
25
+ }
26
+ /**
27
+ * The order of appearance of a `FullName`.
28
+ */
29
+ export declare enum NameOrder {
30
+ FIRST_NAME = "firstName",
31
+ LAST_NAME = "lastName"
32
+ }
33
+ /**
34
+ * The types of name handled in this according the name standards.
35
+ */
36
+ export declare enum NameType {
37
+ FIRST_NAME = "firstName",
38
+ MIDDLE_NAME = "middleName",
39
+ LAST_NAME = "lastName",
40
+ BIRTH_NAME = "birthName"
41
+ }
42
+ /**
43
+ * The possible variants to indicate how to flatten a `FullName`.
44
+ */
45
+ export declare enum Flat {
46
+ FIRST_NAME = "firstName",
47
+ MIDDLE_NAME = "middleName",
48
+ LAST_NAME = "lastName",
49
+ FIRST_MID = "firstMid",
50
+ MID_LAST = "midLast",
51
+ ALL = "all"
52
+ }
53
+ /**
54
+ * The range to use when capitalizing a string content.
55
+ */
56
+ export declare enum CapsRange {
57
+ NONE = 0,
58
+ INITIAL = 1,
59
+ ALL = 2
60
+ }
61
+ /**
62
+ * The types of name handled in this utility according the name standards.
63
+ */
64
+ export declare class Namon {
65
+ readonly index: number;
66
+ readonly key: string;
67
+ static readonly PREFIX: Namon;
68
+ static readonly FIRST_NAME: Namon;
69
+ static readonly MIDDLE_NAME: Namon;
70
+ static readonly LAST_NAME: Namon;
71
+ static readonly SUFFIX: Namon;
72
+ /**
73
+ * The list of supported name types.
74
+ */
75
+ static readonly values: Namon[];
76
+ /**
77
+ * All the predefined name types.
78
+ */
79
+ static readonly all: Map<string, Namon>;
80
+ private constructor();
81
+ /**
82
+ * Whether this string key is part of the predefined keys.
83
+ */
84
+ static has(key: string): boolean;
85
+ /**
86
+ * Makes a string key a namon type.
87
+ */
88
+ static cast(key: string): Nullable<Namon>;
89
+ /**
90
+ * String representation of this object.
91
+ */
92
+ toString(): string;
93
+ /**
94
+ * Whether this and the other value are equal.
95
+ */
96
+ equal(other: Namon | unknown): boolean;
97
+ }
98
+ /**
99
+ * The token used to indicate how to split string values.
100
+ */
101
+ export declare class Separator {
102
+ readonly name: string;
103
+ readonly token: string;
104
+ static readonly COMMA: Separator;
105
+ static readonly COLON: Separator;
106
+ static readonly DOUBLE_QUOTE: Separator;
107
+ static readonly EMPTY: Separator;
108
+ static readonly HYPHEN: Separator;
109
+ static readonly PERIOD: Separator;
110
+ static readonly SEMI_COLON: Separator;
111
+ static readonly SINGLE_QUOTE: Separator;
112
+ static readonly SPACE: Separator;
113
+ static readonly UNDERSCORE: Separator;
114
+ /**
115
+ * All the available separators.
116
+ */
117
+ static readonly all: Map<string, Separator>;
118
+ /**
119
+ * All the available tokens.
120
+ */
121
+ static readonly tokens: string[];
122
+ private constructor();
123
+ /**
124
+ * String representation of this object.
125
+ */
126
+ toString(): string;
127
+ }
@@ -0,0 +1,63 @@
1
+ import { NameOrder, CapsRange } from './types';
2
+ /**
3
+ * A fixed set of values to handle specific positions for list of names.
4
+ *
5
+ * As for list of names, this helps to follow a specific order based on the
6
+ * count of elements. It is expected that the list has to be between two and
7
+ * five elements. Also, the order of appearance set in the configuration
8
+ * influences how the parsing is carried out.
9
+ *
10
+ * Ordered by first name, the parser works as follows:
11
+ * - 2 elements: firstName lastName
12
+ * - 3 elements: firstName middleName lastName
13
+ * - 4 elements: prefix firstName middleName lastName
14
+ * - 5 elements: prefix firstName middleName lastName suffix
15
+ *
16
+ * Ordered by last name, the parser works as follows:
17
+ * - 2 elements: lastName firstName
18
+ * - 3 elements: lastName firstName middleName
19
+ * - 4 elements: prefix lastName firstName middleName
20
+ * - 5 elements: prefix lastName firstName middleName suffix
21
+ *
22
+ * For example, `Jane Smith` (ordered by first name) is expected to be indexed:
23
+ * `['Jane', 'Smith']`.
24
+ */
25
+ export declare class NameIndex {
26
+ readonly prefix: number;
27
+ readonly firstName: number;
28
+ readonly middleName: number;
29
+ readonly lastName: number;
30
+ readonly suffix: number;
31
+ /**
32
+ * The minimum number of parts in a list of names.
33
+ */
34
+ static get min(): number;
35
+ /**
36
+ * The maximum number of parts in a list of names.
37
+ */
38
+ static get max(): number;
39
+ private constructor();
40
+ /**
41
+ * The default or base indexing: firstName lastName.
42
+ */
43
+ static base(): NameIndex;
44
+ /**
45
+ * Gets the name index for a list of names based on the `count` of elements
46
+ * and their `order` of appearance.
47
+ */
48
+ static when(order: NameOrder, count?: number): NameIndex;
49
+ }
50
+ /**
51
+ * Capitalizes a string via a `CapsRange` option.
52
+ */
53
+ export declare function capitalize(str: string, range?: CapsRange): string;
54
+ /**
55
+ * Decapitalizes a string via a `CapsRange` option.
56
+ */
57
+ export declare function decapitalize(str: string, range?: CapsRange): string;
58
+ /**
59
+ * Toggles a string representation.
60
+ */
61
+ export declare function toggleCase(str: string): string;
62
+ export declare function isStringArray(value?: unknown): boolean;
63
+ export declare function isNameArray(value?: unknown): boolean;
@@ -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,127 @@
1
+ /**
2
+ * Make a type nullable.
3
+ */
4
+ export declare type Nullable<T> = T | null | undefined;
5
+ /**
6
+ * The abbreviation type to indicate whether or not to add period to a prefix
7
+ * using the American or British way.
8
+ */
9
+ export declare enum Title {
10
+ US = "US",
11
+ UK = "UK"
12
+ }
13
+ /**
14
+ * An option indicating how to format a surname.
15
+ *
16
+ * This enum can be set via `Config` or when creating a `LastName`. As this can
17
+ * become ambiguous at the time of handling it, the value set in `Config` is
18
+ * prioritized and viewed as the source of truth for future considerations.
19
+ */
20
+ export declare enum Surname {
21
+ FATHER = "father",
22
+ MOTHER = "mother",
23
+ HYPHENATED = "hyphenated",
24
+ ALL = "all"
25
+ }
26
+ /**
27
+ * The order of appearance of a `FullName`.
28
+ */
29
+ export declare enum NameOrder {
30
+ FIRST_NAME = "firstName",
31
+ LAST_NAME = "lastName"
32
+ }
33
+ /**
34
+ * The types of name handled in this according the name standards.
35
+ */
36
+ export declare enum NameType {
37
+ FIRST_NAME = "firstName",
38
+ MIDDLE_NAME = "middleName",
39
+ LAST_NAME = "lastName",
40
+ BIRTH_NAME = "birthName"
41
+ }
42
+ /**
43
+ * The possible variants to indicate how to flatten a `FullName`.
44
+ */
45
+ export declare enum Flat {
46
+ FIRST_NAME = "firstName",
47
+ MIDDLE_NAME = "middleName",
48
+ LAST_NAME = "lastName",
49
+ FIRST_MID = "firstMid",
50
+ MID_LAST = "midLast",
51
+ ALL = "all"
52
+ }
53
+ /**
54
+ * The range to use when capitalizing a string content.
55
+ */
56
+ export declare enum CapsRange {
57
+ NONE = 0,
58
+ INITIAL = 1,
59
+ ALL = 2
60
+ }
61
+ /**
62
+ * The types of name handled in this utility according the name standards.
63
+ */
64
+ export declare class Namon {
65
+ readonly index: number;
66
+ readonly key: string;
67
+ static readonly PREFIX: Namon;
68
+ static readonly FIRST_NAME: Namon;
69
+ static readonly MIDDLE_NAME: Namon;
70
+ static readonly LAST_NAME: Namon;
71
+ static readonly SUFFIX: Namon;
72
+ /**
73
+ * The list of supported name types.
74
+ */
75
+ static readonly values: Namon[];
76
+ /**
77
+ * All the predefined name types.
78
+ */
79
+ static readonly all: Map<string, Namon>;
80
+ private constructor();
81
+ /**
82
+ * Whether this string key is part of the predefined keys.
83
+ */
84
+ static has(key: string): boolean;
85
+ /**
86
+ * Makes a string key a namon type.
87
+ */
88
+ static cast(key: string): Nullable<Namon>;
89
+ /**
90
+ * String representation of this object.
91
+ */
92
+ toString(): string;
93
+ /**
94
+ * Whether this and the other value are equal.
95
+ */
96
+ equal(other: Namon | unknown): boolean;
97
+ }
98
+ /**
99
+ * The token used to indicate how to split string values.
100
+ */
101
+ export declare class Separator {
102
+ readonly name: string;
103
+ readonly token: string;
104
+ static readonly COMMA: Separator;
105
+ static readonly COLON: Separator;
106
+ static readonly DOUBLE_QUOTE: Separator;
107
+ static readonly EMPTY: Separator;
108
+ static readonly HYPHEN: Separator;
109
+ static readonly PERIOD: Separator;
110
+ static readonly SEMI_COLON: Separator;
111
+ static readonly SINGLE_QUOTE: Separator;
112
+ static readonly SPACE: Separator;
113
+ static readonly UNDERSCORE: Separator;
114
+ /**
115
+ * All the available separators.
116
+ */
117
+ static readonly all: Map<string, Separator>;
118
+ /**
119
+ * All the available tokens.
120
+ */
121
+ static readonly tokens: string[];
122
+ private constructor();
123
+ /**
124
+ * String representation of this object.
125
+ */
126
+ toString(): string;
127
+ }
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Separator = exports.Namon = exports.CapsRange = exports.Flat = exports.NameType = exports.NameOrder = exports.Surname = exports.Title = void 0;
4
+ /**
5
+ * The abbreviation type to indicate whether or not to add period to a prefix
6
+ * using the American or British way.
7
+ */
8
+ var Title;
9
+ (function (Title) {
10
+ // A period after the prefix.
11
+ Title["US"] = "US";
12
+ // No period after the prefix.
13
+ Title["UK"] = "UK";
14
+ })(Title = exports.Title || (exports.Title = {}));
15
+ /**
16
+ * An option indicating how to format a surname.
17
+ *
18
+ * This enum can be set via `Config` or when creating a `LastName`. As this can
19
+ * become ambiguous at the time of handling it, the value set in `Config` is
20
+ * prioritized and viewed as the source of truth for future considerations.
21
+ */
22
+ var Surname;
23
+ (function (Surname) {
24
+ // The fatherly surname only.
25
+ Surname["FATHER"] = "father";
26
+ // The motherly surname only.
27
+ Surname["MOTHER"] = "mother";
28
+ // The junction of both the fatherly and motherly surnames with a hyphen.
29
+ Surname["HYPHENATED"] = "hyphenated";
30
+ // The junction of both the fatherly and motherly surnames with a space.
31
+ Surname["ALL"] = "all";
32
+ })(Surname = exports.Surname || (exports.Surname = {}));
33
+ /**
34
+ * The order of appearance of a `FullName`.
35
+ */
36
+ var NameOrder;
37
+ (function (NameOrder) {
38
+ // The first part of a full name, usually the first piece of a person name.
39
+ NameOrder["FIRST_NAME"] = "firstName";
40
+ // The last part of a full name, usually the last piece of a person name.
41
+ NameOrder["LAST_NAME"] = "lastName";
42
+ })(NameOrder = exports.NameOrder || (exports.NameOrder = {}));
43
+ /**
44
+ * The types of name handled in this according the name standards.
45
+ */
46
+ var NameType;
47
+ (function (NameType) {
48
+ NameType["FIRST_NAME"] = "firstName";
49
+ NameType["MIDDLE_NAME"] = "middleName";
50
+ NameType["LAST_NAME"] = "lastName";
51
+ NameType["BIRTH_NAME"] = "birthName";
52
+ })(NameType = exports.NameType || (exports.NameType = {}));
53
+ /**
54
+ * The possible variants to indicate how to flatten a `FullName`.
55
+ */
56
+ var Flat;
57
+ (function (Flat) {
58
+ // Use the first name's initial combined with the remaining parts.
59
+ Flat["FIRST_NAME"] = "firstName";
60
+ // Use the middle name's initial combined with the remaining parts.
61
+ Flat["MIDDLE_NAME"] = "middleName";
62
+ // Use the last name's initial combined with the remaining parts.
63
+ Flat["LAST_NAME"] = "lastName";
64
+ // Use both the first and middle names' initials combined with the remaining parts.
65
+ Flat["FIRST_MID"] = "firstMid";
66
+ // Use both the last and middle names' initials combined with the remaining parts.
67
+ Flat["MID_LAST"] = "midLast";
68
+ // Use the first, middle and last names' initials combined with the remaining parts.
69
+ Flat["ALL"] = "all";
70
+ })(Flat = exports.Flat || (exports.Flat = {}));
71
+ /**
72
+ * The range to use when capitalizing a string content.
73
+ */
74
+ var CapsRange;
75
+ (function (CapsRange) {
76
+ // No capitalization.
77
+ CapsRange[CapsRange["NONE"] = 0] = "NONE";
78
+ // Apply capitalization to the first letter.
79
+ CapsRange[CapsRange["INITIAL"] = 1] = "INITIAL";
80
+ // Apply capitalization to all the letters.
81
+ CapsRange[CapsRange["ALL"] = 2] = "ALL";
82
+ })(CapsRange = exports.CapsRange || (exports.CapsRange = {}));
83
+ /**
84
+ * The types of name handled in this utility according the name standards.
85
+ */
86
+ class Namon {
87
+ constructor(index, key) {
88
+ this.index = index;
89
+ this.key = key;
90
+ }
91
+ /**
92
+ * Whether this string key is part of the predefined keys.
93
+ */
94
+ static has(key) {
95
+ return Namon.all.has(key);
96
+ }
97
+ /**
98
+ * Makes a string key a namon type.
99
+ */
100
+ static cast(key) {
101
+ return Namon.has(key) ? Namon.all.get(key) : undefined;
102
+ }
103
+ /**
104
+ * String representation of this object.
105
+ */
106
+ toString() {
107
+ return `Namon.${this.key}`;
108
+ }
109
+ /**
110
+ * Whether this and the other value are equal.
111
+ */
112
+ equal(other) {
113
+ return other instanceof Namon && other.index === this.index && other.key === this.key;
114
+ }
115
+ }
116
+ exports.Namon = Namon;
117
+ Namon.PREFIX = new Namon(0, 'prefix');
118
+ Namon.FIRST_NAME = new Namon(1, 'firstName');
119
+ Namon.MIDDLE_NAME = new Namon(2, 'middleName');
120
+ Namon.LAST_NAME = new Namon(3, 'lastName');
121
+ Namon.SUFFIX = new Namon(4, 'suffix');
122
+ /**
123
+ * The list of supported name types.
124
+ */
125
+ Namon.values = [Namon.PREFIX, Namon.FIRST_NAME, Namon.MIDDLE_NAME, Namon.LAST_NAME, Namon.SUFFIX];
126
+ /**
127
+ * All the predefined name types.
128
+ */
129
+ Namon.all = new Map([
130
+ [Namon.PREFIX.key, Namon.PREFIX],
131
+ [Namon.FIRST_NAME.key, Namon.FIRST_NAME],
132
+ [Namon.MIDDLE_NAME.key, Namon.MIDDLE_NAME],
133
+ [Namon.LAST_NAME.key, Namon.LAST_NAME],
134
+ [Namon.SUFFIX.key, Namon.SUFFIX],
135
+ ]);
136
+ /**
137
+ * The token used to indicate how to split string values.
138
+ */
139
+ class Separator {
140
+ constructor(name, token) {
141
+ this.name = name;
142
+ this.token = token;
143
+ }
144
+ /**
145
+ * String representation of this object.
146
+ */
147
+ toString() {
148
+ return `Separator.${this.name}`;
149
+ }
150
+ }
151
+ exports.Separator = Separator;
152
+ Separator.COMMA = new Separator('comma', ',');
153
+ Separator.COLON = new Separator('colon', ':');
154
+ Separator.DOUBLE_QUOTE = new Separator('doubleQuote', '"');
155
+ Separator.EMPTY = new Separator('empty', '');
156
+ Separator.HYPHEN = new Separator('hyphen', '-');
157
+ Separator.PERIOD = new Separator('period', '.');
158
+ Separator.SEMI_COLON = new Separator('semiColon', ';');
159
+ Separator.SINGLE_QUOTE = new Separator('singleQuote', `'`);
160
+ Separator.SPACE = new Separator('space', ' ');
161
+ Separator.UNDERSCORE = new Separator('underscore', '_');
162
+ /**
163
+ * All the available separators.
164
+ */
165
+ Separator.all = new Map([
166
+ [Separator.COMMA.name, Separator.COMMA],
167
+ [Separator.COLON.name, Separator.COLON],
168
+ [Separator.DOUBLE_QUOTE.name, Separator.DOUBLE_QUOTE],
169
+ [Separator.EMPTY.name, Separator.EMPTY],
170
+ [Separator.HYPHEN.name, Separator.HYPHEN],
171
+ [Separator.PERIOD.name, Separator.PERIOD],
172
+ [Separator.SEMI_COLON.name, Separator.SEMI_COLON],
173
+ [Separator.SINGLE_QUOTE.name, Separator.SINGLE_QUOTE],
174
+ [Separator.SPACE.name, Separator.SPACE],
175
+ [Separator.UNDERSCORE.name, Separator.UNDERSCORE],
176
+ ]);
177
+ /**
178
+ * All the available tokens.
179
+ */
180
+ Separator.tokens = [...Separator.all.values()].map((s) => s.token);
181
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { NameOrder, CapsRange } from './types';
2
+ /**
3
+ * A fixed set of values to handle specific positions for list of names.
4
+ *
5
+ * As for list of names, this helps to follow a specific order based on the
6
+ * count of elements. It is expected that the list has to be between two and
7
+ * five elements. Also, the order of appearance set in the configuration
8
+ * influences how the parsing is carried out.
9
+ *
10
+ * Ordered by first name, the parser works as follows:
11
+ * - 2 elements: firstName lastName
12
+ * - 3 elements: firstName middleName lastName
13
+ * - 4 elements: prefix firstName middleName lastName
14
+ * - 5 elements: prefix firstName middleName lastName suffix
15
+ *
16
+ * Ordered by last name, the parser works as follows:
17
+ * - 2 elements: lastName firstName
18
+ * - 3 elements: lastName firstName middleName
19
+ * - 4 elements: prefix lastName firstName middleName
20
+ * - 5 elements: prefix lastName firstName middleName suffix
21
+ *
22
+ * For example, `Jane Smith` (ordered by first name) is expected to be indexed:
23
+ * `['Jane', 'Smith']`.
24
+ */
25
+ export declare class NameIndex {
26
+ readonly prefix: number;
27
+ readonly firstName: number;
28
+ readonly middleName: number;
29
+ readonly lastName: number;
30
+ readonly suffix: number;
31
+ /**
32
+ * The minimum number of parts in a list of names.
33
+ */
34
+ static get min(): number;
35
+ /**
36
+ * The maximum number of parts in a list of names.
37
+ */
38
+ static get max(): number;
39
+ private constructor();
40
+ /**
41
+ * The default or base indexing: firstName lastName.
42
+ */
43
+ static base(): NameIndex;
44
+ /**
45
+ * Gets the name index for a list of names based on the `count` of elements
46
+ * and their `order` of appearance.
47
+ */
48
+ static when(order: NameOrder, count?: number): NameIndex;
49
+ }
50
+ /**
51
+ * Capitalizes a string via a `CapsRange` option.
52
+ */
53
+ export declare function capitalize(str: string, range?: CapsRange): string;
54
+ /**
55
+ * Decapitalizes a string via a `CapsRange` option.
56
+ */
57
+ export declare function decapitalize(str: string, range?: CapsRange): string;
58
+ /**
59
+ * Toggles a string representation.
60
+ */
61
+ export declare function toggleCase(str: string): string;
62
+ export declare function isStringArray(value?: unknown): boolean;
63
+ export declare function isNameArray(value?: unknown): boolean;