@aidc-toolkit/gs1 1.0.26-beta → 1.0.28-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 (205) hide show
  1. package/dist/abstract-identifier-creator.d.ts +32 -66
  2. package/dist/abstract-identifier-creator.d.ts.map +1 -1
  3. package/dist/abstract-identifier-creator.js +62 -45
  4. package/dist/abstract-identifier-creator.js.map +1 -1
  5. package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts +36 -0
  6. package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts.map +1 -0
  7. package/dist/abstract-non-gtin-numeric-identifier-creator.js +37 -0
  8. package/dist/abstract-non-gtin-numeric-identifier-creator.js.map +1 -0
  9. package/dist/abstract-numeric-identifier-creator.d.ts +28 -86
  10. package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -1
  11. package/dist/abstract-numeric-identifier-creator.js +138 -121
  12. package/dist/abstract-numeric-identifier-creator.js.map +1 -1
  13. package/dist/content-character-set-creators.d.ts +4 -0
  14. package/dist/content-character-set-creators.d.ts.map +1 -0
  15. package/dist/content-character-set-creators.js +9 -0
  16. package/dist/content-character-set-creators.js.map +1 -0
  17. package/dist/gtin-creator.d.ts +8 -13
  18. package/dist/gtin-creator.d.ts.map +1 -1
  19. package/dist/gtin-creator.js +12 -15
  20. package/dist/gtin-creator.js.map +1 -1
  21. package/dist/gtin-descriptor.d.ts +8 -3
  22. package/dist/gtin-descriptor.d.ts.map +1 -1
  23. package/dist/gtin-length.d.ts +64 -0
  24. package/dist/gtin-length.d.ts.map +1 -0
  25. package/dist/gtin-length.js +36 -0
  26. package/dist/gtin-length.js.map +1 -0
  27. package/dist/gtin-type.d.ts +15 -28
  28. package/dist/gtin-type.d.ts.map +1 -1
  29. package/dist/gtin-type.js +4 -28
  30. package/dist/gtin-type.js.map +1 -1
  31. package/dist/gtin-validator.d.ts +9 -23
  32. package/dist/gtin-validator.d.ts.map +1 -1
  33. package/dist/gtin-validator.js +32 -39
  34. package/dist/gtin-validator.js.map +1 -1
  35. package/dist/identifier-creator.d.ts +4 -4
  36. package/dist/identifier-creator.d.ts.map +1 -1
  37. package/dist/{creators.d.ts → identifier-creators.d.ts} +47 -10
  38. package/dist/identifier-creators.d.ts.map +1 -0
  39. package/dist/identifier-creators.js +92 -0
  40. package/dist/identifier-creators.js.map +1 -0
  41. package/dist/{descriptors.d.ts → identifier-descriptors.d.ts} +20 -10
  42. package/dist/identifier-descriptors.d.ts.map +1 -0
  43. package/dist/{descriptors.js → identifier-descriptors.js} +27 -31
  44. package/dist/identifier-descriptors.js.map +1 -0
  45. package/dist/identifier-extension.d.ts +82 -0
  46. package/dist/identifier-extension.d.ts.map +1 -0
  47. package/dist/identifier-extension.js +79 -0
  48. package/dist/identifier-extension.js.map +1 -0
  49. package/dist/identifier-validator.d.ts +44 -9
  50. package/dist/identifier-validator.d.ts.map +1 -1
  51. package/dist/identifier-validator.js +109 -1
  52. package/dist/identifier-validator.js.map +1 -1
  53. package/dist/{validators.d.ts → identifier-validators.d.ts} +47 -12
  54. package/dist/identifier-validators.d.ts.map +1 -0
  55. package/dist/{validators.js → identifier-validators.js} +40 -13
  56. package/dist/identifier-validators.js.map +1 -0
  57. package/dist/index.d.ts +15 -9
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +13 -4
  60. package/dist/index.js.map +1 -1
  61. package/dist/leader-type.d.ts +26 -0
  62. package/dist/leader-type.d.ts.map +1 -0
  63. package/dist/leader-type.js +18 -0
  64. package/dist/leader-type.js.map +1 -0
  65. package/dist/non-gtin-numeric-identifier-creator.d.ts +7 -19
  66. package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -1
  67. package/dist/non-gtin-numeric-identifier-creator.js +1 -22
  68. package/dist/non-gtin-numeric-identifier-creator.js.map +1 -1
  69. package/dist/non-gtin-numeric-identifier-descriptor.d.ts +1 -1
  70. package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +1 -1
  71. package/dist/non-gtin-numeric-identifier-type.d.ts +22 -3
  72. package/dist/non-gtin-numeric-identifier-type.d.ts.map +1 -1
  73. package/dist/non-gtin-numeric-identifier-type.js +7 -1
  74. package/dist/non-gtin-numeric-identifier-type.js.map +1 -1
  75. package/dist/non-gtin-numeric-identifier-validator.d.ts +5 -10
  76. package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -1
  77. package/dist/non-gtin-numeric-identifier-validator.js +5 -12
  78. package/dist/non-gtin-numeric-identifier-validator.js.map +1 -1
  79. package/dist/non-numeric-identifier-creator.d.ts +4 -9
  80. package/dist/non-numeric-identifier-creator.d.ts.map +1 -1
  81. package/dist/non-numeric-identifier-creator.js +8 -10
  82. package/dist/non-numeric-identifier-creator.js.map +1 -1
  83. package/dist/non-numeric-identifier-type.d.ts +22 -3
  84. package/dist/non-numeric-identifier-type.d.ts.map +1 -1
  85. package/dist/non-numeric-identifier-type.js +7 -1
  86. package/dist/non-numeric-identifier-type.js.map +1 -1
  87. package/dist/non-numeric-identifier-validator.d.ts +3 -11
  88. package/dist/non-numeric-identifier-validator.d.ts.map +1 -1
  89. package/dist/non-numeric-identifier-validator.js +8 -8
  90. package/dist/non-numeric-identifier-validator.js.map +1 -1
  91. package/dist/non-serializable-numeric-identifier-creator.d.ts +10 -0
  92. package/dist/non-serializable-numeric-identifier-creator.d.ts.map +1 -0
  93. package/dist/non-serializable-numeric-identifier-creator.js +8 -0
  94. package/dist/non-serializable-numeric-identifier-creator.js.map +1 -0
  95. package/dist/non-serializable-numeric-identifier-descriptor.d.ts +12 -0
  96. package/dist/non-serializable-numeric-identifier-descriptor.d.ts.map +1 -0
  97. package/dist/non-serializable-numeric-identifier-descriptor.js +2 -0
  98. package/dist/non-serializable-numeric-identifier-descriptor.js.map +1 -0
  99. package/dist/non-serializable-numeric-identifier-type.d.ts +26 -0
  100. package/dist/non-serializable-numeric-identifier-type.d.ts.map +1 -0
  101. package/dist/non-serializable-numeric-identifier-type.js +7 -0
  102. package/dist/non-serializable-numeric-identifier-type.js.map +1 -0
  103. package/dist/non-serializable-numeric-identifier-validator.d.ts +16 -0
  104. package/dist/non-serializable-numeric-identifier-validator.d.ts.map +1 -0
  105. package/dist/non-serializable-numeric-identifier-validator.js +17 -0
  106. package/dist/non-serializable-numeric-identifier-validator.js.map +1 -0
  107. package/dist/numeric-identifier-creator.d.ts +6 -6
  108. package/dist/numeric-identifier-creator.d.ts.map +1 -1
  109. package/dist/numeric-identifier-descriptor.d.ts +2 -1
  110. package/dist/numeric-identifier-descriptor.d.ts.map +1 -1
  111. package/dist/numeric-identifier-type.d.ts +19 -24
  112. package/dist/numeric-identifier-type.d.ts.map +1 -1
  113. package/dist/numeric-identifier-type.js +4 -15
  114. package/dist/numeric-identifier-type.js.map +1 -1
  115. package/dist/numeric-identifier-validator.d.ts +20 -6
  116. package/dist/numeric-identifier-validator.d.ts.map +1 -1
  117. package/dist/numeric-identifier-validator.js +60 -1
  118. package/dist/numeric-identifier-validator.js.map +1 -1
  119. package/dist/prefix-manager.d.ts +13 -94
  120. package/dist/prefix-manager.d.ts.map +1 -1
  121. package/dist/prefix-manager.js +65 -102
  122. package/dist/prefix-manager.js.map +1 -1
  123. package/dist/serializable-numeric-identifier-creator.d.ts +3 -31
  124. package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -1
  125. package/dist/serializable-numeric-identifier-creator.js +7 -21
  126. package/dist/serializable-numeric-identifier-creator.js.map +1 -1
  127. package/dist/serializable-numeric-identifier-descriptor.d.ts +1 -1
  128. package/dist/serializable-numeric-identifier-descriptor.d.ts.map +1 -1
  129. package/dist/serializable-numeric-identifier-type.d.ts +22 -2
  130. package/dist/serializable-numeric-identifier-type.d.ts.map +1 -1
  131. package/dist/serializable-numeric-identifier-type.js +7 -1
  132. package/dist/serializable-numeric-identifier-type.js.map +1 -1
  133. package/dist/serializable-numeric-identifier-validator.d.ts +3 -18
  134. package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -1
  135. package/dist/serializable-numeric-identifier-validator.js +17 -16
  136. package/dist/serializable-numeric-identifier-validator.js.map +1 -1
  137. package/package.json +4 -5
  138. package/src/abstract-identifier-creator.ts +104 -75
  139. package/src/abstract-non-gtin-numeric-identifier-creator.ts +81 -0
  140. package/src/abstract-numeric-identifier-creator.ts +185 -133
  141. package/src/content-character-set-creators.ts +9 -0
  142. package/src/gtin-creator.ts +15 -16
  143. package/src/gtin-descriptor.ts +9 -3
  144. package/src/gtin-length.ts +61 -0
  145. package/src/gtin-type.ts +6 -37
  146. package/src/gtin-validator.ts +34 -41
  147. package/src/identifier-creator.ts +4 -4
  148. package/src/identifier-creators.ts +177 -0
  149. package/src/{descriptors.ts → identifier-descriptors.ts} +56 -54
  150. package/src/identifier-extension.ts +155 -0
  151. package/src/identifier-validator.ts +93 -10
  152. package/src/{validators.ts → identifier-validators.ts} +98 -36
  153. package/src/index.ts +15 -9
  154. package/src/leader-type.ts +29 -0
  155. package/src/non-gtin-numeric-identifier-creator.ts +7 -22
  156. package/src/non-gtin-numeric-identifier-descriptor.ts +1 -1
  157. package/src/non-gtin-numeric-identifier-type.ts +14 -3
  158. package/src/non-gtin-numeric-identifier-validator.ts +5 -13
  159. package/src/non-numeric-identifier-creator.ts +15 -12
  160. package/src/non-numeric-identifier-type.ts +14 -3
  161. package/src/non-numeric-identifier-validator.ts +8 -9
  162. package/src/non-serializable-numeric-identifier-creator.ts +11 -0
  163. package/src/non-serializable-numeric-identifier-descriptor.ts +12 -0
  164. package/src/non-serializable-numeric-identifier-type.ts +22 -0
  165. package/src/non-serializable-numeric-identifier-validator.ts +19 -0
  166. package/src/numeric-identifier-creator.ts +7 -6
  167. package/src/numeric-identifier-descriptor.ts +2 -1
  168. package/src/numeric-identifier-type.ts +17 -35
  169. package/src/numeric-identifier-validator.ts +61 -6
  170. package/src/prefix-manager.ts +76 -112
  171. package/src/serializable-numeric-identifier-creator.ts +10 -25
  172. package/src/serializable-numeric-identifier-descriptor.ts +1 -1
  173. package/src/serializable-numeric-identifier-type.ts +14 -5
  174. package/src/serializable-numeric-identifier-validator.ts +17 -16
  175. package/test/gtin-creator.ts +9 -2
  176. package/test/gtin-validator.test.ts +8 -10
  177. package/test/identifier-creator.ts +7 -7
  178. package/test/mixin.test.ts +35 -0
  179. package/test/non-gtin-numeric-identifier-validator.ts +7 -2
  180. package/test/non-numeric-identifier-validator.ts +2 -2
  181. package/test/non-serializable-numeric-identifier-creator.ts +64 -0
  182. package/test/non-serializable-numeric-identifier-validator.ts +6 -0
  183. package/test/numeric-identifier-creator.ts +7 -2
  184. package/test/serializable-numeric-identifier-validator.ts +2 -2
  185. package/test/utility.ts +6 -6
  186. package/test/validator.test.ts +11 -10
  187. package/test/variable-measure-rcn.test.ts +23 -23
  188. package/dist/abstract-identifier-validator.d.ts +0 -95
  189. package/dist/abstract-identifier-validator.d.ts.map +0 -1
  190. package/dist/abstract-identifier-validator.js +0 -123
  191. package/dist/abstract-identifier-validator.js.map +0 -1
  192. package/dist/abstract-numeric-identifier-validator.d.ts +0 -35
  193. package/dist/abstract-numeric-identifier-validator.d.ts.map +0 -1
  194. package/dist/abstract-numeric-identifier-validator.js +0 -61
  195. package/dist/abstract-numeric-identifier-validator.js.map +0 -1
  196. package/dist/creators.d.ts.map +0 -1
  197. package/dist/creators.js +0 -62
  198. package/dist/creators.js.map +0 -1
  199. package/dist/descriptors.d.ts.map +0 -1
  200. package/dist/descriptors.js.map +0 -1
  201. package/dist/validators.d.ts.map +0 -1
  202. package/dist/validators.js.map +0 -1
  203. package/src/abstract-identifier-validator.ts +0 -140
  204. package/src/abstract-numeric-identifier-validator.ts +0 -69
  205. package/src/creators.ts +0 -113
