@aidc-toolkit/gs1 1.0.31-beta → 1.0.33-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 (110) hide show
  1. package/README.md +290 -17
  2. package/dist/character-set.d.ts +17 -2
  3. package/dist/character-set.d.ts.map +1 -1
  4. package/dist/character-set.js +44 -11
  5. package/dist/character-set.js.map +1 -1
  6. package/dist/gcp-length-cache.d.ts +81 -0
  7. package/dist/gcp-length-cache.d.ts.map +1 -0
  8. package/dist/gcp-length-cache.js +232 -0
  9. package/dist/gcp-length-cache.js.map +1 -0
  10. package/dist/gcp-length-data.d.ts +108 -0
  11. package/dist/gcp-length-data.d.ts.map +1 -0
  12. package/dist/gcp-length-data.js +53 -0
  13. package/dist/gcp-length-data.js.map +1 -0
  14. package/dist/gcp-length.d.ts +61 -0
  15. package/dist/gcp-length.d.ts.map +1 -0
  16. package/dist/gcp-length.js +300 -0
  17. package/dist/gcp-length.js.map +1 -0
  18. package/dist/gtin-creator.d.ts +0 -17
  19. package/dist/gtin-creator.d.ts.map +1 -1
  20. package/dist/gtin-creator.js +1 -93
  21. package/dist/gtin-creator.js.map +1 -1
  22. package/dist/gtin-validator.d.ts +1 -46
  23. package/dist/gtin-validator.d.ts.map +1 -1
  24. package/dist/gtin-validator.js +31 -125
  25. package/dist/gtin-validator.js.map +1 -1
  26. package/dist/identifier-validator.d.ts +1 -4
  27. package/dist/identifier-validator.d.ts.map +1 -1
  28. package/dist/identifier-validator.js +2 -5
  29. package/dist/identifier-validator.js.map +1 -1
  30. package/dist/index.d.ts +5 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +4 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/locale/en/locale-resources.d.ts +39 -35
  35. package/dist/locale/en/locale-resources.d.ts.map +1 -1
  36. package/dist/locale/en/locale-resources.js +6 -2
  37. package/dist/locale/en/locale-resources.js.map +1 -1
  38. package/dist/locale/fr/locale-resources.d.ts +39 -35
  39. package/dist/locale/fr/locale-resources.d.ts.map +1 -1
  40. package/dist/locale/fr/locale-resources.js +6 -2
  41. package/dist/locale/fr/locale-resources.js.map +1 -1
  42. package/dist/locale/i18n.d.ts +4 -4
  43. package/dist/locale/i18n.d.ts.map +1 -1
  44. package/dist/locale/i18n.js +6 -7
  45. package/dist/locale/i18n.js.map +1 -1
  46. package/dist/non-numeric-identifier-validator.js +1 -1
  47. package/dist/non-numeric-identifier-validator.js.map +1 -1
  48. package/dist/numeric-identifier-validator.d.ts.map +1 -1
  49. package/dist/numeric-identifier-validator.js +2 -2
  50. package/dist/numeric-identifier-validator.js.map +1 -1
  51. package/dist/prefix-manager.d.ts +35 -0
  52. package/dist/prefix-manager.d.ts.map +1 -1
  53. package/dist/prefix-manager.js +56 -0
  54. package/dist/prefix-manager.js.map +1 -1
  55. package/dist/prefix-validator.d.ts +5 -4
  56. package/dist/prefix-validator.d.ts.map +1 -1
  57. package/dist/prefix-validator.js +18 -22
  58. package/dist/prefix-validator.js.map +1 -1
  59. package/dist/serializable-numeric-identifier-validator.d.ts +26 -0
  60. package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -1
  61. package/dist/serializable-numeric-identifier-validator.js +19 -0
  62. package/dist/serializable-numeric-identifier-validator.js.map +1 -1
  63. package/dist/variable-measure.d.ts +68 -0
  64. package/dist/variable-measure.d.ts.map +1 -0
  65. package/dist/variable-measure.js +210 -0
  66. package/dist/variable-measure.js.map +1 -0
  67. package/dist/verified-by-gs1.d.ts +22 -0
  68. package/dist/verified-by-gs1.d.ts.map +1 -0
  69. package/dist/verified-by-gs1.js +46 -0
  70. package/dist/verified-by-gs1.js.map +1 -0
  71. package/package.json +12 -11
  72. package/src/character-set.ts +55 -11
  73. package/src/gcp-length-cache.ts +271 -0
  74. package/src/gcp-length-data.ts +136 -0
  75. package/src/gcp-length.ts +380 -0
  76. package/src/gtin-creator.ts +1 -117
  77. package/src/gtin-validator.ts +42 -173
  78. package/src/identifier-validator.ts +2 -5
  79. package/src/index.ts +7 -1
  80. package/src/locale/en/locale-resources.ts +7 -3
  81. package/src/locale/fr/locale-resources.ts +7 -3
  82. package/src/locale/i18n.ts +7 -8
  83. package/src/locale/i18next.d.ts +2 -0
  84. package/src/non-numeric-identifier-validator.ts +1 -1
  85. package/src/numeric-identifier-validator.ts +3 -3
  86. package/src/prefix-manager.ts +65 -0
  87. package/src/prefix-validator.ts +19 -23
  88. package/src/serializable-numeric-identifier-validator.ts +36 -0
  89. package/src/variable-measure.ts +268 -0
  90. package/src/verified-by-gs1.ts +54 -0
  91. package/test/character-set.test.ts +46 -0
  92. package/test/creator.test.ts +5 -5
  93. package/test/data/gcpprefixformatlist-1.json +662625 -0
  94. package/test/data/gcpprefixformatlist-2.json +735431 -0
  95. package/test/gcp-length.test.ts +344 -0
  96. package/test/gtin-creator.ts +4 -4
  97. package/test/gtin-validator.test.ts +205 -113
  98. package/test/gtin-validator.ts +30 -0
  99. package/test/identifier-creator.ts +6 -6
  100. package/test/non-numeric-identifier-creator.ts +0 -8
  101. package/test/non-serializable-numeric-identifier-creator.ts +4 -54
  102. package/test/numeric-identifier-creator.ts +4 -4
  103. package/test/prefix-manager.test.ts +5 -5
  104. package/test/serializable-numeric-identifier-creator.ts +32 -19
  105. package/test/validator.test.ts +6 -6
  106. package/test/variable-measure-rcn.test.ts +63 -68
  107. package/test/verified-by-gs1.test.ts +55 -0
  108. package/tsconfig-src.json +7 -1
  109. package/tsconfig-src.tsbuildinfo +1 -0
  110. package/tsconfig-tsup.json +7 -0
