@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,25 +1,11 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Used in JSDoc.
1
2
  import { mapIterable } from "@aidc-toolkit/utility";
2
- import { Mixin } from "ts-mixer";
3
- import { AbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
3
+ import { MixinAbstractNonGTINNumericIdentifierCreator } from "./abstract-non-gtin-numeric-identifier-creator.js";
4
4
  import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
5
5
  /**
6
6
  * Serializable numeric identifier creator.
7
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
- }
8
+ export class SerializableNumericIdentifierCreator extends MixinAbstractNonGTINNumericIdentifierCreator(SerializableNumericIdentifierValidator) {
23
9
  /**
24
10
  * Concatenate a validated base identifier with serial component(s).
25
11
  *
@@ -35,7 +21,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
35
21
  * @returns
36
22
  * Serialized identifier(s).
37
23
  */
38
- concatenateValidated(baseIdentifier, serialComponentOrComponents) {
24
+ #concatenateValidated(baseIdentifier, serialComponentOrComponents) {
39
25
  // TODO Refactor type when https://github.com/microsoft/TypeScript/pull/56941 released.
40
26
  let result;
41
27
  const serialComponentCreator = this.serialComponentCreator;
@@ -64,7 +50,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
64
50
  }
65
51
  /**
66
52
  * 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.
53
+ * The value is converted to a reference of the appropriate length using {@linkcode NUMERIC_CREATOR}.
68
54
  *
69
55
  * @template TTransformerInput
70
56
  * Transformer input type.
@@ -82,7 +68,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
82
68
  * Serialized identifiers.
83
69
  */
84
70
  createSerialized(value, serialComponentOrComponents, sparse) {
85
- return this.concatenateValidated(this.create(value, sparse), serialComponentOrComponents);
71
+ return this.#concatenateValidated(this.create(value, sparse), serialComponentOrComponents);
86
72
  }
87
73
  /**
88
74
  * Concatenate a base identifier with serial component(s).
@@ -101,7 +87,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
101
87
  */
102
88
  concatenate(baseIdentifier, serialComponentOrComponents) {
103
89
  this.validate(baseIdentifier);
104
- return this.concatenateValidated(baseIdentifier, serialComponentOrComponents);
90
+ return this.#concatenateValidated(baseIdentifier, serialComponentOrComponents);
105
91
  }
106
92
  }
107
93
  //# sourceMappingURL=serializable-numeric-identifier-creator.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"serializable-numeric-identifier-creator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAkE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;AAEjH,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAExG;;GAEG;AACH,MAAM,OAAO,oCAAqC,SAAQ,4CAA4C,CAEpG,sCAAsC,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,qBAAqB,CAAqD,cAAsB,EAAE,2BAA8C;QAC5I,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,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC/F,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAqD,cAAsB,EAAE,2BAA8C;QAClI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;IACnF,CAAC;CACJ"}
@@ -1,6 +1,6 @@
1
1
  import type { ContentCharacterSet } from "./content-character-set.js";
2
+ import type { LeaderTypes } from "./leader-type.js";
2
3
  import type { NonGTINNumericIdentifierDescriptor } from "./non-gtin-numeric-identifier-descriptor.js";
3
- import type { LeaderTypes } from "./numeric-identifier-type.js";
4
4
  import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
5
5
  /**
6
6
  * Serializable numeric identifier descriptor.
@@ -1 +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"}
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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AACtG,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"}
@@ -1,6 +1,26 @@
1
- import type { IdentifierTypes } from "./identifier-type.js";
1
+ /**
2
+ * Serializable numeric identifier types.
3
+ */
4
+ export declare const SerializableNumericIdentifierTypes: Omit<Omit<Pick<{
5
+ readonly GTIN: "GTIN";
6
+ readonly GLN: "GLN";
7
+ readonly SSCC: "SSCC";
8
+ readonly GRAI: "GRAI";
9
+ readonly GIAI: "GIAI";
10
+ readonly GSRN: "GSRN";
11
+ readonly GDTI: "GDTI";
12
+ readonly GINC: "GINC";
13
+ readonly GSIN: "GSIN";
14
+ readonly GCN: "GCN";
15
+ readonly CPID: "CPID";
16
+ readonly GMN: "GMN";
17
+ }, "GTIN" | "GLN" | "SSCC" | "GRAI" | "GSRN" | "GDTI" | "GSIN" | "GCN">, "GTIN">, "GLN" | "SSCC" | "GSRN" | "GSIN">;
18
+ /**
19
+ * Serializable numeric identifier type key.
20
+ */
21
+ export type SerializableNumericIdentifierTypeKey = keyof typeof SerializableNumericIdentifierTypes;
2
22
  /**
3
23
  * Serializable numeric identifier type.
4
24
  */
