@aidc-toolkit/gs1 1.0.49 → 1.0.50-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.
- package/dist/abstract-identifier-creator.d.ts +41 -0
- package/dist/abstract-identifier-creator.d.ts.map +1 -0
- package/dist/abstract-identifier-creator.js +73 -0
- package/dist/abstract-identifier-creator.js.map +1 -0
- package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts +36 -0
- package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/abstract-non-gtin-numeric-identifier-creator.js +37 -0
- package/dist/abstract-non-gtin-numeric-identifier-creator.js.map +1 -0
- package/dist/abstract-numeric-identifier-creator.d.ts +34 -0
- package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/abstract-numeric-identifier-creator.js +152 -0
- package/dist/abstract-numeric-identifier-creator.js.map +1 -0
- package/dist/character-set.d.ts +27 -0
- package/dist/character-set.d.ts.map +1 -0
- package/dist/character-set.js +83 -0
- package/dist/character-set.js.map +1 -0
- package/dist/check.d.ts +81 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +218 -0
- package/dist/check.js.map +1 -0
- package/dist/content-character-set-creators.d.ts +4 -0
- package/dist/content-character-set-creators.d.ts.map +1 -0
- package/dist/content-character-set-creators.js +9 -0
- package/dist/content-character-set-creators.js.map +1 -0
- package/dist/content-character-set.d.ts +26 -0
- package/dist/content-character-set.d.ts.map +1 -0
- package/dist/content-character-set.js +18 -0
- package/dist/content-character-set.js.map +1 -0
- package/dist/gcp-length-cache.d.ts +89 -0
- package/dist/gcp-length-cache.d.ts.map +1 -0
- package/dist/gcp-length-cache.js +240 -0
- package/dist/gcp-length-cache.js.map +1 -0
- package/dist/gcp-length-data.d.ts +108 -0
- package/dist/gcp-length-data.d.ts.map +1 -0
- package/dist/gcp-length-data.js +53 -0
- package/dist/gcp-length-data.js.map +1 -0
- package/dist/gcp-length.d.ts +97 -0
- package/dist/gcp-length.d.ts.map +1 -0
- package/dist/gcp-length.js +368 -0
- package/dist/gcp-length.js.map +1 -0
- package/dist/gtin-creator.d.ts +60 -0
- package/dist/gtin-creator.d.ts.map +1 -0
- package/dist/gtin-creator.js +46 -0
- package/dist/gtin-creator.js.map +1 -0
- package/dist/gtin-descriptor.d.ts +22 -0
- package/dist/gtin-descriptor.d.ts.map +1 -0
- package/dist/gtin-descriptor.js +2 -0
- package/dist/gtin-descriptor.js.map +1 -0
- package/dist/gtin-length.d.ts +64 -0
- package/dist/gtin-length.d.ts.map +1 -0
- package/dist/gtin-length.js +36 -0
- package/dist/gtin-length.js.map +1 -0
- package/dist/gtin-type.d.ts +26 -0
- package/dist/gtin-type.d.ts.map +1 -0
- package/dist/gtin-type.js +7 -0
- package/dist/gtin-type.js.map +1 -0
- package/dist/gtin-validator.d.ts +132 -0
- package/dist/gtin-validator.d.ts.map +1 -0
- package/dist/gtin-validator.js +349 -0
- package/dist/gtin-validator.js.map +1 -0
- package/dist/identifier-creator.d.ts +31 -0
- package/dist/identifier-creator.d.ts.map +1 -0
- package/dist/identifier-creator.js +2 -0
- package/dist/identifier-creator.js.map +1 -0
- package/dist/identifier-creators.d.ts +118 -0
- package/dist/identifier-creators.d.ts.map +1 -0
- package/dist/identifier-creators.js +92 -0
- package/dist/identifier-creators.js.map +1 -0
- package/dist/identifier-descriptor.d.ts +27 -0
- package/dist/identifier-descriptor.d.ts.map +1 -0
- package/dist/identifier-descriptor.js +2 -0
- package/dist/identifier-descriptor.js.map +1 -0
- package/dist/identifier-descriptors.d.ts +106 -0
- package/dist/identifier-descriptors.d.ts.map +1 -0
- package/dist/identifier-descriptors.js +262 -0
- package/dist/identifier-descriptors.js.map +1 -0
- package/dist/identifier-extension.d.ts +82 -0
- package/dist/identifier-extension.d.ts.map +1 -0
- package/dist/identifier-extension.js +79 -0
- package/dist/identifier-extension.js.map +1 -0
- package/dist/identifier-type.d.ts +62 -0
- package/dist/identifier-type.d.ts.map +1 -0
- package/dist/identifier-type.js +54 -0
- package/dist/identifier-type.js.map +1 -0
- package/dist/identifier-validator.d.ts +85 -0
- package/dist/identifier-validator.d.ts.map +1 -0
- package/dist/identifier-validator.js +107 -0
- package/dist/identifier-validator.js.map +1 -0
- package/dist/identifier-validators.d.ts +131 -0
- package/dist/identifier-validators.d.ts.map +1 -0
- package/dist/identifier-validators.js +167 -0
- package/dist/identifier-validators.js.map +1 -0
- package/dist/index.d.ts +63 -2266
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -3
- package/dist/index.js.map +1 -0
- package/dist/leader-type.d.ts +26 -0
- package/dist/leader-type.d.ts.map +1 -0
- package/dist/leader-type.js +18 -0
- package/dist/leader-type.js.map +1 -0
- package/dist/locale/en/locale-resources.d.ts +48 -0
- package/dist/locale/en/locale-resources.d.ts.map +1 -0
- package/dist/locale/en/locale-resources.js +47 -0
- package/dist/locale/en/locale-resources.js.map +1 -0
- package/dist/locale/fr/locale-resources.d.ts +48 -0
- package/dist/locale/fr/locale-resources.d.ts.map +1 -0
- package/dist/locale/fr/locale-resources.js +47 -0
- package/dist/locale/fr/locale-resources.js.map +1 -0
- package/dist/locale/i18n.d.ts +27 -0
- package/dist/locale/i18n.d.ts.map +1 -0
- package/dist/locale/i18n.js +35 -0
- package/dist/locale/i18n.js.map +1 -0
- package/dist/non-gtin-numeric-identifier-creator.d.ts +12 -0
- package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/non-gtin-numeric-identifier-creator.js +2 -0
- package/dist/non-gtin-numeric-identifier-creator.js.map +1 -0
- package/dist/non-gtin-numeric-identifier-descriptor.d.ts +22 -0
- package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +1 -0
- package/dist/non-gtin-numeric-identifier-descriptor.js +2 -0
- package/dist/non-gtin-numeric-identifier-descriptor.js.map +1 -0
- package/dist/non-gtin-numeric-identifier-type.d.ts +26 -0
- package/dist/non-gtin-numeric-identifier-type.d.ts.map +1 -0
- package/dist/non-gtin-numeric-identifier-type.js +8 -0
- package/dist/non-gtin-numeric-identifier-type.js.map +1 -0
- package/dist/non-gtin-numeric-identifier-validator.d.ts +12 -0
- package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -0
- package/dist/non-gtin-numeric-identifier-validator.js +10 -0
- package/dist/non-gtin-numeric-identifier-validator.js.map +1 -0
- package/dist/non-numeric-identifier-creator.d.ts +47 -0
- package/dist/non-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/non-numeric-identifier-creator.js +64 -0
- package/dist/non-numeric-identifier-creator.js.map +1 -0
- package/dist/non-numeric-identifier-descriptor.d.ts +26 -0
- package/dist/non-numeric-identifier-descriptor.d.ts.map +1 -0
- package/dist/non-numeric-identifier-descriptor.js +2 -0
- package/dist/non-numeric-identifier-descriptor.js.map +1 -0
- package/dist/non-numeric-identifier-type.d.ts +26 -0
- package/dist/non-numeric-identifier-type.d.ts.map +1 -0
- package/dist/non-numeric-identifier-type.js +8 -0
- package/dist/non-numeric-identifier-type.js.map +1 -0
- package/dist/non-numeric-identifier-validator.d.ts +41 -0
- package/dist/non-numeric-identifier-validator.d.ts.map +1 -0
- package/dist/non-numeric-identifier-validator.js +69 -0
- package/dist/non-numeric-identifier-validator.js.map +1 -0
- package/dist/non-serializable-numeric-identifier-creator.d.ts +10 -0
- package/dist/non-serializable-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/non-serializable-numeric-identifier-creator.js +8 -0
- package/dist/non-serializable-numeric-identifier-creator.js.map +1 -0
- package/dist/non-serializable-numeric-identifier-descriptor.d.ts +12 -0
- package/dist/non-serializable-numeric-identifier-descriptor.d.ts.map +1 -0
- package/dist/non-serializable-numeric-identifier-descriptor.js +2 -0
- package/dist/non-serializable-numeric-identifier-descriptor.js.map +1 -0
- package/dist/non-serializable-numeric-identifier-type.d.ts +26 -0
- package/dist/non-serializable-numeric-identifier-type.d.ts.map +1 -0
- package/dist/non-serializable-numeric-identifier-type.js +7 -0
- package/dist/non-serializable-numeric-identifier-type.js.map +1 -0
- package/dist/non-serializable-numeric-identifier-validator.d.ts +16 -0
- package/dist/non-serializable-numeric-identifier-validator.d.ts.map +1 -0
- package/dist/non-serializable-numeric-identifier-validator.js +17 -0
- package/dist/non-serializable-numeric-identifier-validator.js.map +1 -0
- package/dist/numeric-identifier-creator.d.ts +65 -0
- package/dist/numeric-identifier-creator.d.ts.map +1 -0
- package/dist/numeric-identifier-creator.js +2 -0
- package/dist/numeric-identifier-creator.js.map +1 -0
- package/dist/numeric-identifier-descriptor.d.ts +22 -0
- package/dist/numeric-identifier-descriptor.d.ts.map +1 -0
- package/dist/numeric-identifier-descriptor.js +2 -0
- package/dist/numeric-identifier-descriptor.js.map +1 -0
- package/dist/numeric-identifier-type.d.ts +26 -0
- package/dist/numeric-identifier-type.d.ts.map +1 -0
- package/dist/numeric-identifier-type.js +7 -0
- package/dist/numeric-identifier-type.js.map +1 -0
- package/dist/numeric-identifier-validator.d.ts +38 -0
- package/dist/numeric-identifier-validator.d.ts.map +1 -0
- package/dist/numeric-identifier-validator.js +61 -0
- package/dist/numeric-identifier-validator.js.map +1 -0
- package/dist/prefix-manager.d.ts +151 -0
- package/dist/prefix-manager.d.ts.map +1 -0
- package/dist/prefix-manager.js +297 -0
- package/dist/prefix-manager.js.map +1 -0
- package/dist/prefix-provider.d.ts +27 -0
- package/dist/prefix-provider.d.ts.map +1 -0
- package/dist/prefix-provider.js +2 -0
- package/dist/prefix-provider.js.map +1 -0
- package/dist/prefix-type.d.ts +26 -0
- package/dist/prefix-type.d.ts.map +1 -0
- package/dist/prefix-type.js +18 -0
- package/dist/prefix-type.js.map +1 -0
- package/dist/prefix-validator.d.ts +71 -0
- package/dist/prefix-validator.d.ts.map +1 -0
- package/dist/prefix-validator.js +204 -0
- package/dist/prefix-validator.js.map +1 -0
- package/dist/serializable-numeric-identifier-creator.d.ts +71 -0
- package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/serializable-numeric-identifier-creator.js +40 -0
- package/dist/serializable-numeric-identifier-creator.js.map +1 -0
- package/dist/serializable-numeric-identifier-descriptor.d.ts +26 -0
- package/dist/serializable-numeric-identifier-descriptor.d.ts.map +1 -0
- package/dist/serializable-numeric-identifier-descriptor.js +2 -0
- package/dist/serializable-numeric-identifier-descriptor.js.map +1 -0
- package/dist/serializable-numeric-identifier-type.d.ts +26 -0
- package/dist/serializable-numeric-identifier-type.d.ts.map +1 -0
- package/dist/serializable-numeric-identifier-type.js +8 -0
- package/dist/serializable-numeric-identifier-type.js.map +1 -0
- package/dist/serializable-numeric-identifier-validator.d.ts +67 -0
- package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -0
- package/dist/serializable-numeric-identifier-validator.js +97 -0
- package/dist/serializable-numeric-identifier-validator.js.map +1 -0
- package/dist/variable-measure.d.ts +68 -0
- package/dist/variable-measure.d.ts.map +1 -0
- package/dist/variable-measure.js +210 -0
- package/dist/variable-measure.js.map +1 -0
- package/dist/verified-by-gs1.d.ts +22 -0
- package/dist/verified-by-gs1.d.ts.map +1 -0
- package/dist/verified-by-gs1.js +46 -0
- package/dist/verified-by-gs1.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +5 -5
- package/src/version.ts +1 -1
- package/test/gcp-length.test.ts +7 -7
- package/tsconfig-src.tsbuildinfo +1 -1
- package/dist/index.cjs +0 -19
- package/dist/index.d.cts +0 -2266
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { NUMERIC_CREATOR } from "@aidc-toolkit/utility";
|
|
2
|
+
import { checkDigit, hasValidCheckDigit, isValidPriceOrWeightCheckDigit, priceOrWeightCheckDigit } from "./check.js";
|
|
3
|
+
import { i18nextGS1 } from "./locale/i18n.js";
|
|
4
|
+
/**
|
|
5
|
+
* Variable measure trade item support functions.
|
|
6
|
+
*/
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- Wrapper for future functionality.
|
|
8
|
+
export class VariableMeasure {
|
|
9
|
+
/**
|
|
10
|
+
* Parse a Restricted Circulation Number (RCN) using a variable measure trade item format. The format is a 12- or
|
|
11
|
+
* 13-character string (for RCN-12 or RCN-13 respectively), containing the following:
|
|
12
|
+
*
|
|
13
|
+
* - '2' - The first character of the RCN.
|
|
14
|
+
* - '0'-'9' - The second character of the RCN (RCN-13 only).
|
|
15
|
+
* - 'I' - One or more, in sequence, for the item reference.
|
|
16
|
+
* - 'P' - One or more, in sequence, for the price or weight.
|
|
17
|
+
* - 'V' - Zero or one, for the price or weight check digit.
|
|
18
|
+
* - 'C' - The check digit of the entire RCN.
|
|
19
|
+
*
|
|
20
|
+
* The 'I', 'P', and 'V' formats may be in any order.
|
|
21
|
+
*
|
|
22
|
+
* Some examples:
|
|
23
|
+
*
|
|
24
|
+
* - `2IIIIIVPPPPC` - RCN-12 with a five-digit item reference, a price or weight check digit, and a four-digit price
|
|
25
|
+
* or weight.
|
|
26
|
+
* - `23IIIIVPPPPPC` - RCN-13 with a four-digit item reference, a price or weight check digit, and a five-digit price
|
|
27
|
+
* or weight.
|
|
28
|
+
* - `2IIIIIIPPPPC` - RCN-12 with a six-digit item reference and a four-digit price or eight.
|
|
29
|
+
* - `29IIIIIPPPPPC` - RCN-13 with a five-digit item reference and a five-digit price or weight.
|
|
30
|
+
*
|
|
31
|
+
* @param format
|
|
32
|
+
* Format.
|
|
33
|
+
*
|
|
34
|
+
* @param rcn
|
|
35
|
+
* RCN.
|
|
36
|
+
*
|
|
37
|
+
* @returns
|
|
38
|
+
* RCN reference.
|
|
39
|
+
*/
|
|
40
|
+
static parseRCN(format, rcn) {
|
|
41
|
+
const formatLength = format.length;
|
|
42
|
+
if (rcn.length !== formatLength) {
|
|
43
|
+
throw new RangeError(i18nextGS1.t("Identifier.invalidRCNLength"));
|
|
44
|
+
}
|
|
45
|
+
let validFormat = formatLength === 12 || formatLength === 13;
|
|
46
|
+
let validRCNPrefix = true;
|
|
47
|
+
let buildingItemReference = false;
|
|
48
|
+
let itemReference = "";
|
|
49
|
+
let buildingPriceOrWeight = false;
|
|
50
|
+
let priceOrWeight = "";
|
|
51
|
+
let priceOrWeightCheckDigit = "";
|
|
52
|
+
for (let index = 0; validFormat && index < formatLength; index++) {
|
|
53
|
+
const formatChar = format.charAt(index);
|
|
54
|
+
const rcnChar = rcn.charAt(index);
|
|
55
|
+
if (index === 0) {
|
|
56
|
+
validFormat = formatChar === "2";
|
|
57
|
+
validRCNPrefix = rcnChar === "2";
|
|
58
|
+
}
|
|
59
|
+
else if (formatLength === 13 && index === 1) {
|
|
60
|
+
validFormat = NUMERIC_CREATOR.characterIndex(formatChar) !== undefined;
|
|
61
|
+
validRCNPrefix = rcnChar === formatChar;
|
|
62
|
+
}
|
|
63
|
+
else if (index === formatLength - 1) {
|
|
64
|
+
validFormat = formatChar === "C";
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
switch (formatChar) {
|
|
68
|
+
case "I":
|
|
69
|
+
if (!buildingItemReference) {
|
|
70
|
+
// Item reference can't appear more than once.
|
|
71
|
+
validFormat = itemReference === "";
|
|
72
|
+
buildingItemReference = true;
|
|
73
|
+
buildingPriceOrWeight = false;
|
|
74
|
+
}
|
|
75
|
+
itemReference += rcnChar;
|
|
76
|
+
break;
|
|
77
|
+
case "P":
|
|
78
|
+
if (!buildingPriceOrWeight) {
|
|
79
|
+
// Price or weight can't appear more than once.
|
|
80
|
+
validFormat = priceOrWeight === "";
|
|
81
|
+
buildingPriceOrWeight = true;
|
|
82
|
+
buildingItemReference = false;
|
|
83
|
+
}
|
|
84
|
+
priceOrWeight += rcnChar;
|
|
85
|
+
break;
|
|
86
|
+
case "V":
|
|
87
|
+
// Price or weight check digit can't appear more than once.
|
|
88
|
+
validFormat = priceOrWeightCheckDigit === "";
|
|
89
|
+
buildingItemReference = false;
|
|
90
|
+
buildingPriceOrWeight = false;
|
|
91
|
+
priceOrWeightCheckDigit = rcnChar;
|
|
92
|
+
break;
|
|
93
|
+
default:
|
|
94
|
+
validFormat = false;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
validFormat &&= itemReference !== "" && priceOrWeight !== "";
|
|
100
|
+
if (!validFormat) {
|
|
101
|
+
throw new RangeError(i18nextGS1.t("Identifier.invalidVariableMeasureRCNFormat"));
|
|
102
|
+
}
|
|
103
|
+
if (!validRCNPrefix) {
|
|
104
|
+
throw new RangeError(i18nextGS1.t("Identifier.invalidVariableMeasureRCNPrefix"));
|
|
105
|
+
}
|
|
106
|
+
if (priceOrWeightCheckDigit !== "" && !isValidPriceOrWeightCheckDigit(priceOrWeight, priceOrWeightCheckDigit)) {
|
|
107
|
+
throw new RangeError(i18nextGS1.t("Identifier.invalidVariableMeasurePriceOrWeight"));
|
|
108
|
+
}
|
|
109
|
+
if (!hasValidCheckDigit(rcn)) {
|
|
110
|
+
throw new RangeError(i18nextGS1.t("Identifier.invalidCheckDigit"));
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
itemReference: Number(itemReference),
|
|
114
|
+
priceOrWeight: Number(priceOrWeight)
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Create a Restricted Circulation Number (RCN) using a variable measure trade item format. See {@linkcode parseRCN}
|
|
119
|
+
* for format details.
|
|
120
|
+
*
|
|
121
|
+
* @param format
|
|
122
|
+
* Format.
|
|
123
|
+
*
|
|
124
|
+
* @param itemReference
|
|
125
|
+
* Item reference.
|
|
126
|
+
*
|
|
127
|
+
* @param priceOrWeight
|
|
128
|
+
* Price or weight (whole number only).
|
|
129
|
+
*
|
|
130
|
+
* @returns
|
|
131
|
+
* RCN-12 or RCN-13.
|
|
132
|
+
*/
|
|
133
|
+
static createRCN(format, itemReference, priceOrWeight) {
|
|
134
|
+
const formatLength = format.length;
|
|
135
|
+
let validFormat = formatLength === 12 || formatLength === 13;
|
|
136
|
+
let rcnPrefix = "";
|
|
137
|
+
let buildingItemReference = false;
|
|
138
|
+
let itemReferenceString = "";
|
|
139
|
+
let itemReferenceLength = 0;
|
|
140
|
+
let buildingPriceOrWeight = false;
|
|
141
|
+
let priceOrWeightString = "";
|
|
142
|
+
let priceOrWeightLength = 0;
|
|
143
|
+
let calculatePriceOrWeightCheckDigit = false;
|
|
144
|
+
// RCN may be built in almost any order, so defer to builders that will be in ordered array.
|
|
145
|
+
const rcnPrefixBuilder = (partialRCN) => partialRCN + rcnPrefix;
|
|
146
|
+
const itemReferenceBuilder = (partialRCN) => partialRCN + itemReferenceString;
|
|
147
|
+
const priceOrWeightBuilder = (partialRCN) => partialRCN + priceOrWeightString;
|
|
148
|
+
const priceOrWeightCheckDigitBuilder = (partialRCN) => partialRCN + priceOrWeightCheckDigit(priceOrWeightString);
|
|
149
|
+
const checkDigitBuilder = (partialRCN) => partialRCN + checkDigit(partialRCN);
|
|
150
|
+
const rcnBuilders = [rcnPrefixBuilder];
|
|
151
|
+
for (let index = 0; validFormat && index < formatLength; index++) {
|
|
152
|
+
const formatChar = format.charAt(index);
|
|
153
|
+
if (index === 0) {
|
|
154
|
+
validFormat = formatChar === "2";
|
|
155
|
+
rcnPrefix = formatChar;
|
|
156
|
+
}
|
|
157
|
+
else if (formatLength === 13 && index === 1) {
|
|
158
|
+
validFormat = NUMERIC_CREATOR.characterIndex(formatChar) !== undefined;
|
|
159
|
+
rcnPrefix += formatChar;
|
|
160
|
+
}
|
|
161
|
+
else if (index === formatLength - 1) {
|
|
162
|
+
validFormat = formatChar === "C";
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
switch (formatChar) {
|
|
166
|
+
case "I":
|
|
167
|
+
if (!buildingItemReference) {
|
|
168
|
+
// Item reference can't appear more than once.
|
|
169
|
+
validFormat = itemReferenceLength === 0;
|
|
170
|
+
buildingItemReference = true;
|
|
171
|
+
buildingPriceOrWeight = false;
|
|
172
|
+
rcnBuilders.push(itemReferenceBuilder);
|
|
173
|
+
}
|
|
174
|
+
itemReferenceLength++;
|
|
175
|
+
break;
|
|
176
|
+
case "P":
|
|
177
|
+
if (!buildingPriceOrWeight) {
|
|
178
|
+
// Price or weight can't appear more than once.
|
|
179
|
+
validFormat = priceOrWeightLength === 0;
|
|
180
|
+
buildingPriceOrWeight = true;
|
|
181
|
+
buildingItemReference = false;
|
|
182
|
+
rcnBuilders.push(priceOrWeightBuilder);
|
|
183
|
+
}
|
|
184
|
+
priceOrWeightLength++;
|
|
185
|
+
break;
|
|
186
|
+
case "V":
|
|
187
|
+
// Price or weight check digit can't appear more than once.
|
|
188
|
+
validFormat = !calculatePriceOrWeightCheckDigit;
|
|
189
|
+
buildingItemReference = false;
|
|
190
|
+
buildingPriceOrWeight = false;
|
|
191
|
+
calculatePriceOrWeightCheckDigit = true;
|
|
192
|
+
rcnBuilders.push(priceOrWeightCheckDigitBuilder);
|
|
193
|
+
break;
|
|
194
|
+
default:
|
|
195
|
+
validFormat = false;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
validFormat &&= itemReferenceLength !== 0 && priceOrWeightLength !== 0;
|
|
201
|
+
if (!validFormat) {
|
|
202
|
+
throw new RangeError(i18nextGS1.t("Identifier.invalidVariableMeasureRCNFormat"));
|
|
203
|
+
}
|
|
204
|
+
itemReferenceString = NUMERIC_CREATOR.create(itemReferenceLength, itemReference);
|
|
205
|
+
priceOrWeightString = NUMERIC_CREATOR.create(priceOrWeightLength, priceOrWeight);
|
|
206
|
+
rcnBuilders.push(checkDigitBuilder);
|
|
207
|
+
return rcnBuilders.reduce((partialRCN, rcnBuilder) => rcnBuilder(partialRCN), "");
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=variable-measure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-measure.js","sourceRoot":"","sources":["../src/variable-measure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Hyperlink } from "@aidc-toolkit/core";
|
|
2
|
+
import { type IdentifierType } from "./identifier-type.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create a Verified by GS1 hyperlink.
|
|
5
|
+
*
|
|
6
|
+
* @param identifierType
|
|
7
|
+
* Identifier type.
|
|
8
|
+
*
|
|
9
|
+
* @param identifier
|
|
10
|
+
* Identifier.
|
|
11
|
+
*
|
|
12
|
+
* @param text
|
|
13
|
+
* Text for hyperlink. If not provided, the identifier is used.
|
|
14
|
+
*
|
|
15
|
+
* @param details
|
|
16
|
+
* Details to display when hovering over hyperlink.
|
|
17
|
+
*
|
|
18
|
+
* @returns
|
|
19
|
+
* Verified by GS1 hyperlink.
|
|
20
|
+
*/
|
|
21
|
+
export declare function verifiedByGS1(identifierType: IdentifierType, identifier: string, text?: string | undefined, details?: string): Hyperlink;
|
|
22
|
+
//# sourceMappingURL=verified-by-gs1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verified-by-gs1.d.ts","sourceRoot":"","sources":["../src/verified-by-gs1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AAK5E;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAgB,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,SAAqB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CA2BnJ"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { GTINValidator } from "./gtin-validator.js";
|
|
2
|
+
import { IdentifierTypes } from "./identifier-type.js";
|
|
3
|
+
import { IdentifierValidators } from "./identifier-validators.js";
|
|
4
|
+
const VERIFIED_BY_GS1_REFERENCE_BASE = "https://www.gs1.org/services/verified-by-gs1/results?";
|
|
5
|
+
/**
|
|
6
|
+
* Create a Verified by GS1 hyperlink.
|
|
7
|
+
*
|
|
8
|
+
* @param identifierType
|
|
9
|
+
* Identifier type.
|
|
10
|
+
*
|
|
11
|
+
* @param identifier
|
|
12
|
+
* Identifier.
|
|
13
|
+
*
|
|
14
|
+
* @param text
|
|
15
|
+
* Text for hyperlink. If not provided, the identifier is used.
|
|
16
|
+
*
|
|
17
|
+
* @param details
|
|
18
|
+
* Details to display when hovering over hyperlink.
|
|
19
|
+
*
|
|
20
|
+
* @returns
|
|
21
|
+
* Verified by GS1 hyperlink.
|
|
22
|
+
*/
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-default-assignment -- Undefined is necessary to allow bypass of text.
|
|
24
|
+
export function verifiedByGS1(identifierType, identifier, text = undefined, details) {
|
|
25
|
+
let normalizedIdentifier;
|
|
26
|
+
let useKeyTypeParameter;
|
|
27
|
+
if (identifierType === IdentifierTypes.GTIN) {
|
|
28
|
+
// Normalization will validate resulting GTIN.
|
|
29
|
+
normalizedIdentifier = GTINValidator.normalize(identifier);
|
|
30
|
+
useKeyTypeParameter = true;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const identifierValidator = IdentifierValidators[identifierType];
|
|
34
|
+
identifierValidator.validate(identifier);
|
|
35
|
+
normalizedIdentifier = identifier;
|
|
36
|
+
useKeyTypeParameter = identifierType === IdentifierTypes.GLN;
|
|
37
|
+
}
|
|
38
|
+
const lowerCaseIdentifierType = identifierType.toLowerCase();
|
|
39
|
+
const reference = useKeyTypeParameter ? `${VERIFIED_BY_GS1_REFERENCE_BASE}${lowerCaseIdentifierType}=${normalizedIdentifier}` : `${VERIFIED_BY_GS1_REFERENCE_BASE}key=${normalizedIdentifier}&key_type=${lowerCaseIdentifierType}`;
|
|
40
|
+
return {
|
|
41
|
+
reference,
|
|
42
|
+
text: text ?? identifier,
|
|
43
|
+
details
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=verified-by-gs1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verified-by-gs1.js","sourceRoot":"","sources":["../src/verified-by-gs1.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAuB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,8BAA8B,GAAG,uDAAuD,CAAC;AAE/F;;;;;;;;;;;;;;;;;GAiBG;AACH,+HAA+H;AAC/H,MAAM,UAAU,aAAa,CAAC,cAA8B,EAAE,UAAkB,EAAE,OAA2B,SAAS,EAAE,OAAgB;IACpI,IAAI,oBAA4B,CAAC;IACjC,IAAI,mBAA4B,CAAC;IAEjC,IAAI,cAAc,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;QAC1C,8CAA8C;QAC9C,oBAAoB,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE3D,mBAAmB,GAAG,IAAI,CAAC;IAC/B,CAAC;SAAM,CAAC;QACJ,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAEjE,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEzC,oBAAoB,GAAG,UAAU,CAAC;QAClC,mBAAmB,GAAG,cAAc,KAAK,eAAe,CAAC,GAAG,CAAC;IACjE,CAAC;IAED,MAAM,uBAAuB,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;IAE7D,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,8BAA8B,GAAG,uBAAuB,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,8BAA8B,OAAO,oBAAoB,aAAa,uBAAuB,EAAE,CAAC;IAEnO,OAAO;QACH,SAAS;QACT,IAAI,EAAE,IAAI,IAAI,UAAU;QACxB,OAAO;KACV,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,OAAO,gBAAgB,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aidc-toolkit/gs1",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.50-beta",
|
|
4
4
|
"description": "GS1 AIDC Toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"test": "tsc --project tsconfig-test.json --noEmit && vitest run"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@aidc-toolkit/dev": "
|
|
33
|
-
"vitest": "^4.
|
|
32
|
+
"@aidc-toolkit/dev": "1.0.47-beta",
|
|
33
|
+
"vitest": "^4.1.8"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aidc-toolkit/core": "
|
|
37
|
-
"@aidc-toolkit/utility": "
|
|
36
|
+
"@aidc-toolkit/core": "1.0.48-beta",
|
|
37
|
+
"@aidc-toolkit/utility": "1.0.49-beta"
|
|
38
38
|
}
|
|
39
39
|
}
|
package/src/version.ts
CHANGED
package/test/gcp-length.test.ts
CHANGED
|
@@ -188,7 +188,7 @@ describe("GS1 Company Prefix length", () => {
|
|
|
188
188
|
// Binary not available, JSON 1 available.
|
|
189
189
|
await expect(gcpLengthJSON1Source.load().then(() => {
|
|
190
190
|
root1 = gcpLengthJSON1Source.root;
|
|
191
|
-
})).resolves.not.
|
|
191
|
+
})).resolves.not.toThrow(RangeError);
|
|
192
192
|
|
|
193
193
|
nextCheckDateTime = await gcpLengthCacheJSON1Source.nextCheckDateTime;
|
|
194
194
|
|
|
@@ -204,7 +204,7 @@ describe("GS1 Company Prefix length", () => {
|
|
|
204
204
|
// Binary available, binary 1 not available but not in next check date/time window.
|
|
205
205
|
await expect(gcpLengthBinary1Source.load().then(() => {
|
|
206
206
|
root2 = gcpLengthBinary1Source.root;
|
|
207
|
-
})).resolves.not.
|
|
207
|
+
})).resolves.not.toThrow(RangeError);
|
|
208
208
|
|
|
209
209
|
expect(root2).not.toBeUndefined();
|
|
210
210
|
|
|
@@ -221,7 +221,7 @@ describe("GS1 Company Prefix length", () => {
|
|
|
221
221
|
// Binary not available, JSON 2 available.
|
|
222
222
|
await expect(gcpLengthJSON2Source.load().then(() => {
|
|
223
223
|
root2 = gcpLengthJSON2Source.root;
|
|
224
|
-
})).resolves.not.
|
|
224
|
+
})).resolves.not.toThrow(RangeError);
|
|
225
225
|
|
|
226
226
|
nextCheckDateTime = await gcpLengthCacheJSON2Source.nextCheckDateTime;
|
|
227
227
|
|
|
@@ -236,7 +236,7 @@ describe("GS1 Company Prefix length", () => {
|
|
|
236
236
|
// Binary available, binary 2 available and more recent but not in next check date/time window.
|
|
237
237
|
await expect(gcpLengthBinary2Source.load().then(() => {
|
|
238
238
|
root2 = gcpLengthBinary2Source.root;
|
|
239
|
-
})).resolves.not.
|
|
239
|
+
})).resolves.not.toThrow(RangeError);
|
|
240
240
|
|
|
241
241
|
// No change.
|
|
242
242
|
expect(() => {
|
|
@@ -248,7 +248,7 @@ describe("GS1 Company Prefix length", () => {
|
|
|
248
248
|
// Binary 1 available, binary 2 available and more recent and in next check date/time window.
|
|
249
249
|
await expect(gcpLengthBinary2Source.load().then(() => {
|
|
250
250
|
root2 = gcpLengthBinary2Source.root;
|
|
251
|
-
})).resolves.not.
|
|
251
|
+
})).resolves.not.toThrow(RangeError);
|
|
252
252
|
|
|
253
253
|
expect(root2).not.toBeUndefined();
|
|
254
254
|
|
|
@@ -275,7 +275,7 @@ describe("GS1 Company Prefix length", () => {
|
|
|
275
275
|
|
|
276
276
|
const gcpLengthJSON2Source = new GCPLength(gcpLengthCacheJSON2Source);
|
|
277
277
|
|
|
278
|
-
await expect(gcpLengthJSON2Source.load()).resolves.not.
|
|
278
|
+
await expect(gcpLengthJSON2Source.load()).resolves.not.toThrow(RangeError);
|
|
279
279
|
|
|
280
280
|
function testIdentifiers(prefixManager: PrefixManager, prefixLength: number): void {
|
|
281
281
|
expect(gcpLengthJSON2Source.lengthOf(IdentifierTypes.GTIN, prefixManager.gtinCreator.create(0, true))).toBe(prefixLength);
|
|
@@ -348,7 +348,7 @@ describe("GS1 Company Prefix length", () => {
|
|
|
348
348
|
|
|
349
349
|
const gcpLength = new GCPLength(gcpLengthCache);
|
|
350
350
|
|
|
351
|
-
await expect(gcpLength.load()).resolves.not.
|
|
351
|
+
await expect(gcpLength.load()).resolves.not.toThrow(RangeError);
|
|
352
352
|
|
|
353
353
|
expect(savedNextCheckDateTime).not.toBeUndefined();
|
|
354
354
|
expect(savedCacheDateTime).not.toBeUndefined();
|