@@ -0,0 +1,300 @@
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
+ /**
9
+ * Determine if a node is a leaf.
10
+ *
11
+ * @param node
12
+ * Node.
13
+ *
14
+ * @returns
15
+ * True if node is a leaf.
16
+ */
17
+ export function isLeaf(node) {
18
+ return "length" in node;
19
+ }
20
+ /**
21
+ * Entry in binary data to indicate that child node is undefined.
22
+ */
23
+ const BINARY_UNDEFINED = 0x0F;
24
+ /**
25
+ * Entry in binary data to indicate that child node is a branch.
26
+ */
27
+ const BINARY_BRANCH = 0x0E;
28
+ /**
29
+ * Build the GS1 Company Prefix length tree from a binary data array.
30
+ *
31
+ * @param binaryData
32
+ * Binary data array.
33
+ *
34
+ * @param childNodes
35
+ * Child nodes array to fill.
36
+ *
37
+ * @param startIndex
38
+ * Start index into binary data array.
39
+ *
40
+ * @returns
41
+ * End index into binary data array.
42
+ */
43
+ function fromBinary(binaryData, childNodes, startIndex) {
44
+ let endIndex = startIndex;
45
+ const decompressedLengths = new Array(10);
46
+ // Decompress lengths for the child nodes.
47
+ for (let childNodeIndex = 0; childNodeIndex < 10; childNodeIndex += 2) {
48
+ const byte = binaryData[endIndex++];
49
+ decompressedLengths[childNodeIndex] = byte >> 4;
50
+ decompressedLengths[childNodeIndex + 1] = byte & 0x0F;
51
+ }
52
+ for (let childNodeIndex = 0; childNodeIndex < 10; childNodeIndex++) {
53
+ const length = decompressedLengths[childNodeIndex];
54
+ if (length !== BINARY_UNDEFINED) {
55
+ let childNode;
56
+ if (length === BINARY_BRANCH) {
57
+ childNode = {
58
+ childNodes: []
59
+ };
60
+ endIndex = fromBinary(binaryData, childNode.childNodes, endIndex);
61
+ }
62
+ else {
63
+ childNode = {
64
+ length
65
+ };
66
+ }
67
+ // eslint-disable-next-line no-param-reassign -- Purpose is to build tree.
68
+ childNodes[childNodeIndex] = childNode;
69
+ }
70
+ }
71
+ return endIndex;
72
+ }
73
+ /**
74
+ * Add an entry to the tree by recursively walking the tree to a leaf.
75
+ *
76
+ * @param branch
77
+ * Current branch.
78
+ *
79
+ * @param prefix
80
+ * Remainder of current prefix.
81
+ *
82
+ * @param length
83
+ * Current prefix length.
84
+ *
85
+ * @returns
86
+ * Number of branches added; used to determine size of binary array.
87
+ */
88
+ function addEntry(branch, prefix, length) {
89
+ const digit = Number(prefix.charAt(0));
90
+ const existingChildNode = branch.childNodes[digit];
91
+ let branchesAdded = 0;
92
+ if (prefix.length !== 1) {
93
+ let childBranch;
94
+ if (existingChildNode === undefined) {
95
+ childBranch = {
96
+ childNodes: []
97
+ };
98
+ branchesAdded++;
99
+ }
100
+ else {
101
+ if (isLeaf(existingChildNode)) {
102
+ // File format error or application bug; localization not necessary.
103
+ throw new Error("Overlapping entry");
104
+ }
105
+ childBranch = existingChildNode;
106
+ }
107
+ // eslint-disable-next-line no-param-reassign -- Purpose is to build tree.
108
+ branch.childNodes[digit] = childBranch;
109
+ // Continue with remainder of prefix.
110
+ branchesAdded += addEntry(childBranch, prefix.substring(1), length);
111
+ }
112
+ else {
113
+ if (existingChildNode !== undefined) {
114
+ // File format error or application bug; localization not necessary.
115
+ throw new Error("Duplicate entry");
116
+ }
117
+ // eslint-disable-next-line no-param-reassign -- Purpose is to build tree.
118
+ branch.childNodes[digit] = {
119
+ length
120
+ };
121
+ }
122
+ return branchesAdded;
123
+ }
124
+ /**
125
+ * Get the length of a child node if defined and it's a leaf, otherwise mark it with 0x0E if defined (branch) or 0x0F
126
+ * (no branch) if not.
127
+ *
128
+ * @param childNode
129
+ * Child node.
130
+ *
131
+ * @returns
132
+ * Child node length, 0x0E (branch), or 0x0F (undefined).
133
+ */
134
+ function childNodeValue(childNode) {
135
+ return childNode !== undefined ? isLeaf(childNode) ? childNode.length : BINARY_BRANCH : BINARY_UNDEFINED;
136
+ }
137
+ /**
138
+ * Add a branch to a binary data array.
139
+ *
140
+ * @param binaryData
141
+ * Binary data array.
142
+ *
143
+ * @param branch
144
+ * Branch.
145
+ *
146
+ * @param startIndex
147
+ * Start index into binary data array.
148
+ *
149
+ * @returns
150
+ * End index into binary data array.
151
+ */
152
+ function toBinary(binaryData, branch, startIndex) {
153
+ let endIndex = startIndex;
154
+ const childNodes = branch.childNodes;
155
+ // Add length or non-leaf indicators, compressing 10 nibbles into 5 bytes.
156
+ for (let childNodeIndex = 0; childNodeIndex < 10; childNodeIndex += 2) {
157
+ // eslint-disable-next-line no-param-reassign -- Purpose is to build array.
158
+ binaryData[endIndex++] = (childNodeValue(childNodes[childNodeIndex]) << 4) | childNodeValue(childNodes[childNodeIndex + 1]);
159
+ }
160
+ // Process child nodes.
161
+ for (const childNode of childNodes) {
162
+ if (childNode !== undefined && !isLeaf(childNode)) {
163
+ endIndex = toBinary(binaryData, childNode, endIndex);
164
+ }
165
+ }
166
+ return endIndex;
167
+ }
168
+ /**
169
+ * Add days to a date.
170
+ *
171
+ * @param date
172
+ * Date.
173
+ *
174
+ * @param days
175
+ * Days.
176
+ *
177
+ * @returns
178
+ * New date.
179
+ */
180
+ function addDays(date, days) {
181
+ const futureDate = new Date(date);
182
+ futureDate.setDate(futureDate.getDate() + days);
183
+ return futureDate;
184
+ }
185
+ /**
186
+ * Load the GS1 Company Prefix length data.
187
+ *
188
+ * @param gcpLengthCache
189
+ * GS1 Company Prefix length cache.
190
+ *
191
+ * @returns
192
+ * Root of tree.
193
+ */
194
+ export async function loadData(gcpLengthCache) {
195
+ let root = undefined;
196
+ let nextCheckDateTime = await gcpLengthCache.nextCheckDateTime;
197
+ let cacheDateTime = await gcpLengthCache.cacheDateTime;
198
+ const now = new Date();
199
+ const tomorrow = addDays(now, 1);
200
+ if (nextCheckDateTime === undefined || nextCheckDateTime.getTime() <= now.getTime()) {
201
+ const sourceDateTime = await gcpLengthCache.sourceDateTime;
202
+ if (cacheDateTime === undefined || cacheDateTime.getTime() < sourceDateTime.getTime()) {
203
+ const sourceData = await gcpLengthCache.sourceData;
204
+ let cacheData;
205
+ if (isGCPLengthData(sourceData)) {
206
+ root = {
207
+ dateTime: sourceData.dateTime,
208
+ disclaimer: sourceData.disclaimer,
209
+ childNodes: []
210
+ };
211
+ fromBinary(sourceData.data, root.childNodes, 0);
212
+ cacheData = sourceData;
213
+ }
214
+ else {
215
+ root = {
216
+ dateTime: new Date(sourceData.GCPPrefixFormatList.date),
217
+ // Join disclaimer as a single string.
218
+ disclaimer: `${sourceData._disclaimer.reduce((lines, line) => {
219
+ if (lines.length === 0 || lines[lines.length - 1] === "" || line === "") {
220
+ lines.push(line);
221
+ }
222
+ else {
223
+ // Lines are part of the same paragraph.
224
+ lines.push(`${lines.pop()} ${line}`);
225
+ }
226
+ return lines;
227
+ }, []).join("\n")}\n`,
228
+ childNodes: []
229
+ };
230
+ let branchesAdded = 1;
231
+ for (const entry of sourceData.GCPPrefixFormatList.entry) {
232
+ branchesAdded += addEntry(root, entry.prefix, entry.gcpLength);
233
+ }
234
+ // Each branch has ten (some possibly undefined) entries, two per byte.
235
+ const data = new Uint8Array(branchesAdded * 5);
236
+ toBinary(data, root, 0);
237
+ cacheData = {
238
+ ...omit(root, "childNodes"),
239
+ data
240
+ };
241
+ }
242
+ // Next check date/time is a week from source date/time or tomorrow, whichever is later.
243
+ nextCheckDateTime = addDays(sourceDateTime, 7);
244
+ if (nextCheckDateTime.getTime() < tomorrow.getTime()) {
245
+ nextCheckDateTime = tomorrow;
246
+ }
247
+ cacheDateTime = sourceDateTime;
248
+ await gcpLengthCache.update(nextCheckDateTime, cacheDateTime, cacheData);
249
+ }
250
+ else {
251
+ // Next check date/time is tomorrow.
252
+ await gcpLengthCache.update(tomorrow);
253
+ }
254
+ }
255
+ // Root is undefined if cache data is still valid or retrying after prior failure.
256
+ if (root === undefined && cacheDateTime !== undefined) {
257
+ const cacheData = await gcpLengthCache.cacheData;
258
+ root = {
259
+ ...omit(cacheData, "data"),
260
+ childNodes: []
261
+ };
262
+ fromBinary(cacheData.data, root.childNodes, 0);
263
+ }
264
+ return root;
265
+ }
266
+ /**
267
+ * Get the length of a GS1 Company Prefix for an identifier.
268
+ *
269
+ * @param root
270
+ * Root of tree.
271
+ *
272
+ * @param identifierType
273
+ * Identifier type.
274
+ *
275
+ * @param identifier
276
+ * Identifier.
277
+ *
278
+ * @returns
279
+ * Length of GS1 Company Prefix, 0 if not a GS1 Company Prefix, or -1 if not found.
280
+ */
281
+ export function getFor(root, identifierType, identifier) {
282
+ let identifierPrefix;
283
+ if (identifierType === IdentifierTypes.GTIN) {
284
+ // Normalize the GTIN, pad to 14 digits, and extract the identifier prefix at the first character.
285
+ identifierPrefix = GTINValidator.normalize(identifier).padStart(GTINLengths.GTIN14, "0").substring(1);
286
+ }
287
+ else {
288
+ const identifierValidator = IdentifierValidators[identifierType];
289
+ identifierValidator.validate(identifier);
290
+ identifierPrefix = !isNumericIdentifierValidator(identifierValidator) || identifierValidator.leaderType !== LeaderTypes.ExtensionDigit ? identifier : identifier.substring(1);
291
+ }
292
+ let node = root;
293
+ let digitIndex = 0;
294
+ // Traverse tree until exhausted or at a leaf.
295
+ while (node !== undefined && !isLeaf(node)) {
296
+ node = node.childNodes[Number(identifierPrefix.charAt(digitIndex++))];
297
+ }
298
+ return node?.length ?? -1;
299
+ }
300
+ //# sourceMappingURL=gcp-length.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp-length.js","sourceRoot":"","sources":["../src/gcp-length.ts"],"names":[],"mappings":"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"}
@@ -42,23 +42,6 @@ export declare class GTINCreator extends GTINCreator_base {
42
42
  * GTIN-14(s).
43
43
  */
44
44
  createGTIN14<TTransformerInput extends TransformerInput<number | bigint>>(indicatorDigit: string, valueOrValues: TTransformerInput, sparse?: boolean): TransformerOutput<TTransformerInput, string>;
45
- /**
46
- * Create a Restricted Circulation Number (RCN) using a variable measure trade item format. See {@linkcode
47
- * GTINValidator.parseVariableMeasureRCN} for format details.
48
- *
49
- * @param format
50
- * Format.
51
- *
52
- * @param itemReference
53
- * Item reference.
54
- *
55
- * @param priceOrWeight
56
- * Price or weight (whole number only).
57
- *
58
- * @returns
59
- * RCN-12 or RCN-13.
60
- */
61
- static createVariableMeasureRCN(format: string, itemReference: number, priceOrWeight: number): string;
62
45
  }