@@ -1,10 +1,11 @@
1
1
  import { type CharacterSetValidation, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
2
- import { AbstractNumericIdentifierValidator } from "./abstract-numeric-identifier-validator.js";
3
2
  import { checkDigit, hasValidCheckDigit, isValidPriceOrWeightCheckDigit } from "./check.js";
4
- import { IdentifierDescriptors } from "./descriptors.js";
5
3
  import type { GTINDescriptor } from "./gtin-descriptor.js";
6
- import { type GTINBaseType, type GTINType, GTINTypes } from "./gtin-type.js";
4
+ import { type GTINBaseLength, GTINLengths } from "./gtin-length.js";
5
+ import type { GTINType } from "./gtin-type.js";
6
+ import { IdentifierDescriptors } from "./identifier-descriptors.js";
7
7
  import { i18nextGS1 } from "./locale/i18n.js";
8
+ import { NumericIdentifierValidator } from "./numeric-identifier-validator.js";
8
9
  import { type PrefixType, PrefixTypes } from "./prefix-type.js";
9
10
  import { PrefixValidator } from "./prefix-validator.js";
10
11
 
@@ -56,11 +57,11 @@ export interface RCNReference {
56
57
  /**
57
58
  * GTIN validator.
58
59
  */
59
- export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescriptor> {
60
+ export class GTINValidator extends NumericIdentifierValidator<GTINType> implements GTINDescriptor {
60
61
  /**
61
62
  * Validation parameters for optional indicator digit.
62
63
  */
63
- private static readonly OPTIONAL_INDICATOR_DIGIT_VALIDATION: CharacterSetValidation = {
64
+ static readonly #OPTIONAL_INDICATOR_DIGIT_VALIDATION: CharacterSetValidation = {
64
65
  minimumLength: 0,
65
66
  maximumLength: 1,
66
67
  component: () => i18nextGS1.t("Identifier.indicatorDigit")
@@ -69,7 +70,7 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
69
70
  /**
70
71
  * Validation parameters for zero-suppressed GTIN-12.
71
72
  */
72
- private static readonly ZERO_SUPPRESSED_GTIN12_VALIDATION: CharacterSetValidation = {
73
+ static readonly #ZERO_SUPPRESSED_GTIN12_VALIDATION: CharacterSetValidation = {
73
74
  minimumLength: 8,
74
75
  maximumLength: 8
75
76
  };
@@ -77,35 +78,27 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
77
78
  /**
78
79
  * Prefix type.
79
80
  */
80
- private readonly _prefixType: PrefixType;
81
+ readonly #prefixType: PrefixType;
81
82
 
82
83
  /**
83
84
  * Constructor.
84
85
  *
85
- * @param gtinBaseType
86
- * GTIN base type (all except GTIN-14).
86
+ * @param gtinBaseLength
87
+ * GTIN base length (all except GTIN-14).
87
88
  */
88
- constructor(gtinBaseType: GTINBaseType) {
89
- const identifierDescriptor = IdentifierDescriptors.GTIN[gtinBaseType];
89
+ constructor(gtinBaseLength: GTINBaseLength) {
90
+ const identifierDescriptor = IdentifierDescriptors.GTIN[gtinBaseLength];
90
91
 
91
92
  super(identifierDescriptor);
92
93
 
93
- this._prefixType = identifierDescriptor.prefixType;
94
+ this.#prefixType = identifierDescriptor.prefixType;
94
95
  }
95
96
 
96
97
  /**
97
98
  * @inheritDoc
98
99
  */
99
100
  override get prefixType(): PrefixType {
100
- return this._prefixType;
101
- }
102
-
103
- /**
104
- * @inheritDoc
105
- */
106
- get gtinType(): GTINType {
107
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Length maps to GTIN type.
108
- return this.length as GTINType;
101
+ return this.#prefixType;
109
102
  }
110
103
 
111
104
  /**
@@ -163,7 +156,7 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
163
156
  * GTIN-12.
164
157
  */
165
158
  static zeroExpand(zeroSuppressedGTIN12: string): string {
166
- NUMERIC_CREATOR.validate(zeroSuppressedGTIN12, GTINValidator.ZERO_SUPPRESSED_GTIN12_VALIDATION);
159
+ NUMERIC_CREATOR.validate(zeroSuppressedGTIN12, GTINValidator.#ZERO_SUPPRESSED_GTIN12_VALIDATION);
167
160
 
168
161
  // Convert to individual digits.
169
162
  const d = Array.from(zeroSuppressedGTIN12);
@@ -208,14 +201,14 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
208
201
  static convertToGTIN14(indicatorDigit: string, gtin: string): string {
209
202
  GTINValidator.validateAny(gtin);
210
203
 
211
- NUMERIC_CREATOR.validate(indicatorDigit, GTINValidator.OPTIONAL_INDICATOR_DIGIT_VALIDATION);
204
+ NUMERIC_CREATOR.validate(indicatorDigit, GTINValidator.#OPTIONAL_INDICATOR_DIGIT_VALIDATION);
212
205
 
213
206
  // Check digit doesn't change by prepending zeros.
214
- let gtin14 = gtin.padStart(GTINTypes.GTIN14, "0");
207
+ let gtin14 = gtin.padStart(GTINLengths.GTIN14, "0");
215
208
 
216
209
  // If indicator digit provided and is different, recalculate the check digit.
217
210
  if (indicatorDigit.length !== 0 && indicatorDigit !== gtin14.charAt(0)) {
218
- const partialGTIN14 = indicatorDigit + gtin14.substring(1, GTINTypes.GTIN14 - 1);
211
+ const partialGTIN14 = indicatorDigit + gtin14.substring(1, GTINLengths.GTIN14 - 1);
219
212
 
220
213
  gtin14 = partialGTIN14 + checkDigit(partialGTIN14);
221
214
  }
@@ -242,7 +235,7 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
242
235
  let normalizedGTIN: string;
243
236
 
244
237
  switch (gtinLength) {
245
- case GTINTypes.GTIN13 as number:
238
+ case GTINLengths.GTIN13 as number:
246
239
  if (!gtin.startsWith("0")) {
247
240
  // GTIN is GTIN-13.
248
241
  normalizedGTIN = gtin;
@@ -257,12 +250,12 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
257
250
  }
258
251
  break;
259
252
 
260
- case GTINTypes.GTIN12 as number:
253
+ case GTINLengths.GTIN12 as number:
261
254
  // GTIN is GTIN-12.
262
255
  normalizedGTIN = gtin;
263
256
  break;
264
257
 
265
- case GTINTypes.GTIN8 as number:
258
+ case GTINLengths.GTIN8 as number:
266
259
  if (!gtin.startsWith("0")) {
267
260
  // GTIN is GTIN-8.
268
261
  normalizedGTIN = gtin;
@@ -272,7 +265,7 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
272
265
  }
273
266
  break;
274
267
 
275
- case GTINTypes.GTIN14 as number:
268
+ case GTINLengths.GTIN14 as number:
276
269
  if (!gtin.startsWith("0")) {
277
270
  // GTIN is GTIN-14.
278
271
  normalizedGTIN = gtin;
@@ -316,7 +309,7 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
316
309
  let gtinLevelRestriction: GTINLevel;
317
310
 
318
311
  switch (gtin.length) {
319
- case GTINTypes.GTIN13 as number:
312
+ case GTINLengths.GTIN13 as number:
320
313
  if (gtin.startsWith("0")) {
321
314
  throw new RangeError(i18nextGS1.t("Identifier.invalidGTIN13AtRetail"));
322
315
  }
@@ -327,14 +320,14 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
327
320
  gtinLevelRestriction = GTINLevels.Any;
328
321
  break;
329
322
 
330
- case GTINTypes.GTIN12 as number:
323
+ case GTINLengths.GTIN12 as number:
331
324
  // Validate prefix requiring exact match for prefix type.
332
325
  PrefixValidator.validate(PrefixTypes.UPCCompanyPrefix, false, false, gtin, true, true);
333
326
 
334
327
  gtinLevelRestriction = GTINLevels.Any;
335
328
  break;
336
329
 
337
- case GTINTypes.GTIN8 as number:
330
+ case GTINLengths.GTIN8 as number:
338
331
  // Zero-suppressed GTIN-12 always starts with 0.
339
332
  if (!gtin.startsWith("0")) {
340
333
  // Validate prefix requiring exact match for prefix type.
@@ -346,7 +339,7 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
346
339
  gtinLevelRestriction = GTINLevels.RetailConsumer;
347
340
  break;
348
341
 
349
- case GTINTypes.GTIN14 as number:
342
+ case GTINLengths.GTIN14 as number:
350
343
  // Validate prefix supporting any prefix type.
351
344
  PrefixValidator.validate(PrefixTypes.GS1CompanyPrefix, true, true, gtin.substring(1), true, true);
352
345
 
@@ -375,7 +368,7 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
375
368
  * GTIN-14.
376
369
  */
377
370
  static validateGTIN14(gtin14: string): void {
378
- if (gtin14.length !== GTINTypes.GTIN14) {
371
+ if (gtin14.length !== GTINLengths.GTIN14) {
379
372
  throw new RangeError(i18nextGS1.t("Identifier.invalidGTIN14Length"));
380
373
  }
381
374
 
@@ -515,26 +508,26 @@ export class GTINValidator extends AbstractNumericIdentifierValidator<GTINDescri
515
508
  * GTIN-13 validator.
516
509
  */
517
510
  // Defined here because of circular reference.
518
- export const GTIN13_VALIDATOR = new GTINValidator(GTINTypes.GTIN13);
511
+ export const GTIN13_VALIDATOR = new GTINValidator(GTINLengths.GTIN13);
519
512
 
520
513
  /**
521
514
  * GTIN-12 validator.
522
515
  */
523
516
  // Defined here because of circular reference.
524
- export const GTIN12_VALIDATOR = new GTINValidator(GTINTypes.GTIN12);
517
+ export const GTIN12_VALIDATOR = new GTINValidator(GTINLengths.GTIN12);
525
518
 
526
519
  /**
527
520
  * GTIN-8 validator.
528
521
  */
529
522
  // Defined here because of circular reference.
530
- export const GTIN8_VALIDATOR = new GTINValidator(GTINTypes.GTIN8);
523
+ export const GTIN8_VALIDATOR = new GTINValidator(GTINLengths.GTIN8);
531
524
 
532
525
  /**
533
526
  * GTIN validators indexed by prefix type.
534
527
  */
535
528
  // Defined here because of circular reference.
536
- export const GTIN_VALIDATORS: Readonly<Record<GTINBaseType, GTINValidator>> = {
537
- [GTINTypes.GTIN13]: GTIN13_VALIDATOR,
538
- [GTINTypes.GTIN12]: GTIN12_VALIDATOR,
539
- [GTINTypes.GTIN8]: GTIN8_VALIDATOR
529
+ export const GTIN_VALIDATORS: Readonly<Record<GTINBaseLength, GTINValidator>> = {
530
+ [GTINLengths.GTIN13]: GTIN13_VALIDATOR,
531
+ [GTINLengths.GTIN12]: GTIN12_VALIDATOR,
532
+ [GTINLengths.GTIN8]: GTIN8_VALIDATOR
540
533
  };
@@ -1,4 +1,4 @@
1
- import type { IdentifierDescriptor } from "./identifier-descriptor.js";
1
+ import type { IdentifierType } from "./identifier-type.js";
2
2
  import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
3
3
  import type { PrefixProvider } from "./prefix-provider.js";
4
4
 
@@ -8,13 +8,13 @@ import type { PrefixProvider } from "./prefix-provider.js";
8
8
  *
9
9
  * Keys are created based on a prefix defined in a prefix provider to which the identifier creator is bound.
10
10
  *
11
- * @template TIdentifierDescriptor
12
- * Identifier descriptor type.
11
+ * @template TIdentifierType
12
+ * Identifier type type.
13
13
  *
14
14
  * @template TIdentifierValidation
15
15
  * Identifier validation type.
16
16
  */
17
- export interface IdentifierCreator<TIdentifierDescriptor extends IdentifierDescriptor = IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation = IdentifierValidation> extends IdentifierValidator<TIdentifierDescriptor, TIdentifierValidation> {
17
+ export interface IdentifierCreator<TIdentifierType extends IdentifierType = IdentifierType, TIdentifierValidation extends IdentifierValidation = IdentifierValidation> extends IdentifierValidator<TIdentifierType, TIdentifierValidation> {
18
18
  /**
19
19
  * Get the prefix provider to which this identifier creator is bound.
20
20
  */
@@ -0,0 +1,177 @@
1
+ import { GTINCreator } from "./gtin-creator.js";
2
+ import type { GTINBaseLength } from "./gtin-length.js";
3
+ import type { GTINType } from "./gtin-type.js";
4
+ import type { IdentifierCreator } from "./identifier-creator.js";
5
+ import {
6
+ type IdentifierTypeExtension,
7
+ isGTINExtension,
8
+ isNonGTINNumericIdentifierExtension,
9
+ isNonNumericIdentifierExtension,
10
+ isNonSerializableNumericIdentifierExtension,
11
+ isNumericIdentifierExtension,
12
+ isSerializableNumericIdentifierExtension
13
+ } from "./identifier-extension.js";
14
+ import type { IdentifierType } from "./identifier-type.js";
15
+ import type { NonGTINNumericIdentifierCreator } from "./non-gtin-numeric-identifier-creator.js";
16
+ import { NonNumericIdentifierCreator } from "./non-numeric-identifier-creator.js";
17
+ import { NonSerializableNumericIdentifierCreator } from "./non-serializable-numeric-identifier-creator.js";
18
+ import type { NumericIdentifierCreator } from "./numeric-identifier-creator.js";
19
+ import type { PrefixProvider } from "./prefix-provider.js";
20
+ import { SerializableNumericIdentifierCreator } from "./serializable-numeric-identifier-creator.js";
21
+
22
+ /**
23
+ * Identifier creator type based on identifier type type.
24
+ *
25
+ * @template TIdentifierType
26
+ * Identifier type type.
27
+ */
28
+ export type IdentifierTypeCreator<TIdentifierType extends IdentifierType> = IdentifierTypeExtension<
29
+ TIdentifierType,
30
+ IdentifierCreator,
31
+ NumericIdentifierCreator,
32
+ GTINCreator,
33
+ NonGTINNumericIdentifierCreator,
34
+ NonSerializableNumericIdentifierCreator,
35
+ SerializableNumericIdentifierCreator,
36
+ NonNumericIdentifierCreator
37
+ >;
38
+
39
+ /**
40
+ * Identifier creators entry type based on identifier type type.
41
+ *
42
+ * @template TIdentifierType
43
+ * Identifier type type.
44
+ */
45
+ export type IdentifierCreatorsEntry<TIdentifierType extends IdentifierType> = IdentifierTypeCreator<TIdentifierType>;
46
+
47
+ /**
48
+ * Identifier creators record type.
49
+ */
50
+ export type IdentifierCreatorsRecord = {
51
+ [TIdentifierType in IdentifierType]: IdentifierCreatorsEntry<TIdentifierType>;
52
+ };
53
+
54
+ /**
55
+ * GTIN creator constructor type.
56
+ */
57
+ export type GTINCreatorConstructor =
58
+ new (prefixProvider: PrefixProvider, gtinBaseLength: GTINBaseLength) => GTINCreator;
59
+
60
+ /**
61
+ * Non-GTIN creator constructor type.
62
+ *
63
+ * @template TIdentifierType
64
+ * Identifier type type.
65
+ */
66
+ export type NonGTINCreatorConstructor<TIdentifierType extends Exclude<IdentifierType, GTINType>> =
67
+ new (prefixProvider: PrefixProvider, identifierType: TIdentifierType) => IdentifierCreatorsRecord[TIdentifierType];
68
+
69
+ /**
70
+ * Identifier creator constructors entry type based on identifier type type.
71
+ *
72
+ * @template TIdentifierType
73
+ * Identifier type type.
74
+ */
75
+ export type IdentifierCreatorConstructorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends GTINType ?
76
+ GTINCreatorConstructor :
77
+ NonGTINCreatorConstructor<Exclude<TIdentifierType, GTINType>>;
78
+
79
+ /**
80
+ * Identifier creator constructors record type.
81
+ */
82
+ export type IdentifierCreatorConstructorsRecord = {
83
+ readonly [TIdentifierType in IdentifierType]: IdentifierCreatorConstructorsEntry<TIdentifierType>;
84
+ };
85
+
86
+ export const IdentifierCreatorConstructors: IdentifierCreatorConstructorsRecord = {
87
+ GTIN: GTINCreator,
88
+ GLN: NonSerializableNumericIdentifierCreator,
89
+ SSCC: NonSerializableNumericIdentifierCreator,
90
+ GRAI: SerializableNumericIdentifierCreator,
91
+ GIAI: NonNumericIdentifierCreator,
92
+ GSRN: NonSerializableNumericIdentifierCreator,
93
+ GDTI: SerializableNumericIdentifierCreator,
94
+ GINC: NonNumericIdentifierCreator,
95
+ GSIN: NonSerializableNumericIdentifierCreator,
96
+ GCN: SerializableNumericIdentifierCreator,
97
+ CPID: NonNumericIdentifierCreator,
98
+ GMN: NonNumericIdentifierCreator
99
+ };
100
+
101
+ /**
102
+ * Determine if identifier creator is a numeric identifier creator.
103
+ *
104
+ * @param identifierCreator
105
+ * Identifier creator.
106
+ *
107
+ * @returns
108
+ * True if identifier creator is a numeric identifier creator.
109
+ */
110
+ export function isNumericIdentifierCreator(identifierCreator: IdentifierCreator): identifierCreator is NumericIdentifierCreator {
111
+ return isNumericIdentifierExtension(identifierCreator);
112
+ }
113
+
114
+ /**
115
+ * Determine if identifier creator is a GTIN creator.
116
+ *
117
+ * @param identifierCreator
118
+ * Identifier creator.
119
+ *
120
+ * @returns
121
+ * True if identifier creator is a GTIN creator.
122
+ */
123
+ export function isGTINCreator(identifierCreator: IdentifierCreator): identifierCreator is GTINCreator {
124
+ return isGTINExtension(identifierCreator);
125
+ }
126
+
127
+ /**
128
+ * Determine if identifier creator is a non-GTIN numeric identifier creator.
129
+ *
130
+ * @param identifierCreator
131
+ * Identifier creator.
132
+ *
133
+ * @returns
134
+ * True if identifier creator is a non-GTIN numeric identifier creator.
135
+ */
136
+ export function isNonGTINNumericIdentifierCreator(identifierCreator: IdentifierCreator): identifierCreator is NonGTINNumericIdentifierCreator {
137
+ return isNonGTINNumericIdentifierExtension(identifierCreator);
138
+ }
139
+
140
+ /**
141
+ * Determine if identifier creator is a non-serializable numeric identifier creator.
142
+ *
143
+ * @param identifierCreator
144
+ * Identifier creator.
145
+ *
146
+ * @returns
147
+ * True if identifier creator is a non-serializable numeric identifier creator.
148
+ */
149
+ export function isNonSerializableNumericIdentifierCreator(identifierCreator: IdentifierCreator): identifierCreator is NonSerializableNumericIdentifierCreator {
150
+ return isNonSerializableNumericIdentifierExtension(identifierCreator);
151
+ }
152
+
153
+ /**
154
+ * Determine if identifier creator is a serializable numeric identifier creator.
155
+ *
156
+ * @param identifierCreator
157
+ * Identifier creator.
158
+ *
159
+ * @returns
160
+ * True if identifier creator is a serializable numeric identifier creator.
161
+ */
162
+ export function isSerializableNumericIdentifierCreator(identifierCreator: IdentifierCreator): identifierCreator is SerializableNumericIdentifierCreator {
163
+ return isSerializableNumericIdentifierExtension(identifierCreator);
164
+ }
165
+
166
+ /**
167
+ * Determine if identifier creator is a non-numeric identifier creator.
168
+ *
169
+ * @param identifierCreator
170
+ * Identifier creator.
171
+ *
172
+ * @returns
173
+ * True if identifier creator is a non-numeric identifier creator.
174
+ */
175
+ export function isNonNumericIdentifierCreator(identifierCreator: IdentifierCreator): identifierCreator is NonNumericIdentifierCreator {
176
+ return isNonNumericIdentifierExtension(identifierCreator);
177
+ }
@@ -1,17 +1,25 @@
1
1
  import { ContentCharacterSets } from "./content-character-set.js";
2
2
  import type { GTINDescriptor } from "./gtin-descriptor.js";
3
- import { type GTINBaseType, GTINTypes } from "./gtin-type.js";
3
+ import { type GTINBaseLength, GTINBaseLengths } from "./gtin-length.js";
4
+ import type { GTINType } from "./gtin-type.js";
4
5
  import type { IdentifierDescriptor } from "./identifier-descriptor.js";
6
+ import {
7
+ type IdentifierTypeExtension,
8
+ isGTINExtension,
9
+ isNonGTINNumericIdentifierExtension,
10
+ isNonNumericIdentifierExtension,
11
+ isNonSerializableNumericIdentifierExtension,
12
+ isNumericIdentifierExtension,
13
+ isSerializableNumericIdentifierExtension
14
+ } from "./identifier-extension.js";
5
15
  import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
16
+ import { LeaderTypes } from "./leader-type.js";
6
17
  import type { NonGTINNumericIdentifierDescriptor } from "./non-gtin-numeric-identifier-descriptor.js";
7
- import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
8
18
  import type { NonNumericIdentifierDescriptor } from "./non-numeric-identifier-descriptor.js";
9
- import type { NonNumericIdentifierType } from "./non-numeric-identifier-type.js";
19
+ import type { NonSerializableNumericIdentifierDescriptor } from "./non-serializable-numeric-identifier-descriptor.js";
10
20
  import type { NumericIdentifierDescriptor } from "./numeric-identifier-descriptor.js";
11
- import { LeaderTypes, type NumericIdentifierType } from "./numeric-identifier-type.js";
12
21
  import { PrefixTypes } from "./prefix-type.js";
13
22
  import type { SerializableNumericIdentifierDescriptor } from "./serializable-numeric-identifier-descriptor.js";
14
- import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
15
23
 
16
24
  /**
17
25
  * GTIN-13 descriptor.
@@ -19,7 +27,7 @@ import type { SerializableNumericIdentifierType } from "./serializable-numeric-i
19
27
  const GTIN13_DESCRIPTOR: GTINDescriptor = {
20
28
  identifierType: IdentifierTypes.GTIN,
21
29
  prefixType: PrefixTypes.GS1CompanyPrefix,
22
- length: GTINTypes.GTIN13,
30
+ length: GTINBaseLengths.GTIN13,
23
31
  referenceCharacterSet: ContentCharacterSets.Numeric,
24
32
  leaderType: LeaderTypes.IndicatorDigit
25
33
  };
@@ -30,7 +38,7 @@ const GTIN13_DESCRIPTOR: GTINDescriptor = {
30
38
  const GTIN12_DESCRIPTOR: GTINDescriptor = {
31
39
  identifierType: IdentifierTypes.GTIN,
32
40
  prefixType: PrefixTypes.UPCCompanyPrefix,
33
- length: GTINTypes.GTIN12,
41
+ length: GTINBaseLengths.GTIN12,
34
42
  referenceCharacterSet: ContentCharacterSets.Numeric,
35
43
  leaderType: LeaderTypes.IndicatorDigit
36
44
  };
@@ -41,7 +49,7 @@ const GTIN12_DESCRIPTOR: GTINDescriptor = {
41
49
  const GTIN8_DESCRIPTOR: GTINDescriptor = {
42
50
  identifierType: IdentifierTypes.GTIN,
43
51
  prefixType: PrefixTypes.GS18Prefix,
44
- length: GTINTypes.GTIN8,
52
+ length: GTINBaseLengths.GTIN8,
45
53
  referenceCharacterSet: ContentCharacterSets.Numeric,
46
54
  leaderType: LeaderTypes.IndicatorDigit
47
55
  };
@@ -49,16 +57,16 @@ const GTIN8_DESCRIPTOR: GTINDescriptor = {
49
57
  /**
50
58
  * GTIN descriptors indexed by prefix type.
51
59
  */
52
- const GTIN_DESCRIPTORS: Readonly<Record<GTINBaseType, GTINDescriptor>> = {
53
- [GTINTypes.GTIN13]: GTIN13_DESCRIPTOR,
54
- [GTINTypes.GTIN12]: GTIN12_DESCRIPTOR,
55
- [GTINTypes.GTIN8]: GTIN8_DESCRIPTOR
60
+ const GTIN_DESCRIPTORS: Readonly<Record<GTINBaseLength, GTINDescriptor>> = {
61
+ [GTINBaseLengths.GTIN13]: GTIN13_DESCRIPTOR,
62
+ [GTINBaseLengths.GTIN12]: GTIN12_DESCRIPTOR,
63
+ [GTINBaseLengths.GTIN8]: GTIN8_DESCRIPTOR
56
64
  };
57
65
 
58
66
  /**
59
67
  * GLN descriptor.
60
68
  */
61
- const GLN_DESCRIPTOR: NonGTINNumericIdentifierDescriptor = {
69
+ const GLN_DESCRIPTOR: NonSerializableNumericIdentifierDescriptor = {
62
70
  identifierType: IdentifierTypes.GLN,
63
71
  prefixType: PrefixTypes.GS1CompanyPrefix,
64
72
  length: 13,
@@ -69,7 +77,7 @@ const GLN_DESCRIPTOR: NonGTINNumericIdentifierDescriptor = {
69
77
  /**
70
78
  * SSCC descriptor.
71
79
  */
72
- const SSCC_DESCRIPTOR: NonGTINNumericIdentifierDescriptor = {
80
+ const SSCC_DESCRIPTOR: NonSerializableNumericIdentifierDescriptor = {
73
81
  identifierType: IdentifierTypes.SSCC,
74
82
  prefixType: PrefixTypes.GS1CompanyPrefix,
75
83
  length: 18,
@@ -104,7 +112,7 @@ const GIAI_DESCRIPTOR: NonNumericIdentifierDescriptor = {
104
112
  /**
105
113
  * GSRN descriptor.
106
114
  */
107
- const GSRN_DESCRIPTOR: NonGTINNumericIdentifierDescriptor = {
115
+ const GSRN_DESCRIPTOR: NonSerializableNumericIdentifierDescriptor = {
108
116
  identifierType: IdentifierTypes.GSRN,
109
117
  prefixType: PrefixTypes.GS1CompanyPrefix,
110
118
  length: 18,
@@ -139,7 +147,7 @@ const GINC_DESCRIPTOR: NonNumericIdentifierDescriptor = {
139
147
  /**
140
148
  * GSIN descriptor.
141
149
  */
142
- const GSIN_DESCRIPTOR: NonGTINNumericIdentifierDescriptor = {
150
+ const GSIN_DESCRIPTOR: NonSerializableNumericIdentifierDescriptor = {
143
151
  identifierType: IdentifierTypes.GSIN,
144
152
  prefixType: PrefixTypes.GS1CompanyPrefix,
145
153
  length: 17,
@@ -188,15 +196,16 @@ const GMN_DESCRIPTOR: NonNumericIdentifierDescriptor = {
188
196
  * @template TIdentifierType
189
197
  * Identifier type type.
190
198
  */
191
- export type IdentifierTypeDescriptor<TIdentifierType extends IdentifierType> = TIdentifierType extends NonNumericIdentifierType ?
192
- NonNumericIdentifierDescriptor :
193
- TIdentifierType extends SerializableNumericIdentifierType ?
194
- SerializableNumericIdentifierDescriptor :
195
- TIdentifierType extends NonGTINNumericIdentifierType ?
196
- NonGTINNumericIdentifierDescriptor :
197
- TIdentifierType extends typeof IdentifierTypes.GTIN ?
198
- GTINDescriptor :
199
- IdentifierDescriptor;
199
+ export type IdentifierTypeDescriptor<TIdentifierType extends IdentifierType> = IdentifierTypeExtension<
200
+ TIdentifierType,
201
+ IdentifierDescriptor,
202
+ NumericIdentifierDescriptor,
203
+ GTINDescriptor,
204
+ NonGTINNumericIdentifierDescriptor,
205
+ NonSerializableNumericIdentifierDescriptor,
206
+ SerializableNumericIdentifierDescriptor,
207
+ NonNumericIdentifierDescriptor
208
+ >;
200
209
 
201
210
  /**
202
211
  * Identifier descriptors entry type based on identifier type type.
@@ -204,15 +213,15 @@ export type IdentifierTypeDescriptor<TIdentifierType extends IdentifierType> = T
204
213
  * @template TIdentifierType
205
214
  * Identifier type type.
206
215
  */
207
- export type IdentifierDescriptorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends typeof IdentifierTypes.GTIN ?
208
- Readonly<Record<GTINBaseType, GTINDescriptor>> :
216
+ export type IdentifierDescriptorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends GTINType ?
217
+ Readonly<Record<GTINBaseLength, GTINDescriptor>> :
209
218
  IdentifierTypeDescriptor<TIdentifierType>;
210
219
 
211
220
  /**
212
221
  * Identifier descriptors record type.
213
222
  */
214
223
  export type IdentifierDescriptorsRecord = {
215
- [TIdentifierType in IdentifierType]: IdentifierDescriptorsEntry<TIdentifierType>;
224
+ readonly [TIdentifierType in IdentifierType]: IdentifierDescriptorsEntry<TIdentifierType>;
216
225
  };
217
226
 
218
227
  /**
@@ -231,7 +240,7 @@ export const IdentifierDescriptors: IdentifierDescriptorsRecord = {
231
240
  [IdentifierTypes.GCN]: GCN_DESCRIPTOR,
232
241
  [IdentifierTypes.CPID]: CPID_DESCRIPTOR,
233
242
  [IdentifierTypes.GMN]: GMN_DESCRIPTOR
234
- } as const;
243
+ };
235
244
 
236
245
  /**
237
246
  * Determine if identifier descriptors or descriptor is GTIN descriptors.
@@ -242,28 +251,10 @@ export const IdentifierDescriptors: IdentifierDescriptorsRecord = {
242
251
  * @returns
243
252
  * True if GTIN descriptors.
244
253
  */
245
- export function isGTINDescriptors(identifierDescriptorsOrDescriptor: IdentifierDescriptorsEntry<IdentifierType>): identifierDescriptorsOrDescriptor is Readonly<Record<GTINBaseType, GTINDescriptor>> {
254
+ export function isGTINDescriptors(identifierDescriptorsOrDescriptor: IdentifierDescriptorsEntry<IdentifierType>): identifierDescriptorsOrDescriptor is Readonly<Record<GTINBaseLength, GTINDescriptor>> {
246
255
  return !("identifierType" in identifierDescriptorsOrDescriptor);
247
256
  }
248
257
 
249
- /**
250
- * Determine if an array of identifier types includes a given identifier type.
251
- *
252
- * @param identifierTypes
253
- * Identifier types.
254
- *
255
- * @param identifierType
256
- * Identifier type.
257
- *
258
- * @returns
259
- * True if element is included in the array.
260
- */
261
- function identifierTypesIncludes(identifierTypes: readonly IdentifierType[], identifierType: IdentifierType): boolean {
262
- return identifierTypes.includes(identifierType);
263
- }
264
-
265
- const NUMERIC_IDENTIFIER_TYPES: readonly NumericIdentifierType[] = [IdentifierTypes.GTIN, IdentifierTypes.GLN, IdentifierTypes.SSCC, IdentifierTypes.GRAI, IdentifierTypes.GSRN, IdentifierTypes.GDTI, IdentifierTypes.GSIN, IdentifierTypes.GCN];
266
-
267
258
  /**
268
259
  * Determine if identifier descriptor is a numeric identifier descriptor.
269
260
  *
@@ -274,7 +265,7 @@ const NUMERIC_IDENTIFIER_TYPES: readonly NumericIdentifierType[] = [IdentifierTy
274
265
  * True if identifier descriptor is a numeric identifier descriptor.
275
266
  */
276
267
  export function isNumericIdentifierDescriptor(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is NumericIdentifierDescriptor {
277
- return identifierTypesIncludes(NUMERIC_IDENTIFIER_TYPES, identifierDescriptor.identifierType);
268
+ return isNumericIdentifierExtension(identifierDescriptor);
278
269
  }
279
270
 
280
271
  /**
@@ -287,7 +278,7 @@ export function isNumericIdentifierDescriptor(identifierDescriptor: IdentifierDe
287
278
  * True if identifier descriptor is a GTIN descriptor.
288
279
  */
289
280
  export function isGTINDescriptor(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is GTINDescriptor {
290
- return identifierDescriptor.identifierType === IdentifierTypes.GTIN;
281
+ return isGTINExtension(identifierDescriptor);
291
282
  }
292
283
 
293
284
  /**
@@ -300,10 +291,21 @@ export function isGTINDescriptor(identifierDescriptor: IdentifierDescriptor): id
300
291
  * True if identifier descriptor is a non-GTIN numeric identifier descriptor.
301
292
  */
302
293
  export function isNonGTINNumericIdentifierDescriptor(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is NonGTINNumericIdentifierDescriptor {
303
- return isNumericIdentifierDescriptor(identifierDescriptor) && !isGTINDescriptor(identifierDescriptor);
294
+ return isNonGTINNumericIdentifierExtension(identifierDescriptor);
304
295
  }
305
296
 
306
- const SERIALIZABLE_NUMERIC_IDENTIFIER_TYPES: readonly SerializableNumericIdentifierType[] = [IdentifierTypes.GRAI, IdentifierTypes.GDTI, IdentifierTypes.GCN];
297
+ /**
298
+ * Determine if identifier descriptor is a non-serializable numeric identifier descriptor.
299
+ *
300
+ * @param identifierDescriptor
301
+ * Identifier descriptor.
302
+ *
303
+ * @returns
304
+ * True if identifier descriptor is a non-serializable numeric identifier descriptor.
305
+ */
306
+ export function isNonSerializableNumericIdentifierDescriptor(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is NonSerializableNumericIdentifierDescriptor {
307
+ return isNonSerializableNumericIdentifierExtension(identifierDescriptor);
308
+ }
307
309
 
308
310
  /**
309
311
  * Determine if identifier descriptor is a serializable numeric identifier descriptor.
@@ -315,7 +317,7 @@ const SERIALIZABLE_NUMERIC_IDENTIFIER_TYPES: readonly SerializableNumericIdentif
315
317
  * True if identifier descriptor is a serializable numeric identifier descriptor.
316
318
  */
317
319
  export function isSerializableNumericIdentifierDescriptor(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is SerializableNumericIdentifierDescriptor {
318
- return identifierTypesIncludes(SERIALIZABLE_NUMERIC_IDENTIFIER_TYPES, identifierDescriptor.identifierType);
320
+ return isSerializableNumericIdentifierExtension(identifierDescriptor);
319
321
  }
320
322
 
321
323
  /**
@@ -328,5 +330,5 @@ export function isSerializableNumericIdentifierDescriptor(identifierDescriptor:
328
330
  * True if identifier descriptor is a non-numeric identifier descriptor.
329
331
  */
330
332
  export function isNonNumericIdentifierDescriptor(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is NonNumericIdentifierDescriptor {
331
- return !isNumericIdentifierDescriptor(identifierDescriptor);
333
+ return isNonNumericIdentifierExtension(identifierDescriptor);
332
334
  }