@aidc-toolkit/gs1 1.0.49-beta → 1.0.49

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 (225) hide show
  1. package/dist/index.cjs +19 -0
  2. package/dist/index.d.cts +2266 -0
  3. package/dist/index.d.ts +2266 -63
  4. package/dist/index.js +3 -36
  5. package/package.json +4 -4
  6. package/src/version.ts +1 -1
  7. package/tsconfig-src.tsbuildinfo +1 -1
  8. package/dist/abstract-identifier-creator.d.ts +0 -41
  9. package/dist/abstract-identifier-creator.d.ts.map +0 -1
  10. package/dist/abstract-identifier-creator.js +0 -73
  11. package/dist/abstract-identifier-creator.js.map +0 -1
  12. package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts +0 -36
  13. package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts.map +0 -1
  14. package/dist/abstract-non-gtin-numeric-identifier-creator.js +0 -37
  15. package/dist/abstract-non-gtin-numeric-identifier-creator.js.map +0 -1
  16. package/dist/abstract-numeric-identifier-creator.d.ts +0 -34
  17. package/dist/abstract-numeric-identifier-creator.d.ts.map +0 -1
  18. package/dist/abstract-numeric-identifier-creator.js +0 -152
  19. package/dist/abstract-numeric-identifier-creator.js.map +0 -1
  20. package/dist/character-set.d.ts +0 -27
  21. package/dist/character-set.d.ts.map +0 -1
  22. package/dist/character-set.js +0 -83
  23. package/dist/character-set.js.map +0 -1
  24. package/dist/check.d.ts +0 -81
  25. package/dist/check.d.ts.map +0 -1
  26. package/dist/check.js +0 -218
  27. package/dist/check.js.map +0 -1
  28. package/dist/content-character-set-creators.d.ts +0 -4
  29. package/dist/content-character-set-creators.d.ts.map +0 -1
  30. package/dist/content-character-set-creators.js +0 -9
  31. package/dist/content-character-set-creators.js.map +0 -1
  32. package/dist/content-character-set.d.ts +0 -26
  33. package/dist/content-character-set.d.ts.map +0 -1
  34. package/dist/content-character-set.js +0 -18
  35. package/dist/content-character-set.js.map +0 -1
  36. package/dist/gcp-length-cache.d.ts +0 -89
  37. package/dist/gcp-length-cache.d.ts.map +0 -1
  38. package/dist/gcp-length-cache.js +0 -240
  39. package/dist/gcp-length-cache.js.map +0 -1
  40. package/dist/gcp-length-data.d.ts +0 -108
  41. package/dist/gcp-length-data.d.ts.map +0 -1
  42. package/dist/gcp-length-data.js +0 -53
  43. package/dist/gcp-length-data.js.map +0 -1
  44. package/dist/gcp-length.d.ts +0 -97
  45. package/dist/gcp-length.d.ts.map +0 -1
  46. package/dist/gcp-length.js +0 -368
  47. package/dist/gcp-length.js.map +0 -1
  48. package/dist/gtin-creator.d.ts +0 -60
  49. package/dist/gtin-creator.d.ts.map +0 -1
  50. package/dist/gtin-creator.js +0 -46
  51. package/dist/gtin-creator.js.map +0 -1
  52. package/dist/gtin-descriptor.d.ts +0 -22
  53. package/dist/gtin-descriptor.d.ts.map +0 -1
  54. package/dist/gtin-descriptor.js +0 -2
  55. package/dist/gtin-descriptor.js.map +0 -1
  56. package/dist/gtin-length.d.ts +0 -64
  57. package/dist/gtin-length.d.ts.map +0 -1
  58. package/dist/gtin-length.js +0 -36
  59. package/dist/gtin-length.js.map +0 -1
  60. package/dist/gtin-type.d.ts +0 -26
  61. package/dist/gtin-type.d.ts.map +0 -1
  62. package/dist/gtin-type.js +0 -7
  63. package/dist/gtin-type.js.map +0 -1
  64. package/dist/gtin-validator.d.ts +0 -132
  65. package/dist/gtin-validator.d.ts.map +0 -1
  66. package/dist/gtin-validator.js +0 -349
  67. package/dist/gtin-validator.js.map +0 -1
  68. package/dist/identifier-creator.d.ts +0 -31
  69. package/dist/identifier-creator.d.ts.map +0 -1
  70. package/dist/identifier-creator.js +0 -2
  71. package/dist/identifier-creator.js.map +0 -1
  72. package/dist/identifier-creators.d.ts +0 -118
  73. package/dist/identifier-creators.d.ts.map +0 -1
  74. package/dist/identifier-creators.js +0 -92
  75. package/dist/identifier-creators.js.map +0 -1
  76. package/dist/identifier-descriptor.d.ts +0 -27
  77. package/dist/identifier-descriptor.d.ts.map +0 -1
  78. package/dist/identifier-descriptor.js +0 -2
  79. package/dist/identifier-descriptor.js.map +0 -1
  80. package/dist/identifier-descriptors.d.ts +0 -106
  81. package/dist/identifier-descriptors.d.ts.map +0 -1
  82. package/dist/identifier-descriptors.js +0 -262
  83. package/dist/identifier-descriptors.js.map +0 -1
  84. package/dist/identifier-extension.d.ts +0 -82
  85. package/dist/identifier-extension.d.ts.map +0 -1
  86. package/dist/identifier-extension.js +0 -79
  87. package/dist/identifier-extension.js.map +0 -1
  88. package/dist/identifier-type.d.ts +0 -62
  89. package/dist/identifier-type.d.ts.map +0 -1
  90. package/dist/identifier-type.js +0 -54
  91. package/dist/identifier-type.js.map +0 -1
  92. package/dist/identifier-validator.d.ts +0 -85
  93. package/dist/identifier-validator.d.ts.map +0 -1
  94. package/dist/identifier-validator.js +0 -107
  95. package/dist/identifier-validator.js.map +0 -1
  96. package/dist/identifier-validators.d.ts +0 -131
  97. package/dist/identifier-validators.d.ts.map +0 -1
  98. package/dist/identifier-validators.js +0 -167
  99. package/dist/identifier-validators.js.map +0 -1
  100. package/dist/index.d.ts.map +0 -1
  101. package/dist/index.js.map +0 -1
  102. package/dist/leader-type.d.ts +0 -26
  103. package/dist/leader-type.d.ts.map +0 -1
  104. package/dist/leader-type.js +0 -18
  105. package/dist/leader-type.js.map +0 -1
  106. package/dist/locale/en/locale-resources.d.ts +0 -48
  107. package/dist/locale/en/locale-resources.d.ts.map +0 -1
  108. package/dist/locale/en/locale-resources.js +0 -47
  109. package/dist/locale/en/locale-resources.js.map +0 -1
  110. package/dist/locale/fr/locale-resources.d.ts +0 -48
  111. package/dist/locale/fr/locale-resources.d.ts.map +0 -1
  112. package/dist/locale/fr/locale-resources.js +0 -47
  113. package/dist/locale/fr/locale-resources.js.map +0 -1
  114. package/dist/locale/i18n.d.ts +0 -27
  115. package/dist/locale/i18n.d.ts.map +0 -1
  116. package/dist/locale/i18n.js +0 -35
  117. package/dist/locale/i18n.js.map +0 -1
  118. package/dist/non-gtin-numeric-identifier-creator.d.ts +0 -12
  119. package/dist/non-gtin-numeric-identifier-creator.d.ts.map +0 -1
  120. package/dist/non-gtin-numeric-identifier-creator.js +0 -2
  121. package/dist/non-gtin-numeric-identifier-creator.js.map +0 -1
  122. package/dist/non-gtin-numeric-identifier-descriptor.d.ts +0 -22
  123. package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +0 -1
  124. package/dist/non-gtin-numeric-identifier-descriptor.js +0 -2
  125. package/dist/non-gtin-numeric-identifier-descriptor.js.map +0 -1
  126. package/dist/non-gtin-numeric-identifier-type.d.ts +0 -26
  127. package/dist/non-gtin-numeric-identifier-type.d.ts.map +0 -1
  128. package/dist/non-gtin-numeric-identifier-type.js +0 -8
  129. package/dist/non-gtin-numeric-identifier-type.js.map +0 -1
  130. package/dist/non-gtin-numeric-identifier-validator.d.ts +0 -12
  131. package/dist/non-gtin-numeric-identifier-validator.d.ts.map +0 -1
  132. package/dist/non-gtin-numeric-identifier-validator.js +0 -10
  133. package/dist/non-gtin-numeric-identifier-validator.js.map +0 -1
  134. package/dist/non-numeric-identifier-creator.d.ts +0 -47
  135. package/dist/non-numeric-identifier-creator.d.ts.map +0 -1
  136. package/dist/non-numeric-identifier-creator.js +0 -64
  137. package/dist/non-numeric-identifier-creator.js.map +0 -1
  138. package/dist/non-numeric-identifier-descriptor.d.ts +0 -26
  139. package/dist/non-numeric-identifier-descriptor.d.ts.map +0 -1
  140. package/dist/non-numeric-identifier-descriptor.js +0 -2
  141. package/dist/non-numeric-identifier-descriptor.js.map +0 -1
  142. package/dist/non-numeric-identifier-type.d.ts +0 -26
  143. package/dist/non-numeric-identifier-type.d.ts.map +0 -1
  144. package/dist/non-numeric-identifier-type.js +0 -8
  145. package/dist/non-numeric-identifier-type.js.map +0 -1
  146. package/dist/non-numeric-identifier-validator.d.ts +0 -41
  147. package/dist/non-numeric-identifier-validator.d.ts.map +0 -1
  148. package/dist/non-numeric-identifier-validator.js +0 -69
  149. package/dist/non-numeric-identifier-validator.js.map +0 -1
  150. package/dist/non-serializable-numeric-identifier-creator.d.ts +0 -10
  151. package/dist/non-serializable-numeric-identifier-creator.d.ts.map +0 -1
  152. package/dist/non-serializable-numeric-identifier-creator.js +0 -8
  153. package/dist/non-serializable-numeric-identifier-creator.js.map +0 -1
  154. package/dist/non-serializable-numeric-identifier-descriptor.d.ts +0 -12
  155. package/dist/non-serializable-numeric-identifier-descriptor.d.ts.map +0 -1
  156. package/dist/non-serializable-numeric-identifier-descriptor.js +0 -2
  157. package/dist/non-serializable-numeric-identifier-descriptor.js.map +0 -1
  158. package/dist/non-serializable-numeric-identifier-type.d.ts +0 -26
  159. package/dist/non-serializable-numeric-identifier-type.d.ts.map +0 -1
  160. package/dist/non-serializable-numeric-identifier-type.js +0 -7
  161. package/dist/non-serializable-numeric-identifier-type.js.map +0 -1
  162. package/dist/non-serializable-numeric-identifier-validator.d.ts +0 -16
  163. package/dist/non-serializable-numeric-identifier-validator.d.ts.map +0 -1
  164. package/dist/non-serializable-numeric-identifier-validator.js +0 -17
  165. package/dist/non-serializable-numeric-identifier-validator.js.map +0 -1
  166. package/dist/numeric-identifier-creator.d.ts +0 -65
  167. package/dist/numeric-identifier-creator.d.ts.map +0 -1
  168. package/dist/numeric-identifier-creator.js +0 -2
  169. package/dist/numeric-identifier-creator.js.map +0 -1
  170. package/dist/numeric-identifier-descriptor.d.ts +0 -22
  171. package/dist/numeric-identifier-descriptor.d.ts.map +0 -1
  172. package/dist/numeric-identifier-descriptor.js +0 -2
  173. package/dist/numeric-identifier-descriptor.js.map +0 -1
  174. package/dist/numeric-identifier-type.d.ts +0 -26
  175. package/dist/numeric-identifier-type.d.ts.map +0 -1
  176. package/dist/numeric-identifier-type.js +0 -7
  177. package/dist/numeric-identifier-type.js.map +0 -1
  178. package/dist/numeric-identifier-validator.d.ts +0 -38
  179. package/dist/numeric-identifier-validator.d.ts.map +0 -1
  180. package/dist/numeric-identifier-validator.js +0 -61
  181. package/dist/numeric-identifier-validator.js.map +0 -1
  182. package/dist/prefix-manager.d.ts +0 -151
  183. package/dist/prefix-manager.d.ts.map +0 -1
  184. package/dist/prefix-manager.js +0 -297
  185. package/dist/prefix-manager.js.map +0 -1
  186. package/dist/prefix-provider.d.ts +0 -27
  187. package/dist/prefix-provider.d.ts.map +0 -1
  188. package/dist/prefix-provider.js +0 -2
  189. package/dist/prefix-provider.js.map +0 -1
  190. package/dist/prefix-type.d.ts +0 -26
  191. package/dist/prefix-type.d.ts.map +0 -1
  192. package/dist/prefix-type.js +0 -18
  193. package/dist/prefix-type.js.map +0 -1
  194. package/dist/prefix-validator.d.ts +0 -71
  195. package/dist/prefix-validator.d.ts.map +0 -1
  196. package/dist/prefix-validator.js +0 -204
  197. package/dist/prefix-validator.js.map +0 -1
  198. package/dist/serializable-numeric-identifier-creator.d.ts +0 -71
  199. package/dist/serializable-numeric-identifier-creator.d.ts.map +0 -1
  200. package/dist/serializable-numeric-identifier-creator.js +0 -40
  201. package/dist/serializable-numeric-identifier-creator.js.map +0 -1
  202. package/dist/serializable-numeric-identifier-descriptor.d.ts +0 -26
  203. package/dist/serializable-numeric-identifier-descriptor.d.ts.map +0 -1
  204. package/dist/serializable-numeric-identifier-descriptor.js +0 -2
  205. package/dist/serializable-numeric-identifier-descriptor.js.map +0 -1
  206. package/dist/serializable-numeric-identifier-type.d.ts +0 -26
  207. package/dist/serializable-numeric-identifier-type.d.ts.map +0 -1
  208. package/dist/serializable-numeric-identifier-type.js +0 -8
  209. package/dist/serializable-numeric-identifier-type.js.map +0 -1
  210. package/dist/serializable-numeric-identifier-validator.d.ts +0 -67
  211. package/dist/serializable-numeric-identifier-validator.d.ts.map +0 -1
  212. package/dist/serializable-numeric-identifier-validator.js +0 -97
  213. package/dist/serializable-numeric-identifier-validator.js.map +0 -1
  214. package/dist/variable-measure.d.ts +0 -68
  215. package/dist/variable-measure.d.ts.map +0 -1
  216. package/dist/variable-measure.js +0 -210
  217. package/dist/variable-measure.js.map +0 -1
  218. package/dist/verified-by-gs1.d.ts +0 -22
  219. package/dist/verified-by-gs1.d.ts.map +0 -1
  220. package/dist/verified-by-gs1.js +0 -46
  221. package/dist/verified-by-gs1.js.map +0 -1
  222. package/dist/version.d.ts +0 -5
  223. package/dist/version.d.ts.map +0 -1
  224. package/dist/version.js +0 -5
  225. package/dist/version.js.map +0 -1