63
46
  export {};
64
47
  //# sourceMappingURL=gtin-creator.d.ts.map
@@ -1 +1 @@
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;IAUjM;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;CAmGxG"}
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,6 +1,6 @@
1
1
  import { Exclusions, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
2
2
  import { MixinAbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
3
- import { checkDigit, priceOrWeightCheckDigit } from "./check.js";
3
+ import { checkDigit } from "./check.js";
4
4
  import { GTINLengths } from "./gtin-length.js";
5
5
  import { GTINValidator } from "./gtin-validator.js";
6
6
  import { i18nextGS1 } from "./locale/i18n.js";
@@ -60,97 +60,5 @@ export class GTINCreator extends MixinAbstractNumericIdentifierCreator(GTINValid
60
60
  return partialIdentifier + checkDigit(partialIdentifier);
61
61
  });
62
62
  }
63
- /**
64
- * Create a Restricted Circulation Number (RCN) using a variable measure trade item format. See {@linkcode
65
- * GTINValidator.parseVariableMeasureRCN} for format details.
66
- *
67
- * @param format
68
- * Format.
69
- *
70
- * @param itemReference
71
- * Item reference.
72
- *
73
- * @param priceOrWeight
74
- * Price or weight (whole number only).
75
- *
76
- * @returns
77
- * RCN-12 or RCN-13.
78
- */
79
- static createVariableMeasureRCN(format, itemReference, priceOrWeight) {
80
- const formatLength = format.length;
81
- let validFormat = formatLength === 12 || formatLength === 13;
82
- let rcnPrefix = "";
83
- let buildingItemReference = false;
84
- let itemReferenceString = "";
85
- let itemReferenceLength = 0;
86
- let buildingPriceOrWeight = false;
87
- let priceOrWeightString = "";
88
- let priceOrWeightLength = 0;
89
- let calculatePriceOrWeightCheckDigit = false;
90
- // RCN may be built in almost any order, so defer to builders that will be in ordered array.
91
- const rcnPrefixBuilder = (partialRCN) => partialRCN + rcnPrefix;
92
- const itemReferenceBuilder = (partialRCN) => partialRCN + itemReferenceString;
93
- const priceOrWeightBuilder = (partialRCN) => partialRCN + priceOrWeightString;
94
- const priceOrWeightCheckDigitBuilder = (partialRCN) => partialRCN + priceOrWeightCheckDigit(priceOrWeightString);
95
- const checkDigitBuilder = (partialRCN) => partialRCN + checkDigit(partialRCN);
96
- const rcnBuilders = [rcnPrefixBuilder];
97
- for (let index = 0; validFormat && index < formatLength; index++) {
98
- const formatChar = format.charAt(index);
99
- if (index === 0) {
100
- validFormat = formatChar === "2";
101
- rcnPrefix = formatChar;
102
- }
103
- else if (formatLength === 13 && index === 1) {
104
- validFormat = NUMERIC_CREATOR.characterIndex(formatChar) !== undefined;
105
- rcnPrefix += formatChar;
106
- }
107
- else if (index === formatLength - 1) {
108
- validFormat = formatChar === "C";
109
- }
110
- else {
111
- switch (formatChar) {
112
- case "I":
113
- if (!buildingItemReference) {
114
- // Item reference can't appear more than once.
115
- validFormat = itemReferenceLength === 0;
116
- buildingItemReference = true;
117
- buildingPriceOrWeight = false;
118
- rcnBuilders.push(itemReferenceBuilder);
119
- }
120
- itemReferenceLength++;
121
- break;
122
- case "P":
123
- if (!buildingPriceOrWeight) {
124
- // Price or weight can't appear more than once.
125
- validFormat = priceOrWeightLength === 0;
126
- buildingPriceOrWeight = true;
127
- buildingItemReference = false;
128
- rcnBuilders.push(priceOrWeightBuilder);
129
- }
130
- priceOrWeightLength++;
131
- break;
132
- case "V":
133
- // Price or weight check digit can't appear more than once.
134
- validFormat = !calculatePriceOrWeightCheckDigit;
135
- buildingItemReference = false;
136
- buildingPriceOrWeight = false;
137
- calculatePriceOrWeightCheckDigit = true;
138
- rcnBuilders.push(priceOrWeightCheckDigitBuilder);
139
- break;
140
- default:
141
- validFormat = false;
142
- break;
143
- }
144
- }
145
- }
146
- validFormat &&= itemReferenceLength !== 0 && priceOrWeightLength !== 0;
147
- if (!validFormat) {
148
- throw new RangeError(i18nextGS1.t("Identifier.invalidVariableMeasureRCNFormat"));
149
- }
150
- itemReferenceString = NUMERIC_CREATOR.create(itemReferenceLength, itemReference);
151
- priceOrWeightString = NUMERIC_CREATOR.create(priceOrWeightLength, priceOrWeight);
152
- rcnBuilders.push(checkDigitBuilder);
153
- return rcnBuilders.reduce((partialRCN, rcnBuilder) => rcnBuilder(partialRCN), "");
154
- }
155
63
  }