5
- export type SerializableNumericIdentifierType = typeof IdentifierTypes.GRAI | typeof IdentifierTypes.GDTI | typeof IdentifierTypes.GCN;
25
+ export type SerializableNumericIdentifierType = typeof SerializableNumericIdentifierTypes[SerializableNumericIdentifierTypeKey];
6
26
  //# sourceMappingURL=serializable-numeric-identifier-type.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"serializable-numeric-identifier-type.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;mHAAgF,CAAC;AAEhI;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAAG,MAAM,OAAO,kCAAkC,CAAC;AAEnG;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,OAAO,kCAAkC,CAAC,oCAAoC,CAAC,CAAC"}
@@ -1,2 +1,8 @@
1
- export {};
1
+ import { exclude } from "@aidc-toolkit/core";
2
+ import { NonGTINNumericIdentifierTypes } from "./non-gtin-numeric-identifier-type.js";
3
+ import { NonSerializableNumericIdentifierTypes } from "./non-serializable-numeric-identifier-type.js";
4
+ /**
5
+ * Serializable numeric identifier types.
6
+ */
7
+ export const SerializableNumericIdentifierTypes = exclude(NonGTINNumericIdentifierTypes, NonSerializableNumericIdentifierTypes);
2
8
  //# sourceMappingURL=serializable-numeric-identifier-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializable-numeric-identifier-type.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"serializable-numeric-identifier-type.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAC;AAEtG;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAO,CAAC,6BAA6B,EAAE,qCAAqC,CAAC,CAAC"}
@@ -1,30 +1,15 @@
1
1
  import type { CharacterSetCreator, CharacterSetValidation } from "@aidc-toolkit/utility";
2
- import { AbstractNumericIdentifierValidator } from "./abstract-numeric-identifier-validator.js";
3
2
  import type { ContentCharacterSet } from "./content-character-set.js";
4
3
  import type { IdentifierValidation } from "./identifier-validator.js";
4
+ import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
5
5
  import type { SerializableNumericIdentifierDescriptor } from "./serializable-numeric-identifier-descriptor.js";
6
6
  import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
7
7
  /**
8
8
  * Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
9
9
  * that support serialization.
10
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;
11
+ export declare class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator<SerializableNumericIdentifierType> implements SerializableNumericIdentifierDescriptor {
12
+ #private;
28
13
  /**
29
14
  * Constructor.
30
15
  *
@@ -1 +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"}
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;AAEzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,iDAAiD,CAAC;AAC/G,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAEnG;;;GAGG;AACH,qBAAa,sCAAuC,SAAQ,iCAAiC,CAAC,iCAAiC,CAAE,YAAW,uCAAuC;;IAqB/K;;;;;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"}
@@ -1,27 +1,28 @@
1
- import { AbstractNumericIdentifierValidator } from "./abstract-numeric-identifier-validator.js";
2
- import { IdentifierDescriptors } from "./descriptors.js";
1
+ import { CONTENT_CHARACTER_SET_CREATORS } from "./content-character-set-creators.js";
2
+ import { IdentifierDescriptors } from "./identifier-descriptors.js";
3
3
  import { i18nextGS1 } from "./locale/i18n.js";
4
+ import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
4
5
  /**
5
6
  * Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
6
7
  * that support serialization.
7
8
  */
