@aidc-toolkit/gs1 1.0.42-beta → 1.0.43

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