156
64
  //# sourceMappingURL=gtin-creator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gtin-creator.js","sourceRoot":"","sources":["../src/gtin-creator.ts"],"names":[],"mappings":"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"}
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"}
@@ -28,19 +28,6 @@ export type GTINLevelKey = keyof typeof GTINLevels;
28
28
  * GTIN level.
29
29
  */
30
30
  export type GTINLevel = typeof GTINLevels[GTINLevelKey];
31
- /**
32
- * Restricted Circulation Number reference.
33
- */
34
- export interface RCNReference {
35
- /**
36
- * Item reference.
37
- */
38
- itemReference: number;
39
- /**
40
- * Price or weight (whole number only).
41
- */
42
- priceOrWeight: number;
43
- }
44
31
  /**
45
32
  * GTIN validator.
46
33
  */
@@ -60,7 +47,7 @@ export declare class GTINValidator extends NumericIdentifierValidator<GTINType>
60
47
  /**
61
48
  * @inheritDoc
62
49
  */
63
- protected validatePrefix(partialIdentifier: string, positionOffset?: number): void;
50
+ protected validatePrefix(partialIdentifier: string): void;
64
51
  /**
65
52
  * Zero suppress a GTIN-12.
66
53
  *
@@ -125,38 +112,6 @@ export declare class GTINValidator extends NumericIdentifierValidator<GTINType>
125
112
  * GTIN-14.
126
113
  */
