@aidc-toolkit/gs1 1.0.26-beta → 1.0.27-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 (199) hide show
  1. package/dist/abstract-identifier-creator.d.ts +66 -66
  2. package/dist/abstract-identifier-creator.d.ts.map +1 -1
  3. package/dist/abstract-identifier-creator.js +68 -45
  4. package/dist/abstract-identifier-creator.js.map +1 -1
  5. package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts +42 -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 +40 -0
  8. package/dist/abstract-non-gtin-numeric-identifier-creator.js.map +1 -0
  9. package/dist/abstract-numeric-identifier-creator.d.ts +37 -86
  10. package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -1
  11. package/dist/abstract-numeric-identifier-creator.js +144 -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 +7 -12
  18. package/dist/gtin-creator.d.ts.map +1 -1
  19. package/dist/gtin-creator.js +11 -14
  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} +16 -7
  38. package/dist/identifier-creators.d.ts.map +1 -0
  39. package/dist/{creators.js → identifier-creators.js} +19 -7
  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} +21 -11
  54. package/dist/identifier-validators.d.ts.map +1 -0
  55. package/dist/{validators.js → identifier-validators.js} +25 -12
  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 +7 -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 +6 -102
  120. package/dist/prefix-manager.d.ts.map +1 -1
  121. package/dist/prefix-manager.js +65 -60
  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 +155 -74
  139. package/src/abstract-non-gtin-numeric-identifier-creator.ts +86 -0
  140. package/src/abstract-numeric-identifier-creator.ts +202 -133
  141. package/src/content-character-set-creators.ts +9 -0
  142. package/src/gtin-creator.ts +16 -15
  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/{creators.ts → identifier-creators.ts} +40 -26
  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} +51 -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 +17 -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 +12 -0
  163. package/src/non-serializable-numeric-identifier-descriptor.ts +7 -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 +67 -64
  171. package/src/serializable-numeric-identifier-creator.ts +11 -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/non-gtin-numeric-identifier-validator.ts +7 -2
  179. package/test/non-serializable-numeric-identifier-creator.ts +64 -0
  180. package/test/non-serializable-numeric-identifier-validator.ts +6 -0
  181. package/test/numeric-identifier-creator.ts +7 -2
  182. package/test/validator.test.ts +11 -10
  183. package/test/variable-measure-rcn.test.ts +23 -23
  184. package/dist/abstract-identifier-validator.d.ts +0 -95
  185. package/dist/abstract-identifier-validator.d.ts.map +0 -1
  186. package/dist/abstract-identifier-validator.js +0 -123
  187. package/dist/abstract-identifier-validator.js.map +0 -1
  188. package/dist/abstract-numeric-identifier-validator.d.ts +0 -35
  189. package/dist/abstract-numeric-identifier-validator.d.ts.map +0 -1
  190. package/dist/abstract-numeric-identifier-validator.js +0 -61
  191. package/dist/abstract-numeric-identifier-validator.js.map +0 -1
  192. package/dist/creators.d.ts.map +0 -1
  193. package/dist/creators.js.map +0 -1
  194. package/dist/descriptors.d.ts.map +0 -1
  195. package/dist/descriptors.js.map +0 -1
  196. package/dist/validators.d.ts.map +0 -1
  197. package/dist/validators.js.map +0 -1
  198. package/src/abstract-identifier-validator.ts +0 -140
  199. package/src/abstract-numeric-identifier-validator.ts +0 -69
@@ -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,CAGpG,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.27-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.27-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.27-beta",
35
+ "@aidc-toolkit/utility": "1.0.27-beta"
37
36
  }
38
37
  }
@@ -1,97 +1,178 @@
1
- import type { CharacterSetCreator } from "@aidc-toolkit/utility";
2
1
  import type { IdentifierCreator } from "./identifier-creator.js";
3
- import type { IdentifierDescriptor } from "./identifier-descriptor.js";
4
- import type { IdentifierValidation } from "./identifier-validator.js";
2
+ import type { IdentifierType } from "./identifier-type.js";
3
+ import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
4
+ import type { IdentifierTypeValidator } from "./identifier-validators.js";
5
5
  import type { PrefixProvider } from "./prefix-provider.js";
6
6
 
