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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/dist/abstract-identifier-creator.d.ts +75 -0
  2. package/dist/abstract-identifier-creator.d.ts.map +1 -0
  3. package/dist/abstract-identifier-creator.js +56 -0
  4. package/dist/abstract-identifier-creator.js.map +1 -0
  5. package/dist/abstract-identifier-validator.d.ts +95 -0
  6. package/dist/abstract-identifier-validator.d.ts.map +1 -0
  7. package/dist/abstract-identifier-validator.js +123 -0
  8. package/dist/abstract-identifier-validator.js.map +1 -0
  9. package/dist/abstract-numeric-identifier-creator.d.ts +92 -0
  10. package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -0
  11. package/dist/abstract-numeric-identifier-creator.js +137 -0
  12. package/dist/abstract-numeric-identifier-creator.js.map +1 -0
  13. package/dist/abstract-numeric-identifier-validator.d.ts +35 -0
  14. package/dist/abstract-numeric-identifier-validator.d.ts.map +1 -0
  15. package/dist/abstract-numeric-identifier-validator.js +61 -0
  16. package/dist/abstract-numeric-identifier-validator.js.map +1 -0
  17. package/dist/character-set.d.ts +27 -0
  18. package/dist/character-set.d.ts.map +1 -0
  19. package/dist/character-set.js +50 -0
  20. package/dist/character-set.js.map +1 -0
  21. package/dist/check.d.ts +81 -0
  22. package/dist/check.d.ts.map +1 -0
  23. package/dist/check.js +218 -0
  24. package/dist/check.js.map +1 -0
  25. package/dist/content-character-set.d.ts +26 -0
  26. package/dist/content-character-set.d.ts.map +1 -0
  27. package/dist/content-character-set.js +18 -0
  28. package/dist/content-character-set.js.map +1 -0
  29. package/dist/creators.d.ts +81 -0
  30. package/dist/creators.d.ts.map +1 -0
  31. package/dist/creators.js +62 -0
  32. package/dist/creators.js.map +1 -0
  33. package/dist/descriptors.d.ts +96 -0
  34. package/dist/descriptors.d.ts.map +1 -0
  35. package/dist/descriptors.js +266 -0
  36. package/dist/descriptors.js.map +1 -0
  37. package/dist/gtin-creator.d.ts +69 -0
  38. package/dist/gtin-creator.d.ts.map +1 -0
  39. package/dist/gtin-creator.js +159 -0
  40. package/dist/gtin-creator.js.map +1 -0
  41. package/dist/gtin-descriptor.d.ts +17 -0
  42. package/dist/gtin-descriptor.d.ts.map +1 -0
  43. package/dist/gtin-descriptor.js +2 -0
  44. package/dist/gtin-descriptor.js.map +1 -0
  45. package/dist/gtin-type.d.ts +39 -0
  46. package/dist/gtin-type.d.ts.map +1 -0
  47. package/dist/gtin-type.js +31 -0
  48. package/dist/gtin-type.js.map +1 -0
  49. package/dist/gtin-validator.d.ts +191 -0
  50. package/dist/gtin-validator.d.ts.map +1 -0
  51. package/dist/gtin-validator.js +450 -0
  52. package/dist/gtin-validator.js.map +1 -0
  53. package/dist/identifier-creator.d.ts +31 -0
  54. package/dist/identifier-creator.d.ts.map +1 -0
  55. package/dist/identifier-creator.js +2 -0
  56. package/dist/identifier-creator.js.map +1 -0
  57. package/dist/identifier-descriptor.d.ts +27 -0
  58. package/dist/identifier-descriptor.d.ts.map +1 -0
  59. package/dist/identifier-descriptor.js +2 -0
  60. package/dist/identifier-descriptor.js.map +1 -0
  61. package/dist/identifier-type.d.ts +62 -0
  62. package/dist/identifier-type.d.ts.map +1 -0
  63. package/dist/identifier-type.js +54 -0
  64. package/dist/identifier-type.js.map +1 -0
  65. package/dist/identifier-validator.d.ts +53 -0
  66. package/dist/identifier-validator.d.ts.map +1 -0
  67. package/dist/identifier-validator.js +2 -0
  68. package/dist/identifier-validator.js.map +1 -0
  69. package/dist/index.d.ts +52 -1588
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +21 -4541
  72. package/dist/index.js.map +1 -1
  73. package/dist/locale/en/locale-resources.d.ts +42 -0
  74. package/dist/locale/en/locale-resources.d.ts.map +1 -0
  75. package/dist/locale/en/locale-resources.js +41 -0
  76. package/dist/locale/en/locale-resources.js.map +1 -0
  77. package/dist/locale/fr/locale-resources.d.ts +42 -0
  78. package/dist/locale/fr/locale-resources.d.ts.map +1 -0
  79. package/dist/locale/fr/locale-resources.js +41 -0
  80. package/dist/locale/fr/locale-resources.js.map +1 -0
  81. package/dist/locale/i18n.d.ts +27 -0
  82. package/dist/locale/i18n.d.ts.map +1 -0
  83. package/dist/locale/i18n.js +36 -0
  84. package/dist/locale/i18n.js.map +1 -0
  85. package/dist/non-gtin-numeric-identifier-creator.d.ts +24 -0
  86. package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -0
  87. package/dist/non-gtin-numeric-identifier-creator.js +23 -0
  88. package/dist/non-gtin-numeric-identifier-creator.js.map +1 -0
  89. package/dist/non-gtin-numeric-identifier-descriptor.d.ts +22 -0
  90. package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +1 -0
  91. package/dist/non-gtin-numeric-identifier-descriptor.js +2 -0
  92. package/dist/non-gtin-numeric-identifier-descriptor.js.map +1 -0
  93. package/dist/non-gtin-numeric-identifier-type.d.ts +7 -0
  94. package/dist/non-gtin-numeric-identifier-type.d.ts.map +1 -0
  95. package/dist/non-gtin-numeric-identifier-type.js +2 -0
  96. package/dist/non-gtin-numeric-identifier-type.js.map +1 -0
  97. package/dist/non-gtin-numeric-identifier-validator.d.ts +17 -0
  98. package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -0
  99. package/dist/non-gtin-numeric-identifier-validator.js +17 -0
  100. package/dist/non-gtin-numeric-identifier-validator.js.map +1 -0
  101. package/dist/non-numeric-identifier-creator.d.ts +45 -0
  102. package/dist/non-numeric-identifier-creator.d.ts.map +1 -0
  103. package/dist/non-numeric-identifier-creator.js +84 -0
  104. package/dist/non-numeric-identifier-creator.js.map +1 -0
  105. package/dist/non-numeric-identifier-descriptor.d.ts +26 -0
  106. package/dist/non-numeric-identifier-descriptor.d.ts.map +1 -0
  107. package/dist/non-numeric-identifier-descriptor.js +2 -0
  108. package/dist/non-numeric-identifier-descriptor.js.map +1 -0
  109. package/dist/non-numeric-identifier-type.d.ts +7 -0
  110. package/dist/non-numeric-identifier-type.d.ts.map +1 -0
  111. package/dist/non-numeric-identifier-type.js +2 -0
  112. package/dist/non-numeric-identifier-type.js.map +1 -0
  113. package/dist/non-numeric-identifier-validator.d.ts +49 -0
  114. package/dist/non-numeric-identifier-validator.d.ts.map +1 -0
  115. package/dist/non-numeric-identifier-validator.js +69 -0
  116. package/dist/non-numeric-identifier-validator.js.map +1 -0
  117. package/dist/numeric-identifier-creator.d.ts +53 -0
  118. package/dist/numeric-identifier-creator.d.ts.map +1 -0
  119. package/dist/numeric-identifier-creator.js +2 -0
  120. package/dist/numeric-identifier-creator.js.map +1 -0
  121. package/dist/numeric-identifier-descriptor.d.ts +21 -0
  122. package/dist/numeric-identifier-descriptor.d.ts.map +1 -0
  123. package/dist/numeric-identifier-descriptor.js +2 -0
  124. package/dist/numeric-identifier-descriptor.js.map +1 -0
  125. package/dist/numeric-identifier-type.d.ts +31 -0
  126. package/dist/numeric-identifier-type.d.ts.map +1 -0
  127. package/dist/numeric-identifier-type.js +18 -0
  128. package/dist/numeric-identifier-type.js.map +1 -0
  129. package/dist/numeric-identifier-validator.d.ts +24 -0
  130. package/dist/numeric-identifier-validator.d.ts.map +1 -0
  131. package/dist/numeric-identifier-validator.js +2 -0
  132. package/dist/numeric-identifier-validator.js.map +1 -0
  133. package/dist/prefix-manager.d.ts +232 -0
  134. package/dist/prefix-manager.d.ts.map +1 -0
  135. package/dist/prefix-manager.js +334 -0
  136. package/dist/prefix-manager.js.map +1 -0
  137. package/dist/prefix-provider.d.ts +27 -0
  138. package/dist/prefix-provider.d.ts.map +1 -0
  139. package/dist/prefix-provider.js +2 -0
  140. package/dist/prefix-provider.js.map +1 -0
  141. package/dist/prefix-type.d.ts +26 -0
  142. package/dist/prefix-type.d.ts.map +1 -0
  143. package/dist/prefix-type.js +18 -0
  144. package/dist/prefix-type.js.map +1 -0
  145. package/dist/prefix-validator.d.ts +70 -0
  146. package/dist/prefix-validator.d.ts.map +1 -0
  147. package/dist/prefix-validator.js +208 -0
  148. package/dist/prefix-validator.js.map +1 -0
  149. package/dist/serializable-numeric-identifier-creator.d.ts +76 -0
  150. package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -0
  151. package/dist/serializable-numeric-identifier-creator.js +107 -0
  152. package/dist/serializable-numeric-identifier-creator.js.map +1 -0
  153. package/dist/serializable-numeric-identifier-descriptor.d.ts +26 -0
  154. package/dist/serializable-numeric-identifier-descriptor.d.ts.map +1 -0
  155. package/dist/serializable-numeric-identifier-descriptor.js +2 -0
  156. package/dist/serializable-numeric-identifier-descriptor.js.map +1 -0
  157. package/dist/serializable-numeric-identifier-type.d.ts +6 -0
  158. package/dist/serializable-numeric-identifier-type.d.ts.map +1 -0
  159. package/dist/serializable-numeric-identifier-type.js +2 -0
  160. package/dist/serializable-numeric-identifier-type.js.map +1 -0
  161. package/dist/serializable-numeric-identifier-validator.d.ts +56 -0
  162. package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -0
  163. package/dist/serializable-numeric-identifier-validator.js +77 -0
  164. package/dist/serializable-numeric-identifier-validator.js.map +1 -0
  165. package/dist/validators.d.ts +96 -0
  166. package/dist/validators.d.ts.map +1 -0
  167. package/dist/validators.js +140 -0
  168. package/dist/validators.js.map +1 -0
  169. package/package.json +12 -8
  170. package/src/abstract-identifier-creator.ts +97 -0
  171. package/src/abstract-identifier-validator.ts +140 -0
  172. package/src/abstract-numeric-identifier-creator.ts +168 -0
  173. package/src/abstract-numeric-identifier-validator.ts +69 -0
  174. package/src/character-set.ts +10 -10
  175. package/src/check.ts +9 -9
  176. package/src/content-character-set.ts +29 -0
  177. package/src/creators.ts +113 -0
  178. package/src/descriptors.ts +332 -0
  179. package/src/gtin-creator.ts +10 -9
  180. package/src/gtin-descriptor.ts +18 -0
  181. package/src/gtin-type.ts +50 -0
  182. package/src/gtin-validator.ts +40 -64
  183. package/src/identifier-creator.ts +12 -76
  184. package/src/identifier-descriptor.ts +30 -0
  185. package/src/identifier-type.ts +6 -1
  186. package/src/identifier-validator.ts +12 -188
  187. package/src/index.ts +44 -19
  188. package/src/locale/en/locale-resources.ts +0 -1
  189. package/src/locale/fr/locale-resources.ts +0 -1
  190. package/src/locale/i18n.ts +3 -3
  191. package/src/locale/i18next.d.ts +1 -1
  192. package/src/non-gtin-numeric-identifier-creator.ts +7 -13
  193. package/src/non-gtin-numeric-identifier-descriptor.ts +24 -0
  194. package/src/non-gtin-numeric-identifier-type.ts +7 -0
  195. package/src/non-gtin-numeric-identifier-validator.ts +8 -42
  196. package/src/non-numeric-identifier-creator.ts +9 -19
  197. package/src/non-numeric-identifier-descriptor.ts +29 -0
  198. package/src/non-numeric-identifier-type.ts +7 -0
  199. package/src/non-numeric-identifier-validator.ts +17 -55
  200. package/src/numeric-identifier-creator.ts +20 -163
  201. package/src/numeric-identifier-descriptor.ts +23 -0
  202. package/src/numeric-identifier-type.ts +44 -0
  203. package/src/numeric-identifier-validator.ts +13 -116
  204. package/src/prefix-manager.ts +94 -152
  205. package/src/prefix-provider.ts +3 -3
  206. package/src/prefix-type.ts +6 -1
  207. package/src/prefix-validator.ts +143 -81
  208. package/src/serializable-numeric-identifier-creator.ts +6 -16
  209. package/src/serializable-numeric-identifier-descriptor.ts +29 -0
  210. package/src/serializable-numeric-identifier-type.ts +9 -0
  211. package/src/serializable-numeric-identifier-validator.ts +18 -46
  212. package/src/validators.ts +203 -0
  213. package/test/check.test.ts +1 -1
  214. package/test/creator.test.ts +5 -7
  215. package/test/gtin-creator.ts +6 -2
  216. package/test/gtin-validator.test.ts +7 -10
  217. package/test/identifier-creator.ts +6 -5
  218. package/test/identifier-validator.ts +2 -2
  219. package/test/non-gtin-numeric-identifier-creator.ts +9 -93
  220. package/test/non-gtin-numeric-identifier-validator.ts +3 -3
  221. package/test/non-numeric-identifier-creator.ts +93 -0
  222. package/test/non-numeric-identifier-validator.ts +3 -3
  223. package/test/numeric-identifier-creator.ts +11 -5
  224. package/test/numeric-identifier-validator.ts +5 -9
  225. package/test/prefix-manager.test.ts +2 -2
  226. package/test/serializable-numeric-identifier-creator.ts +11 -3
  227. package/test/serializable-numeric-identifier-validator.ts +3 -3
  228. package/test/setup.ts +1 -1
  229. package/test/sparse.test.ts +1 -1
  230. package/test/utility.ts +1 -1
  231. package/test/validator.test.ts +64 -40
  232. package/test/variable-measure-rcn.test.ts +1 -1
  233. package/tsconfig-config.json +4 -0
  234. package/tsconfig-src.json +8 -0
  235. package/tsconfig-test.json +9 -0
  236. package/tsconfig.json +12 -1
  237. package/tsup.config.ts +3 -2
  238. package/dist/index.cjs +0 -4624
  239. package/dist/index.cjs.map +0 -1
  240. package/dist/index.d.cts +0 -1588