127
114
  static validateGTIN14(gtin14: string): void;
128
- /**
129
- * Parse a Restricted Circulation Number (RCN) using a variable measure trade item format. The format is a 12- or
130
- * 13-character string (for RCN-12 or RCN-13 respectively), containing the following:
131
- *
132
- * - '2' - The first character of the RCN.
133
- * - '0'-'9' - The second character of the RCN (RCN-13 only).
134
- * - 'I' - One or more, in sequence, for the item reference.
135
- * - 'P' - One or more, in sequence, for the price or weight.
136
- * - 'V' - Zero or one, for the price or weight check digit.
137
- * - 'C' - The check digit of the entire RCN.
138
- *
139
- * The 'I', 'P', and 'V' formats may be in any order.
140
- *
141
- * Some examples:
142
- *
143
- * - 2IIIIIVPPPPC - RCN-12 with a five-digit item reference, a price or weight check digit, and a four-digit price
144
- * or weight.
145
- * - 23IIIIVPPPPPC - RCN-13 with a four-digit item reference, a price or weight check digit, and a five-digit price
146
- * or weight.
147
- * - 2IIIIIIPPPPC - RCN-12 with a six-digit item reference and a four-digit price or eight.
148
- * - 29IIIIIPPPPPC - RCN-13 with a five-digit item reference and a five-digit price or weight.
149
- *
150
- * @param format
151
- * Format.
152
- *
153
- * @param rcn
154
- * RCN.
155
- *
156
- * @returns
157
- * RCN reference.
158
- */
159
- static parseVariableMeasureRCN(format: string, rcn: string): RCNReference;
160
115
  }