7
7
  /**
8
- * Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
9
- * PrefixProvider | prefix provider}.
8
+ * Identifier extension constructor type.
10
9
  *
11
- * @template TIdentifierDescriptor
12
- * Identifier descriptor type.
10
+ * @template TConstructorArguments
11
+ * Constructor arguments types.
12
+ *
13
+ * @template TConstructorInstance
14
+ * Constructor instance type.
15
+ */
16
+ export type IdentifierExtensionConstructor<
17
+ TConstructorArguments extends unknown[],
18
+ TConstructorInstance
19
+ > = abstract new (...args: TConstructorArguments) => TConstructorInstance;
20
+
21
+ /**
22
+ * Identifier validator constructor type.
23
+ *
24
+ * @template TConstructorArguments
25
+ * Constructor arguments types.
26
+ *
27
+ * @template TIdentifierType
28
+ * Identifier type type.
13
29
  *
14
30
  * @template TIdentifierValidation
15
31
  * Identifier validation type.
32
+ *
33
+ * @template TIdentifierValidator
34
+ * Identifier validator type.
16
35
  */
17
- export abstract class AbstractIdentifierCreator<TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation> implements IdentifierCreator<TIdentifierDescriptor, TIdentifierValidation> {
18
- /**
19
- * Prefix provider.
20
- */
21
- private _prefixProvider!: PrefixProvider;
22
-
23
- /**
24
- * Reference length.
25
- */
26
- private _referenceLength!: number;
27
-
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;
36
+ export type IdentifierValidatorConstructor<
37
+ TConstructorArguments extends unknown[],
38
+ TIdentifierType extends IdentifierType,
39
+ TIdentifierValidation extends IdentifierValidation,
40
+ TIdentifierValidator extends IdentifierValidator<TIdentifierType, TIdentifierValidation> = IdentifierTypeValidator<TIdentifierType>
41
+ > = IdentifierExtensionConstructor<
42
+ TConstructorArguments,
43
+ TIdentifierValidator
44
+ >;
42
45
 
43
- // Reference length allows for prefix and optionally check digit or check character pair.
44
- this._referenceLength = this.length - prefix.length - checkAllowance;
45
- }
46
+ /**
47
+ * Identifier creator constructor type, which delegates to an identifier validator constructor.
48
+ *
49
+ * @template TConstructorArguments
50
+ * Constructor arguments types.
51
+ *
52
+ * @template TIdentifierType
53
+ * Identifier type type.
54
+ *
55
+ * @template TIdentifierValidation
56
+ * Identifier validation type.
57
+ *
58
+ * @template TIdentifierValidator
59
+ * Identifier validator type.
60
+ */
61
+ export type IdentifierCreatorConstructor<
62
+ TConstructorArguments extends unknown[],
63
+ TIdentifierType extends IdentifierType,
64
+ TIdentifierValidation extends IdentifierValidation,
65
+ TIdentifierValidator extends IdentifierValidator<TIdentifierType, TIdentifierValidation>
66
+ > = IdentifierExtensionConstructor<
67
+ [prefixProvider: PrefixProvider, prefix: string, checkAllowance: number, ...args: TConstructorArguments],
68
+ TIdentifierValidator & IdentifierCreator<TIdentifierType, TIdentifierValidation>
69
+ >;
46
70
 