@@ -1,368 +0,0 @@
1
- import { omit } from "@aidc-toolkit/core";
2
- import { isGCPLengthData } from "./gcp-length-data.js";
3
- import { GTINLengths } from "./gtin-length.js";
4
- import { GTINValidator } from "./gtin-validator.js";
5
- import { IdentifierTypes } from "./identifier-type.js";
6
- import { IdentifierValidators, isNumericIdentifierValidator } from "./identifier-validators.js";
7
- import { LeaderTypes } from "./leader-type.js";
8
- import { i18nextGS1 } from "./locale/i18n.js";
9
- /**
10
- * Determine if a node is a leaf.
11
- *
12
- * @param node
13
- * Node.
14
- *
15
- * @returns
16
- * True if node is a leaf.
17
- */
18
- function isLeaf(node) {
19
- return "length" in node;
20
- }
21
- /**
22
- * GS1 Company Prefix length service. The constructor takes a {@linkcode GCPLengthCache} object, which is responsible
23
- * for managing the cache and source.
24
- *
25
- * The first step is to load the GS1 Company Prefix length data. This is done using the
26
- * {@linkcode GCPLength.load | load()} method, which works as follows:
27
- *
28
- * - If the next check date/time is in the future, the method returns immediately, regardless of whether any data is
29
- * available. It does this to prevent a large number of requests to the source in the event of a failure.
30
- * - Otherwise, if the cache date/time is undefined or less than the source date/time, it loads from the source,
31
- * converts the data if necessary, and updates the cache.
32
- * - Otherwise, it continues with the cached data.
33
- * - The next check date/time is updated to the later of the source date/time plus one week and the current date/time
34
- * plus one day.
35
- *
36
- * The base class implementation of the `GCPLengthCache` manages only the cache itself, and it requires an
37
- * application-provided storage implementation. The source is expected to be either a {@linkcode GCPLengthData} object
38
- * (created via another cache implementation) or a {@linkcode GCPLengthSourceJSON} object, which is the format of the
39
- * file provided by GS1.
40
- *
41
- * Once the data is loaded, the {@linkcode GCPLength.lengthOf | lengthOf()} method can be used to get the length of a
42
- * GS1 Company Prefix for an identifier type and identifier.
43
- */
44
- export class GCPLength {
45
- /**
46
- * Entry in binary data to indicate that child node is undefined.
47
- */
48
- static #BINARY_UNDEFINED = 0x0F;
49
- /**
50
- * Entry in binary data to indicate that child node is a branch.
51
- */
52
- static #BINARY_BRANCH = 0x0E;
53
- /**
54
- * GS1 Company Prefix length cache.
55
- */
56
- #gcpLengthCache;
57
- /**
58
- * GS1 Company Prefix length tree root.
59
- */
60
- #root;
61
- /**
62
- * Constructor.
63
- *
64
- * @param gcpLengthCache
65
- * GS1 Company Prefix length cache.
66
- */
67
- constructor(gcpLengthCache) {
68
- this.#gcpLengthCache = gcpLengthCache;
69
- }
70
- /**
71
- * Get the GS1 Company Prefix length tree root.
72
- *
73
- * @returns
74
- * GS1 Company Prefix length tree root.
75
- */
76
- get root() {
77
- if (this.#root === undefined) {
78
- throw new RangeError(i18nextGS1.t("GCPLength.gs1CompanyPrefixLengthDataNotLoaded"));
79
- }
80
- return this.#root;
81
- }
82
- /**
83
- * Get the date/time the GS1 Company Prefix length data was last updated.
84
- */
85
- get dateTime() {
86
- return this.root.dateTime;
87
- }
88
- /**
89
- * Get the disclaimer for the GS1 Company Prefix length data.
90
- */
91
- get disclaimer() {
92
- return this.root.disclaimer;
93
- }
94
- /**
95
- * Build the GS1 Company Prefix length tree from a binary data array.
96
- *
97
- * @param binaryData
98
- * Binary data array.
99
- *
100
- * @param childNodes
101
- * Child nodes array to fill.
102
- *
103
- * @param startIndex
104
- * Start index into binary data array.
105
- *
106
- * @returns
107
- * End index into binary data array.
108
- */
109
- static #fromBinary(binaryData, childNodes, startIndex) {
110
- let endIndex = startIndex;
111
- const decompressedLengths = new Array(10);
112
- // Decompress lengths for the child nodes.
113
- for (let childNodeIndex = 0; childNodeIndex < 10; childNodeIndex += 2) {
114
- const byte = binaryData[endIndex++];
115
- decompressedLengths[childNodeIndex] = byte >> 4;
116
- decompressedLengths[childNodeIndex + 1] = byte & 0x0F;
117
- }
118
- for (let childNodeIndex = 0; childNodeIndex < 10; childNodeIndex++) {
119
- const length = decompressedLengths[childNodeIndex];
120
- if (length !== GCPLength.#BINARY_UNDEFINED) {
121
- let childNode;
122
- if (length === GCPLength.#BINARY_BRANCH) {
123
- const childNodes = [];
124
- endIndex = GCPLength.#fromBinary(binaryData, childNodes, endIndex);
125
- childNode = {
126
- childNodes
127
- };
128
- }
129
- else {
130
- childNode = {
131
- length
132
- };
133
- }
134
- // eslint-disable-next-line no-param-reassign -- Purpose is to build tree.
135
- childNodes[childNodeIndex] = childNode;
136
- }
137
- }
138
- return endIndex;
139
- }
140
- /**
141
- * Add an entry to the tree by recursively walking the tree to a leaf.
142
- *
143
- * @param branch
144
- * Current (interim) branch under construction.
145
- *
146
- * @param prefix
147
- * Remainder of current prefix.
148
- *
149
- * @param length
150
- * Current prefix length.
151
- *
152
- * @returns
153
- * Number of branches added; used to determine size of binary array.
154
- */
155
- static #addEntry(branch, prefix, length) {
156
- const digit = Number(prefix.charAt(0));
157
- const existingChildNode = branch.childNodes[digit];
158
- let branchesAdded = 0;
159
- if (prefix.length !== 1) {
160
- let childBranch;
161
- if (existingChildNode === undefined) {
162
- childBranch = {
163
- childNodes: []
164
- };
165
- branchesAdded++;
166
- }
167
- else {
168
- if (isLeaf(existingChildNode)) {
169
- // File format error or application bug; localization not necessary.
170
- throw new Error("Overlapping entry");
171
- }
172
- childBranch = existingChildNode;
173
- }
174
- // eslint-disable-next-line no-param-reassign -- Purpose is to build tree.
175
- branch.childNodes[digit] = childBranch;
176
- // Continue with remainder of prefix.
177
- branchesAdded += GCPLength.#addEntry(childBranch, prefix.substring(1), length);
178
- }
179
- else {
180
- if (existingChildNode !== undefined) {
181
- // File format error or application bug; localization not necessary.
182
- throw new Error("Duplicate entry");
183
- }
184
- // eslint-disable-next-line no-param-reassign -- Purpose is to build tree.
185
- branch.childNodes[digit] = {
186
- length
187
- };
188
- }
189
- return branchesAdded;
190
- }
191
- /**
192
- * Get the length of a child node if defined and it's a leaf, otherwise mark it with 0x0E if defined (branch) or 0x0F
193
- * (no branch) if not.
194
- *
195
- * @param childNode
196
- * Child node.
197
- *
198
- * @returns
199
- * Child node length, 0x0E (branch), or 0x0F (undefined).
200
- */
201
- static #childNodeValue(childNode) {
202
- return childNode !== undefined ? isLeaf(childNode) ? childNode.length : GCPLength.#BINARY_BRANCH : GCPLength.#BINARY_UNDEFINED;
203
- }
204
- /**
205
- * Add a branch to a binary data array.
206
- *
207
- * @param binaryData
208
- * Binary data array.
209
- *
210
- * @param branch
211
- * Branch.
212
- *
213
- * @param startIndex
214
- * Start index into binary data array.
215
- *
216
- * @returns
217
- * End index into binary data array.
218
- */
219
- static #toBinary(binaryData, branch, startIndex) {
220
- let endIndex = startIndex;
221
- const childNodes = branch.childNodes;
222
- // Add length or non-leaf indicators, compressing 10 nibbles into 5 bytes.
223
- for (let childNodeIndex = 0; childNodeIndex < 10; childNodeIndex += 2) {
224
- // eslint-disable-next-line no-param-reassign -- Purpose is to build array.
225
- binaryData[endIndex++] = (GCPLength.#childNodeValue(childNodes[childNodeIndex]) << 4) | GCPLength.#childNodeValue(childNodes[childNodeIndex + 1]);
226
- }
227
- // Process child nodes.
228
- for (const childNode of childNodes) {
229
- if (childNode !== undefined && !isLeaf(childNode)) {
230
- endIndex = GCPLength.#toBinary(binaryData, childNode, endIndex);
231
- }
232
- }
233
- return endIndex;
234
- }
235
- /**
236
- * Add days to a date.
237
- *
238
- * @param date
239
- * Date.
240
- *
241
- * @param days
242
- * Days.
243
- *
244
- * @returns
245
- * Future date.
246
- */
247
- static #addDays(date, days) {
248
- const futureDate = new Date(date);
249
- futureDate.setDate(futureDate.getDate() + days);
250
- return futureDate;
251
- }
252
- /**
253
- * Load the GS1 Company Prefix length data.
254
- */
255
- async load() {
256
- let root = undefined;
257
- const gcpLengthCache = this.#gcpLengthCache;
258
- let nextCheckDateTime = await gcpLengthCache.nextCheckDateTime;
259
- let cacheDateTime = await gcpLengthCache.cacheDateTime;
260
- const now = new Date();
261
- const tomorrow = GCPLength.#addDays(now, 1);
262
- if (nextCheckDateTime === undefined || nextCheckDateTime.getTime() <= now.getTime()) {
263
- const sourceDateTime = await gcpLengthCache.sourceDateTime;
264
- if (cacheDateTime === undefined || cacheDateTime.getTime() < sourceDateTime.getTime()) {
265
- const sourceData = await gcpLengthCache.sourceData;
266
- let cacheData;
267
- if (isGCPLengthData(sourceData)) {
268
- const childNodes = [];
269
- GCPLength.#fromBinary(sourceData.data, childNodes, 0);
270
- root = {
271
- dateTime: sourceData.dateTime,
272
- disclaimer: sourceData.disclaimer,
273
- childNodes
274
- };
275
- cacheData = sourceData;
276
- }
277
- else {
278
- const interimRoot = {
279
- childNodes: []
280
- };
281
- let branchesAdded = 1;
282
- for (const entry of sourceData.GCPPrefixFormatList.entry) {
283
- branchesAdded += GCPLength.#addEntry(interimRoot, entry.prefix, entry.gcpLength);
284
- }
285
- root = {
286
- dateTime: new Date(sourceData.GCPPrefixFormatList.date),
287
- // Join disclaimer as a single string.
288
- disclaimer: `${sourceData._disclaimer.reduce((lines, line) => {
289
- if (lines.length === 0 || lines[lines.length - 1] === "" || line === "") {
290
- lines.push(line);
291
- }
292
- else {
293
- // Lines are part of the same paragraph.
294
- lines.push(`${lines.pop()} ${line}`);
295
- }
296
- return lines;
297
- }, []).join("\n")}\n`,
298
- ...interimRoot
299
- };
300
- // Each branch has ten (some possibly undefined) entries, two per byte.
301
- const data = new Uint8Array(branchesAdded * 5);
302
- GCPLength.#toBinary(data, root, 0);
303
- cacheData = {
304
- ...omit(root, "childNodes"),
305
- data
306
- };
307
- }
308
- // Next check date/time is a week from source date/time or tomorrow, whichever is later.
309
- nextCheckDateTime = GCPLength.#addDays(sourceDateTime, 7);
310
- if (nextCheckDateTime.getTime() < tomorrow.getTime()) {
311
- nextCheckDateTime = tomorrow;
312
- }
313
- cacheDateTime = sourceDateTime;
314
- await gcpLengthCache.update(nextCheckDateTime, cacheDateTime, cacheData);
315
- }
316
- else {
317
- // Next check date/time is tomorrow.
318
- await gcpLengthCache.update(tomorrow);
319
- }
320
- }
321
- // Root is undefined if cache data is still valid or retrying after prior failure.
322
- if (root === undefined && cacheDateTime !== undefined) {
323
- const cacheData = await gcpLengthCache.cacheData;
324
- const childNodes = [];
325
- GCPLength.#fromBinary(cacheData.data, childNodes, 0);
326
- root = {
327
- ...omit(cacheData, "data"),
328
- childNodes
329
- };
330
- }
331
- // Update root only if successful.
332
- if (root !== undefined) {
333
- this.#root = root;
334
- }
335
- }
336
- /**
337
- * Get the length of a GS1 Company Prefix for an identifier.
338
- *
339
- * @param identifierType
340
- * Identifier type.
341
- *
342
- * @param identifier
343
- * Identifier.
344
- *
345
- * @returns
346
- * Length of GS1 Company Prefix, 0 if not a GS1 Company Prefix, or -1 if not found.
347
- */
348
- lengthOf(identifierType, identifier) {
349
- let identifierPrefix;
350
- if (identifierType === IdentifierTypes.GTIN) {
351
- // Normalize the GTIN, pad to 14 digits, and extract the identifier prefix at the first character.
352
- identifierPrefix = GTINValidator.normalize(identifier).padStart(GTINLengths.GTIN14, "0").substring(1);
353
- }
354
- else {
355
- const identifierValidator = IdentifierValidators[identifierType];
356
- identifierValidator.validate(identifier);
357
- identifierPrefix = !isNumericIdentifierValidator(identifierValidator) || identifierValidator.leaderType !== LeaderTypes.ExtensionDigit ? identifier : identifier.substring(1);
358
- }
359
- let node = this.root;
360
- let digitIndex = 0;
361
- // Traverse tree until exhausted or at a leaf.
362
- while (node !== undefined && !isLeaf(node)) {
363
- node = node.childNodes[Number(identifierPrefix.charAt(digitIndex++))];
364
- }
365
- return node?.length ?? -1;
366
- }
367
- }
368
- //# sourceMappingURL=gcp-length.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gcp-length.js","sourceRoot":"","sources":["../src/gcp-length.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import { type GTINBaseLength } from "./gtin-length.js";
2
- import { GTINValidator } from "./gtin-validator.js";
3
- import type { PrefixProvider } from "./prefix-provider.js";
4
- declare const GTINCreator_base: import("./abstract-numeric-identifier-creator.js").NumericIdentifierCreatorConstructor<"GTIN", GTINValidator>;
5
- /**
6
- * GTIN creator. Applicable to GTIN-13, GTIN-12, and GTIN-8 types; not applicable to GTIN-14 type.
7
- */
8
- export declare class GTINCreator extends GTINCreator_base {
9
- #private;
10
- /**
11
- * Constructor.
12
- *
13
- * @param prefixProvider
14
- * Prefix provider.
15
- *
16
- * @param gtinBaseLength
17
- * GTIN base length (all except GTIN-14).
18
- */
19
- constructor(prefixProvider: PrefixProvider, gtinBaseLength: GTINBaseLength);
20
- /**
21
- * @inheritDoc
22
- */
23
- get prefix(): string;
24
- /**
25
- * Create GTIN-14 with an indicator digit and reference based on a numeric value. The value is converted to a
26
- * reference of the appropriate length using {@linkcode NUMERIC_CREATOR}.
27
- *
28
- * @param indicatorDigit
29
- * Indicator digit.
30
- *
31
- * @param value
32
- * Numeric value.
33
- *
34
- * @param sparse
35
- * If true, the value is mapped to a sparse sequence resistant to discovery.
36
- *
37
- * @returns
38
- * GTIN-14.
39
- */
40
- createGTIN14(indicatorDigit: string, value: number | bigint, sparse?: boolean): string;
41
- /**
42
- * Create GTIN-14s with an indicator digit and references based on numeric values. The values are converted to
43
- * references of the appropriate length using {@linkcode NUMERIC_CREATOR}.
44
- *
45
- * @param indicatorDigit
46
- * Indicator digit.
47
- *
48
- * @param values
49
- * Numeric values.
50
- *
51
- * @param sparse
52
- * If true, the values are mapped to a sparse sequence resistant to discovery.
53
- *
54
- * @returns
55
- * GTIN-14s.
56
- */
57
- createGTIN14(indicatorDigit: string, values: Iterable<number | bigint>, sparse?: boolean): Iterable<string>;
58
- }
59
- export {};
60
- //# sourceMappingURL=gtin-creator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtin-creator.d.ts","sourceRoot":"","sources":["../src/gtin-creator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;;AAE3D;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAEjB;;IAUZ;;;;;;;;OAQG;gBACS,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAI1E;;OAEG;IACH,IAAa,MAAM,IAAI,MAAM,CAE5B;IAED;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM;IAEtF;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;CAY9G"}
@@ -1,46 +0,0 @@
1
- import { Exclusions, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
2
- import { MixinAbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
3
- import { checkDigit } from "./check.js";
4
- import { GTINLengths } from "./gtin-length.js";
5
- import { GTINValidator } from "./gtin-validator.js";
6
- import { i18nextGS1 } from "./locale/i18n.js";
7
- /**
8
- * GTIN creator. Applicable to GTIN-13, GTIN-12, and GTIN-8 types; not applicable to GTIN-14 type.
9
- */
10
- export class GTINCreator extends MixinAbstractNumericIdentifierCreator(GTINValidator) {
11
- /**
12
- * Validation parameters for required indicator digit.
13
- */
14
- static #REQUIRED_INDICATOR_DIGIT_VALIDATION = {
15
- minimumLength: 1,
16
- maximumLength: 1,
17
- component: () => i18nextGS1.t("Identifier.indicatorDigit")
18
- };
19
- /**
20
- * Constructor.
21
- *
22
- * @param prefixProvider
23
- * Prefix provider.
24
- *
25
- * @param gtinBaseLength
26
- * GTIN base length (all except GTIN-14).
27
- */
28
- constructor(prefixProvider, gtinBaseLength) {
29
- super(prefixProvider, prefixProvider.prefix, gtinBaseLength);
30
- }
31
- /**
32
- * @inheritDoc
33
- */
34
- get prefix() {
35
- return this.prefixProvider.prefix;
36
- }
37
- // eslint-disable-next-line jsdoc/require-jsdoc -- Implementation of overloaded signatures.
38
- createGTIN14(indicatorDigit, valueOrValues, sparse) {
39
- NUMERIC_CREATOR.validate(indicatorDigit, GTINCreator.#REQUIRED_INDICATOR_DIGIT_VALIDATION);
40
- return NUMERIC_CREATOR.create(GTINLengths.GTIN13 - this.prefixProvider.gs1CompanyPrefix.length - 1, valueOrValues, Exclusions.None, sparse === true ? this.tweak : undefined, (reference) => {
41
- const partialIdentifier = indicatorDigit + this.prefixProvider.gs1CompanyPrefix + reference;
42
- return partialIdentifier + checkDigit(partialIdentifier);
43
- });
44
- }
45
- }
46
- //# sourceMappingURL=gtin-creator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtin-creator.js","sourceRoot":"","sources":["../src/gtin-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAuB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,qCAAqC,CAEpE,aAAa,CAAC;IACZ;;OAEG;IACH,MAAM,CAAU,oCAAoC,GAA2B;QAC3E,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC;KAC7D,CAAC;IAEF;;;;;;;;OAQG;IACH,YAAY,cAA8B,EAAE,cAA8B;QACtE,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,IAAa,MAAM;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACtC,CAAC;IAsCD,2FAA2F;IAC3F,YAAY,CAAC,cAAsB,EAAE,aAA0D,EAAE,MAAgB;QAC7G,eAAe,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,oCAAoC,CAAC,CAAC;QAE3F,OAAO,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE;YACxL,MAAM,iBAAiB,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAE5F,OAAO,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { GTINBaseLength } from "./gtin-length.js";
2
- import type { GTINType } from "./gtin-type.js";
3
- import type { LeaderTypes } from "./leader-type.js";
4
- import type { NumericIdentifierDescriptor } from "./numeric-identifier-descriptor.js";
5
- /**
6
- * GTIN descriptor.
7
- */
8
- export interface GTINDescriptor extends NumericIdentifierDescriptor {
9
- /**
10
- * @inheritDoc
11
- */
12
- readonly identifierType: GTINType;
13
- /**
14
- * @inheritDoc
15
- */
16
- readonly length: GTINBaseLength;
17
- /**
18
- * @inheritDoc
19
- */
20
- readonly leaderType: typeof LeaderTypes.IndicatorDigit;
21
- }
22
- //# sourceMappingURL=gtin-descriptor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtin-descriptor.d.ts","sourceRoot":"","sources":["../src/gtin-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,2BAA2B;IAC/D;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,WAAW,CAAC,cAAc,CAAC;CAC1D"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=gtin-descriptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtin-descriptor.js","sourceRoot":"","sources":["../src/gtin-descriptor.ts"],"names":[],"mappings":""}
@@ -1,64 +0,0 @@
1
- import { type PrefixType } from "./prefix-type.js";
2
- /**
3
- * GTIN lengths. The numeric values are equal to the lengths of the GTINs.
4
- */
5
- export declare const GTINLengths: {
6
- /**
7
- * GTIN-13.
8
- */
9
- readonly GTIN13: 13;
10
- /**
11
- * GTIN-12.
12
- */
13
- readonly GTIN12: 12;
14
- /**
15
- * GTIN-8.
16
- */
17
- readonly GTIN8: 8;
18
- /**
19
- * GTIN-14.
20
- */
21
- readonly GTIN14: 14;
22
- };
23
- /**
24
- * GTIN length key.
25
- */
26
- export type GTINLengthKey = keyof typeof GTINLengths;
27
- /**
28
- * GTIN length.
29
- */
30
- export type GTINLength = typeof GTINLengths[GTINLengthKey];
31
- /**
32
- * GTIN base lengths (all except GTIN-14).
33
- */
34
- export declare const GTINBaseLengths: Omit<{
35
- /**
36
- * GTIN-13.
37
- */
38
- readonly GTIN13: 13;
39
- /**
40
- * GTIN-12.
41
- */
42
- readonly GTIN12: 12;
43
- /**
44
- * GTIN-8.
45
- */
46
- readonly GTIN8: 8;
47
- /**
48
- * GTIN-14.
49
- */
50
- readonly GTIN14: 14;
51
- }, "GTIN14">;
52
- /**
53
- * GTIN base length key.
54
- */
55
- export type GTINBaseLengthKey = keyof typeof GTINBaseLengths;
56
- /**
57
- * GTIN length.
58
- */
59
- export type GTINBaseLength = typeof GTINBaseLengths[GTINBaseLengthKey];
60
- /**
61
- * GTIN base lengths by prefix type. Used to determine the GTIN length supported by a prefix type.
62
- */
63
- export declare const GTIN_BASE_TYPES: Readonly<Record<PrefixType, GTINBaseLength>>;
64
- //# sourceMappingURL=gtin-length.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtin-length.d.ts","sourceRoot":"","sources":["../src/gtin-length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,WAAW;IACpB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEG,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,eAAe;IAlCxB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;YAiBmD,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,eAAe,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,eAAe,CAAC,iBAAiB,CAAC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAIxE,CAAC"}
@@ -1,36 +0,0 @@
1
- import { omit } from "@aidc-toolkit/core";
2
- import { PrefixTypes } from "./prefix-type.js";
3
- /**
4
- * GTIN lengths. The numeric values are equal to the lengths of the GTINs.
5
- */
6
- export const GTINLengths = {
7
- /**
8
- * GTIN-13.
9
- */
10
- GTIN13: 13,
11
- /**
12
- * GTIN-12.
13
- */
14
- GTIN12: 12,
15
- /**
16
- * GTIN-8.
17
- */
18
- GTIN8: 8,
19
- /**
20
- * GTIN-14.
21
- */
22
- GTIN14: 14
23
- };
24
- /**
25
- * GTIN base lengths (all except GTIN-14).
26
- */
27
- export const GTINBaseLengths = omit(GTINLengths, "GTIN14");
28
- /**
29
- * GTIN base lengths by prefix type. Used to determine the GTIN length supported by a prefix type.
30
- */
31
- export const GTIN_BASE_TYPES = {
32
- [PrefixTypes.GS1CompanyPrefix]: GTINLengths.GTIN13,
33
- [PrefixTypes.UPCCompanyPrefix]: GTINLengths.GTIN12,
34
- [PrefixTypes.GS18Prefix]: GTINLengths.GTIN8
35
- };
36
- //# sourceMappingURL=gtin-length.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtin-length.js","sourceRoot":"","sources":["../src/gtin-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAmB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB;;OAEG;IACH,MAAM,EAAE,EAAE;IAEV;;OAEG;IACH,MAAM,EAAE,EAAE;IAEV;;OAEG;IACH,KAAK,EAAE,CAAC;IAER;;OAEG;IACH,MAAM,EAAE,EAAE;CACJ,CAAC;AAYX;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAY3D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiD;IACzE,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM;IAClD,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM;IAClD,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,KAAK;CAC9C,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * GTIN types.
3
- */
4
- export declare const GTINTypes: Pick<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">;
18
- /**
19
- * GTIN type key.
20
- */
21
- export type GTINTypeKey = keyof typeof GTINTypes;
22
- /**
23
- * GTIN type.
24
- */
25
- export type GTINType = typeof GTINTypes[GTINTypeKey];
26
- //# sourceMappingURL=gtin-type.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtin-type.d.ts","sourceRoot":"","sources":["../src/gtin-type.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;gFAErB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC"}