@aidc-toolkit/gs1 1.0.25-beta → 1.0.26-beta

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 (234) hide show
  1. package/dist/abstract-identifier-creator.d.ts +75 -0
  2. package/dist/abstract-identifier-creator.d.ts.map +1 -0
  3. package/dist/abstract-identifier-creator.js +56 -0
  4. package/dist/abstract-identifier-creator.js.map +1 -0
  5. package/dist/abstract-identifier-validator.d.ts +95 -0
  6. package/dist/abstract-identifier-validator.d.ts.map +1 -0
  7. package/dist/abstract-identifier-validator.js +123 -0
  8. package/dist/abstract-identifier-validator.js.map +1 -0
  9. package/dist/abstract-numeric-identifier-creator.d.ts +92 -0
  10. package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -0
  11. package/dist/abstract-numeric-identifier-creator.js +137 -0
  12. package/dist/abstract-numeric-identifier-creator.js.map +1 -0
  13. package/dist/abstract-numeric-identifier-validator.d.ts +35 -0
  14. package/dist/abstract-numeric-identifier-validator.d.ts.map +1 -0
  15. package/dist/abstract-numeric-identifier-validator.js +61 -0
  16. package/dist/abstract-numeric-identifier-validator.js.map +1 -0
  17. package/dist/character-set.d.ts +27 -0
  18. package/dist/character-set.d.ts.map +1 -0
  19. package/dist/character-set.js +50 -0
  20. package/dist/character-set.js.map +1 -0
  21. package/dist/check.d.ts +81 -0
  22. package/dist/check.d.ts.map +1 -0
  23. package/dist/check.js +218 -0
  24. package/dist/check.js.map +1 -0
  25. package/dist/content-character-set.d.ts +26 -0
  26. package/dist/content-character-set.d.ts.map +1 -0
  27. package/dist/content-character-set.js +18 -0
  28. package/dist/content-character-set.js.map +1 -0
  29. package/dist/creators.d.ts +81 -0
  30. package/dist/creators.d.ts.map +1 -0
  31. package/dist/creators.js +62 -0
  32. package/dist/creators.js.map +1 -0
  33. package/dist/descriptors.d.ts +96 -0
  34. package/dist/descriptors.d.ts.map +1 -0
  35. package/dist/descriptors.js +266 -0
  36. package/dist/descriptors.js.map +1 -0
  37. package/dist/gtin-creator.d.ts +69 -0
  38. package/dist/gtin-creator.d.ts.map +1 -0
  39. package/dist/gtin-creator.js +159 -0
  40. package/dist/gtin-creator.js.map +1 -0
  41. package/dist/gtin-descriptor.d.ts +17 -0
  42. package/dist/gtin-descriptor.d.ts.map +1 -0
  43. package/dist/gtin-descriptor.js +2 -0
  44. package/dist/gtin-descriptor.js.map +1 -0
  45. package/dist/gtin-type.d.ts +39 -0
  46. package/dist/gtin-type.d.ts.map +1 -0
  47. package/dist/gtin-type.js +31 -0
  48. package/dist/gtin-type.js.map +1 -0
  49. package/dist/gtin-validator.d.ts +191 -0
  50. package/dist/gtin-validator.d.ts.map +1 -0
  51. package/dist/gtin-validator.js +450 -0
  52. package/dist/gtin-validator.js.map +1 -0
  53. package/dist/identifier-creator.d.ts +31 -0
  54. package/dist/identifier-creator.d.ts.map +1 -0
  55. package/dist/identifier-creator.js +2 -0
  56. package/dist/identifier-creator.js.map +1 -0
  57. package/dist/identifier-descriptor.d.ts +27 -0
  58. package/dist/identifier-descriptor.d.ts.map +1 -0
  59. package/dist/identifier-descriptor.js +2 -0
  60. package/dist/identifier-descriptor.js.map +1 -0
  61. package/dist/identifier-type.d.ts +62 -0
  62. package/dist/identifier-type.d.ts.map +1 -0
  63. package/dist/identifier-type.js +54 -0
  64. package/dist/identifier-type.js.map +1 -0
  65. package/dist/identifier-validator.d.ts +53 -0
  66. package/dist/identifier-validator.d.ts.map +1 -0
  67. package/dist/identifier-validator.js +2 -0
  68. package/dist/identifier-validator.js.map +1 -0
  69. package/dist/index.d.ts +52 -1949
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +21 -4727
  72. package/dist/index.js.map +1 -1
  73. package/dist/locale/en/locale-resources.d.ts +42 -0
  74. package/dist/locale/en/locale-resources.d.ts.map +1 -0
  75. package/dist/locale/en/locale-resources.js +41 -0
  76. package/dist/locale/en/locale-resources.js.map +1 -0
  77. package/dist/locale/fr/locale-resources.d.ts +42 -0
  78. package/dist/locale/fr/locale-resources.d.ts.map +1 -0
  79. package/dist/locale/fr/locale-resources.js +41 -0
  80. package/dist/locale/fr/locale-resources.js.map +1 -0
  81. package/dist/locale/i18n.d.ts +27 -0
  82. package/dist/locale/i18n.d.ts.map +1 -0
  83. package/dist/locale/i18n.js +36 -0
  84. package/dist/locale/i18n.js.map +1 -0
  85. package/dist/non-gtin-numeric-identifier-creator.d.ts +24 -0
  86. package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -0
  87. package/dist/non-gtin-numeric-identifier-creator.js +23 -0
  88. package/dist/non-gtin-numeric-identifier-creator.js.map +1 -0
  89. package/dist/non-gtin-numeric-identifier-descriptor.d.ts +22 -0
  90. package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +1 -0
  91. package/dist/non-gtin-numeric-identifier-descriptor.js +2 -0
  92. package/dist/non-gtin-numeric-identifier-descriptor.js.map +1 -0
  93. package/dist/non-gtin-numeric-identifier-type.d.ts +7 -0
  94. package/dist/non-gtin-numeric-identifier-type.d.ts.map +1 -0
  95. package/dist/non-gtin-numeric-identifier-type.js +2 -0
  96. package/dist/non-gtin-numeric-identifier-type.js.map +1 -0
  97. package/dist/non-gtin-numeric-identifier-validator.d.ts +17 -0
  98. package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -0
  99. package/dist/non-gtin-numeric-identifier-validator.js +17 -0
  100. package/dist/non-gtin-numeric-identifier-validator.js.map +1 -0
  101. package/dist/non-numeric-identifier-creator.d.ts +45 -0
  102. package/dist/non-numeric-identifier-creator.d.ts.map +1 -0
  103. package/dist/non-numeric-identifier-creator.js +84 -0
  104. package/dist/non-numeric-identifier-creator.js.map +1 -0
  105. package/dist/non-numeric-identifier-descriptor.d.ts +26 -0
  106. package/dist/non-numeric-identifier-descriptor.d.ts.map +1 -0
  107. package/dist/non-numeric-identifier-descriptor.js +2 -0
  108. package/dist/non-numeric-identifier-descriptor.js.map +1 -0
  109. package/dist/non-numeric-identifier-type.d.ts +7 -0
  110. package/dist/non-numeric-identifier-type.d.ts.map +1 -0
  111. package/dist/non-numeric-identifier-type.js +2 -0
  112. package/dist/non-numeric-identifier-type.js.map +1 -0
  113. package/dist/non-numeric-identifier-validator.d.ts +49 -0
  114. package/dist/non-numeric-identifier-validator.d.ts.map +1 -0
  115. package/dist/non-numeric-identifier-validator.js +69 -0
  116. package/dist/non-numeric-identifier-validator.js.map +1 -0
  117. package/dist/numeric-identifier-creator.d.ts +53 -0
  118. package/dist/numeric-identifier-creator.d.ts.map +1 -0
  119. package/dist/numeric-identifier-creator.js +2 -0
  120. package/dist/numeric-identifier-creator.js.map +1 -0
  121. package/dist/numeric-identifier-descriptor.d.ts +21 -0
  122. package/dist/numeric-identifier-descriptor.d.ts.map +1 -0
  123. package/dist/numeric-identifier-descriptor.js +2 -0
  124. package/dist/numeric-identifier-descriptor.js.map +1 -0
  125. package/dist/numeric-identifier-type.d.ts +31 -0
  126. package/dist/numeric-identifier-type.d.ts.map +1 -0
  127. package/dist/numeric-identifier-type.js +18 -0
  128. package/dist/numeric-identifier-type.js.map +1 -0
  129. package/dist/numeric-identifier-validator.d.ts +24 -0
  130. package/dist/numeric-identifier-validator.d.ts.map +1 -0
  131. package/dist/numeric-identifier-validator.js +2 -0
  132. package/dist/numeric-identifier-validator.js.map +1 -0
  133. package/dist/prefix-manager.d.ts +232 -0
  134. package/dist/prefix-manager.d.ts.map +1 -0
  135. package/dist/prefix-manager.js +334 -0
  136. package/dist/prefix-manager.js.map +1 -0
  137. package/dist/prefix-provider.d.ts +27 -0
  138. package/dist/prefix-provider.d.ts.map +1 -0
  139. package/dist/prefix-provider.js +2 -0
  140. package/dist/prefix-provider.js.map +1 -0
  141. package/dist/prefix-type.d.ts +26 -0
  142. package/dist/prefix-type.d.ts.map +1 -0
  143. package/dist/prefix-type.js +18 -0
  144. package/dist/prefix-type.js.map +1 -0
  145. package/dist/prefix-validator.d.ts +70 -0
  146. package/dist/prefix-validator.d.ts.map +1 -0
  147. package/dist/prefix-validator.js +208 -0
  148. package/dist/prefix-validator.js.map +1 -0
  149. package/dist/serializable-numeric-identifier-creator.d.ts +76 -0
  150. package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -0
  151. package/dist/serializable-numeric-identifier-creator.js +107 -0
  152. package/dist/serializable-numeric-identifier-creator.js.map +1 -0
  153. package/dist/serializable-numeric-identifier-descriptor.d.ts +26 -0
  154. package/dist/serializable-numeric-identifier-descriptor.d.ts.map +1 -0
  155. package/dist/serializable-numeric-identifier-descriptor.js +2 -0
  156. package/dist/serializable-numeric-identifier-descriptor.js.map +1 -0
  157. package/dist/serializable-numeric-identifier-type.d.ts +6 -0
  158. package/dist/serializable-numeric-identifier-type.d.ts.map +1 -0
  159. package/dist/serializable-numeric-identifier-type.js +2 -0
  160. package/dist/serializable-numeric-identifier-type.js.map +1 -0
  161. package/dist/serializable-numeric-identifier-validator.d.ts +56 -0
  162. package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -0
  163. package/dist/serializable-numeric-identifier-validator.js +77 -0
  164. package/dist/serializable-numeric-identifier-validator.js.map +1 -0
  165. package/dist/validators.d.ts +96 -0
  166. package/dist/validators.d.ts.map +1 -0
  167. package/dist/validators.js +140 -0
  168. package/dist/validators.js.map +1 -0
  169. package/package.json +11 -7
  170. package/src/abstract-identifier-creator.ts +4 -4
  171. package/src/abstract-identifier-validator.ts +6 -6
  172. package/src/abstract-numeric-identifier-creator.ts +7 -7
  173. package/src/abstract-numeric-identifier-validator.ts +6 -6
  174. package/src/check.ts +2 -2
  175. package/src/creators.ts +11 -11
  176. package/src/descriptors.ts +14 -14
  177. package/src/gtin-creator.ts +6 -6
  178. package/src/gtin-descriptor.ts +3 -3
  179. package/src/gtin-type.ts +2 -2
  180. package/src/gtin-validator.ts +8 -8
  181. package/src/identifier-creator.ts +3 -3
  182. package/src/identifier-descriptor.ts +3 -3
  183. package/src/identifier-validator.ts +1 -1
  184. package/src/index.ts +44 -43
  185. package/src/locale/i18n.ts +3 -3
  186. package/src/locale/i18next.d.ts +1 -1
  187. package/src/non-gtin-numeric-identifier-creator.ts +5 -5
  188. package/src/non-gtin-numeric-identifier-descriptor.ts +4 -4
  189. package/src/non-gtin-numeric-identifier-type.ts +2 -2
  190. package/src/non-gtin-numeric-identifier-validator.ts +5 -5
  191. package/src/non-numeric-identifier-creator.ts +6 -6
  192. package/src/non-numeric-identifier-descriptor.ts +4 -4
  193. package/src/non-numeric-identifier-type.ts +2 -2
  194. package/src/non-numeric-identifier-validator.ts +7 -7
  195. package/src/numeric-identifier-creator.ts +3 -3
  196. package/src/numeric-identifier-descriptor.ts +3 -3
  197. package/src/numeric-identifier-type.ts +1 -1
  198. package/src/numeric-identifier-validator.ts +2 -2
  199. package/src/prefix-manager.ts +16 -16
  200. package/src/prefix-provider.ts +1 -1
  201. package/src/prefix-validator.ts +3 -3
  202. package/src/serializable-numeric-identifier-creator.ts +4 -4
  203. package/src/serializable-numeric-identifier-descriptor.ts +4 -4
  204. package/src/serializable-numeric-identifier-type.ts +1 -1
  205. package/src/serializable-numeric-identifier-validator.ts +7 -7
  206. package/src/validators.ts +12 -12
  207. package/test/check.test.ts +1 -1
  208. package/test/creator.test.ts +5 -5
  209. package/test/gtin-creator.ts +2 -2
  210. package/test/gtin-validator.test.ts +2 -2
  211. package/test/identifier-creator.ts +5 -5
  212. package/test/identifier-validator.ts +1 -1
  213. package/test/non-gtin-numeric-identifier-creator.ts +3 -3
  214. package/test/non-gtin-numeric-identifier-validator.ts +2 -2
  215. package/test/non-numeric-identifier-creator.ts +1 -1
  216. package/test/non-numeric-identifier-validator.ts +3 -3
  217. package/test/numeric-identifier-creator.ts +2 -2
  218. package/test/numeric-identifier-validator.ts +2 -2
  219. package/test/prefix-manager.test.ts +2 -2
  220. package/test/serializable-numeric-identifier-creator.ts +2 -2
  221. package/test/serializable-numeric-identifier-validator.ts +3 -3
  222. package/test/setup.ts +1 -1
  223. package/test/sparse.test.ts +1 -1
  224. package/test/utility.ts +1 -1
  225. package/test/validator.test.ts +5 -5
  226. package/test/variable-measure-rcn.test.ts +1 -1
  227. package/tsconfig-config.json +4 -0
  228. package/tsconfig-src.json +8 -0
  229. package/tsconfig-test.json +9 -0
  230. package/tsconfig.json +12 -1
  231. package/tsup.config.ts +3 -2
  232. package/dist/index.cjs +0 -4813
  233. package/dist/index.cjs.map +0 -1
  234. package/dist/index.d.cts +0 -1949