71
+ /**
72
+ * Mixin implementation of {@linkcode IdentifierCreator} with an appropriate identifier validator base.
73
+ *
74
+ * @template TConstructorArguments
75
+ * Constructor arguments types.
76
+ *
77
+ * @template TIdentifierType
78
+ * Identifier type type.
79
+ *
80
+ * @template TIdentifierValidation
81
+ * Identifier validation type.
82
+ *
83
+ * @template TIdentifierValidatorConstructor
84
+ * Identifier validator constructor type.
85
+ *
86
+ * @param IdentifierValidatorBase
87
+ * Identifier validator base.
88
+ *
89
+ * @returns
90
+ * Identifier creator class.
91
+ */
92
+ export function MixinAbstractIdentifierCreator<
93
+ TConstructorArguments extends unknown[],
94
+ TIdentifierType extends IdentifierType,
95
+ TIdentifierValidation extends IdentifierValidation,
96
+ TIdentifierValidatorConstructor extends IdentifierValidatorConstructor<
97
+ TConstructorArguments,
98
+ TIdentifierType,
99
+ TIdentifierValidation
100
+ >
101
+ >(IdentifierValidatorBase: TIdentifierValidatorConstructor): IdentifierCreatorConstructor<
102
+ TConstructorArguments,
103
+ TIdentifierType,
104
+ TIdentifierValidation,
105
+ IdentifierTypeValidator<TIdentifierType>
106
+ > {
47
107
  /**
48
- * @inheritDoc
108
+ * Abstract numeric identifier creator. Implements common functionality for a numeric identifier creator, mixed in
109
+ * with a matching numeric identifier validator.
49
110
  */
50
- abstract get identifierType(): TIdentifierDescriptor["identifierType"];
111
+ abstract class AbstractIdentifierCreator extends (IdentifierValidatorBase as IdentifierValidatorConstructor<
112
+ TConstructorArguments,
113
+ TIdentifierType,
114
+ TIdentifierValidation,
115
+ IdentifierValidator<TIdentifierType, TIdentifierValidation>
116
+ >) implements IdentifierCreator<TIdentifierType, TIdentifierValidation> {
117
+ /**
118
+ * Prefix provider.
119
+ */
120
+ readonly #prefixProvider: PrefixProvider;
51
121
 
52
- /**
53
- * @inheritDoc
54
- */
55
- abstract get prefixType(): TIdentifierDescriptor["prefixType"];
122
+ /**
123
+ * Reference length.
124
+ */
125
+ readonly #referenceLength: number;
56
126
 
57
- /**
58
- * @inheritDoc
59
- */
60
- abstract get length(): number;
127
+ /**
128
+ * Constructor.
129
+ *
130
+ * @param prefixProvider
131
+ * Prefix provider.
132
+ *
133
+ * @param prefix
134
+ * Prefix within prefix provider to use to calculate reference length.
135
+ *
136
+ * @param checkAllowance
137
+ * Number of characters to allow for check digit or check character pair.
138
+ *
139
+ * @param args
140
+ * Originating constructor arguments.
141
+ */
142
+ constructor(prefixProvider: PrefixProvider, prefix: string, checkAllowance: number, ...args: TConstructorArguments) {
143
+ super(...args);
61
144
 
62
- /**
63
- * @inheritDoc
64
- */
65
- abstract get referenceCharacterSet(): TIdentifierDescriptor["referenceCharacterSet"];
145
+ this.#prefixProvider = prefixProvider;
66
146
 
67
- /**
68
- * @inheritDoc
69
- */
70
- abstract get referenceCreator(): CharacterSetCreator;
147
+ // Reference length allows for prefix and optionally check digit or check character pair.
148
+ this.#referenceLength = this.length - prefix.length - checkAllowance;
149
+ }
71
150
 
72
- /**
73
- * @inheritDoc
74
- */
75
- get prefixProvider(): PrefixProvider {
76
- return this._prefixProvider;
77
- }
151
+ /**
152
+ * @inheritDoc
153
+ */
154
+ get prefixProvider(): PrefixProvider {
155
+ return this.#prefixProvider;
156
+ }
78
157
 
79
- /**
80
- * @inheritDoc
81
- */
82
- get prefix(): string {
83
- return this.prefixProvider.gs1CompanyPrefix;
84
- }
158
+ /**
159
+ * @inheritDoc
160
+ */
161
+ get prefix(): string {
162
+ return this.prefixProvider.gs1CompanyPrefix;
163
+ }
85
164
 
86
- /**
87
- * @inheritDoc
88
- */
89
- get referenceLength(): number {
90
- return this._referenceLength;
165
+ /**
166
+ * @inheritDoc
167
+ */
168
+ get referenceLength(): number {
169
+ return this.#referenceLength;
170
+ }
91
171
  }
92
172
 
93
- /**
94
- * @inheritDoc
95
- */
96
- abstract validate(identifier: string, validation?: TIdentifierValidation): void;
173
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
174
+ return AbstractIdentifierCreator as IdentifierExtensionConstructor<
175
+ ConstructorParameters<typeof AbstractIdentifierCreator>,
176
+ IdentifierTypeValidator<TIdentifierType> & AbstractIdentifierCreator
177
+ >;
97
178
  }
@@ -0,0 +1,86 @@
1
+ import type { IdentifierExtensionConstructor, IdentifierValidatorConstructor } from "./abstract-identifier-creator.js";
2
+ import {
3
+ MixinAbstractNumericIdentifierCreator,
4
+ type NumericIdentifierCreatorConstructor
5
+ } from "./abstract-numeric-identifier-creator.js";
6
+ import type { IdentifierTypeValidator } 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 { NumericIdentifierValidation } from "./numeric-identifier-validator.js";
11
+ import type { PrefixProvider } from "./prefix-provider.js";
12
+
13
+ /**
14
+ * Non-GTIN numeric identifier creator constructor type, which delegates to a non-GTIN numeric identifier validator
15
+ * constructor.
16
+ *
17
+ * @template TNonGTINNumericIdentifierType
18
+ * Non-GTIN numeric identifier type type.
19
+ *
20
+ * @template TNonGTINNumericIdentifierValidator
21
+ * Non-GTIN numeric identifier validator type.
22
+ */
23
+ type NonGTINNumericIdentifierCreatorConstructor<
24
+ TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType,
25
+ TNonGTINNumericIdentifierValidator extends NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>
26
+ > = IdentifierExtensionConstructor<
27
+ [prefixProvider: PrefixProvider, identifierType: TNonGTINNumericIdentifierType],
28
+ TNonGTINNumericIdentifierValidator & NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType>
29
+ >;
30
+
31
+ /**
32
+ * Mixin implementation of {@linkcode NonGTINNumericIdentifierCreator} with an appropriate non-GTIN numeric identifier
33
+ * validator base.
34
+ *
35
+ * @template TNonGTINNumericIdentifierType
36
+ * Non-GTIN numeric identifier type type.
37
+ *
38
+ * @template TNonGTINNumericIdentifierValidatorConstructor
39
+ * Non-GTIN numeric identifier validator constructor type.
40
+ *
41
+ * @param NonGTINNumericIdentifierValidatorBase
42
+ * Non-GTIN numeric identifier validator base.
43
+ *
44
+ * @returns
45
+ * Non-GTIN numeric identifier creator class.
46
+ */
47
+ export function MixinAbstractNonGTINNumericIdentifierCreator<
48
+ TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType,
49
+ TNonGTINNumericIdentifierValidatorConstructor extends IdentifierValidatorConstructor<
50
+ [TNonGTINNumericIdentifierType],
51
+ TNonGTINNumericIdentifierType,
52
+ NumericIdentifierValidation
53
+ >
54
+ >(NonGTINNumericIdentifierValidatorBase: TNonGTINNumericIdentifierValidatorConstructor): NonGTINNumericIdentifierCreatorConstructor<
55
+ TNonGTINNumericIdentifierType,
56
+ IdentifierTypeValidator<TNonGTINNumericIdentifierType>
57
+ > {
58
+ /**
59
+ * Abstract non-GTIN numeric identifier creator. Implements common functionality for a non-GTIN numeric identifier
60
+ * creator, mixed in with a matching non-GTIN numeric identifier validator.
61
+ */
62
+ abstract class AbstractNonGTINNumericIdentifierCreator extends (MixinAbstractNumericIdentifierCreator(NonGTINNumericIdentifierValidatorBase) as NumericIdentifierCreatorConstructor<
63
+ [TNonGTINNumericIdentifierType],
64
+ TNonGTINNumericIdentifierType,
65
+ NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>
66
+ >) implements NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType> {
67
+ /**
68
+ * Constructor.
69
+ *
70
+ * @param prefixProvider
71
+ * Prefix provider.
72
+ *
73
+ * @param identifierType
74
+ * Identifier type.
75
+ */
76
+ constructor(prefixProvider: PrefixProvider, identifierType: TNonGTINNumericIdentifierType) {
77
+ super(prefixProvider, prefixProvider.gs1CompanyPrefix, identifierType);
78
+ }
79
+ }
80
+
81
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
82
+ return AbstractNonGTINNumericIdentifierCreator as IdentifierExtensionConstructor<
83
+ ConstructorParameters<typeof AbstractNonGTINNumericIdentifierCreator>,
84
+ IdentifierTypeValidator<TNonGTINNumericIdentifierType> & AbstractNonGTINNumericIdentifierCreator
85
+ >;
86
+ }