@@ -0,0 +1,96 @@
1
+ import type { GTINBaseType } from "./gtin-type.js";
2
+ import { type GTINValidator } from "./gtin-validator.js";
3
+ import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
4
+ import type { IdentifierValidator } from "./identifier-validator.js";
5
+ import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
6
+ import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
7
+ import type { NonNumericIdentifierType } from "./non-numeric-identifier-type.js";
8
+ import { NonNumericIdentifierValidator } from "./non-numeric-identifier-validator.js";
9
+ import type { NumericIdentifierValidator } from "./numeric-identifier-validator.js";
10
+ import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
11
+ import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
12
+ /**
13
+ * Identifier validator type based on identifier type type.
14
+ *
15
+ * @template TIdentifierType
16
+ * Identifier type type.
17
+ */
18
+ export type IdentifierTypeValidator<TIdentifierType extends IdentifierType> = TIdentifierType extends NonNumericIdentifierType ? NonNumericIdentifierValidator : TIdentifierType extends SerializableNumericIdentifierType ? SerializableNumericIdentifierValidator : TIdentifierType extends NonGTINNumericIdentifierType ? NonGTINNumericIdentifierValidator : TIdentifierType extends typeof IdentifierTypes.GTIN ? GTINValidator : IdentifierValidator;
19
+ /**
20
+ * Identifier validators entry type based on identifier type type.
21
+ *
22
+ * @template TIdentifierType
23
+ * Identifier type type.
24
+ */
25
+ export type IdentifierValidatorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends typeof IdentifierTypes.GTIN ? Readonly<Record<GTINBaseType, GTINValidator>> : IdentifierTypeValidator<TIdentifierType>;
26
+ /**
27
+ * Identifier validators record type.
28
+ */
29
+ export type IdentifierValidatorsRecord = {
30
+ [TIdentifierType in IdentifierType]: IdentifierValidatorsEntry<TIdentifierType>;
31
+ };
32
+ /**
33
+ * Identifier validators for all identifier types.
34
+ */
35
+ export declare const IdentifierValidators: IdentifierValidatorsRecord;
36
+ /**
37
+ * Determine if identifier validators or validator is GTIN validators.
38
+ *
39
+ * @param identifierValidatorsOrValidator
40
+ * Identifier validators or validator.
41
+ *
42
+ * @returns
43
+ * True if GTIN validators.
44
+ */
45
+ export declare function isGTINValidators(identifierValidatorsOrValidator: IdentifierValidatorsEntry<IdentifierType>): identifierValidatorsOrValidator is Readonly<Record<GTINBaseType, GTINValidator>>;
46
+ /**
47
+ * Determine if identifier validator is a numeric identifier validator.
48
+ *
49
+ * @param identifierValidator
50
+ * Identifier validator.
51
+ *
52
+ * @returns
53
+ * True if identifier validator is a numeric identifier validator.
54
+ */
55
+ export declare function isNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NumericIdentifierValidator;
56
+ /**
57
+ * Determine if identifier validator is a GTIN validator.
58
+ *
59
+ * @param identifierValidator
60
+ * Identifier validator.
61
+ *
62
+ * @returns
63
+ * True if identifier validator is a GTIN validator.
64
+ */
65
+ export declare function isGTINValidator(identifierValidator: IdentifierValidator): identifierValidator is GTINValidator;
66
+ /**
67
+ * Determine if identifier validator is a non-GTIN numeric identifier validator.
68
+ *
69
+ * @param identifierValidator
70
+ * Identifier validator.
71
+ *
72
+ * @returns
73
+ * True if identifier validator is a non-GTIN numeric identifier validator.
74
+ */
75
+ export declare function isNonGTINNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonGTINNumericIdentifierValidator;
76
+ /**
77
+ * Determine if identifier validator is a serializable numeric identifier validator.
78
+ *
79
+ * @param identifierValidator
80
+ * Identifier validator.
81
+ *
82
+ * @returns
83
+ * True if identifier validator is a serializable numeric identifier validator.
84
+ */
85
+ export declare function isSerializableNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is SerializableNumericIdentifierValidator;
86
+ /**
87
+ * Determine if identifier validator is a non-numeric identifier validator.
88
+ *
89
+ * @param identifierValidator
90
+ * Identifier validator.
91
+ *
92
+ * @returns
93
+ * True if identifier validator is a non-numeric identifier validator.
94
+ */
95
+ export declare function isNonNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonNumericIdentifierValidator;
96
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAyDxG;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,CAAC,eAAe,SAAS,cAAc,IAAI,eAAe,SAAS,wBAAwB,GAC1H,6BAA6B,GAC7B,eAAe,SAAS,iCAAiC,GACrD,sCAAsC,GACtC,eAAe,SAAS,4BAA4B,GAChD,iCAAiC,GACjC,eAAe,SAAS,OAAO,eAAe,CAAC,IAAI,GAC/C,aAAa,GACb,mBAAmB,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,CAAC,eAAe,SAAS,cAAc,IAAI,eAAe,SAAS,OAAO,eAAe,CAAC,IAAI,GAC/H,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GAC7C,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;KACpC,eAAe,IAAI,cAAc,GAAG,yBAAyB,CAAC,eAAe,CAAC;CAClF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,0BAazB,CAAC;AAEX;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,+BAA+B,EAAE,yBAAyB,CAAC,cAAc,CAAC,GAAG,+BAA+B,IAAI,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAE7L;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,0BAA0B,CAExI;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,aAAa,CAE9G;AAED;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,iCAAiC,CAEtJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,wCAAwC,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,sCAAsC,CAEhK;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,6BAA6B,CAE9I"}
@@ -0,0 +1,140 @@
1
+ import { isGTINDescriptor, isGTINDescriptors, isNonGTINNumericIdentifierDescriptor, isNonNumericIdentifierDescriptor, isNumericIdentifierDescriptor, isSerializableNumericIdentifierDescriptor } from "./descriptors.js";
2
+ import { GTIN_VALIDATORS } from "./gtin-validator.js";
3
+ import { IdentifierTypes } from "./identifier-type.js";
4
+ import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
5
+ import { NonNumericIdentifierValidator } from "./non-numeric-identifier-validator.js";
6
+ import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
7
+ /**
8
+ * GLN validator.
9
+ */
10
+ const GLN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GLN);
11
+ /**
12
+ * SSCC validator.
13
+ */
14
+ const SSCC_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.SSCC);
15
+ /**
16
+ * GRAI validator.
17
+ */
18
+ const GRAI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GRAI);
19
+ /**
20
+ * GIAI validator.
21
+ */
22
+ const GIAI_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GIAI);
23
+ /**
24
+ * GSRN validator.
25
+ */
26
+ const GSRN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GSRN);
27
+ /**
28
+ * GDTI validator.
29
+ */
30
+ const GDTI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GDTI);
31
+ /**
32
+ * GINC validator.
33
+ */
34
+ const GINC_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GINC);
35
+ /**
36
+ * GSIN validator.
37
+ */
38
+ const GSIN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GSIN);
39
+ /**
40
+ * GCN validator.
41
+ */
42
+ const GCN_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GCN);
43
+ /**
44
+ * CPID validator.
45
+ */
46
+ const CPID_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.CPID);
47
+ /**
48
+ * GMN validator.
49
+ */
50
+ const GMN_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GMN);
51
+ /**
52
+ * Identifier validators for all identifier types.
53
+ */
54
+ export const IdentifierValidators = {
55
+ [IdentifierTypes.GTIN]: GTIN_VALIDATORS,
56
+ [IdentifierTypes.GLN]: GLN_VALIDATOR,
57
+ [IdentifierTypes.SSCC]: SSCC_VALIDATOR,
58
+ [IdentifierTypes.GRAI]: GRAI_VALIDATOR,
59
+ [IdentifierTypes.GIAI]: GIAI_VALIDATOR,
60
+ [IdentifierTypes.GSRN]: GSRN_VALIDATOR,
61
+ [IdentifierTypes.GDTI]: GDTI_VALIDATOR,
62
+ [IdentifierTypes.GINC]: GINC_VALIDATOR,
63
+ [IdentifierTypes.GSIN]: GSIN_VALIDATOR,
64
+ [IdentifierTypes.GCN]: GCN_VALIDATOR,
65
+ [IdentifierTypes.CPID]: CPID_VALIDATOR,
66
+ [IdentifierTypes.GMN]: GMN_VALIDATOR
67
+ };
68
+ /**
69
+ * Determine if identifier validators or validator is GTIN validators.
70
+ *
71
+ * @param identifierValidatorsOrValidator
72
+ * Identifier validators or validator.
73
+ *
74
+ * @returns
75
+ * True if GTIN validators.
76
+ */
77
+ export function isGTINValidators(identifierValidatorsOrValidator) {
78
+ return isGTINDescriptors(identifierValidatorsOrValidator);
79
+ }
80
+ /**
81
+ * Determine if identifier validator is a numeric identifier validator.
82
+ *
83
+ * @param identifierValidator
84
+ * Identifier validator.
85
+ *
86
+ * @returns
87
+ * True if identifier validator is a numeric identifier validator.
88
+ */
89
+ export function isNumericIdentifierValidator(identifierValidator) {
90
+ return isNumericIdentifierDescriptor(identifierValidator);
91
+ }
92
+ /**
93
+ * Determine if identifier validator is a GTIN validator.
94
+ *
95
+ * @param identifierValidator
96
+ * Identifier validator.
97
+ *
98
+ * @returns
99
+ * True if identifier validator is a GTIN validator.
100
+ */
101
+ export function isGTINValidator(identifierValidator) {
102
+ return isGTINDescriptor(identifierValidator);
103
+ }
104
+ /**
105
+ * Determine if identifier validator is a non-GTIN numeric identifier validator.
106
+ *
107
+ * @param identifierValidator
108
+ * Identifier validator.
109
+ *
110
+ * @returns
111
+ * True if identifier validator is a non-GTIN numeric identifier validator.
112
+ */
113
+ export function isNonGTINNumericIdentifierValidator(identifierValidator) {
114
+ return isNonGTINNumericIdentifierDescriptor(identifierValidator);
115
+ }
116
+ /**
117
+ * Determine if identifier validator is a serializable numeric identifier validator.
118
+ *
119
+ * @param identifierValidator
120
+ * Identifier validator.
121
+ *
122
+ * @returns
123
+ * True if identifier validator is a serializable numeric identifier validator.
124
+ */
125
+ export function isSerializableNumericIdentifierValidator(identifierValidator) {
126
+ return isSerializableNumericIdentifierDescriptor(identifierValidator);
127
+ }
128
+ /**
129
+ * Determine if identifier validator is a non-numeric identifier validator.
130
+ *
131
+ * @param identifierValidator
132
+ * Identifier validator.
133
+ *
134
+ * @returns
135
+ * True if identifier validator is a non-numeric identifier validator.
136
+ */
137
+ export function isNonNumericIdentifierValidator(identifierValidator) {
138
+ return isNonNumericIdentifierDescriptor(identifierValidator);
139
+ }
140
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@aidc-toolkit/gs1",
3
- "version": "1.0.24-beta",
3
+ "version": "1.0.26-beta",
4
4
  "description": "GS1 AIDC Toolkit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "homepage": "https://aidc-toolkit.com/",