@@ -0,0 +1,208 @@
1
+ import { NUMERIC_CREATOR } from "@aidc-toolkit/utility";
2
+ import { i18nextGS1 } from "./locale/i18n.js";
3
+ import { PrefixTypes } from "./prefix-type.js";
4
+ /**
5
+ * GS1 Company Prefix minimum length.
6
+ */
7
+ const GS1_COMPANY_PREFIX_MINIMUM_LENGTH = 4;
8
+ /**
9
+ * GS1 Company Prefix maximum length.
10
+ */
11
+ const GS1_COMPANY_PREFIX_MAXIMUM_LENGTH = 12;
12
+ /**
13
+ * U.P.C. Company Prefix minimum length.
14
+ */
15
+ const UPC_COMPANY_PREFIX_MINIMUM_LENGTH = 6;
16
+ /**
17
+ * U.P.C. Company Prefix maximum length.
18
+ */
19
+ const UPC_COMPANY_PREFIX_MAXIMUM_LENGTH = 11;
20
+ /**
21
+ * GS1-8 Prefix minimum length.
22
+ */
23
+ const GS1_8_PREFIX_MINIMUM_LENGTH = 2;
24
+ /**
25
+ * GS1-8 Prefix maximum length.
26
+ */
27
+ const GS1_8_PREFIX_MAXIMUM_LENGTH = 7;
28
+ /**
29
+ * Validation parameters for GS1 Company Prefix.
30
+ */
31
+ const GS1_COMPANY_PREFIX_VALIDATION = {
32
+ minimumLength: GS1_COMPANY_PREFIX_MINIMUM_LENGTH,
33
+ maximumLength: GS1_COMPANY_PREFIX_MAXIMUM_LENGTH,
34
+ component: () => i18nextGS1.t("Prefix.gs1CompanyPrefix")
35
+ };
36
+ /**
37
+ * Validation parameters for U.P.C. Company Prefix expressed as GS1 Company Prefix.
38
+ */
39
+ const UPC_COMPANY_PREFIX_AS_GS1_COMPANY_PREFIX_VALIDATION = {
40
+ minimumLength: UPC_COMPANY_PREFIX_MINIMUM_LENGTH + 1,
41
+ maximumLength: UPC_COMPANY_PREFIX_MAXIMUM_LENGTH + 1,
42
+ component: () => i18nextGS1.t("Prefix.gs1CompanyPrefix")
43
+ };
44
+ /**
45
+ * Validation parameters for GS1-8 Prefix expressed as GS1 Company Prefix.
46
+ */
47
+ const GS1_8_PREFIX_AS_GS1_COMPANY_PREFIX_VALIDATION = {
48
+ minimumLength: GS1_8_PREFIX_MINIMUM_LENGTH + 5,
49
+ maximumLength: GS1_8_PREFIX_MAXIMUM_LENGTH + 5,
50
+ component: () => i18nextGS1.t("Prefix.gs1CompanyPrefix")
51
+ };
52
+ /**
53
+ * Validation parameters for U.P.C. Company Prefix.
54
+ */
55
+ const UPC_COMPANY_PREFIX_VALIDATION = {
56
+ minimumLength: UPC_COMPANY_PREFIX_MINIMUM_LENGTH,
57
+ maximumLength: UPC_COMPANY_PREFIX_MAXIMUM_LENGTH,
58
+ component: () => i18nextGS1.t("Prefix.upcCompanyPrefix")
59
+ };
60
+ /**
61
+ * Validation parameters for GS1-8 Prefix.
62
+ */
63
+ const GS1_8_PREFIX_VALIDATION = {
64
+ minimumLength: GS1_8_PREFIX_MINIMUM_LENGTH,
65
+ maximumLength: GS1_8_PREFIX_MAXIMUM_LENGTH,
66
+ component: () => i18nextGS1.t("Prefix.gs18Prefix")
67
+ };
68
+ /**
69
+ * Prefix validator.
70
+ */
71
+ export const PrefixValidator = {
72
+ GS1_COMPANY_PREFIX_MINIMUM_LENGTH,
73
+ GS1_COMPANY_PREFIX_MAXIMUM_LENGTH,
74
+ UPC_COMPANY_PREFIX_MINIMUM_LENGTH,
75
+ UPC_COMPANY_PREFIX_MAXIMUM_LENGTH,
76
+ GS1_8_PREFIX_MINIMUM_LENGTH,
77
+ GS1_8_PREFIX_MAXIMUM_LENGTH,
78
+ /**
79
+ * Validate a prefix.
80
+ *
81
+ * @param prefixType
82
+ * Prefix type.
83
+ *
84
+ * @param allowUPCCompanyPrefix
85
+ * If true, a U.P.C. Company Prefix expressed as a GS1 Company Prefix is permitted.
86
+ *
87
+ * @param allowGS18Prefix
88
+ * If true, a GS1-8 Prefix expressed as a GS1 Company Prefix is permitted.
89
+ *
90
+ * @param prefix
91
+ * Prefix.
92
+ *
93
+ * @param isFromIdentifier
94
+ * If true, the prefix is from an identifier and should be trimmed before its character set is validated.
95
+ *
96
+ * @param isNumericIdentifier
97
+ * If true, the prefix is from a numeric identifier and its character set will be validated by the caller.
98
+ *
99
+ * @param positionOffset
100
+ * Position offset within a larger string.
101
+ */
102
+ validate(prefixType, allowUPCCompanyPrefix, allowGS18Prefix, prefix, isFromIdentifier = false, isNumericIdentifier = false, positionOffset) {
103
+ let baseValidation;
104
+ // Validate the prefix type and determine the prefix validation parameters.
105
+ switch (prefixType) {
106
+ case PrefixTypes.GS1CompanyPrefix:
107
+ if (!prefix.startsWith("0")) {
108
+ baseValidation = GS1_COMPANY_PREFIX_VALIDATION;
109
+ }
110
+ else if (!prefix.startsWith("00000")) {
111
+ if (!allowUPCCompanyPrefix) {
112
+ throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith0"));
113
+ }
114
+ baseValidation = UPC_COMPANY_PREFIX_AS_GS1_COMPANY_PREFIX_VALIDATION;
115
+ }
116
+ else if (!prefix.startsWith("000000")) {
117
+ if (!allowGS18Prefix) {
118
+ throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith00000"));
119
+ }
120
+ baseValidation = GS1_8_PREFIX_AS_GS1_COMPANY_PREFIX_VALIDATION;
121
+ }
122
+ else {
123
+ throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith000000"));
124
+ }
125
+ break;
126
+ case PrefixTypes.UPCCompanyPrefix:
127
+ if (prefix.startsWith("0000")) {
128
+ throw new RangeError(i18nextGS1.t("Prefix.upcCompanyPrefixCantStartWith0000"));
129
+ }
130
+ baseValidation = UPC_COMPANY_PREFIX_VALIDATION;
131
+ break;
132
+ case PrefixTypes.GS18Prefix:
133
+ if (prefix.startsWith("0")) {
134
+ throw new RangeError(i18nextGS1.t("Prefix.gs18PrefixCantStartWith0"));
135
+ }
136
+ baseValidation = GS1_8_PREFIX_VALIDATION;
137
+ break;
138
+ }
139
+ const mergedValidation = {
140
+ ...baseValidation,
141
+ positionOffset
142
+ };
143
+ // If from key and numeric, key validation will take care of character set validation.
144
+ if (!isFromIdentifier) {
145
+ NUMERIC_CREATOR.validate(prefix, mergedValidation);
146
+ }
147
+ else if (!isNumericIdentifier) {
148
+ // Validate only the minimum length, allowing at least one character for the (possibly non-numeric) reference.
149
+ NUMERIC_CREATOR.validate(prefix.substring(0, Math.min(mergedValidation.minimumLength, prefix.length - 1)), mergedValidation);
150
+ }
151
+ },
152
+ /**
153
+ * Normalize a prefix.
154
+ *
155
+ * @param prefixType
156
+ * Prefix type.
157
+ *
158
+ * @param prefix
159
+ * Prefix.
160
+ *
161
+ * @returns
162
+ * Prefix provider with normalized prefix type and prefix.
163
+ */
164
+ normalize(prefixType, prefix) {
165
+ // Validate first.
166
+ this.validate(prefixType, true, true, prefix);
167
+ let gs1CompanyPrefix;
168
+ // First step is to map the prefix to a GS1 Company Prefix.
169
+ switch (prefixType) {
170
+ case PrefixTypes.GS1CompanyPrefix:
171
+ gs1CompanyPrefix = prefix;
172
+ break;
173
+ case PrefixTypes.UPCCompanyPrefix:
174
+ gs1CompanyPrefix = "0" + prefix;
175
+ break;
176
+ case PrefixTypes.GS18Prefix:
177
+ gs1CompanyPrefix = "00000" + prefix;
178
+ break;
179
+ }
180
+ let normalizedPrefixType;
181
+ let normalizedPrefix;
182
+ let upcCompanyPrefix = undefined;
183
+ let gs18Prefix = undefined;
184
+ // Determine the prefix type and populate the remaining fields.
185
+ if (!gs1CompanyPrefix.startsWith("0")) {
186
+ normalizedPrefixType = PrefixTypes.GS1CompanyPrefix;
187
+ normalizedPrefix = gs1CompanyPrefix;
188
+ }
189
+ else if (!gs1CompanyPrefix.startsWith("00000")) {
190
+ normalizedPrefixType = PrefixTypes.UPCCompanyPrefix;
191
+ upcCompanyPrefix = gs1CompanyPrefix.substring(1);
192
+ normalizedPrefix = upcCompanyPrefix;
193
+ }
194
+ else {
195
+ normalizedPrefixType = PrefixTypes.GS18Prefix;
196
+ gs18Prefix = gs1CompanyPrefix.substring(5);
197
+ normalizedPrefix = gs18Prefix;
198
+ }
199
+ return {
200
+ prefixType: normalizedPrefixType,
201
+ prefix: normalizedPrefix,
202
+ gs1CompanyPrefix,
203
+ upcCompanyPrefix,
204
+ gs18Prefix
205
+ };
206
+ }
207
+ };
208
+ //# sourceMappingURL=prefix-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefix-validator.js","sourceRoot":"","sources":["../src/prefix-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { type TransformerInput, type TransformerOutput } from "@aidc-toolkit/utility";
2
+ import { AbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
3
+ import type { PrefixProvider } from "./prefix-provider.js";
4
+ import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
5
+ import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
6
+ declare const SerializableNumericIdentifierCreator_base: import("ts-mixer/dist/types/types.js").Class<any[], SerializableNumericIdentifierValidator & AbstractNumericIdentifierCreator<import("./numeric-identifier-descriptor.js").NumericIdentifierDescriptor>, typeof SerializableNumericIdentifierValidator & (abstract new () => AbstractNumericIdentifierCreator<import("./numeric-identifier-descriptor.js").NumericIdentifierDescriptor>)>;
7
+ /**
8
+ * Serializable numeric identifier creator.
9
+ */
10
+ export declare class SerializableNumericIdentifierCreator extends SerializableNumericIdentifierCreator_base {
11
+ /**
12
+ * Constructor. Typically called internally by a prefix manager but may be called by other code with another prefix
13
+ * provider type.
14
+ *
15
+ * @param prefixProvider
16
+ * Prefix provider.
17
+ *
18
+ * @param identifierType
19
+ * Identifier type.
20
+ */
21
+ constructor(prefixProvider: PrefixProvider, identifierType: SerializableNumericIdentifierType);
22
+ /**
23
+ * Concatenate a validated base identifier with serial component(s).
24
+ *
25
+ * @template TTransformerInput
26
+ * Transformer input type.
27
+ *
28
+ * @param baseIdentifier
29
+ * Base identifier.
30
+ *
31
+ * @param serialComponentOrComponents
32
+ * Serial component(s).
33
+ *
34
+ * @returns
35
+ * Serialized identifier(s).
36
+ */
37
+ private concatenateValidated;
38
+ /**
39
+ * Create serialized identifier(s) with a reference based on a numeric value concatenated with serial component(s).
40
+ * The value is converted to a reference of the appropriate length using a numeric creator.
41
+ *
42
+ * @template TTransformerInput
43
+ * Transformer input type.
44
+ *
45
+ * @param value
46
+ * Numeric value of the reference.
47
+ *
48
+ * @param serialComponentOrComponents
49
+ * Serial component(s).
50
+ *
51
+ * @param sparse
52
+ * If true, the value is mapped to a sparse sequence resistant to discovery. Default is false.
53
+ *
54
+ * @returns
55
+ * Serialized identifiers.
56
+ */
57
+ createSerialized<TTransformerInput extends TransformerInput<string>>(value: number, serialComponentOrComponents: TTransformerInput, sparse?: boolean): TransformerOutput<TTransformerInput, string>;
58
+ /**
59
+ * Concatenate a base identifier with serial component(s).
60
+ *
61
+ * @template TTransformerInput
62
+ * Transformer input type.
63
+ *
64
+ * @param baseIdentifier
65
+ * Base identifier.
66
+ *
67
+ * @param serialComponentOrComponents
68
+ * Serial component(s).
69
+ *
70
+ * @returns
71
+ * Serialized identifier(s).
72
+ */
73
+ concatenate<TTransformerInput extends TransformerInput<string>>(baseIdentifier: string, serialComponentOrComponents: TTransformerInput): TransformerOutput<TTransformerInput, string>;
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=serializable-numeric-identifier-creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-creator.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEnG,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;;AAExG;;GAEG;AACH,qBAAa,oCAAqC,SAAQ,yCAA+E;IACrI;;;;;;;;;OASG;gBACS,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iCAAiC;IAM7F;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAC,iBAAiB,SAAS,gBAAgB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAInM;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,iBAAiB,SAAS,gBAAgB,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,2BAA2B,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAKxL"}
@@ -0,0 +1,107 @@
1
+ import { mapIterable } from "@aidc-toolkit/utility";
2
+ import { Mixin } from "ts-mixer";
3
+ import { AbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
4
+ import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
5
+ /**
6
+ * Serializable numeric identifier creator.
7
+ */
8
+ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNumericIdentifierValidator, AbstractNumericIdentifierCreator) {
9
+ /**
10
+ * Constructor. Typically called internally by a prefix manager but may be called by other code with another prefix
11
+ * provider type.
12
+ *
13
+ * @param prefixProvider
14
+ * Prefix provider.
15
+ *
16
+ * @param identifierType
17
+ * Identifier type.
18
+ */
19
+ constructor(prefixProvider, identifierType) {
20
+ super(identifierType);
21
+ this.init(prefixProvider, prefixProvider.gs1CompanyPrefix);
22
+ }
23
+ /**
24
+ * Concatenate a validated base identifier with serial component(s).
25
+ *
26
+ * @template TTransformerInput
27
+ * Transformer input type.
28
+ *
29
+ * @param baseIdentifier
30
+ * Base identifier.
31
+ *
32
+ * @param serialComponentOrComponents
33
+ * Serial component(s).
34
+ *
35
+ * @returns
36
+ * Serialized identifier(s).
37
+ */
38
+ concatenateValidated(baseIdentifier, serialComponentOrComponents) {
39
+ // TODO Refactor type when https://github.com/microsoft/TypeScript/pull/56941 released.
40
+ let result;
41
+ const serialComponentCreator = this.serialComponentCreator;
42
+ const serialComponentValidation = this.serialComponentValidation;
43
+ /**
44
+ * Validate a serial component and concatenate it to the base identifier.
45
+ *
46
+ * @param serialComponent
47
+ * Serial component.
48
+ *
49
+ * @returns
50
+ * Serialized identifier.
51
+ */
52
+ function validateAndConcatenate(serialComponent) {
53
+ serialComponentCreator.validate(serialComponent, serialComponentValidation);
54
+ return baseIdentifier + serialComponent;
55
+ }
56
+ if (typeof serialComponentOrComponents !== "object") {
57
+ result = validateAndConcatenate(serialComponentOrComponents);
58
+ }
59
+ else {
60
+ result = mapIterable(serialComponentOrComponents, validateAndConcatenate);
61
+ }
62
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type determination is handled above.
63
+ return result;
64
+ }
65
+ /**
66
+ * Create serialized identifier(s) with a reference based on a numeric value concatenated with serial component(s).
67
+ * The value is converted to a reference of the appropriate length using a numeric creator.
68
+ *
69
+ * @template TTransformerInput
70
+ * Transformer input type.
71
+ *
72
+ * @param value
73
+ * Numeric value of the reference.
74
+ *
75
+ * @param serialComponentOrComponents
76
+ * Serial component(s).
77
+ *
78
+ * @param sparse
79
+ * If true, the value is mapped to a sparse sequence resistant to discovery. Default is false.
80
+ *
81
+ * @returns
82
+ * Serialized identifiers.
83
+ */
84
+ createSerialized(value, serialComponentOrComponents, sparse) {
85
+ return this.concatenateValidated(this.create(value, sparse), serialComponentOrComponents);
86
+ }
87
+ /**
88
+ * Concatenate a base identifier with serial component(s).
89
+ *
90
+ * @template TTransformerInput
91
+ * Transformer input type.
92
+ *
93
+ * @param baseIdentifier
94
+ * Base identifier.
95
+ *
96
+ * @param serialComponentOrComponents
97
+ * Serial component(s).
98
+ *
99
+ * @returns
100
+ * Serialized identifier(s).
101
+ */
102
+ concatenate(baseIdentifier, serialComponentOrComponents) {
103
+ this.validate(baseIdentifier);
104
+ return this.concatenateValidated(baseIdentifier, serialComponentOrComponents);
105
+ }
106
+ }
107
+ //# sourceMappingURL=serializable-numeric-identifier-creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-creator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiD,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAG5F,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAExG;;GAEG;AACH,MAAM,OAAO,oCAAqC,SAAQ,KAAK,CAAC,sCAAsC,EAAE,gCAAgC,CAAC;IACrI;;;;;;;;;OASG;IACH,YAAY,cAA8B,EAAE,cAAiD;QACzF,KAAK,CAAC,cAAc,CAAC,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACK,oBAAoB,CAAqD,cAAsB,EAAE,2BAA8C;QACnJ,uFAAuF;QACvF,IAAI,MAAiC,CAAC;QAEtC,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC3D,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QAEjE;;;;;;;;WAQG;QACH,SAAS,sBAAsB,CAAC,eAAuB;YACnD,sBAAsB,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;YAE5E,OAAO,cAAc,GAAG,eAAe,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,2BAA2B,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,GAAG,sBAAsB,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,WAAW,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;QAC9E,CAAC;QAED,+GAA+G;QAC/G,OAAO,MAAsD,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAqD,KAAa,EAAE,2BAA8C,EAAE,MAAgB;QAChJ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAqD,cAAsB,EAAE,2BAA8C;QAClI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;IAClF,CAAC;CACJ"}
@@ -0,0 +1,26 @@
1
+ import type { ContentCharacterSet } from "./content-character-set.js";
2
+ import type { NonGTINNumericIdentifierDescriptor } from "./non-gtin-numeric-identifier-descriptor.js";
3
+ import type { LeaderTypes } from "./numeric-identifier-type.js";
4
+ import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
5
+ /**
6
+ * Serializable numeric identifier descriptor.
7
+ */
8
+ export interface SerializableNumericIdentifierDescriptor extends NonGTINNumericIdentifierDescriptor {
9
+ /**
10
+ * @inheritDoc
11
+ */
12
+ readonly identifierType: SerializableNumericIdentifierType;
13
+ /**
14
+ * @inheritDoc
15
+ */
16
+ readonly leaderType: typeof LeaderTypes.None;
17
+ /**
18
+ * Serial component length.
19
+ */
20
+ readonly serialComponentLength: number;
21
+ /**
22
+ * Serial component character set.
23
+ */
24
+ readonly serialComponentCharacterSet: ContentCharacterSet;
25
+ }
26
+ //# sourceMappingURL=serializable-numeric-identifier-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-descriptor.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AACtG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,uCAAwC,SAAQ,kCAAkC;IAC/F;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,iCAAiC,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;CAC7D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serializable-numeric-identifier-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-descriptor.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-descriptor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { IdentifierTypes } from "./identifier-type.js";
2
+ /**
3
+ * Serializable numeric identifier type.
4
+ */
5
+ export type SerializableNumericIdentifierType = typeof IdentifierTypes.GRAI | typeof IdentifierTypes.GDTI | typeof IdentifierTypes.GCN;
6
+ //# sourceMappingURL=serializable-numeric-identifier-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-type.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,iCAAiC,GACzC,OAAO,eAAe,CAAC,IAAI,GAC3B,OAAO,eAAe,CAAC,IAAI,GAC3B,OAAO,eAAe,CAAC,GAAG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serializable-numeric-identifier-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-type.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ import type { CharacterSetCreator, CharacterSetValidation } from "@aidc-toolkit/utility";
2
+ import { AbstractNumericIdentifierValidator } from "./abstract-numeric-identifier-validator.js";
3
+ import type { ContentCharacterSet } from "./content-character-set.js";
4
+ import type { IdentifierValidation } from "./identifier-validator.js";
5
+ import type { SerializableNumericIdentifierDescriptor } from "./serializable-numeric-identifier-descriptor.js";
6
+ import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
7
+ /**
8
+ * Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
9
+ * that support serialization.
10
+ */
11
+ export declare class SerializableNumericIdentifierValidator extends AbstractNumericIdentifierValidator<SerializableNumericIdentifierDescriptor> {
12
+ /**
13
+ * Serial component length.
14
+ */
15
+ private readonly _serialComponentLength;
16
+ /**
17
+ * Serial component character set.
18
+ */
19
+ private readonly _serialComponentCharacterSet;
20
+ /**
21
+ * Serial component validation parameters.
22
+ */
23
+ private readonly _serialComponentValidation;
24
+ /**
25
+ * Serial component creator.
26
+ */
27
+ private readonly _serialComponentCreator;
28
+ /**
29
+ * Constructor.
30
+ *
31
+ * @param identifierType
32
+ * Identifier type.
33
+ */
34
+ constructor(identifierType: SerializableNumericIdentifierType);
35
+ /**
36
+ * Get the serial component length.
37
+ */
38
+ get serialComponentLength(): number;
39
+ /**
40
+ * Get the serial component character set.
41
+ */
42
+ get serialComponentCharacterSet(): ContentCharacterSet;
43
+ /**
44
+ * Get the serial component validation parameters.
45
+ */
46
+ protected get serialComponentValidation(): CharacterSetValidation;
47
+ /**
48
+ * Get the serial component creator.
49
+ */
50
+ get serialComponentCreator(): CharacterSetCreator;
51
+ /**
52
+ * @inheritDoc
53
+ */
54
+ validate(identifier: string, validation?: IdentifierValidation): void;
55
+ }
56
+ //# sourceMappingURL=serializable-numeric-identifier-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-validator.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,iDAAiD,CAAC;AAC/G,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAEnG;;;GAGG;AACH,qBAAa,sCAAuC,SAAQ,kCAAkC,CAAC,uCAAuC,CAAC;IACnI;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAsB;IAEnE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAyB;IAEpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D;;;;;OAKG;gBACS,cAAc,EAAE,iCAAiC;IAiB7D;;OAEG;IACH,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED;;OAEG;IACH,IAAI,2BAA2B,IAAI,mBAAmB,CAErD;IAED;;OAEG;IACH,SAAS,KAAK,yBAAyB,IAAI,sBAAsB,CAEhE;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,mBAAmB,CAEhD;IAED;;OAEG;IACM,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI;CAOjF"}
@@ -0,0 +1,77 @@
1
+ import { AbstractNumericIdentifierValidator } from "./abstract-numeric-identifier-validator.js";
2
+ import { IdentifierDescriptors } from "./descriptors.js";
3
+ import { i18nextGS1 } from "./locale/i18n.js";
4
+ /**
5
+ * Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
6
+ * that support serialization.
7
+ */
8
+ export class SerializableNumericIdentifierValidator extends AbstractNumericIdentifierValidator {
9
+ /**
10
+ * Serial component length.
11
+ */
12
+ _serialComponentLength;
13
+ /**
14
+ * Serial component character set.
15
+ */
16
+ _serialComponentCharacterSet;
17
+ /**
18
+ * Serial component validation parameters.
19
+ */
20
+ _serialComponentValidation;
21
+ /**
22
+ * Serial component creator.
23
+ */
24
+ _serialComponentCreator;
25
+ /**
26
+ * Constructor.
27
+ *
28
+ * @param identifierType
29
+ * Identifier type.
30
+ */
31
+ constructor(identifierType) {
32
+ const identifierDescriptor = IdentifierDescriptors[identifierType];
33
+ super(identifierDescriptor);
34
+ this._serialComponentLength = identifierDescriptor.serialComponentLength;
35
+ this._serialComponentCharacterSet = identifierDescriptor.serialComponentCharacterSet;
36
+ this._serialComponentValidation = {
37
+ minimumLength: 1,
38
+ maximumLength: identifierDescriptor.serialComponentLength,
39
+ component: () => i18nextGS1.t("Identifier.serialComponent")
40
+ };
41
+ this._serialComponentCreator = SerializableNumericIdentifierValidator.creatorFor(identifierDescriptor.serialComponentCharacterSet);
42
+ }
43
+ /**
44
+ * Get the serial component length.
45
+ */
46
+ get serialComponentLength() {
47
+ return this._serialComponentLength;
48
+ }
49
+ /**
50
+ * Get the serial component character set.
51
+ */
52
+ get serialComponentCharacterSet() {
53
+ return this._serialComponentCharacterSet;
54
+ }
55
+ /**
56
+ * Get the serial component validation parameters.
57
+ */
58
+ get serialComponentValidation() {
59
+ return this._serialComponentValidation;
60
+ }
61
+ /**
62
+ * Get the serial component creator.
63
+ */
64
+ get serialComponentCreator() {
65
+ return this._serialComponentCreator;
66
+ }
67
+ /**
68
+ * @inheritDoc
69
+ */
70
+ validate(identifier, validation) {
71
+ super.validate(identifier.substring(0, this.length), validation);
72
+ if (identifier.length > this.length) {
73
+ this.serialComponentCreator.validate(identifier.substring(this.length), this._serialComponentValidation);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=serializable-numeric-identifier-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-validator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAEhG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C;;;GAGG;AACH,MAAM,OAAO,sCAAuC,SAAQ,kCAA2E;IACnI;;OAEG;IACc,sBAAsB,CAAS;IAEhD;;OAEG;IACc,4BAA4B,CAAsB;IAEnE;;OAEG;IACc,0BAA0B,CAAyB;IAEpE;;OAEG;IACc,uBAAuB,CAAsB;IAE9D;;;;;OAKG;IACH,YAAY,cAAiD;QACzD,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAEnE,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE5B,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,qBAAqB,CAAC;QACzE,IAAI,CAAC,4BAA4B,GAAG,oBAAoB,CAAC,2BAA2B,CAAC;QAErF,IAAI,CAAC,0BAA0B,GAAG;YAC9B,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,oBAAoB,CAAC,qBAAqB;YACzD,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC;SAC9D,CAAC;QAEF,IAAI,CAAC,uBAAuB,GAAG,sCAAsC,CAAC,UAAU,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACvI,CAAC;IAED;;OAEG;IACH,IAAI,qBAAqB;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,2BAA2B;QAC3B,OAAO,IAAI,CAAC,4BAA4B,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAc,yBAAyB;QACnC,OAAO,IAAI,CAAC,0BAA0B,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI,sBAAsB;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IAED;;OAEG;IACM,QAAQ,CAAC,UAAkB,EAAE,UAAiC;QACnE,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QAEjE,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;CACJ"}