161
116
  /**
162
117
  * GTIN-13 validator.
@@ -1 +1 @@
1
- {"version":3,"file":"gtin-validator.d.ts","sourceRoot":"","sources":["../src/gtin-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAGhE;;GAEG;AACH,eAAO,MAAM,UAAU;IACnB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEG,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,0BAA0B,CAAC,QAAQ,CAAE,YAAW,cAAc;;IAuB7F;;;;;OAKG;gBACS,cAAc,EAAE,cAAc;IAQ1C;;OAEG;IACH,IAAa,UAAU,IAAI,UAAU,CAEpC;IAED;;OAEG;cACgB,cAAc,CAAC,iBAAiB,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAK3F;;;;;;;;OAQG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IA4B3C;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM;IA+BvD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAkBpE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgEtC;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,SAA0B,GAAG,IAAI;IA2D7E;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY;CAgG5E;AAED;;GAEG;AAEH,eAAO,MAAM,gBAAgB,eAAwC,CAAC;AAEtE;;GAEG;AAEH,eAAO,MAAM,gBAAgB,eAAwC,CAAC;AAEtE;;GAEG;AAEH,eAAO,MAAM,eAAe,eAAuC,CAAC;AAEpE;;GAEG;AAEH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAI3E,CAAC"}
1
+ {"version":3,"file":"gtin-validator.d.ts","sourceRoot":"","sources":["../src/gtin-validator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAGhE;;GAEG;AACH,eAAO,MAAM,UAAU;IACnB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEG,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAExD;;GAEG;AACH,qBAAa,aAAc,SAAQ,0BAA0B,CAAC,QAAQ,CAAE,YAAW,cAAc;;IA6B7F;;;;;OAKG;gBACS,cAAc,EAAE,cAAc;IAQ1C;;OAEG;IACH,IAAa,UAAU,IAAI,UAAU,CAEpC;IAED;;OAEG;cACgB,cAAc,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAKlE;;;;;;;;OAQG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IA4B3C;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM;IA+BvD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAgBpE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgEtC;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,SAA0B,GAAG,IAAI;IAkE7E;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAO9C;AAED;;GAEG;AAEH,eAAO,MAAM,gBAAgB,eAAwC,CAAC;AAEtE;;GAEG;AAEH,eAAO,MAAM,gBAAgB,eAAwC,CAAC;AAEtE;;GAEG;AAEH,eAAO,MAAM,eAAe,eAAuC,CAAC;AAEpE;;GAEG;AAEH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAI3E,CAAC"}