8
- "repository": "aidc-toolkit/gs1",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/aidc-toolkit/gs1.git"
11
+ },
9
12
  "bugs": {
10
13
  "url": "https://github.com/aidc-toolkit/gs1/issues"
11
14
  },
@@ -17,18 +20,19 @@
17
20
  },
18
21
  "scripts": {
19
22
  "lint": "eslint",
20
- "build:dev": "tsup --define.mode=dev",
21
- "build:release": "tsup",
23
+ "tsc:core": "tsc --project tsconfig-src.json",
24
+ "build:dev": "rimraf dist && npm run tsc:core -- --declarationMap --sourceMap",
25
+ "build:release": "npm run tsc:core -- --noEmit && tsup",
22
26
  "build:doc": "npm run build:dev",
23
27
  "test": "vitest run"
24
28
  },
25
29
  "devDependencies": {
26
- "@aidc-toolkit/dev": "beta",
27
- "vitest": "^4.0.14"
30
+ "@aidc-toolkit/dev": "1.0.26-beta",
31
+ "vitest": "^4.0.15"
28
32
  },
29
33
  "dependencies": {
30
- "@aidc-toolkit/core": "beta",
31
- "@aidc-toolkit/utility": "beta",
34
+ "@aidc-toolkit/core": "1.0.26-beta",
35
+ "@aidc-toolkit/utility": "1.0.26-beta",
32
36
  "ts-mixer": "^6.0.4"
33
37
  }