8
- export class SerializableNumericIdentifierValidator extends AbstractNumericIdentifierValidator {
9
+ export class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator {
9
10
  /**
10
11
  * Serial component length.
11
12
  */
12
- _serialComponentLength;
13
+ #serialComponentLength;
13
14
  /**
14
15
  * Serial component character set.
15
16
  */
16
- _serialComponentCharacterSet;
17
+ #serialComponentCharacterSet;
17
18
  /**
18
19
  * Serial component validation parameters.
19
20
  */
20
- _serialComponentValidation;
21
+ #serialComponentValidation;
21
22
  /**
22
23
  * Serial component creator.
23
24
  */
24
- _serialComponentCreator;
25
+ #serialComponentCreator;
25
26
  /**
26
27
  * Constructor.
27
28
  *
@@ -31,38 +32,38 @@ export class SerializableNumericIdentifierValidator extends AbstractNumericIdent
31
32
  constructor(identifierType) {
32
33
  const identifierDescriptor = IdentifierDescriptors[identifierType];
33
34
  super(identifierDescriptor);
34
- this._serialComponentLength = identifierDescriptor.serialComponentLength;
35
- this._serialComponentCharacterSet = identifierDescriptor.serialComponentCharacterSet;
36
- this._serialComponentValidation = {
35
+ this.#serialComponentLength = identifierDescriptor.serialComponentLength;
36
+ this.#serialComponentCharacterSet = identifierDescriptor.serialComponentCharacterSet;
37
+ this.#serialComponentValidation = {
37
38
  minimumLength: 1,
38
39
  maximumLength: identifierDescriptor.serialComponentLength,
39
40
  component: () => i18nextGS1.t("Identifier.serialComponent")
40
41
  };
41
- this._serialComponentCreator = SerializableNumericIdentifierValidator.creatorFor(identifierDescriptor.serialComponentCharacterSet);
42
+ this.#serialComponentCreator = CONTENT_CHARACTER_SET_CREATORS[identifierDescriptor.serialComponentCharacterSet];
42
43
  }
43
44
  /**
44
45
  * Get the serial component length.
45
46
  */
46
47
  get serialComponentLength() {
47
- return this._serialComponentLength;
48
+ return this.#serialComponentLength;
48
49
  }
49
50
  /**
50
51
  * Get the serial component character set.
51
52
  */
52
53
  get serialComponentCharacterSet() {
53
- return this._serialComponentCharacterSet;
54
+ return this.#serialComponentCharacterSet;
54
55
  }
55
56
  /**
56
57
  * Get the serial component validation parameters.
57
58
  */
58
59
  get serialComponentValidation() {
59
- return this._serialComponentValidation;
60
+ return this.#serialComponentValidation;
60
61
  }
61
62
  /**
62
63
  * Get the serial component creator.
63
64
  */
64
65
  get serialComponentCreator() {
65
- return this._serialComponentCreator;
66
+ return this.#serialComponentCreator;
66
67
  }
67
68
  /**
68
69
  * @inheritDoc
@@ -70,7 +71,7 @@ export class SerializableNumericIdentifierValidator extends AbstractNumericIdent
70
71
  validate(identifier, validation) {
71
72
  super.validate(identifier.substring(0, this.length), validation);
72
73
  if (identifier.length > this.length) {
73
- this.serialComponentCreator.validate(identifier.substring(this.length), this._serialComponentValidation);
74
+ this.serialComponentCreator.validate(identifier.substring(this.length), this.#serialComponentValidation);
74
75
  }
75
76
  }
76
77
  }
@@ -1 +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"}
1
+ {"version":3,"file":"serializable-numeric-identifier-validator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAI/F;;;GAGG;AACH,MAAM,OAAO,sCAAuC,SAAQ,iCAAoE;IAC5H;;OAEG;IACM,sBAAsB,CAAS;IAExC;;OAEG;IACM,4BAA4B,CAAsB;IAE3D;;OAEG;IACM,0BAA0B,CAAyB;IAE5D;;OAEG;IACM,uBAAuB,CAAsB;IAEtD;;;;;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,8BAA8B,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACpH,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aidc-toolkit/gs1",
3
- "version": "1.0.26-beta",
3
+ "version": "1.0.28-beta",
4
4
  "description": "GS1 AIDC Toolkit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,12 +27,11 @@
27
27
  "test": "vitest run"
28
28
  },
29
29
  "devDependencies": {
30
- "@aidc-toolkit/dev": "1.0.26-beta",
30
+ "@aidc-toolkit/dev": "1.0.28-beta",
31
31
  "vitest": "^4.0.15"
32
32
  },
33
33
  "dependencies": {
34
- "@aidc-toolkit/core": "1.0.26-beta",
35
- "@aidc-toolkit/utility": "1.0.26-beta",
36
- "ts-mixer": "^6.0.4"
34
+ "@aidc-toolkit/core": "1.0.28-beta",
35
+ "@aidc-toolkit/utility": "1.0.28-beta"
37
36
  }
38
37
  }
@@ -1,97 +1,126 @@
1
- import type { CharacterSetCreator } from "@aidc-toolkit/utility";
1
+ import type { AbstractConstructor } from "@aidc-toolkit/core";
2
2
  import type { IdentifierCreator } from "./identifier-creator.js";
3
- import type { IdentifierDescriptor } from "./identifier-descriptor.js";
4
- import type { IdentifierValidation } from "./identifier-validator.js";
3
+ import type { IdentifierType } from "./identifier-type.js";
4
+ import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
5
+ import type { IdentifierTypeValidator, IdentifierValidatorConstructorsEntry } from "./identifier-validators.js";
5
6
  import type { PrefixProvider } from "./prefix-provider.js";
6
7
 
7
8
  /**
8
- * Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
9
- * PrefixProvider | prefix provider}.
9
+ * Identifier creator constructor type, which delegates to an identifier validator constructor.
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
+ *
17
+ * @template TIdentifierValidator
18
+ * Identifier validator type.
16
19
  */
17
- export abstract class AbstractIdentifierCreator<TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation> implements IdentifierCreator<TIdentifierDescriptor, TIdentifierValidation> {
18
- /**
19
- * Prefix provider.
20
- */
21
- private _prefixProvider!: PrefixProvider;
20
+ export type IdentifierCreatorConstructor<
21
+ TIdentifierType extends IdentifierType,
22
+ TIdentifierValidation extends IdentifierValidation,
23
+ TIdentifierValidator extends IdentifierValidator<TIdentifierType, TIdentifierValidation>
24
+ > = AbstractConstructor<
25
+ [prefixProvider: PrefixProvider, prefix: string, checkAllowance: number, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>],
26
+ TIdentifierValidator & IdentifierCreator<TIdentifierType, TIdentifierValidation>
27
+ >;
22
28
 
29
+ /**
30
+ * Mixin implementation of {@linkcode IdentifierCreator} with an appropriate identifier validator base.
31
+ *
32
+ * @template TIdentifierType
33
+ * Identifier type type.
34
+ *
35
+ * @template TIdentifierValidation
36
+ * Identifier validation type.
37
+ *
38
+ * @param IdentifierValidatorConstructor
39
+ * Identifier validator base.
40
+ *
41
+ * @returns
42
+ * Identifier creator class.
43
+ */
44
+ export function MixinAbstractIdentifierCreator<
45
+ TIdentifierType extends IdentifierType,
46
+ TIdentifierValidation extends IdentifierValidation
47
+ >(IdentifierValidatorConstructor: AbstractConstructor<
48
+ ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>,
49
+ IdentifierTypeValidator<TIdentifierType>
50
+ >): IdentifierCreatorConstructor<
51
+ TIdentifierType,
52
+ TIdentifierValidation,
53
+ IdentifierTypeValidator<TIdentifierType>
54
+ > {
23
55
  /**
24
- * Reference length.
56
+ * Abstract numeric identifier creator. Implements common functionality for a numeric identifier creator, mixed in
57
+ * with a matching numeric identifier validator.
25
58
  */
26
- private _referenceLength!: number;
59
+ abstract class AbstractIdentifierCreator extends (
60
+ IdentifierValidatorConstructor as AbstractConstructor<
61
+ ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>,
62
+ IdentifierValidator<TIdentifierType>
63
+ >
64
+ ) implements IdentifierCreator<TIdentifierType, TIdentifierValidation> {
65
+ /**
66
+ * Prefix provider.
67
+ */
68
+ readonly #prefixProvider: PrefixProvider;
27
69
 
28
- /**
29
- * Initialize the prefix provider. This method is in lieu of a constructor due to the mixin architecture.
30
- *
31
- * @param prefixProvider
32
- * Prefix provider.
33
- *
34
- * @param prefix
35
- * Prefix within prefix provider to use to calculate reference length.
36
- *
37
- * @param checkAllowance
38
- * Number of characters to allow for check digit or check character pair.
39
- */
40
- protected init(prefixProvider: PrefixProvider, prefix: string, checkAllowance: number): void {
41
- this._prefixProvider = prefixProvider;
70
+ /**
71
+ * Reference length.
72
+ */
73
+ readonly #referenceLength: number;
42
74
 
43
- // Reference length allows for prefix and optionally check digit or check character pair.
44
- this._referenceLength = this.length - prefix.length - checkAllowance;
45
- }
75
+ /**
76
+ * Constructor.
77
+ *
78
+ * @param prefixProvider
79
+ * Prefix provider.
80
+ *
81
+ * @param prefix
82
+ * Prefix within prefix provider to use to calculate reference length.
83
+ *
84
+ * @param checkAllowance
85
+ * Number of characters to allow for check digit or check character pair.
86
+ *
87
+ * @param args
88
+ * Originating constructor arguments.
89
+ */
90
+ constructor(prefixProvider: PrefixProvider, prefix: string, checkAllowance: number, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>) {
91
+ super(...args);
46
92
 
47
- /**
48
- * @inheritDoc
49
- */
50
- abstract get identifierType(): TIdentifierDescriptor["identifierType"];
93
+ this.#prefixProvider = prefixProvider;
51
94
 
52
- /**
53
- * @inheritDoc
54
- */
55
- abstract get prefixType(): TIdentifierDescriptor["prefixType"];
95
+ // Reference length allows for prefix and optionally check digit or check character pair.
96
+ this.#referenceLength = this.length - prefix.length - checkAllowance;
97
+ }
56
98
 
57
- /**
58
- * @inheritDoc
59
- */
60
- abstract get length(): number;
61
-
62
- /**
63
- * @inheritDoc
64
- */
65
- abstract get referenceCharacterSet(): TIdentifierDescriptor["referenceCharacterSet"];
66
-
67
- /**
68
- * @inheritDoc
69
- */
70
- abstract get referenceCreator(): CharacterSetCreator;
71
-
72
- /**
73
- * @inheritDoc
74
- */
75
- get prefixProvider(): PrefixProvider {
76
- return this._prefixProvider;
77
- }
99
+ /**
100
+ * @inheritDoc
101
+ */
102
+ get prefixProvider(): PrefixProvider {
103
+ return this.#prefixProvider;
104
+ }
78
105
 
79
- /**
80
- * @inheritDoc
81
- */
82
- get prefix(): string {
83
- return this.prefixProvider.gs1CompanyPrefix;
84
- }
106
+ /**
107
+ * @inheritDoc
108
+ */
109
+ get prefix(): string {
110
+ return this.prefixProvider.gs1CompanyPrefix;
111
+ }
85
112
 
86
- /**
87
- * @inheritDoc
88
- */
89
- get referenceLength(): number {
90
- return this._referenceLength;
113
+ /**
114
+ * @inheritDoc
115
+ */
116
+ get referenceLength(): number {
117
+ return this.#referenceLength;
118
+ }
91
119
  }
92
120
 
93
- /**
94
- * @inheritDoc
95
- */
96
- abstract validate(identifier: string, validation?: TIdentifierValidation): void;
121
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
122
+ return AbstractIdentifierCreator as AbstractConstructor<
123
+ ConstructorParameters<typeof AbstractIdentifierCreator>,
124
+ IdentifierTypeValidator<TIdentifierType> & AbstractIdentifierCreator
125
+ >;
97
126
  }
@@ -0,0 +1,81 @@
1
+ import type { AbstractConstructor } from "@aidc-toolkit/core";
2
+ import {
3
+ MixinAbstractNumericIdentifierCreator,
4
+ type NumericIdentifierCreatorConstructor
5
+ } from "./abstract-numeric-identifier-creator.js";
6
+ import type { IdentifierTypeValidator, IdentifierValidatorConstructorsEntry } from "./identifier-validators.js";
7
+ import type { NonGTINNumericIdentifierCreator } from "./non-gtin-numeric-identifier-creator.js";
8
+ import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
9
+ import type { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
10
+ import type { PrefixProvider } from "./prefix-provider.js";
11
+
12
+ /**
13
+ * Non-GTIN numeric identifier creator constructor type, which delegates to a non-GTIN numeric identifier validator
14
+ * constructor.
15
+ *
16
+ * @template TNonGTINNumericIdentifierType
17
+ * Non-GTIN numeric identifier type type.
18
+ *
19
+ * @template TNonGTINNumericIdentifierValidator
20
+ * Non-GTIN numeric identifier validator type.
21
+ */
22
+ type NonGTINNumericIdentifierCreatorConstructor<
23
+ TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType,
24
+ TNonGTINNumericIdentifierValidator extends NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>
25
+ > = AbstractConstructor<
26
+ [prefixProvider: PrefixProvider, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>],
27
+ TNonGTINNumericIdentifierValidator & NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType>
28
+ >;
29
+
30
+ /**
31
+ * Mixin implementation of {@linkcode NonGTINNumericIdentifierCreator} with an appropriate non-GTIN numeric identifier
32
+ * validator base.
33
+ *
34
+ * @template TNonGTINNumericIdentifierType
35
+ * Non-GTIN numeric identifier type type.
36
+ *
37
+ * @param NonGTINNumericIdentifierValidatorConstructor
38
+ * Non-GTIN numeric identifier validator constructor.
39
+ *
40
+ * @returns
41
+ * Non-GTIN numeric identifier creator class.
42
+ */
43
+ export function MixinAbstractNonGTINNumericIdentifierCreator<
44
+ TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType
45
+ >(NonGTINNumericIdentifierValidatorConstructor: AbstractConstructor<
46
+ ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>,
47
+ IdentifierTypeValidator<TNonGTINNumericIdentifierType>
48
+ >): NonGTINNumericIdentifierCreatorConstructor<
49
+ TNonGTINNumericIdentifierType,
50
+ IdentifierTypeValidator<TNonGTINNumericIdentifierType>
51
+ > {
52
+ /**
53
+ * Abstract non-GTIN numeric identifier creator. Implements common functionality for a non-GTIN numeric identifier
54
+ * creator, mixed in with a matching non-GTIN numeric identifier validator.
55
+ */
56
+ abstract class AbstractNonGTINNumericIdentifierCreator extends (
57
+ MixinAbstractNumericIdentifierCreator(NonGTINNumericIdentifierValidatorConstructor) as NumericIdentifierCreatorConstructor<
58
+ TNonGTINNumericIdentifierType,
59
+ NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>
60
+ >
61
+ ) implements NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType> {
62
+ /**
63
+ * Constructor.
64
+ *
65
+ * @param prefixProvider
66
+ * Prefix provider.
67
+ *
68
+ * @param args
69
+ * Originating constructor arguments.
70
+ */
71
+ constructor(prefixProvider: PrefixProvider, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>) {
72
+ super(prefixProvider, prefixProvider.gs1CompanyPrefix, ...args);
73
+ }
74
+ }
75
+
76
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
77
+ return AbstractNonGTINNumericIdentifierCreator as AbstractConstructor<
78
+ ConstructorParameters<typeof AbstractNonGTINNumericIdentifierCreator>,
79
+ IdentifierTypeValidator<TNonGTINNumericIdentifierType> & AbstractNonGTINNumericIdentifierCreator
80
+ >;
81
+ }