@aidc-toolkit/gs1 1.0.26-beta → 1.0.27-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 +66 -66
- package/dist/abstract-identifier-creator.d.ts.map +1 -1
- package/dist/abstract-identifier-creator.js +68 -45
- package/dist/abstract-identifier-creator.js.map +1 -1
- package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts +42 -0
- package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts.map +1 -0
- package/dist/abstract-non-gtin-numeric-identifier-creator.js +40 -0
- package/dist/abstract-non-gtin-numeric-identifier-creator.js.map +1 -0
- package/dist/abstract-numeric-identifier-creator.d.ts +37 -86
- package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -1
- package/dist/abstract-numeric-identifier-creator.js +144 -121
- package/dist/abstract-numeric-identifier-creator.js.map +1 -1
- 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/gtin-creator.d.ts +7 -12
- package/dist/gtin-creator.d.ts.map +1 -1
- package/dist/gtin-creator.js +11 -14
- package/dist/gtin-creator.js.map +1 -1
- package/dist/gtin-descriptor.d.ts +8 -3
- package/dist/gtin-descriptor.d.ts.map +1 -1
- 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 +15 -28
- package/dist/gtin-type.d.ts.map +1 -1
- package/dist/gtin-type.js +4 -28
- package/dist/gtin-type.js.map +1 -1
- package/dist/gtin-validator.d.ts +9 -23
- package/dist/gtin-validator.d.ts.map +1 -1
- package/dist/gtin-validator.js +32 -39
- package/dist/gtin-validator.js.map +1 -1
- package/dist/identifier-creator.d.ts +4 -4
- package/dist/identifier-creator.d.ts.map +1 -1
- package/dist/{creators.d.ts → identifier-creators.d.ts} +16 -7
- package/dist/identifier-creators.d.ts.map +1 -0
- package/dist/{creators.js → identifier-creators.js} +19 -7
- package/dist/identifier-creators.js.map +1 -0
- package/dist/{descriptors.d.ts → identifier-descriptors.d.ts} +20 -10
- package/dist/identifier-descriptors.d.ts.map +1 -0
- package/dist/{descriptors.js → identifier-descriptors.js} +27 -31
- 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-validator.d.ts +44 -9
- package/dist/identifier-validator.d.ts.map +1 -1
- package/dist/identifier-validator.js +109 -1
- package/dist/identifier-validator.js.map +1 -1
- package/dist/{validators.d.ts → identifier-validators.d.ts} +21 -11
- package/dist/identifier-validators.d.ts.map +1 -0
- package/dist/{validators.js → identifier-validators.js} +25 -12
- package/dist/identifier-validators.js.map +1 -0
- package/dist/index.d.ts +15 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- 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/non-gtin-numeric-identifier-creator.d.ts +7 -19
- package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -1
- package/dist/non-gtin-numeric-identifier-creator.js +1 -22
- package/dist/non-gtin-numeric-identifier-creator.js.map +1 -1
- package/dist/non-gtin-numeric-identifier-descriptor.d.ts +1 -1
- package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +1 -1
- package/dist/non-gtin-numeric-identifier-type.d.ts +22 -3
- package/dist/non-gtin-numeric-identifier-type.d.ts.map +1 -1
- package/dist/non-gtin-numeric-identifier-type.js +7 -1
- package/dist/non-gtin-numeric-identifier-type.js.map +1 -1
- package/dist/non-gtin-numeric-identifier-validator.d.ts +5 -10
- package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -1
- package/dist/non-gtin-numeric-identifier-validator.js +5 -12
- package/dist/non-gtin-numeric-identifier-validator.js.map +1 -1
- package/dist/non-numeric-identifier-creator.d.ts +4 -9
- package/dist/non-numeric-identifier-creator.d.ts.map +1 -1
- package/dist/non-numeric-identifier-creator.js +8 -10
- package/dist/non-numeric-identifier-creator.js.map +1 -1
- package/dist/non-numeric-identifier-type.d.ts +22 -3
- package/dist/non-numeric-identifier-type.d.ts.map +1 -1
- package/dist/non-numeric-identifier-type.js +7 -1
- package/dist/non-numeric-identifier-type.js.map +1 -1
- package/dist/non-numeric-identifier-validator.d.ts +3 -11
- package/dist/non-numeric-identifier-validator.d.ts.map +1 -1
- package/dist/non-numeric-identifier-validator.js +8 -8
- package/dist/non-numeric-identifier-validator.js.map +1 -1
- 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 +7 -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 +6 -6
- package/dist/numeric-identifier-creator.d.ts.map +1 -1
- package/dist/numeric-identifier-descriptor.d.ts +2 -1
- package/dist/numeric-identifier-descriptor.d.ts.map +1 -1
- package/dist/numeric-identifier-type.d.ts +19 -24
- package/dist/numeric-identifier-type.d.ts.map +1 -1
- package/dist/numeric-identifier-type.js +4 -15
- package/dist/numeric-identifier-type.js.map +1 -1
- package/dist/numeric-identifier-validator.d.ts +20 -6
- package/dist/numeric-identifier-validator.d.ts.map +1 -1
- package/dist/numeric-identifier-validator.js +60 -1
- package/dist/numeric-identifier-validator.js.map +1 -1
- package/dist/prefix-manager.d.ts +6 -102
- package/dist/prefix-manager.d.ts.map +1 -1
- package/dist/prefix-manager.js +65 -60
- package/dist/prefix-manager.js.map +1 -1
- package/dist/serializable-numeric-identifier-creator.d.ts +3 -31
- package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -1
- package/dist/serializable-numeric-identifier-creator.js +7 -21
- package/dist/serializable-numeric-identifier-creator.js.map +1 -1
- package/dist/serializable-numeric-identifier-descriptor.d.ts +1 -1
- package/dist/serializable-numeric-identifier-descriptor.d.ts.map +1 -1
- package/dist/serializable-numeric-identifier-type.d.ts +22 -2
- package/dist/serializable-numeric-identifier-type.d.ts.map +1 -1
- package/dist/serializable-numeric-identifier-type.js +7 -1
- package/dist/serializable-numeric-identifier-type.js.map +1 -1
- package/dist/serializable-numeric-identifier-validator.d.ts +3 -18
- package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -1
- package/dist/serializable-numeric-identifier-validator.js +17 -16
- package/dist/serializable-numeric-identifier-validator.js.map +1 -1
- package/package.json +4 -5
- package/src/abstract-identifier-creator.ts +155 -74
- package/src/abstract-non-gtin-numeric-identifier-creator.ts +86 -0
- package/src/abstract-numeric-identifier-creator.ts +202 -133
- package/src/content-character-set-creators.ts +9 -0
- package/src/gtin-creator.ts +16 -15
- package/src/gtin-descriptor.ts +9 -3
- package/src/gtin-length.ts +61 -0
- package/src/gtin-type.ts +6 -37
- package/src/gtin-validator.ts +34 -41
- package/src/identifier-creator.ts +4 -4
- package/src/{creators.ts → identifier-creators.ts} +40 -26
- package/src/{descriptors.ts → identifier-descriptors.ts} +56 -54
- package/src/identifier-extension.ts +155 -0
- package/src/identifier-validator.ts +93 -10
- package/src/{validators.ts → identifier-validators.ts} +51 -36
- package/src/index.ts +15 -9
- package/src/leader-type.ts +29 -0
- package/src/non-gtin-numeric-identifier-creator.ts +7 -22
- package/src/non-gtin-numeric-identifier-descriptor.ts +1 -1
- package/src/non-gtin-numeric-identifier-type.ts +14 -3
- package/src/non-gtin-numeric-identifier-validator.ts +5 -13
- package/src/non-numeric-identifier-creator.ts +17 -12
- package/src/non-numeric-identifier-type.ts +14 -3
- package/src/non-numeric-identifier-validator.ts +8 -9
- package/src/non-serializable-numeric-identifier-creator.ts +12 -0
- package/src/non-serializable-numeric-identifier-descriptor.ts +7 -0
- package/src/non-serializable-numeric-identifier-type.ts +22 -0
- package/src/non-serializable-numeric-identifier-validator.ts +19 -0
- package/src/numeric-identifier-creator.ts +7 -6
- package/src/numeric-identifier-descriptor.ts +2 -1
- package/src/numeric-identifier-type.ts +17 -35
- package/src/numeric-identifier-validator.ts +61 -6
- package/src/prefix-manager.ts +67 -64
- package/src/serializable-numeric-identifier-creator.ts +11 -25
- package/src/serializable-numeric-identifier-descriptor.ts +1 -1
- package/src/serializable-numeric-identifier-type.ts +14 -5
- package/src/serializable-numeric-identifier-validator.ts +17 -16
- package/test/gtin-creator.ts +9 -2
- package/test/gtin-validator.test.ts +8 -10
- package/test/identifier-creator.ts +7 -7
- package/test/non-gtin-numeric-identifier-validator.ts +7 -2
- package/test/non-serializable-numeric-identifier-creator.ts +64 -0
- package/test/non-serializable-numeric-identifier-validator.ts +6 -0
- package/test/numeric-identifier-creator.ts +7 -2
- package/test/validator.test.ts +11 -10
- package/test/variable-measure-rcn.test.ts +23 -23
- package/dist/abstract-identifier-validator.d.ts +0 -95
- package/dist/abstract-identifier-validator.d.ts.map +0 -1
- package/dist/abstract-identifier-validator.js +0 -123
- package/dist/abstract-identifier-validator.js.map +0 -1
- package/dist/abstract-numeric-identifier-validator.d.ts +0 -35
- package/dist/abstract-numeric-identifier-validator.d.ts.map +0 -1
- package/dist/abstract-numeric-identifier-validator.js +0 -61
- package/dist/abstract-numeric-identifier-validator.js.map +0 -1
- package/dist/creators.d.ts.map +0 -1
- package/dist/creators.js.map +0 -1
- package/dist/descriptors.d.ts.map +0 -1
- package/dist/descriptors.js.map +0 -1
- package/dist/validators.d.ts.map +0 -1
- package/dist/validators.js.map +0 -1
- package/src/abstract-identifier-validator.ts +0 -140
- package/src/abstract-numeric-identifier-validator.ts +0 -69
package/src/prefix-manager.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type IdentifierCreatorsRecord, isNumericIdentifierCreator } from "./creators.js";
|
|
2
1
|
import { GTINCreator } from "./gtin-creator.js";
|
|
3
|
-
import { GTIN_BASE_TYPES } from "./gtin-
|
|
2
|
+
import { GTIN_BASE_TYPES } from "./gtin-length.js";
|
|
4
3
|
import type { IdentifierCreator } from "./identifier-creator.js";
|
|
4
|
+
import { type IdentifierCreatorsRecord, isNumericIdentifierCreator } from "./identifier-creators.js";
|
|
5
5
|
import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
|
|
6
6
|
import { i18nextGS1 } from "./locale/i18n.js";
|
|
7
|
-
import { NonGTINNumericIdentifierCreator } from "./non-gtin-numeric-identifier-creator.js";
|
|
8
|
-
import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
|
|
9
7
|
import { NonNumericIdentifierCreator } from "./non-numeric-identifier-creator.js";
|
|
10
8
|
import type { NonNumericIdentifierType } from "./non-numeric-identifier-type.js";
|
|
9
|
+
import { NonSerializableNumericIdentifierCreator } from "./non-serializable-numeric-identifier-creator.js";
|
|
10
|
+
import type { NonSerializableNumericIdentifierType } from "./non-serializable-numeric-identifier-type.js";
|
|
11
11
|
import type { NumericIdentifierType } from "./numeric-identifier-type.js";
|
|
12
12
|
import type { PrefixProvider } from "./prefix-provider.js";
|
|
13
13
|
import { type PrefixType, PrefixTypes } from "./prefix-type.js";
|
|
@@ -39,13 +39,13 @@ export class PrefixManager implements PrefixProvider {
|
|
|
39
39
|
/**
|
|
40
40
|
* Cached prefix managers, keyed by GS1 Company Prefix.
|
|
41
41
|
*/
|
|
42
|
-
|
|
42
|
+
static readonly #PREFIX_MANAGERS_MAP = new Map<string, PrefixManager>();
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Creator tweak factors. Different numeric identifier types have different tweak factors so that sparse creation
|
|
46
46
|
* generates different sequences for each.
|
|
47
47
|
*/
|
|
48
|
-
|
|
48
|
+
static readonly #CREATOR_TWEAK_FACTORS: Readonly<Record<NumericIdentifierType, bigint>> = {
|
|
49
49
|
GTIN: 1987n,
|
|
50
50
|
GLN: 4241n,
|
|
51
51
|
SSCC: 8087n,
|
|
@@ -59,42 +59,42 @@ export class PrefixManager implements PrefixProvider {
|
|
|
59
59
|
/**
|
|
60
60
|
* Normalized prefix type.
|
|
61
61
|
*/
|
|
62
|
-
|
|
62
|
+
readonly #prefixType: PrefixType;
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
* Normalized prefix.
|
|
66
66
|
*/
|
|
67
|
-
|
|
67
|
+
readonly #prefix: string;
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
70
|
* Prefix as GS1 Company Prefix.
|
|
71
71
|
*/
|
|
72
|
-
|
|
72
|
+
readonly #gs1CompanyPrefix: string;
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
75
|
* U.P.C. Company Prefix if prefix type is {@linkcode PrefixTypes.UPCCompanyPrefix}.
|
|
76
76
|
*/
|
|
77
|
-
|
|
77
|
+
readonly #upcCompanyPrefix: string | undefined;
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
* GS1-8 Prefix if prefix type is {@linkcode PrefixTypes.GS18Prefix}.
|
|
81
81
|
*/
|
|
82
|
-
|
|
82
|
+
readonly #gs18Prefix: string | undefined;
|
|
83
83
|
|
|
84
84
|
/**
|
|
85
85
|
* Default tweak factor.
|
|
86
86
|
*/
|
|
87
|
-
|
|
87
|
+
readonly #defaultTweakFactor: bigint;
|
|
88
88
|
|
|
89
89
|
/**
|
|
90
90
|
* Tweak factor.
|
|
91
91
|
*/
|
|
92
|
-
|
|
92
|
+
#tweakFactor = 0n;
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
95
|
* Cached identifier creators.
|
|
96
96
|
*/
|
|
97
|
-
|
|
97
|
+
readonly #identifierCreators: Partial<IdentifierCreatorsRecord> = {};
|
|
98
98
|
|
|
99
99
|
/**
|
|
100
100
|
* Constructor.
|
|
@@ -108,14 +108,14 @@ export class PrefixManager implements PrefixProvider {
|
|
|
108
108
|
constructor(prefixType: PrefixType, prefix: string) {
|
|
109
109
|
const normalizedPrefixProvider = PrefixValidator.normalize(prefixType, prefix);
|
|
110
110
|
|
|
111
|
-
this
|
|
112
|
-
this
|
|
113
|
-
this
|
|
114
|
-
this
|
|
115
|
-
this
|
|
111
|
+
this.#prefixType = normalizedPrefixProvider.prefixType;
|
|
112
|
+
this.#prefix = normalizedPrefixProvider.prefix;
|
|
113
|
+
this.#gs1CompanyPrefix = normalizedPrefixProvider.gs1CompanyPrefix;
|
|
114
|
+
this.#upcCompanyPrefix = normalizedPrefixProvider.upcCompanyPrefix;
|
|
115
|
+
this.#gs18Prefix = normalizedPrefixProvider.gs18Prefix;
|
|
116
116
|
|
|
117
117
|
// Default tweak factor is the numeric value of the GS1 Company Prefix preceded by '1'.
|
|
118
|
-
this
|
|
118
|
+
this.#defaultTweakFactor = BigInt(`1${this.gs1CompanyPrefix}`);
|
|
119
119
|
|
|
120
120
|
this.resetTweakFactor();
|
|
121
121
|
}
|
|
@@ -124,35 +124,35 @@ export class PrefixManager implements PrefixProvider {
|
|
|
124
124
|
* Get the prefix type.
|
|
125
125
|
*/
|
|
126
126
|
get prefixType(): PrefixType {
|
|
127
|
-
return this
|
|
127
|
+
return this.#prefixType;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
131
|
* Get the prefix.
|
|
132
132
|
*/
|
|
133
133
|
get prefix(): string {
|
|
134
|
-
return this
|
|
134
|
+
return this.#prefix;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
/**
|
|
138
138
|
* Get the GS1 Company Prefix.
|
|
139
139
|
*/
|
|
140
140
|
get gs1CompanyPrefix(): string {
|
|
141
|
-
return this
|
|
141
|
+
return this.#gs1CompanyPrefix;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
145
|
* Get the U.P.C. Company Prefix if prefix type is {@linkcode PrefixTypes.UPCCompanyPrefix} or undefined if not.
|
|
146
146
|
*/
|
|
147
147
|
get upcCompanyPrefix(): string | undefined {
|
|
148
|
-
return this
|
|
148
|
+
return this.#upcCompanyPrefix;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
/**
|
|
152
152
|
* Get the GS1-8 Prefix if prefix type is {@linkcode PrefixTypes.GS18Prefix} or undefined if not.
|
|
153
153
|
*/
|
|
154
154
|
get gs18Prefix(): string | undefined {
|
|
155
|
-
return this
|
|
155
|
+
return this.#gs18Prefix;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
/**
|
|
@@ -161,10 +161,10 @@ export class PrefixManager implements PrefixProvider {
|
|
|
161
161
|
* @param identifierCreator
|
|
162
162
|
* Identifier creator.
|
|
163
163
|
*/
|
|
164
|
-
|
|
164
|
+
#setCreatorTweak(identifierCreator: IdentifierCreator): void {
|
|
165
165
|
if (isNumericIdentifierCreator(identifierCreator)) {
|
|
166
166
|
// eslint-disable-next-line no-param-reassign -- Method purpose is to set the tweak.
|
|
167
|
-
identifierCreator.tweak = this.tweakFactor * PrefixManager
|
|
167
|
+
identifierCreator.tweak = this.tweakFactor * PrefixManager.#CREATOR_TWEAK_FACTORS[identifierCreator.identifierType];
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -172,7 +172,7 @@ export class PrefixManager implements PrefixProvider {
|
|
|
172
172
|
* Get the tweak factor.
|
|
173
173
|
*/
|
|
174
174
|
get tweakFactor(): bigint {
|
|
175
|
-
return this
|
|
175
|
+
return this.#tweakFactor;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
/**
|
|
@@ -184,11 +184,11 @@ export class PrefixManager implements PrefixProvider {
|
|
|
184
184
|
set tweakFactor(value: number | bigint) {
|
|
185
185
|
const tweakFactor = BigInt(value);
|
|
186
186
|
|
|
187
|
-
if (this
|
|
188
|
-
this
|
|
187
|
+
if (this.#tweakFactor !== tweakFactor) {
|
|
188
|
+
this.#tweakFactor = tweakFactor;
|
|
189
189
|
|
|
190
|
-
for (const creator of Object.values(this
|
|
191
|
-
this
|
|
190
|
+
for (const creator of Object.values(this.#identifierCreators)) {
|
|
191
|
+
this.#setCreatorTweak(creator);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
}
|
|
@@ -197,7 +197,7 @@ export class PrefixManager implements PrefixProvider {
|
|
|
197
197
|
* Reset the tweak factor to its default (numeric value of the GS1 Company Prefix preceded by '1').
|
|
198
198
|
*/
|
|
199
199
|
resetTweakFactor(): void {
|
|
200
|
-
this.tweakFactor = this
|
|
200
|
+
this.tweakFactor = this.#defaultTweakFactor;
|
|
201
201
|
}
|
|
202
202
|
|
|
203
203
|
/**
|
|
@@ -216,11 +216,11 @@ export class PrefixManager implements PrefixProvider {
|
|
|
216
216
|
// Normalization will occur in constructor as well, but it's necessary here for the map.
|
|
217
217
|
const normalizedPrefixProvider = PrefixValidator.normalize(prefixType, prefix);
|
|
218
218
|
|
|
219
|
-
let prefixManager = PrefixManager
|
|
219
|
+
let prefixManager = PrefixManager.#PREFIX_MANAGERS_MAP.get(normalizedPrefixProvider.gs1CompanyPrefix);
|
|
220
220
|
|
|
221
221
|
if (prefixManager === undefined) {
|
|
222
222
|
prefixManager = new PrefixManager(normalizedPrefixProvider.prefixType, normalizedPrefixProvider.prefix);
|
|
223
|
-
PrefixManager
|
|
223
|
+
PrefixManager.#PREFIX_MANAGERS_MAP.set(normalizedPrefixProvider.gs1CompanyPrefix, prefixManager);
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
return prefixManager;
|
|
@@ -232,11 +232,14 @@ export class PrefixManager implements PrefixProvider {
|
|
|
232
232
|
* @template TIdentifierType
|
|
233
233
|
* Identifier type type.
|
|
234
234
|
*
|
|
235
|
+
* @template TConstructorArgument
|
|
236
|
+
* Second constructor argument type.
|
|
237
|
+
*
|
|
235
238
|
* @param identifierType
|
|
236
239
|
* Identifier type used to construct identifier creator.
|
|
237
240
|
*
|
|
238
|
-
* @param
|
|
239
|
-
* Second constructor
|
|
241
|
+
* @param constructorArgument
|
|
242
|
+
* Second constructor argument passed to constructor callback alongside this.
|
|
240
243
|
*
|
|
241
244
|
* @param ConstructorCallback
|
|
242
245
|
* Constructor callback.
|
|
@@ -244,8 +247,8 @@ export class PrefixManager implements PrefixProvider {
|
|
|
244
247
|
* @returns
|
|
245
248
|
* Identifier creator.
|
|
246
249
|
*/
|
|
247
|
-
|
|
248
|
-
let creator: IdentifierCreatorsRecord[TIdentifierType] | undefined = this
|
|
250
|
+
#getIdentifierCreator<TIdentifierType extends IdentifierType, TConstructorArgument>(identifierType: TIdentifierType, constructorArgument: TConstructorArgument, ConstructorCallback: new (prefixProvider: PrefixProvider, constructorParameter: TConstructorArgument) => IdentifierCreatorsRecord[TIdentifierType]): IdentifierCreatorsRecord[TIdentifierType] {
|
|
251
|
+
let creator: IdentifierCreatorsRecord[TIdentifierType] | undefined = this.#identifierCreators[identifierType];
|
|
249
252
|
|
|
250
253
|
if (creator === undefined) {
|
|
251
254
|
if (this.prefixType === PrefixTypes.GS18Prefix && identifierType !== IdentifierTypes.GTIN) {
|
|
@@ -254,11 +257,11 @@ export class PrefixManager implements PrefixProvider {
|
|
|
254
257
|
}));
|
|
255
258
|
}
|
|
256
259
|
|
|
257
|
-
creator = new ConstructorCallback(this,
|
|
260
|
+
creator = new ConstructorCallback(this, constructorArgument);
|
|
258
261
|
|
|
259
|
-
this
|
|
262
|
+
this.#setCreatorTweak(creator);
|
|
260
263
|
|
|
261
|
-
this
|
|
264
|
+
this.#identifierCreators[identifierType] = creator;
|
|
262
265
|
}
|
|
263
266
|
|
|
264
267
|
return creator;
|
|
@@ -273,8 +276,8 @@ export class PrefixManager implements PrefixProvider {
|
|
|
273
276
|
* @returns
|
|
274
277
|
* Identifier creator.
|
|
275
278
|
*/
|
|
276
|
-
|
|
277
|
-
return this
|
|
279
|
+
#getNonGTINNumericIdentifierCreator(identifierType: NonSerializableNumericIdentifierType): NonSerializableNumericIdentifierCreator {
|
|
280
|
+
return this.#getIdentifierCreator(identifierType, identifierType, NonSerializableNumericIdentifierCreator);
|
|
278
281
|
}
|
|
279
282
|
|
|
280
283
|
/**
|
|
@@ -286,8 +289,8 @@ export class PrefixManager implements PrefixProvider {
|
|
|
286
289
|
* @returns
|
|
287
290
|
* Identifier creator.
|
|
288
291
|
*/
|
|
289
|
-
|
|
290
|
-
return this
|
|
292
|
+
#getSerializableNumericIdentifierCreator(identifierType: SerializableNumericIdentifierType): SerializableNumericIdentifierCreator {
|
|
293
|
+
return this.#getIdentifierCreator(identifierType, identifierType, SerializableNumericIdentifierCreator);
|
|
291
294
|
}
|
|
292
295
|
|
|
293
296
|
/**
|
|
@@ -299,91 +302,91 @@ export class PrefixManager implements PrefixProvider {
|
|
|
299
302
|
* @returns
|
|
300
303
|
* Identifier creator.
|
|
301
304
|
*/
|
|
302
|
-
|
|
303
|
-
return this
|
|
305
|
+
#getNonNumericIdentifierCreator(identifierType: NonNumericIdentifierType): NonNumericIdentifierCreator {
|
|
306
|
+
return this.#getIdentifierCreator(identifierType, identifierType, NonNumericIdentifierCreator);
|
|
304
307
|
}
|
|
305
308
|
|
|
306
309
|
/**
|
|
307
310
|
* Get GTIN creator.
|
|
308
311
|
*/
|
|
309
312
|
get gtinCreator(): GTINCreator {
|
|
310
|
-
return this
|
|
313
|
+
return this.#getIdentifierCreator(IdentifierTypes.GTIN, GTIN_BASE_TYPES[this.prefixType], GTINCreator);
|
|
311
314
|
}
|
|
312
315
|
|
|
313
316
|
/**
|
|
314
317
|
* Get GLN creator.
|
|
315
318
|
*/
|
|
316
|
-
get glnCreator():
|
|
317
|
-
return this
|
|
319
|
+
get glnCreator(): NonSerializableNumericIdentifierCreator {
|
|
320
|
+
return this.#getNonGTINNumericIdentifierCreator(IdentifierTypes.GLN);
|
|
318
321
|
}
|
|
319
322
|
|
|
320
323
|
/**
|
|
321
324
|
* Get SSCC creator.
|
|
322
325
|
*/
|
|
323
|
-
get ssccCreator():
|
|
324
|
-
return this
|
|
326
|
+
get ssccCreator(): NonSerializableNumericIdentifierCreator {
|
|
327
|
+
return this.#getNonGTINNumericIdentifierCreator(IdentifierTypes.SSCC);
|
|
325
328
|
}
|
|
326
329
|
|
|
327
330
|
/**
|
|
328
331
|
* Get GRAI creator.
|
|
329
332
|
*/
|
|
330
333
|
get graiCreator(): SerializableNumericIdentifierCreator {
|
|
331
|
-
return this
|
|
334
|
+
return this.#getSerializableNumericIdentifierCreator(IdentifierTypes.GRAI);
|
|
332
335
|
}
|
|
333
336
|
|
|
334
337
|
/**
|
|
335
338
|
* Get GIAI creator.
|
|
336
339
|
*/
|
|
337
340
|
get giaiCreator(): NonNumericIdentifierCreator {
|
|
338
|
-
return this
|
|
341
|
+
return this.#getNonNumericIdentifierCreator(IdentifierTypes.GIAI);
|
|
339
342
|
}
|
|
340
343
|
|
|
341
344
|
/**
|
|
342
345
|
* Get GSRN creator.
|
|
343
346
|
*/
|
|
344
|
-
get gsrnCreator():
|
|
345
|
-
return this
|
|
347
|
+
get gsrnCreator(): NonSerializableNumericIdentifierCreator {
|
|
348
|
+
return this.#getNonGTINNumericIdentifierCreator(IdentifierTypes.GSRN);
|
|
346
349
|
}
|
|
347
350
|
|
|
348
351
|
/**
|
|
349
352
|
* Get GDTI creator.
|
|
350
353
|
*/
|
|
351
354
|
get gdtiCreator(): SerializableNumericIdentifierCreator {
|
|
352
|
-
return this
|
|
355
|
+
return this.#getSerializableNumericIdentifierCreator(IdentifierTypes.GDTI);
|
|
353
356
|
}
|
|
354
357
|
|
|
355
358
|
/**
|
|
356
359
|
* Get GINC creator.
|
|
357
360
|
*/
|
|
358
361
|
get gincCreator(): NonNumericIdentifierCreator {
|
|
359
|
-
return this
|
|
362
|
+
return this.#getNonNumericIdentifierCreator(IdentifierTypes.GINC);
|
|
360
363
|
}
|
|
361
364
|
|
|
362
365
|
/**
|
|
363
366
|
* Get GSIN creator.
|
|
364
367
|
*/
|
|
365
|
-
get gsinCreator():
|
|
366
|
-
return this
|
|
368
|
+
get gsinCreator(): NonSerializableNumericIdentifierCreator {
|
|
369
|
+
return this.#getNonGTINNumericIdentifierCreator(IdentifierTypes.GSIN);
|
|
367
370
|
}
|
|
368
371
|
|
|
369
372
|
/**
|
|
370
373
|
* Get GCN creator.
|
|
371
374
|
*/
|
|
372
375
|
get gcnCreator(): SerializableNumericIdentifierCreator {
|
|
373
|
-
return this
|
|
376
|
+
return this.#getSerializableNumericIdentifierCreator(IdentifierTypes.GCN);
|
|
374
377
|
}
|
|
375
378
|
|
|
376
379
|
/**
|
|
377
380
|
* Get CPID creator.
|
|
378
381
|
*/
|
|
379
382
|
get cpidCreator(): NonNumericIdentifierCreator {
|
|
380
|
-
return this
|
|
383
|
+
return this.#getNonNumericIdentifierCreator(IdentifierTypes.CPID);
|
|
381
384
|
}
|
|
382
385
|
|
|
383
386
|
/**
|
|
384
387
|
* Get GMN creator.
|
|
385
388
|
*/
|
|
386
389
|
get gmnCreator(): NonNumericIdentifierCreator {
|
|
387
|
-
return this
|
|
390
|
+
return this.#getNonNumericIdentifierCreator(IdentifierTypes.GMN);
|
|
388
391
|
}
|
|
389
392
|
}
|
|
@@ -1,30 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import type { PrefixProvider } from "./prefix-provider.js";
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Used in JSDoc.
|
|
2
|
+
import { mapIterable, NUMERIC_CREATOR, type TransformerInput, type TransformerOutput } from "@aidc-toolkit/utility";
|
|
3
|
+
import { MixinAbstractNonGTINNumericIdentifierCreator } from "./abstract-non-gtin-numeric-identifier-creator.js";
|
|
5
4
|
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
6
5
|
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* Serializable numeric identifier creator.
|
|
10
9
|
*/
|
|
11
|
-
export class SerializableNumericIdentifierCreator extends
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
* @param prefixProvider
|
|
17
|
-
* Prefix provider.
|
|
18
|
-
*
|
|
19
|
-
* @param identifierType
|
|
20
|
-
* Identifier type.
|
|
21
|
-
*/
|
|
22
|
-
constructor(prefixProvider: PrefixProvider, identifierType: SerializableNumericIdentifierType) {
|
|
23
|
-
super(identifierType);
|
|
24
|
-
|
|
25
|
-
this.init(prefixProvider, prefixProvider.gs1CompanyPrefix);
|
|
26
|
-
}
|
|
27
|
-
|
|
10
|
+
export class SerializableNumericIdentifierCreator extends MixinAbstractNonGTINNumericIdentifierCreator<
|
|
11
|
+
SerializableNumericIdentifierType,
|
|
12
|
+
typeof SerializableNumericIdentifierValidator
|
|
13
|
+
>(SerializableNumericIdentifierValidator) {
|
|
28
14
|
/**
|
|
29
15
|
* Concatenate a validated base identifier with serial component(s).
|
|
30
16
|
*
|
|
@@ -40,7 +26,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
40
26
|
* @returns
|
|
41
27
|
* Serialized identifier(s).
|
|
42
28
|
*/
|
|
43
|
-
|
|
29
|
+
#concatenateValidated<TTransformerInput extends TransformerInput<string>>(baseIdentifier: string, serialComponentOrComponents: TTransformerInput): TransformerOutput<TTransformerInput, string> {
|
|
44
30
|
// TODO Refactor type when https://github.com/microsoft/TypeScript/pull/56941 released.
|
|
45
31
|
let result: string | Iterable<string>;
|
|
46
32
|
|
|
@@ -74,7 +60,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
74
60
|
|
|
75
61
|
/**
|
|
76
62
|
* Create serialized identifier(s) with a reference based on a numeric value concatenated with serial component(s).
|
|
77
|
-
* The value is converted to a reference of the appropriate length using
|
|
63
|
+
* The value is converted to a reference of the appropriate length using {@linkcode NUMERIC_CREATOR}.
|
|
78
64
|
*
|
|
79
65
|
* @template TTransformerInput
|
|
80
66
|
* Transformer input type.
|
|
@@ -92,7 +78,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
92
78
|
* Serialized identifiers.
|
|
93
79
|
*/
|
|
94
80
|
createSerialized<TTransformerInput extends TransformerInput<string>>(value: number, serialComponentOrComponents: TTransformerInput, sparse?: boolean): TransformerOutput<TTransformerInput, string> {
|
|
95
|
-
return this
|
|
81
|
+
return this.#concatenateValidated(this.create(value, sparse), serialComponentOrComponents);
|
|
96
82
|
}
|
|
97
83
|
|
|
98
84
|
/**
|
|
@@ -113,6 +99,6 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
113
99
|
concatenate<TTransformerInput extends TransformerInput<string>>(baseIdentifier: string, serialComponentOrComponents: TTransformerInput): TransformerOutput<TTransformerInput, string> {
|
|
114
100
|
this.validate(baseIdentifier);
|
|
115
101
|
|
|
116
|
-
return this
|
|
102
|
+
return this.#concatenateValidated(baseIdentifier, serialComponentOrComponents);
|
|
117
103
|
}
|
|
118
104
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ContentCharacterSet } from "./content-character-set.js";
|
|
2
|
+
import type { LeaderTypes } from "./leader-type.js";
|
|
2
3
|
import type { NonGTINNumericIdentifierDescriptor } from "./non-gtin-numeric-identifier-descriptor.js";
|
|
3
|
-
import type { LeaderTypes } from "./numeric-identifier-type.js";
|
|
4
4
|
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { exclude } from "@aidc-toolkit/core";
|
|
2
|
+
import { NonGTINNumericIdentifierTypes } from "./non-gtin-numeric-identifier-type.js";
|
|
3
|
+
import { NonSerializableNumericIdentifierTypes } from "./non-serializable-numeric-identifier-type.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Serializable numeric identifier types.
|
|
7
|
+
*/
|
|
8
|
+
export const SerializableNumericIdentifierTypes = exclude(NonGTINNumericIdentifierTypes, NonSerializableNumericIdentifierTypes);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Serializable numeric identifier type key.
|
|
12
|
+
*/
|
|
13
|
+
export type SerializableNumericIdentifierTypeKey = keyof typeof SerializableNumericIdentifierTypes;
|
|
2
14
|
|
|
3
15
|
/**
|
|
4
16
|
* Serializable numeric identifier type.
|
|
5
17
|
*/
|
|
6
|
-
export type SerializableNumericIdentifierType =
|
|
7
|
-
typeof IdentifierTypes.GRAI |
|
|
8
|
-
typeof IdentifierTypes.GDTI |
|
|
9
|
-
typeof IdentifierTypes.GCN;
|
|
18
|
+
export type SerializableNumericIdentifierType = typeof SerializableNumericIdentifierTypes[SerializableNumericIdentifierTypeKey];
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { CharacterSetCreator, CharacterSetValidation } from "@aidc-toolkit/utility";
|
|
2
|
-
import {
|
|
2
|
+
import { CONTENT_CHARACTER_SET_CREATORS } from "./content-character-set-creators.js";
|
|
3
3
|
import type { ContentCharacterSet } from "./content-character-set.js";
|
|
4
|
-
import { IdentifierDescriptors } from "./descriptors.js";
|
|
4
|
+
import { IdentifierDescriptors } from "./identifier-descriptors.js";
|
|
5
5
|
import type { IdentifierValidation } from "./identifier-validator.js";
|
|
6
6
|
import { i18nextGS1 } from "./locale/i18n.js";
|
|
7
|
+
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
7
8
|
import type { SerializableNumericIdentifierDescriptor } from "./serializable-numeric-identifier-descriptor.js";
|
|
8
9
|
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
9
10
|
|
|
@@ -11,26 +12,26 @@ import type { SerializableNumericIdentifierType } from "./serializable-numeric-i
|
|
|
11
12
|
* Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
|
|
12
13
|
* that support serialization.
|
|
13
14
|
*/
|
|
14
|
-
export class SerializableNumericIdentifierValidator extends
|
|
15
|
+
export class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator<SerializableNumericIdentifierType> implements SerializableNumericIdentifierDescriptor {
|
|
15
16
|
/**
|
|
16
17
|
* Serial component length.
|
|
17
18
|
*/
|
|
18
|
-
|
|
19
|
+
readonly #serialComponentLength: number;
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Serial component character set.
|
|
22
23
|
*/
|
|
23
|
-
|
|
24
|
+
readonly #serialComponentCharacterSet: ContentCharacterSet;
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Serial component validation parameters.
|
|
27
28
|
*/
|
|
28
|
-
|
|
29
|
+
readonly #serialComponentValidation: CharacterSetValidation;
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Serial component creator.
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
|
+
readonly #serialComponentCreator: CharacterSetCreator;
|
|
34
35
|
|
|
35
36
|
/**
|
|
36
37
|
* Constructor.
|
|
@@ -43,44 +44,44 @@ export class SerializableNumericIdentifierValidator extends AbstractNumericIdent
|
|
|
43
44
|
|
|
44
45
|
super(identifierDescriptor);
|
|
45
46
|
|
|
46
|
-
this
|
|
47
|
-
this
|
|
47
|
+
this.#serialComponentLength = identifierDescriptor.serialComponentLength;
|
|
48
|
+
this.#serialComponentCharacterSet = identifierDescriptor.serialComponentCharacterSet;
|
|
48
49
|
|
|
49
|
-
this
|
|
50
|
+
this.#serialComponentValidation = {
|
|
50
51
|
minimumLength: 1,
|
|
51
52
|
maximumLength: identifierDescriptor.serialComponentLength,
|
|
52
53
|
component: () => i18nextGS1.t("Identifier.serialComponent")
|
|
53
54
|
};
|
|
54
55
|
|
|
55
|
-
this
|
|
56
|
+
this.#serialComponentCreator = CONTENT_CHARACTER_SET_CREATORS[identifierDescriptor.serialComponentCharacterSet];
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
/**
|
|
59
60
|
* Get the serial component length.
|
|
60
61
|
*/
|
|
61
62
|
get serialComponentLength(): number {
|
|
62
|
-
return this
|
|
63
|
+
return this.#serialComponentLength;
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
/**
|
|
66
67
|
* Get the serial component character set.
|
|
67
68
|
*/
|
|
68
69
|
get serialComponentCharacterSet(): ContentCharacterSet {
|
|
69
|
-
return this
|
|
70
|
+
return this.#serialComponentCharacterSet;
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
/**
|
|
73
74
|
* Get the serial component validation parameters.
|
|
74
75
|
*/
|
|
75
76
|
protected get serialComponentValidation(): CharacterSetValidation {
|
|
76
|
-
return this
|
|
77
|
+
return this.#serialComponentValidation;
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
/**
|
|
80
81
|
* Get the serial component creator.
|
|
81
82
|
*/
|
|
82
83
|
get serialComponentCreator(): CharacterSetCreator {
|
|
83
|
-
return this
|
|
84
|
+
return this.#serialComponentCreator;
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
/**
|
|
@@ -90,7 +91,7 @@ export class SerializableNumericIdentifierValidator extends AbstractNumericIdent
|
|
|
90
91
|
super.validate(identifier.substring(0, this.length), validation);
|
|
91
92
|
|
|
92
93
|
if (identifier.length > this.length) {
|
|
93
|
-
this.serialComponentCreator.validate(identifier.substring(this.length), this
|
|
94
|
+
this.serialComponentCreator.validate(identifier.substring(this.length), this.#serialComponentValidation);
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
}
|
package/test/gtin-creator.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { CharacterSetCreator, Sequence } from "@aidc-toolkit/utility";
|
|
2
2
|
import { expect, test } from "vitest";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type GTINCreator,
|
|
5
|
+
GTINLengths,
|
|
6
|
+
GTINValidator,
|
|
7
|
+
hasValidCheckDigit,
|
|
8
|
+
isGTINCreator,
|
|
9
|
+
PrefixTypes
|
|
10
|
+
} from "../src/index.js";
|
|
4
11
|
import { testNumericIdentifierCreator } from "./numeric-identifier-creator.js";
|
|
5
12
|
|
|
6
13
|
export function testGTINCreator(creator: GTINCreator): void {
|
|
@@ -111,7 +118,7 @@ export function testGTINCreator(creator: GTINCreator): void {
|
|
|
111
118
|
expect(Array.from(creator.createGTIN14("5", randomValues, true))).toStrictEqual(identifiers);
|
|
112
119
|
});
|
|
113
120
|
|
|
114
|
-
if (creator.
|
|
121
|
+
if (creator.length === GTINLengths.GTIN12) {
|
|
115
122
|
test("Zero-suppress GTIN-12 rule 1", () => {
|
|
116
123
|
expect(GTINValidator.zeroSuppress("012345000058")).toBe("01234558");
|
|
117
124
|
expect(GTINValidator.zeroSuppress("012345000065")).toBe("01234565");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { describe, expect, test } from "vitest";
|
|
2
2
|
import {
|
|
3
|
-
type
|
|
3
|
+
type GTINBaseLength,
|
|
4
|
+
GTINLengths,
|
|
4
5
|
GTINLevels,
|
|
5
|
-
GTINTypes,
|
|
6
6
|
GTINValidator,
|
|
7
7
|
IdentifierTypes,
|
|
8
8
|
LeaderTypes,
|
|
@@ -11,26 +11,24 @@ import {
|
|
|
11
11
|
} from "../src/index.js";
|
|
12
12
|
import { validateNumericIdentifierValidator } from "./numeric-identifier-validator.js";
|
|
13
13
|
|
|
14
|
-
export function validateGTINValidator(validator: GTINValidator, isCreator: boolean,
|
|
14
|
+
export function validateGTINValidator(validator: GTINValidator, isCreator: boolean, gtinBaseLength: GTINBaseLength): void {
|
|
15
15
|
let prefixType: PrefixType;
|
|
16
16
|
|
|
17
|
-
switch (
|
|
18
|
-
case
|
|
17
|
+
switch (gtinBaseLength) {
|
|
18
|
+
case GTINLengths.GTIN13:
|
|
19
19
|
prefixType = PrefixTypes.GS1CompanyPrefix;
|
|
20
20
|
break;
|
|
21
21
|
|
|
22
|
-
case
|
|
22
|
+
case GTINLengths.GTIN12:
|
|
23
23
|
prefixType = PrefixTypes.UPCCompanyPrefix;
|
|
24
24
|
break;
|
|
25
25
|
|
|
26
|
-
case
|
|
26
|
+
case GTINLengths.GTIN8:
|
|
27
27
|
prefixType = PrefixTypes.GS18Prefix;
|
|
28
28
|
break;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
validateNumericIdentifierValidator(validator, IdentifierTypes.GTIN, prefixType,
|
|
32
|
-
|
|
33
|
-
expect(validator.gtinType).toBe(gtinBaseType);
|
|
31
|
+
validateNumericIdentifierValidator(validator, IdentifierTypes.GTIN, prefixType, gtinBaseLength, LeaderTypes.IndicatorDigit);
|
|
34
32
|
}
|
|
35
33
|
|
|
36
34
|
describe("GTIN validation and normalization", () => {
|