34
38
  }
@@ -0,0 +1,97 @@
1
+ import type { CharacterSetCreator } from "@aidc-toolkit/utility";
2
+ import type { IdentifierCreator } from "./identifier-creator.js";
3
+ import type { IdentifierDescriptor } from "./identifier-descriptor.js";
4
+ import type { IdentifierValidation } from "./identifier-validator.js";
5
+ import type { PrefixProvider } from "./prefix-provider.js";
6
+
7
+ /**
8
+ * Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
9
+ * PrefixProvider | prefix provider}.
10
+ *
11
+ * @template TIdentifierDescriptor
12
+ * Identifier descriptor type.
13
+ *
14
+ * @template TIdentifierValidation
15
+ * Identifier validation type.
16
+ */
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;
42
+
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
+ /**
48
+ * @inheritDoc
49
+ */
50
+ abstract get identifierType(): TIdentifierDescriptor["identifierType"];
51
+
52
+ /**
53
+ * @inheritDoc
54
+ */
55
+ abstract get prefixType(): TIdentifierDescriptor["prefixType"];
56
+
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
+ }
78
+
79
+ /**
80
+ * @inheritDoc
81
+ */
82
+ get prefix(): string {
83
+ return this.prefixProvider.gs1CompanyPrefix;
84
+ }
85
+
86
+ /**
87
+ * @inheritDoc
88
+ */
89
+ get referenceLength(): number {
90
+ return this._referenceLength;
91
+ }
92
+
93
+ /**
94
+ * @inheritDoc
95
+ */
96
+ abstract validate(identifier: string, validation?: TIdentifierValidation): void;
97
+ }
@@ -0,0 +1,140 @@
1
+ import { type CharacterSetCreator, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
2
+ import { AI39_CREATOR, AI82_CREATOR } from "./character-set.js";
3
+ import { type ContentCharacterSet, ContentCharacterSets } from "./content-character-set.js";
4
+ import type { IdentifierDescriptor } from "./identifier-descriptor.js";
5
+ import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
6
+ import { PrefixTypes } from "./prefix-type.js";
7
+ import { PrefixValidator } from "./prefix-validator.js";
8
+
9
+ /**
10
+ * Abstract identifier validator. Implements common functionality for an identifier validator.
11
+ *
12
+ * @template TIdentifierDescriptor
13
+ * Identifier descriptor type.
14
+ *
15
+ * @template TIdentifierValidation
16
+ * Identifier validation type.
17
+ */
18
+ export abstract class AbstractIdentifierValidator<TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation> implements IdentifierValidator<TIdentifierDescriptor, TIdentifierValidation> {
19
+ private static readonly CHARACTER_SET_CREATORS: Record<ContentCharacterSet, CharacterSetCreator> = {
20
+ [ContentCharacterSets.Numeric]: NUMERIC_CREATOR,
21
+ [ContentCharacterSets.AI82]: AI82_CREATOR,
22
+ [ContentCharacterSets.AI39]: AI39_CREATOR
23
+ };
24
+
25
+ /**
26
+ * Identifier type.
27
+ */
28
+ private readonly _identifierType: TIdentifierDescriptor["identifierType"];
29
+
30
+ /**
31
+ * Length.
32
+ */
33
+ private readonly _length: number;
34
+
35
+ /**
36
+ * Reference character set.
37
+ */
38
+ private readonly _referenceCharacterSet: TIdentifierDescriptor["referenceCharacterSet"];
39
+
40
+ /**
41
+ * Reference creator.
42
+ */
43
+ private readonly _referenceCreator: CharacterSetCreator;
44
+
45
+ /**
46
+ * Get the character set creator for a character set.
47
+ *
48
+ * @param characterSet
49
+ * Character set.
50
+ *
51
+ * @returns
52
+ * Character set creator.
53
+ */
54
+ protected static creatorFor(characterSet: ContentCharacterSet): CharacterSetCreator {
55
+ return AbstractIdentifierValidator.CHARACTER_SET_CREATORS[characterSet];
56
+ }
57
+
58
+ /**
59
+ * Constructor.
60
+ *
61
+ * @param identifierDescriptor
62
+ * Identifier descriptor.
63
+ */
64
+ protected constructor(identifierDescriptor: IdentifierDescriptor) {
65
+ this._identifierType = identifierDescriptor.identifierType;
66
+ this._length = identifierDescriptor.length;
67
+ this._referenceCharacterSet = identifierDescriptor.referenceCharacterSet;
68
+ this._referenceCreator = AbstractIdentifierValidator.creatorFor(identifierDescriptor.referenceCharacterSet);
69
+ }
70
+
71
+ /**
72
+ * @inheritDoc
73
+ */
74
+ get identifierType(): TIdentifierDescriptor["identifierType"] {
75
+ return this._identifierType;
76
+ }
77
+
78
+ /**
79
+ * @inheritDoc
80
+ */
81
+ get prefixType(): TIdentifierDescriptor["prefixType"] {
82
+ // All identifier types except GTIN support only the GS1 Company Prefix.
83
+ return PrefixTypes.GS1CompanyPrefix;
84
+ }
85
+
86
+ /**
87
+ * @inheritDoc
88
+ */
89
+ get length(): number {
90
+ return this._length;
91
+ }
92
+
93
+ /**
94
+ * @inheritDoc
95
+ */
96
+ get referenceCharacterSet(): TIdentifierDescriptor["referenceCharacterSet"] {
97
+ return this._referenceCharacterSet;
98
+ }
99
+
100
+ /**
101
+ * @inheritDoc
102
+ */
103
+ get referenceCreator(): CharacterSetCreator {
104
+ return this._referenceCreator;
105
+ }
106
+
107
+ /**
108
+ * Pad an identifier on the left with zero-value character for validation purposes. This is done to align an
109
+ * identifier with a position offset for any error message that may be thrown by the reference validator.
110
+ *
111
+ * @param identifier
112
+ * Identifier.
113
+ *
114
+ * @param positionOffset
115
+ * Position offset within a larger string.
116
+ *
117
+ * @returns
118
+ * Padded identifier.
119
+ */
120
+ protected padIdentifier(identifier: string, positionOffset?: number): string {
121
+ // Identifier is returned as is if position offset is undefined.
122
+ return positionOffset === undefined ? identifier : this.referenceCreator.character(0).repeat(positionOffset).concat(identifier);
123
+ }
124
+
125
+ /**
126
+ * Validate the prefix within an identifier.
127
+ *
128
+ * @param partialIdentifier
129
+ * Partial identifier.
130
+ *
131
+ * @param positionOffset
132
+ * Position offset within a larger string.
133
+ */
134
+ protected validatePrefix(partialIdentifier: string, positionOffset?: number): void {
135
+ // Delegate to prefix validator with support for U.P.C. Company Prefix but not GS1-8 Prefix.
136
+ PrefixValidator.validate(this.prefixType, true, false, partialIdentifier, true, this.referenceCharacterSet === ContentCharacterSets.Numeric, positionOffset);
137
+ }
138
+
139
+ abstract validate(identifier: string, validation?: TIdentifierValidation): void;
140
+ }