@aidc-toolkit/gs1 1.0.24-beta → 1.0.26-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abstract-identifier-creator.d.ts +75 -0
- package/dist/abstract-identifier-creator.d.ts.map +1 -0
- package/dist/abstract-identifier-creator.js +56 -0
- package/dist/abstract-identifier-creator.js.map +1 -0
- package/dist/abstract-identifier-validator.d.ts +95 -0
- package/dist/abstract-identifier-validator.d.ts.map +1 -0
- package/dist/abstract-identifier-validator.js +123 -0
- package/dist/abstract-identifier-validator.js.map +1 -0
- package/dist/abstract-numeric-identifier-creator.d.ts +92 -0
- package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/abstract-numeric-identifier-creator.js +137 -0
- package/dist/abstract-numeric-identifier-creator.js.map +1 -0
- package/dist/abstract-numeric-identifier-validator.d.ts +35 -0
- package/dist/abstract-numeric-identifier-validator.d.ts.map +1 -0
- package/dist/abstract-numeric-identifier-validator.js +61 -0
- package/dist/abstract-numeric-identifier-validator.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 +50 -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.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/creators.d.ts +81 -0
- package/dist/creators.d.ts.map +1 -0
- package/dist/creators.js +62 -0
- package/dist/creators.js.map +1 -0
- package/dist/descriptors.d.ts +96 -0
- package/dist/descriptors.d.ts.map +1 -0
- package/dist/descriptors.js +266 -0
- package/dist/descriptors.js.map +1 -0
- package/dist/gtin-creator.d.ts +69 -0
- package/dist/gtin-creator.d.ts.map +1 -0
- package/dist/gtin-creator.js +159 -0
- package/dist/gtin-creator.js.map +1 -0
- package/dist/gtin-descriptor.d.ts +17 -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-type.d.ts +39 -0
- package/dist/gtin-type.d.ts.map +1 -0
- package/dist/gtin-type.js +31 -0
- package/dist/gtin-type.js.map +1 -0
- package/dist/gtin-validator.d.ts +191 -0
- package/dist/gtin-validator.d.ts.map +1 -0
- package/dist/gtin-validator.js +450 -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-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-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 +53 -0
- package/dist/identifier-validator.d.ts.map +1 -0
- package/dist/identifier-validator.js +2 -0
- package/dist/identifier-validator.js.map +1 -0
- package/dist/index.d.ts +52 -1588
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -4541
- package/dist/index.js.map +1 -1
- package/dist/locale/en/locale-resources.d.ts +42 -0
- package/dist/locale/en/locale-resources.d.ts.map +1 -0
- package/dist/locale/en/locale-resources.js +41 -0
- package/dist/locale/en/locale-resources.js.map +1 -0
- package/dist/locale/fr/locale-resources.d.ts +42 -0
- package/dist/locale/fr/locale-resources.d.ts.map +1 -0
- package/dist/locale/fr/locale-resources.js +41 -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 +36 -0
- package/dist/locale/i18n.js.map +1 -0
- package/dist/non-gtin-numeric-identifier-creator.d.ts +24 -0
- package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/non-gtin-numeric-identifier-creator.js +23 -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 +7 -0
- package/dist/non-gtin-numeric-identifier-type.d.ts.map +1 -0
- package/dist/non-gtin-numeric-identifier-type.js +2 -0
- package/dist/non-gtin-numeric-identifier-type.js.map +1 -0
- package/dist/non-gtin-numeric-identifier-validator.d.ts +17 -0
- package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -0
- package/dist/non-gtin-numeric-identifier-validator.js +17 -0
- package/dist/non-gtin-numeric-identifier-validator.js.map +1 -0
- package/dist/non-numeric-identifier-creator.d.ts +45 -0
- package/dist/non-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/non-numeric-identifier-creator.js +84 -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 +7 -0
- package/dist/non-numeric-identifier-type.d.ts.map +1 -0
- package/dist/non-numeric-identifier-type.js +2 -0
- package/dist/non-numeric-identifier-type.js.map +1 -0
- package/dist/non-numeric-identifier-validator.d.ts +49 -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/numeric-identifier-creator.d.ts +53 -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 +21 -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 +31 -0
- package/dist/numeric-identifier-type.d.ts.map +1 -0
- package/dist/numeric-identifier-type.js +18 -0
- package/dist/numeric-identifier-type.js.map +1 -0
- package/dist/numeric-identifier-validator.d.ts +24 -0
- package/dist/numeric-identifier-validator.d.ts.map +1 -0
- package/dist/numeric-identifier-validator.js +2 -0
- package/dist/numeric-identifier-validator.js.map +1 -0
- package/dist/prefix-manager.d.ts +232 -0
- package/dist/prefix-manager.d.ts.map +1 -0
- package/dist/prefix-manager.js +334 -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 +70 -0
- package/dist/prefix-validator.d.ts.map +1 -0
- package/dist/prefix-validator.js +208 -0
- package/dist/prefix-validator.js.map +1 -0
- package/dist/serializable-numeric-identifier-creator.d.ts +76 -0
- package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/serializable-numeric-identifier-creator.js +107 -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 +6 -0
- package/dist/serializable-numeric-identifier-type.d.ts.map +1 -0
- package/dist/serializable-numeric-identifier-type.js +2 -0
- package/dist/serializable-numeric-identifier-type.js.map +1 -0
- package/dist/serializable-numeric-identifier-validator.d.ts +56 -0
- package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -0
- package/dist/serializable-numeric-identifier-validator.js +77 -0
- package/dist/serializable-numeric-identifier-validator.js.map +1 -0
- package/dist/validators.d.ts +96 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +140 -0
- package/dist/validators.js.map +1 -0
- package/package.json +12 -8
- package/src/abstract-identifier-creator.ts +97 -0
- package/src/abstract-identifier-validator.ts +140 -0
- package/src/abstract-numeric-identifier-creator.ts +168 -0
- package/src/abstract-numeric-identifier-validator.ts +69 -0
- package/src/character-set.ts +10 -10
- package/src/check.ts +9 -9
- package/src/content-character-set.ts +29 -0
- package/src/creators.ts +113 -0
- package/src/descriptors.ts +332 -0
- package/src/gtin-creator.ts +10 -9
- package/src/gtin-descriptor.ts +18 -0
- package/src/gtin-type.ts +50 -0
- package/src/gtin-validator.ts +40 -64
- package/src/identifier-creator.ts +12 -76
- package/src/identifier-descriptor.ts +30 -0
- package/src/identifier-type.ts +6 -1
- package/src/identifier-validator.ts +12 -188
- package/src/index.ts +44 -19
- package/src/locale/en/locale-resources.ts +0 -1
- package/src/locale/fr/locale-resources.ts +0 -1
- package/src/locale/i18n.ts +3 -3
- package/src/locale/i18next.d.ts +1 -1
- package/src/non-gtin-numeric-identifier-creator.ts +7 -13
- package/src/non-gtin-numeric-identifier-descriptor.ts +24 -0
- package/src/non-gtin-numeric-identifier-type.ts +7 -0
- package/src/non-gtin-numeric-identifier-validator.ts +8 -42
- package/src/non-numeric-identifier-creator.ts +9 -19
- package/src/non-numeric-identifier-descriptor.ts +29 -0
- package/src/non-numeric-identifier-type.ts +7 -0
- package/src/non-numeric-identifier-validator.ts +17 -55
- package/src/numeric-identifier-creator.ts +20 -163
- package/src/numeric-identifier-descriptor.ts +23 -0
- package/src/numeric-identifier-type.ts +44 -0
- package/src/numeric-identifier-validator.ts +13 -116
- package/src/prefix-manager.ts +94 -152
- package/src/prefix-provider.ts +3 -3
- package/src/prefix-type.ts +6 -1
- package/src/prefix-validator.ts +143 -81
- package/src/serializable-numeric-identifier-creator.ts +6 -16
- package/src/serializable-numeric-identifier-descriptor.ts +29 -0
- package/src/serializable-numeric-identifier-type.ts +9 -0
- package/src/serializable-numeric-identifier-validator.ts +18 -46
- package/src/validators.ts +203 -0
- package/test/check.test.ts +1 -1
- package/test/creator.test.ts +5 -7
- package/test/gtin-creator.ts +6 -2
- package/test/gtin-validator.test.ts +7 -10
- package/test/identifier-creator.ts +6 -5
- package/test/identifier-validator.ts +2 -2
- package/test/non-gtin-numeric-identifier-creator.ts +9 -93
- package/test/non-gtin-numeric-identifier-validator.ts +3 -3
- package/test/non-numeric-identifier-creator.ts +93 -0
- package/test/non-numeric-identifier-validator.ts +3 -3
- package/test/numeric-identifier-creator.ts +11 -5
- package/test/numeric-identifier-validator.ts +5 -9
- package/test/prefix-manager.test.ts +2 -2
- package/test/serializable-numeric-identifier-creator.ts +11 -3
- package/test/serializable-numeric-identifier-validator.ts +3 -3
- package/test/setup.ts +1 -1
- package/test/sparse.test.ts +1 -1
- package/test/utility.ts +1 -1
- package/test/validator.test.ts +64 -40
- package/test/variable-measure-rcn.test.ts +1 -1
- package/tsconfig-config.json +4 -0
- package/tsconfig-src.json +8 -0
- package/tsconfig-test.json +9 -0
- package/tsconfig.json +12 -1
- package/tsup.config.ts +3 -2
- package/dist/index.cjs +0 -4624
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1588
package/src/prefix-validator.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type CharacterSetValidation, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
|
|
2
|
-
import { i18nextGS1 } from "./locale/i18n";
|
|
3
|
-
import
|
|
2
|
+
import { i18nextGS1 } from "./locale/i18n.js";
|
|
3
|
+
import type { PrefixProvider } from "./prefix-provider.js";
|
|
4
|
+
import { type PrefixType, PrefixTypes } from "./prefix-type.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Prefix validation parameters.
|
|
@@ -98,94 +99,155 @@ const GS1_8_PREFIX_VALIDATION: Readonly<PrefixValidation> = {
|
|
|
98
99
|
};
|
|
99
100
|
|
|
100
101
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* @param prefixType
|
|
104
|
-
* Prefix type.
|
|
105
|
-
*
|
|
106
|
-
* @param allowUPCCompanyPrefix
|
|
107
|
-
* If true, a U.P.C. Company Prefix expressed as a GS1 Company Prefix is permitted.
|
|
108
|
-
*
|
|
109
|
-
* @param allowGS18Prefix
|
|
110
|
-
* If true, a GS1-8 Prefix expressed as a GS1 Company Prefix is permitted.
|
|
111
|
-
*
|
|
112
|
-
* @param prefix
|
|
113
|
-
* Prefix.
|
|
114
|
-
*
|
|
115
|
-
* @param isFromIdentifier
|
|
116
|
-
* If true, the prefix is from an identifier and should be trimmed before its character set is validated.
|
|
117
|
-
*
|
|
118
|
-
* @param isNumericIdentifier
|
|
119
|
-
* If true, the prefix is from a numeric identifier and its character set will be validated by the caller.
|
|
120
|
-
*
|
|
121
|
-
* @param positionOffset
|
|
122
|
-
* Position offset within a larger string.
|
|
102
|
+
* Prefix validator.
|
|
123
103
|
*/
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
104
|
+
export const PrefixValidator = {
|
|
105
|
+
GS1_COMPANY_PREFIX_MINIMUM_LENGTH,
|
|
106
|
+
GS1_COMPANY_PREFIX_MAXIMUM_LENGTH,
|
|
107
|
+
UPC_COMPANY_PREFIX_MINIMUM_LENGTH,
|
|
108
|
+
UPC_COMPANY_PREFIX_MAXIMUM_LENGTH,
|
|
109
|
+
GS1_8_PREFIX_MINIMUM_LENGTH,
|
|
110
|
+
GS1_8_PREFIX_MAXIMUM_LENGTH,
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Validate a prefix.
|
|
114
|
+
*
|
|
115
|
+
* @param prefixType
|
|
116
|
+
* Prefix type.
|
|
117
|
+
*
|
|
118
|
+
* @param allowUPCCompanyPrefix
|
|
119
|
+
* If true, a U.P.C. Company Prefix expressed as a GS1 Company Prefix is permitted.
|
|
120
|
+
*
|
|
121
|
+
* @param allowGS18Prefix
|
|
122
|
+
* If true, a GS1-8 Prefix expressed as a GS1 Company Prefix is permitted.
|
|
123
|
+
*
|
|
124
|
+
* @param prefix
|
|
125
|
+
* Prefix.
|
|
126
|
+
*
|
|
127
|
+
* @param isFromIdentifier
|
|
128
|
+
* If true, the prefix is from an identifier and should be trimmed before its character set is validated.
|
|
129
|
+
*
|
|
130
|
+
* @param isNumericIdentifier
|
|
131
|
+
* If true, the prefix is from a numeric identifier and its character set will be validated by the caller.
|
|
132
|
+
*
|
|
133
|
+
* @param positionOffset
|
|
134
|
+
* Position offset within a larger string.
|
|
135
|
+
*/
|
|
136
|
+
validate(prefixType: PrefixType, allowUPCCompanyPrefix: boolean, allowGS18Prefix: boolean, prefix: string, isFromIdentifier = false, isNumericIdentifier = false, positionOffset?: number): void {
|
|
137
|
+
let baseValidation: PrefixValidation;
|
|
138
|
+
|
|
139
|
+
// Validate the prefix type and determine the prefix validation parameters.
|
|
140
|
+
switch (prefixType) {
|
|
141
|
+
case PrefixTypes.GS1CompanyPrefix:
|
|
142
|
+
if (!prefix.startsWith("0")) {
|
|
143
|
+
baseValidation = GS1_COMPANY_PREFIX_VALIDATION;
|
|
144
|
+
} else if (!prefix.startsWith("00000")) {
|
|
145
|
+
if (!allowUPCCompanyPrefix) {
|
|
146
|
+
throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith0"));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
baseValidation = UPC_COMPANY_PREFIX_AS_GS1_COMPANY_PREFIX_VALIDATION;
|
|
150
|
+
} else if (!prefix.startsWith("000000")) {
|
|
151
|
+
if (!allowGS18Prefix) {
|
|
152
|
+
throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith00000"));
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
baseValidation = GS1_8_PREFIX_AS_GS1_COMPANY_PREFIX_VALIDATION;
|
|
156
|
+
} else {
|
|
157
|
+
throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith000000"));
|
|
135
158
|
}
|
|
159
|
+
break;
|
|
136
160
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith00000"));
|
|
161
|
+
case PrefixTypes.UPCCompanyPrefix:
|
|
162
|
+
if (prefix.startsWith("0000")) {
|
|
163
|
+
throw new RangeError(i18nextGS1.t("Prefix.upcCompanyPrefixCantStartWith0000"));
|
|
141
164
|
}
|
|
142
165
|
|
|
143
|
-
baseValidation =
|
|
144
|
-
|
|
145
|
-
throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixCantStartWith000000"));
|
|
146
|
-
}
|
|
147
|
-
break;
|
|
166
|
+
baseValidation = UPC_COMPANY_PREFIX_VALIDATION;
|
|
167
|
+
break;
|
|
148
168
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
169
|
+
case PrefixTypes.GS18Prefix:
|
|
170
|
+
if (prefix.startsWith("0")) {
|
|
171
|
+
throw new RangeError(i18nextGS1.t("Prefix.gs18PrefixCantStartWith0"));
|
|
172
|
+
}
|
|
153
173
|
|
|
154
|
-
|
|
155
|
-
|
|
174
|
+
baseValidation = GS1_8_PREFIX_VALIDATION;
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
156
177
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
178
|
+
const mergedValidation: PrefixValidation = {
|
|
179
|
+
...baseValidation,
|
|
180
|
+
positionOffset
|
|
181
|
+
};
|
|
161
182
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
183
|
+
// If from key and numeric, key validation will take care of character set validation.
|
|
184
|
+
if (!isFromIdentifier) {
|
|
185
|
+
NUMERIC_CREATOR.validate(prefix, mergedValidation);
|
|
186
|
+
} else if (!isNumericIdentifier) {
|
|
187
|
+
// Validate only the minimum length, allowing at least one character for the (possibly non-numeric) reference.
|
|
188
|
+
NUMERIC_CREATOR.validate(prefix.substring(0, Math.min(mergedValidation.minimumLength, prefix.length - 1)), mergedValidation);
|
|
189
|
+
}
|
|
190
|
+
},
|
|
165
191
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
192
|
+
/**
|
|
193
|
+
* Normalize a prefix.
|
|
194
|
+
*
|
|
195
|
+
* @param prefixType
|
|
196
|
+
* Prefix type.
|
|
197
|
+
*
|
|
198
|
+
* @param prefix
|
|
199
|
+
* Prefix.
|
|
200
|
+
*
|
|
201
|
+
* @returns
|
|
202
|
+
* Prefix provider with normalized prefix type and prefix.
|
|
203
|
+
*/
|
|
204
|
+
normalize(prefixType: PrefixType, prefix: string): PrefixProvider {
|
|
205
|
+
// Validate first.
|
|
206
|
+
this.validate(prefixType, true, true, prefix);
|
|
207
|
+
|
|
208
|
+
let gs1CompanyPrefix: string;
|
|
209
|
+
|
|
210
|
+
// First step is to map the prefix to a GS1 Company Prefix.
|
|
211
|
+
switch (prefixType) {
|
|
212
|
+
case PrefixTypes.GS1CompanyPrefix:
|
|
213
|
+
gs1CompanyPrefix = prefix;
|
|
214
|
+
break;
|
|
215
|
+
|
|
216
|
+
case PrefixTypes.UPCCompanyPrefix:
|
|
217
|
+
gs1CompanyPrefix = "0" + prefix;
|
|
218
|
+
break;
|
|
219
|
+
|
|
220
|
+
case PrefixTypes.GS18Prefix:
|
|
221
|
+
gs1CompanyPrefix = "00000" + prefix;
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
let normalizedPrefixType: PrefixType;
|
|
226
|
+
let normalizedPrefix: string;
|
|
227
|
+
|
|
228
|
+
let upcCompanyPrefix: string | undefined = undefined;
|
|
229
|
+
let gs18Prefix: string | undefined = undefined;
|
|
230
|
+
|
|
231
|
+
// Determine the prefix type and populate the remaining fields.
|
|
232
|
+
if (!gs1CompanyPrefix.startsWith("0")) {
|
|
233
|
+
normalizedPrefixType = PrefixTypes.GS1CompanyPrefix;
|
|
234
|
+
normalizedPrefix = gs1CompanyPrefix;
|
|
235
|
+
} else if (!gs1CompanyPrefix.startsWith("00000")) {
|
|
236
|
+
normalizedPrefixType = PrefixTypes.UPCCompanyPrefix;
|
|
237
|
+
upcCompanyPrefix = gs1CompanyPrefix.substring(1);
|
|
238
|
+
normalizedPrefix = upcCompanyPrefix;
|
|
239
|
+
} else {
|
|
240
|
+
normalizedPrefixType = PrefixTypes.GS18Prefix;
|
|
241
|
+
gs18Prefix = gs1CompanyPrefix.substring(5);
|
|
242
|
+
normalizedPrefix = gs18Prefix;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return {
|
|
246
|
+
prefixType: normalizedPrefixType,
|
|
247
|
+
prefix: normalizedPrefix,
|
|
248
|
+
gs1CompanyPrefix,
|
|
249
|
+
upcCompanyPrefix,
|
|
250
|
+
gs18Prefix
|
|
251
|
+
};
|
|
177
252
|
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Prefix validator.
|
|
182
|
-
*/
|
|
183
|
-
export const PrefixValidator = {
|
|
184
|
-
GS1_COMPANY_PREFIX_MINIMUM_LENGTH,
|
|
185
|
-
GS1_COMPANY_PREFIX_MAXIMUM_LENGTH,
|
|
186
|
-
UPC_COMPANY_PREFIX_MINIMUM_LENGTH,
|
|
187
|
-
UPC_COMPANY_PREFIX_MAXIMUM_LENGTH,
|
|
188
|
-
GS1_8_PREFIX_MINIMUM_LENGTH,
|
|
189
|
-
GS1_8_PREFIX_MAXIMUM_LENGTH,
|
|
190
|
-
validate
|
|
191
253
|
} as const;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { mapIterable, type TransformerInput, type TransformerOutput } from "@aidc-toolkit/utility";
|
|
2
2
|
import { Mixin } from "ts-mixer";
|
|
3
|
-
import
|
|
4
|
-
import type {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator";
|
|
3
|
+
import { AbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
|
|
4
|
+
import type { PrefixProvider } from "./prefix-provider.js";
|
|
5
|
+
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
6
|
+
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
|
|
8
7
|
|
|
9
8
|
/**
|
|
10
9
|
* Serializable numeric identifier creator.
|
|
@@ -19,18 +18,9 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
19
18
|
*
|
|
20
19
|
* @param identifierType
|
|
21
20
|
* Identifier type.
|
|
22
|
-
*
|
|
23
|
-
* @param length
|
|
24
|
-
* Length.
|
|
25
|
-
*
|
|
26
|
-
* @param serialComponentLength
|
|
27
|
-
* Serial component length.
|
|
28
|
-
*
|
|
29
|
-
* @param serialComponentCharacterSet
|
|
30
|
-
* Serial component character set.
|
|
31
21
|
*/
|
|
32
|
-
constructor(prefixProvider: PrefixProvider, identifierType:
|
|
33
|
-
super(identifierType
|
|
22
|
+
constructor(prefixProvider: PrefixProvider, identifierType: SerializableNumericIdentifierType) {
|
|
23
|
+
super(identifierType);
|
|
34
24
|
|
|
35
25
|
this.init(prefixProvider, prefixProvider.gs1CompanyPrefix);
|
|
36
26
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ContentCharacterSet } from "./content-character-set.js";
|
|
2
|
+
import type { NonGTINNumericIdentifierDescriptor } from "./non-gtin-numeric-identifier-descriptor.js";
|
|
3
|
+
import type { LeaderTypes } from "./numeric-identifier-type.js";
|
|
4
|
+
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Serializable numeric identifier descriptor.
|
|
8
|
+
*/
|
|
9
|
+
export interface SerializableNumericIdentifierDescriptor extends NonGTINNumericIdentifierDescriptor {
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
readonly identifierType: SerializableNumericIdentifierType;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @inheritDoc
|
|
17
|
+
*/
|
|
18
|
+
readonly leaderType: typeof LeaderTypes.None;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Serial component length.
|
|
22
|
+
*/
|
|
23
|
+
readonly serialComponentLength: number;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Serial component character set.
|
|
27
|
+
*/
|
|
28
|
+
readonly serialComponentCharacterSet: ContentCharacterSet;
|
|
29
|
+
}
|
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
import type { CharacterSetCreator, CharacterSetValidation } from "@aidc-toolkit/utility";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "./
|
|
9
|
-
import { LeaderTypes } from "./numeric-identifier-validator";
|
|
2
|
+
import { AbstractNumericIdentifierValidator } from "./abstract-numeric-identifier-validator.js";
|
|
3
|
+
import type { ContentCharacterSet } from "./content-character-set.js";
|
|
4
|
+
import { IdentifierDescriptors } from "./descriptors.js";
|
|
5
|
+
import type { IdentifierValidation } from "./identifier-validator.js";
|
|
6
|
+
import { i18nextGS1 } from "./locale/i18n.js";
|
|
7
|
+
import type { SerializableNumericIdentifierDescriptor } from "./serializable-numeric-identifier-descriptor.js";
|
|
8
|
+
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
|
-
* Serializable numeric identifier
|
|
11
|
+
* Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
|
|
12
|
+
* that support serialization.
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Serializable numeric identifier validator. Validates both serialized and non-serialized forms of
|
|
18
|
-
* numeric identifiers that support serialization.
|
|
19
|
-
*/
|
|
20
|
-
export class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator {
|
|
14
|
+
export class SerializableNumericIdentifierValidator extends AbstractNumericIdentifierValidator<SerializableNumericIdentifierDescriptor> {
|
|
21
15
|
/**
|
|
22
16
|
* Serial component length.
|
|
23
17
|
*/
|
|
@@ -43,29 +37,22 @@ export class SerializableNumericIdentifierValidator extends NonGTINNumericIdenti
|
|
|
43
37
|
*
|
|
44
38
|
* @param identifierType
|
|
45
39
|
* Identifier type.
|
|
46
|
-
*
|
|
47
|
-
* @param length
|
|
48
|
-
* Length.
|
|
49
|
-
*
|
|
50
|
-
* @param serialComponentLength
|
|
51
|
-
* Serial component length.
|
|
52
|
-
*
|
|
53
|
-
* @param serialComponentCharacterSet
|
|
54
|
-
* Serial component character set.
|
|
55
40
|
*/
|
|
56
|
-
constructor(identifierType:
|
|
57
|
-
|
|
41
|
+
constructor(identifierType: SerializableNumericIdentifierType) {
|
|
42
|
+
const identifierDescriptor = IdentifierDescriptors[identifierType];
|
|
43
|
+
|
|
44
|
+
super(identifierDescriptor);
|
|
58
45
|
|
|
59
|
-
this._serialComponentLength = serialComponentLength;
|
|
60
|
-
this._serialComponentCharacterSet = serialComponentCharacterSet;
|
|
46
|
+
this._serialComponentLength = identifierDescriptor.serialComponentLength;
|
|
47
|
+
this._serialComponentCharacterSet = identifierDescriptor.serialComponentCharacterSet;
|
|
61
48
|
|
|
62
49
|
this._serialComponentValidation = {
|
|
63
50
|
minimumLength: 1,
|
|
64
|
-
maximumLength: serialComponentLength,
|
|
51
|
+
maximumLength: identifierDescriptor.serialComponentLength,
|
|
65
52
|
component: () => i18nextGS1.t("Identifier.serialComponent")
|
|
66
53
|
};
|
|
67
54
|
|
|
68
|
-
this._serialComponentCreator = SerializableNumericIdentifierValidator.creatorFor(serialComponentCharacterSet);
|
|
55
|
+
this._serialComponentCreator = SerializableNumericIdentifierValidator.creatorFor(identifierDescriptor.serialComponentCharacterSet);
|
|
69
56
|
}
|
|
70
57
|
|
|
71
58
|
/**
|
|
@@ -107,18 +94,3 @@ export class SerializableNumericIdentifierValidator extends NonGTINNumericIdenti
|
|
|
107
94
|
}
|
|
108
95
|
}
|
|
109
96
|
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* GRAI validator.
|
|
113
|
-
*/
|
|
114
|
-
export const GRAI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GRAI, 13, 16, ContentCharacterSets.AI82);
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* GDTI validator.
|
|
118
|
-
*/
|
|
119
|
-
export const GDTI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GDTI, 13, 17, ContentCharacterSets.AI82);
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* GCN validator.
|
|
123
|
-
*/
|
|
124
|
-
export const GCN_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GCN, 13, 12, ContentCharacterSets.Numeric);
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isGTINDescriptor,
|
|
3
|
+
isGTINDescriptors,
|
|
4
|
+
isNonGTINNumericIdentifierDescriptor,
|
|
5
|
+
isNonNumericIdentifierDescriptor,
|
|
6
|
+
isNumericIdentifierDescriptor,
|
|
7
|
+
isSerializableNumericIdentifierDescriptor
|
|
8
|
+
} from "./descriptors.js";
|
|
9
|
+
import type { GTINBaseType } from "./gtin-type.js";
|
|
10
|
+
import { GTIN_VALIDATORS, type GTINValidator } from "./gtin-validator.js";
|
|
11
|
+
import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
|
|
12
|
+
import type { IdentifierValidator } from "./identifier-validator.js";
|
|
13
|
+
import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
|
|
14
|
+
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
15
|
+
import type { NonNumericIdentifierType } from "./non-numeric-identifier-type.js";
|
|
16
|
+
import { NonNumericIdentifierValidator } from "./non-numeric-identifier-validator.js";
|
|
17
|
+
import type { NumericIdentifierValidator } from "./numeric-identifier-validator.js";
|
|
18
|
+
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
19
|
+
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* GLN validator.
|
|
23
|
+
*/
|
|
24
|
+
const GLN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GLN);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* SSCC validator.
|
|
28
|
+
*/
|
|
29
|
+
const SSCC_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.SSCC);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* GRAI validator.
|
|
33
|
+
*/
|
|
34
|
+
const GRAI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GRAI);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* GIAI validator.
|
|
38
|
+
*/
|
|
39
|
+
const GIAI_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GIAI);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* GSRN validator.
|
|
43
|
+
*/
|
|
44
|
+
const GSRN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GSRN);
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* GDTI validator.
|
|
48
|
+
*/
|
|
49
|
+
const GDTI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GDTI);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* GINC validator.
|
|
53
|
+
*/
|
|
54
|
+
const GINC_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GINC);
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* GSIN validator.
|
|
58
|
+
*/
|
|
59
|
+
const GSIN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GSIN);
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* GCN validator.
|
|
63
|
+
*/
|
|
64
|
+
const GCN_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GCN);
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* CPID validator.
|
|
68
|
+
*/
|
|
69
|
+
const CPID_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.CPID);
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* GMN validator.
|
|
73
|
+
*/
|
|
74
|
+
const GMN_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GMN);
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Identifier validator type based on identifier type type.
|
|
78
|
+
*
|
|
79
|
+
* @template TIdentifierType
|
|
80
|
+
* Identifier type type.
|
|
81
|
+
*/
|
|
82
|
+
export type IdentifierTypeValidator<TIdentifierType extends IdentifierType> = TIdentifierType extends NonNumericIdentifierType ?
|
|
83
|
+
NonNumericIdentifierValidator :
|
|
84
|
+
TIdentifierType extends SerializableNumericIdentifierType ?
|
|
85
|
+
SerializableNumericIdentifierValidator :
|
|
86
|
+
TIdentifierType extends NonGTINNumericIdentifierType ?
|
|
87
|
+
NonGTINNumericIdentifierValidator :
|
|
88
|
+
TIdentifierType extends typeof IdentifierTypes.GTIN ?
|
|
89
|
+
GTINValidator :
|
|
90
|
+
IdentifierValidator;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Identifier validators entry type based on identifier type type.
|
|
94
|
+
*
|
|
95
|
+
* @template TIdentifierType
|
|
96
|
+
* Identifier type type.
|
|
97
|
+
*/
|
|
98
|
+
export type IdentifierValidatorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends typeof IdentifierTypes.GTIN ?
|
|
99
|
+
Readonly<Record<GTINBaseType, GTINValidator>> :
|
|
100
|
+
IdentifierTypeValidator<TIdentifierType>;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Identifier validators record type.
|
|
104
|
+
*/
|
|
105
|
+
export type IdentifierValidatorsRecord = {
|
|
106
|
+
[TIdentifierType in IdentifierType]: IdentifierValidatorsEntry<TIdentifierType>;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Identifier validators for all identifier types.
|
|
111
|
+
*/
|
|
112
|
+
export const IdentifierValidators: IdentifierValidatorsRecord = {
|
|
113
|
+
[IdentifierTypes.GTIN]: GTIN_VALIDATORS,
|
|
114
|
+
[IdentifierTypes.GLN]: GLN_VALIDATOR,
|
|
115
|
+
[IdentifierTypes.SSCC]: SSCC_VALIDATOR,
|
|
116
|
+
[IdentifierTypes.GRAI]: GRAI_VALIDATOR,
|
|
117
|
+
[IdentifierTypes.GIAI]: GIAI_VALIDATOR,
|
|
118
|
+
[IdentifierTypes.GSRN]: GSRN_VALIDATOR,
|
|
119
|
+
[IdentifierTypes.GDTI]: GDTI_VALIDATOR,
|
|
120
|
+
[IdentifierTypes.GINC]: GINC_VALIDATOR,
|
|
121
|
+
[IdentifierTypes.GSIN]: GSIN_VALIDATOR,
|
|
122
|
+
[IdentifierTypes.GCN]: GCN_VALIDATOR,
|
|
123
|
+
[IdentifierTypes.CPID]: CPID_VALIDATOR,
|
|
124
|
+
[IdentifierTypes.GMN]: GMN_VALIDATOR
|
|
125
|
+
} as const;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Determine if identifier validators or validator is GTIN validators.
|
|
129
|
+
*
|
|
130
|
+
* @param identifierValidatorsOrValidator
|
|
131
|
+
* Identifier validators or validator.
|
|
132
|
+
*
|
|
133
|
+
* @returns
|
|
134
|
+
* True if GTIN validators.
|
|
135
|
+
*/
|
|
136
|
+
export function isGTINValidators(identifierValidatorsOrValidator: IdentifierValidatorsEntry<IdentifierType>): identifierValidatorsOrValidator is Readonly<Record<GTINBaseType, GTINValidator>> {
|
|
137
|
+
return isGTINDescriptors(identifierValidatorsOrValidator);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Determine if identifier validator is a numeric identifier validator.
|
|
142
|
+
*
|
|
143
|
+
* @param identifierValidator
|
|
144
|
+
* Identifier validator.
|
|
145
|
+
*
|
|
146
|
+
* @returns
|
|
147
|
+
* True if identifier validator is a numeric identifier validator.
|
|
148
|
+
*/
|
|
149
|
+
export function isNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NumericIdentifierValidator {
|
|
150
|
+
return isNumericIdentifierDescriptor(identifierValidator);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Determine if identifier validator is a GTIN validator.
|
|
155
|
+
*
|
|
156
|
+
* @param identifierValidator
|
|
157
|
+
* Identifier validator.
|
|
158
|
+
*
|
|
159
|
+
* @returns
|
|
160
|
+
* True if identifier validator is a GTIN validator.
|
|
161
|
+
*/
|
|
162
|
+
export function isGTINValidator(identifierValidator: IdentifierValidator): identifierValidator is GTINValidator {
|
|
163
|
+
return isGTINDescriptor(identifierValidator);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Determine if identifier validator is a non-GTIN numeric identifier validator.
|
|
168
|
+
*
|
|
169
|
+
* @param identifierValidator
|
|
170
|
+
* Identifier validator.
|
|
171
|
+
*
|
|
172
|
+
* @returns
|
|
173
|
+
* True if identifier validator is a non-GTIN numeric identifier validator.
|
|
174
|
+
*/
|
|
175
|
+
export function isNonGTINNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonGTINNumericIdentifierValidator {
|
|
176
|
+
return isNonGTINNumericIdentifierDescriptor(identifierValidator);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Determine if identifier validator is a serializable numeric identifier validator.
|
|
181
|
+
*
|
|
182
|
+
* @param identifierValidator
|
|
183
|
+
* Identifier validator.
|
|
184
|
+
*
|
|
185
|
+
* @returns
|
|
186
|
+
* True if identifier validator is a serializable numeric identifier validator.
|
|
187
|
+
*/
|
|
188
|
+
export function isSerializableNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is SerializableNumericIdentifierValidator {
|
|
189
|
+
return isSerializableNumericIdentifierDescriptor(identifierValidator);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Determine if identifier validator is a non-numeric identifier validator.
|
|
194
|
+
*
|
|
195
|
+
* @param identifierValidator
|
|
196
|
+
* Identifier validator.
|
|
197
|
+
*
|
|
198
|
+
* @returns
|
|
199
|
+
* True if identifier validator is a non-numeric identifier validator.
|
|
200
|
+
*/
|
|
201
|
+
export function isNonNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonNumericIdentifierValidator {
|
|
202
|
+
return isNonNumericIdentifierDescriptor(identifierValidator);
|
|
203
|
+
}
|
package/test/check.test.ts
CHANGED
package/test/creator.test.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { describe } from "vitest";
|
|
2
|
-
import { PrefixManager, PrefixTypes } from "../src";
|
|
3
|
-
import { testGTINCreator } from "./gtin-creator";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from "./non-gtin-numeric-identifier-creator";
|
|
8
|
-
import { testSerializableNumericIdentifierCreator } from "./serializable-numeric-identifier-creator";
|
|
2
|
+
import { PrefixManager, PrefixTypes } from "../src/index.js";
|
|
3
|
+
import { testGTINCreator } from "./gtin-creator.js";
|
|
4
|
+
import { testNonGTINNumericIdentifierCreator } from "./non-gtin-numeric-identifier-creator.js";
|
|
5
|
+
import { testNonNumericIdentifierCreator } from "./non-numeric-identifier-creator.js";
|
|
6
|
+
import { testSerializableNumericIdentifierCreator } from "./serializable-numeric-identifier-creator.js";
|
|
9
7
|
|
|
10
8
|
describe("Creators", () => {
|
|
11
9
|
testGTINCreator(PrefixManager.get(PrefixTypes.GS1CompanyPrefix, "952123456").gtinCreator);
|
package/test/gtin-creator.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { CharacterSetCreator, Sequence } from "@aidc-toolkit/utility";
|
|
2
2
|
import { expect, test } from "vitest";
|
|
3
|
-
import { type GTINCreator, GTINTypes, GTINValidator, hasValidCheckDigit, PrefixTypes } from "../src";
|
|
4
|
-
import { testNumericIdentifierCreator } from "./numeric-identifier-creator";
|
|
3
|
+
import { type GTINCreator, GTINTypes, GTINValidator, hasValidCheckDigit, isGTINCreator, PrefixTypes } from "../src/index.js";
|
|
4
|
+
import { testNumericIdentifierCreator } from "./numeric-identifier-creator.js";
|
|
5
5
|
|
|
6
6
|
export function testGTINCreator(creator: GTINCreator): void {
|
|
7
7
|
testNumericIdentifierCreator(creator, () => {
|
|
8
|
+
test("Mapping", () => {
|
|
9
|
+
expect(isGTINCreator(creator)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
|
|
8
12
|
test("Length", () => {
|
|
9
13
|
switch (creator.prefixType) {
|
|
10
14
|
case PrefixTypes.GS1CompanyPrefix:
|