@aidc-toolkit/gs1 1.0.26-beta → 1.0.28-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 +32 -66
- package/dist/abstract-identifier-creator.d.ts.map +1 -1
- package/dist/abstract-identifier-creator.js +62 -45
- package/dist/abstract-identifier-creator.js.map +1 -1
- 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 +28 -86
- package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -1
- package/dist/abstract-numeric-identifier-creator.js +138 -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 +8 -13
- package/dist/gtin-creator.d.ts.map +1 -1
- package/dist/gtin-creator.js +12 -15
- 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} +47 -10
- 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/{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} +47 -12
- package/dist/identifier-validators.d.ts.map +1 -0
- package/dist/{validators.js → identifier-validators.js} +40 -13
- 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 +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 +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 +13 -94
- package/dist/prefix-manager.d.ts.map +1 -1
- package/dist/prefix-manager.js +65 -102
- 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 +104 -75
- package/src/abstract-non-gtin-numeric-identifier-creator.ts +81 -0
- package/src/abstract-numeric-identifier-creator.ts +185 -133
- package/src/content-character-set-creators.ts +9 -0
- package/src/gtin-creator.ts +15 -16
- 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/identifier-creators.ts +177 -0
- 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} +98 -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 +15 -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 +11 -0
- package/src/non-serializable-numeric-identifier-descriptor.ts +12 -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 +76 -112
- package/src/serializable-numeric-identifier-creator.ts +10 -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/mixin.test.ts +35 -0
- package/test/non-gtin-numeric-identifier-validator.ts +7 -2
- package/test/non-numeric-identifier-validator.ts +2 -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/serializable-numeric-identifier-validator.ts +2 -2
- package/test/utility.ts +6 -6
- 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 +0 -62
- 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/creators.ts +0 -113
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import type { GTINDescriptor } from "./gtin-descriptor.js";
|
|
2
|
+
import { type GTINType, GTINTypes } from "./gtin-type.js";
|
|
3
|
+
import type { IdentifierDescriptor } from "./identifier-descriptor.js";
|
|
4
|
+
import type { IdentifierType } from "./identifier-type.js";
|
|
5
|
+
import type { NonGTINNumericIdentifierDescriptor } from "./non-gtin-numeric-identifier-descriptor.js";
|
|
6
|
+
import {
|
|
7
|
+
type NonGTINNumericIdentifierType,
|
|
8
|
+
NonGTINNumericIdentifierTypes
|
|
9
|
+
} from "./non-gtin-numeric-identifier-type.js";
|
|
10
|
+
import type { NonNumericIdentifierDescriptor } from "./non-numeric-identifier-descriptor.js";
|
|
11
|
+
import { type NonNumericIdentifierType, NonNumericIdentifierTypes } from "./non-numeric-identifier-type.js";
|
|
12
|
+
import type { NonSerializableNumericIdentifierDescriptor } from "./non-serializable-numeric-identifier-descriptor.js";
|
|
13
|
+
import {
|
|
14
|
+
type NonSerializableNumericIdentifierType,
|
|
15
|
+
NonSerializableNumericIdentifierTypes
|
|
16
|
+
} from "./non-serializable-numeric-identifier-type.js";
|
|
17
|
+
import type { NumericIdentifierDescriptor } from "./numeric-identifier-descriptor.js";
|
|
18
|
+
import { type NumericIdentifierType, NumericIdentifierTypes } from "./numeric-identifier-type.js";
|
|
19
|
+
import type { SerializableNumericIdentifierDescriptor } from "./serializable-numeric-identifier-descriptor.js";
|
|
20
|
+
import {
|
|
21
|
+
type SerializableNumericIdentifierType,
|
|
22
|
+
SerializableNumericIdentifierTypes
|
|
23
|
+
} from "./serializable-numeric-identifier-type.js";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Identifier extension type based on identifier type type.
|
|
27
|
+
*
|
|
28
|
+
* @template TIdentifierType
|
|
29
|
+
* Identifier type type.
|
|
30
|
+
*/
|
|
31
|
+
export type IdentifierTypeExtension<
|
|
32
|
+
TIdentifierType extends IdentifierType,
|
|
33
|
+
TIdentifierExtension extends IdentifierDescriptor,
|
|
34
|
+
TNumericIdentifierExtension extends TIdentifierExtension & NumericIdentifierDescriptor,
|
|
35
|
+
TGTINExtension extends TNumericIdentifierExtension & GTINDescriptor,
|
|
36
|
+
TNonGTINNumericIdentifierExtension extends TNumericIdentifierExtension & NonGTINNumericIdentifierDescriptor,
|
|
37
|
+
TNonSerializableNumericIdentifierExtension extends TNonGTINNumericIdentifierExtension & NonSerializableNumericIdentifierDescriptor,
|
|
38
|
+
TSerializableNumericIdentifierExtension extends TNonGTINNumericIdentifierExtension & SerializableNumericIdentifierDescriptor,
|
|
39
|
+
TNonNumericIdentifierExtension extends TIdentifierExtension & NonNumericIdentifierDescriptor
|
|
40
|
+
> =
|
|
41
|
+
TIdentifierType extends NumericIdentifierType ?
|
|
42
|
+
TIdentifierType extends GTINType ?
|
|
43
|
+
TGTINExtension :
|
|
44
|
+
TIdentifierType extends NonGTINNumericIdentifierType ?
|
|
45
|
+
TIdentifierType extends NonSerializableNumericIdentifierType ?
|
|
46
|
+
TNonSerializableNumericIdentifierExtension :
|
|
47
|
+
TIdentifierType extends SerializableNumericIdentifierType ?
|
|
48
|
+
TSerializableNumericIdentifierExtension :
|
|
49
|
+
TNonGTINNumericIdentifierExtension :
|
|
50
|
+
TNumericIdentifierExtension :
|
|
51
|
+
TIdentifierType extends NonNumericIdentifierType ?
|
|
52
|
+
TNonNumericIdentifierExtension :
|
|
53
|
+
TIdentifierExtension;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Determine if identifier extension is a numeric identifier extension.
|
|
57
|
+
*
|
|
58
|
+
* @param identifierDescriptor
|
|
59
|
+
* Identifier extension.
|
|
60
|
+
*
|
|
61
|
+
* @returns
|
|
62
|
+
* True if identifier extension is a numeric identifier extension.
|
|
63
|
+
*/
|
|
64
|
+
export function isNumericIdentifierExtension<
|
|
65
|
+
TIdentifierExtension extends IdentifierDescriptor,
|
|
66
|
+
TNumericIdentifierExtension extends TIdentifierExtension & NumericIdentifierDescriptor
|
|
67
|
+
>(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is TNumericIdentifierExtension {
|
|
68
|
+
return identifierDescriptor.identifierType in NumericIdentifierTypes;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Determine if identifier extension is a GTIN extension.
|
|
73
|
+
*
|
|
74
|
+
* @param identifierDescriptor
|
|
75
|
+
* Identifier extension.
|
|
76
|
+
*
|
|
77
|
+
* @returns
|
|
78
|
+
* True if identifier extension is a GTIN extension.
|
|
79
|
+
*/
|
|
80
|
+
export function isGTINExtension<
|
|
81
|
+
TIdentifierExtension extends IdentifierDescriptor,
|
|
82
|
+
TNumericIdentifierExtension extends TIdentifierExtension & NumericIdentifierDescriptor,
|
|
83
|
+
TGTINExtension extends TNumericIdentifierExtension & GTINDescriptor
|
|
84
|
+
>(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is TGTINExtension {
|
|
85
|
+
return identifierDescriptor.identifierType in GTINTypes;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Determine if identifier extension is a non-GTIN numeric identifier extension.
|
|
90
|
+
*
|
|
91
|
+
* @param identifierDescriptor
|
|
92
|
+
* Identifier extension.
|
|
93
|
+
*
|
|
94
|
+
* @returns
|
|
95
|
+
* True if identifier extension is a non-GTIN numeric identifier extension.
|
|
96
|
+
*/
|
|
97
|
+
export function isNonGTINNumericIdentifierExtension<
|
|
98
|
+
TIdentifierExtension extends IdentifierDescriptor,
|
|
99
|
+
TNumericIdentifierExtension extends TIdentifierExtension & NumericIdentifierDescriptor,
|
|
100
|
+
TNonGTINNumericIdentifierExtension extends TNumericIdentifierExtension & NonGTINNumericIdentifierDescriptor
|
|
101
|
+
>(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is TNonGTINNumericIdentifierExtension {
|
|
102
|
+
return identifierDescriptor.identifierType in NonGTINNumericIdentifierTypes;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Determine if identifier extension is a non-serializable numeric identifier extension.
|
|
107
|
+
*
|
|
108
|
+
* @param identifierDescriptor
|
|
109
|
+
* Identifier extension.
|
|
110
|
+
*
|
|
111
|
+
* @returns
|
|
112
|
+
* True if identifier extension is a non-serializable numeric identifier extension.
|
|
113
|
+
*/
|
|
114
|
+
export function isNonSerializableNumericIdentifierExtension<
|
|
115
|
+
TIdentifierExtension extends IdentifierDescriptor,
|
|
116
|
+
TNumericIdentifierExtension extends TIdentifierExtension & NumericIdentifierDescriptor,
|
|
117
|
+
TNonGTINNumericIdentifierExtension extends TNumericIdentifierExtension & NonGTINNumericIdentifierDescriptor,
|
|
118
|
+
TNonSerializableNumericIdentifierExtension extends TNonGTINNumericIdentifierExtension & NonSerializableNumericIdentifierDescriptor
|
|
119
|
+
>(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is TNonSerializableNumericIdentifierExtension {
|
|
120
|
+
return identifierDescriptor.identifierType in NonSerializableNumericIdentifierTypes;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Determine if identifier extension is a serializable numeric identifier extension.
|
|
125
|
+
*
|
|
126
|
+
* @param identifierDescriptor
|
|
127
|
+
* Identifier extension.
|
|
128
|
+
*
|
|
129
|
+
* @returns
|
|
130
|
+
* True if identifier extension is a serializable numeric identifier extension.
|
|
131
|
+
*/
|
|
132
|
+
export function isSerializableNumericIdentifierExtension<
|
|
133
|
+
TIdentifierExtension extends IdentifierDescriptor,
|
|
134
|
+
TNumericIdentifierExtension extends TIdentifierExtension & NumericIdentifierDescriptor,
|
|
135
|
+
TNonGTINNumericIdentifierExtension extends TNumericIdentifierExtension & NonGTINNumericIdentifierDescriptor,
|
|
136
|
+
TSerializableNumericIdentifierExtension extends TNonGTINNumericIdentifierExtension & SerializableNumericIdentifierDescriptor
|
|
137
|
+
>(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is TSerializableNumericIdentifierExtension {
|
|
138
|
+
return identifierDescriptor.identifierType in SerializableNumericIdentifierTypes;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Determine if identifier extension is a non-numeric identifier extension.
|
|
143
|
+
*
|
|
144
|
+
* @param identifierDescriptor
|
|
145
|
+
* Identifier extension.
|
|
146
|
+
*
|
|
147
|
+
* @returns
|
|
148
|
+
* True if identifier extension is a non-numeric identifier extension.
|
|
149
|
+
*/
|
|
150
|
+
export function isNonNumericIdentifierExtension<
|
|
151
|
+
TIdentifierExtension extends IdentifierDescriptor,
|
|
152
|
+
TNonNumericIdentifierExtension extends TIdentifierExtension & NonNumericIdentifierDescriptor
|
|
153
|
+
>(identifierDescriptor: IdentifierDescriptor): identifierDescriptor is TNonNumericIdentifierExtension {
|
|
154
|
+
return identifierDescriptor.identifierType in NonNumericIdentifierTypes;
|
|
155
|
+
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { CharacterSetCreator, StringValidation, StringValidator } from "@aidc-toolkit/utility";
|
|
2
|
+
import { CONTENT_CHARACTER_SET_CREATORS } from "./content-character-set-creators.js";
|
|
3
|
+
import { ContentCharacterSets } from "./content-character-set.js";
|
|
2
4
|
import type { IdentifierDescriptor } from "./identifier-descriptor.js";
|
|
5
|
+
import type { IdentifierTypeDescriptor } from "./identifier-descriptors.js";
|
|
6
|
+
import type { IdentifierType } from "./identifier-type.js";
|
|
7
|
+
import { PrefixTypes } from "./prefix-type.js";
|
|
8
|
+
import { PrefixValidator } from "./prefix-validator.js";
|
|
3
9
|
|
|
4
10
|
/**
|
|
5
11
|
* Identifier validation parameters.
|
|
@@ -9,42 +15,119 @@ export interface IdentifierValidation extends StringValidation {
|
|
|
9
15
|
|
|
10
16
|
/**
|
|
11
17
|
* Identifier validator. Validates an identifier against its definition in section 3 of the {@link
|
|
12
|
-
* https://ref.gs1.org/standards/genspecs/ | GS1 General Specifications}.
|
|
18
|
+
* https://ref.gs1.org/standards/genspecs/ | GS1 General Specifications}. Implements common functionality for an
|
|
19
|
+
* identifier validator.
|
|
13
20
|
*
|
|
14
|
-
* @template
|
|
15
|
-
* Identifier
|
|
21
|
+
* @template TIdentifierType
|
|
22
|
+
* Identifier type type.
|
|
16
23
|
*
|
|
17
24
|
* @template TIdentifierValidation
|
|
18
25
|
* Identifier validation type.
|
|
19
26
|
*/
|
|
20
|
-
export
|
|
27
|
+
export abstract class IdentifierValidator<TIdentifierType extends IdentifierType = IdentifierType, TIdentifierValidation extends IdentifierValidation = IdentifierValidation> implements IdentifierDescriptor, StringValidator<TIdentifierValidation> {
|
|
28
|
+
/**
|
|
29
|
+
* Identifier type.
|
|
30
|
+
*/
|
|
31
|
+
readonly #identifierType: IdentifierTypeDescriptor<TIdentifierType>["identifierType"];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Length.
|
|
35
|
+
*/
|
|
36
|
+
readonly #length: IdentifierTypeDescriptor<TIdentifierType>["length"];
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Reference character set.
|
|
40
|
+
*/
|
|
41
|
+
readonly #referenceCharacterSet: IdentifierTypeDescriptor<TIdentifierType>["referenceCharacterSet"];
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Reference creator.
|
|
45
|
+
*/
|
|
46
|
+
readonly #referenceCreator: CharacterSetCreator;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Constructor.
|
|
50
|
+
*
|
|
51
|
+
* @param identifierDescriptor
|
|
52
|
+
* Identifier descriptor.
|
|
53
|
+
*/
|
|
54
|
+
protected constructor(identifierDescriptor: IdentifierTypeDescriptor<TIdentifierType>) {
|
|
55
|
+
this.#identifierType = identifierDescriptor.identifierType;
|
|
56
|
+
this.#length = identifierDescriptor.length;
|
|
57
|
+
this.#referenceCharacterSet = identifierDescriptor.referenceCharacterSet;
|
|
58
|
+
this.#referenceCreator = CONTENT_CHARACTER_SET_CREATORS[identifierDescriptor.referenceCharacterSet];
|
|
59
|
+
}
|
|
60
|
+
|
|
21
61
|
/**
|
|
22
62
|
* Get the identifier type. Per the GS1 General Specifications, the identifier type determines the remaining
|
|
23
63
|
* properties.
|
|
24
64
|
*/
|
|
25
|
-
get identifierType():
|
|
65
|
+
get identifierType(): IdentifierTypeDescriptor<TIdentifierType>["identifierType"] {
|
|
66
|
+
return this.#identifierType;
|
|
67
|
+
}
|
|
26
68
|
|
|
27
69
|
/**
|
|
28
70
|
* Get the prefix type supported by the identifier type. For all identifier types except the GTIN, this is a GS1
|
|
29
71
|
* Company Prefix. For the GTIN, the prefix type determines the length.
|
|
30
72
|
*/
|
|
31
|
-
get prefixType():
|
|
73
|
+
get prefixType(): IdentifierTypeDescriptor<TIdentifierType>["prefixType"] {
|
|
74
|
+
// All identifier types except GTIN support only the GS1 Company Prefix.
|
|
75
|
+
return PrefixTypes.GS1CompanyPrefix;
|
|
76
|
+
}
|
|
32
77
|
|
|
33
78
|
/**
|
|
34
79
|
* Get the length. For numeric identifier types, the length is fixed; for alphanumeric identifier types, the length
|
|
35
80
|
* is the maximum.
|
|
36
81
|
*/
|
|
37
|
-
get length():
|
|
82
|
+
get length(): IdentifierTypeDescriptor<TIdentifierType>["length"] {
|
|
83
|
+
return this.#length;
|
|
84
|
+
}
|
|
38
85
|
|
|
39
86
|
/**
|
|
40
87
|
* Get the reference character set.
|
|
41
88
|
*/
|
|
42
|
-
get referenceCharacterSet():
|
|
89
|
+
get referenceCharacterSet(): IdentifierTypeDescriptor<TIdentifierType>["referenceCharacterSet"] {
|
|
90
|
+
return this.#referenceCharacterSet;
|
|
91
|
+
}
|
|
43
92
|
|
|
44
93
|
/**
|
|
45
94
|
* Get the reference creator.
|
|
46
95
|
*/
|
|
47
|
-
get referenceCreator(): CharacterSetCreator
|
|
96
|
+
get referenceCreator(): CharacterSetCreator {
|
|
97
|
+
return this.#referenceCreator;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Pad an identifier on the left with zero-value character for validation purposes. This is done to align an
|
|
102
|
+
* identifier with a position offset for any error message that may be thrown by the reference validator.
|
|
103
|
+
*
|
|
104
|
+
* @param identifier
|
|
105
|
+
* Identifier.
|
|
106
|
+
*
|
|
107
|
+
* @param positionOffset
|
|
108
|
+
* Position offset within a larger string.
|
|
109
|
+
*
|
|
110
|
+
* @returns
|
|
111
|
+
* Padded identifier.
|
|
112
|
+
*/
|
|
113
|
+
protected padIdentifier(identifier: string, positionOffset?: number): string {
|
|
114
|
+
// Identifier is returned as is if position offset is undefined.
|
|
115
|
+
return positionOffset === undefined ? identifier : this.referenceCreator.character(0).repeat(positionOffset).concat(identifier);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Validate the prefix within an identifier.
|
|
120
|
+
*
|
|
121
|
+
* @param partialIdentifier
|
|
122
|
+
* Partial identifier.
|
|
123
|
+
*
|
|
124
|
+
* @param positionOffset
|
|
125
|
+
* Position offset within a larger string.
|
|
126
|
+
*/
|
|
127
|
+
protected validatePrefix(partialIdentifier: string, positionOffset?: number): void {
|
|
128
|
+
// Delegate to prefix validator with support for U.P.C. Company Prefix but not GS1-8 Prefix.
|
|
129
|
+
PrefixValidator.validate(this.prefixType, true, false, partialIdentifier, true, this.referenceCharacterSet === ContentCharacterSets.Numeric, positionOffset);
|
|
130
|
+
}
|
|
48
131
|
|
|
49
132
|
/**
|
|
50
133
|
* Validate an identifier and throw an error if validation fails.
|
|
@@ -55,5 +138,5 @@ export interface IdentifierValidator<TIdentifierDescriptor extends IdentifierDes
|
|
|
55
138
|
* @param validation
|
|
56
139
|
* Identifier validation parameters.
|
|
57
140
|
*/
|
|
58
|
-
validate
|
|
141
|
+
abstract validate(identifier: string, validation?: TIdentifierValidation): void;
|
|
59
142
|
}
|
|
@@ -1,32 +1,33 @@
|
|
|
1
|
+
import type { GTINBaseLength } from "./gtin-length.js";
|
|
2
|
+
import type { GTINType } from "./gtin-type.js";
|
|
3
|
+
import { GTIN_VALIDATORS, GTINValidator } from "./gtin-validator.js";
|
|
4
|
+
import { isGTINDescriptors } from "./identifier-descriptors.js";
|
|
1
5
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import { GTIN_VALIDATORS, type GTINValidator } from "./gtin-validator.js";
|
|
6
|
+
type IdentifierTypeExtension,
|
|
7
|
+
isGTINExtension,
|
|
8
|
+
isNonGTINNumericIdentifierExtension,
|
|
9
|
+
isNonNumericIdentifierExtension,
|
|
10
|
+
isNonSerializableNumericIdentifierExtension,
|
|
11
|
+
isNumericIdentifierExtension,
|
|
12
|
+
isSerializableNumericIdentifierExtension
|
|
13
|
+
} from "./identifier-extension.js";
|
|
11
14
|
import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
|
|
12
15
|
import type { IdentifierValidator } from "./identifier-validator.js";
|
|
13
|
-
import type {
|
|
14
|
-
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
15
|
-
import type { NonNumericIdentifierType } from "./non-numeric-identifier-type.js";
|
|
16
|
+
import type { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
16
17
|
import { NonNumericIdentifierValidator } from "./non-numeric-identifier-validator.js";
|
|
18
|
+
import { NonSerializableNumericIdentifierValidator } from "./non-serializable-numeric-identifier-validator.js";
|
|
17
19
|
import type { NumericIdentifierValidator } from "./numeric-identifier-validator.js";
|
|
18
|
-
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
19
20
|
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* GLN validator.
|
|
23
24
|
*/
|
|
24
|
-
const GLN_VALIDATOR = new
|
|
25
|
+
const GLN_VALIDATOR = new NonSerializableNumericIdentifierValidator(IdentifierTypes.GLN);
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* SSCC validator.
|
|
28
29
|
*/
|
|
29
|
-
const SSCC_VALIDATOR = new
|
|
30
|
+
const SSCC_VALIDATOR = new NonSerializableNumericIdentifierValidator(IdentifierTypes.SSCC);
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* GRAI validator.
|
|
@@ -41,7 +42,7 @@ const GIAI_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GIAI);
|
|
|
41
42
|
/**
|
|
42
43
|
* GSRN validator.
|
|
43
44
|
*/
|
|
44
|
-
const GSRN_VALIDATOR = new
|
|
45
|
+
const GSRN_VALIDATOR = new NonSerializableNumericIdentifierValidator(IdentifierTypes.GSRN);
|
|
45
46
|
|
|
46
47
|
/**
|
|
47
48
|
* GDTI validator.
|
|
@@ -56,7 +57,7 @@ const GINC_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GINC);
|
|
|
56
57
|
/**
|
|
57
58
|
* GSIN validator.
|
|
58
59
|
*/
|
|
59
|
-
const GSIN_VALIDATOR = new
|
|
60
|
+
const GSIN_VALIDATOR = new NonSerializableNumericIdentifierValidator(IdentifierTypes.GSIN);
|
|
60
61
|
|
|
61
62
|
/**
|
|
62
63
|
* GCN validator.
|
|
@@ -79,15 +80,16 @@ const GMN_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GMN);
|
|
|
79
80
|
* @template TIdentifierType
|
|
80
81
|
* Identifier type type.
|
|
81
82
|
*/
|
|
82
|
-
export type IdentifierTypeValidator<TIdentifierType extends IdentifierType> =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
83
|
+
export type IdentifierTypeValidator<TIdentifierType extends IdentifierType> = IdentifierTypeExtension<
|
|
84
|
+
TIdentifierType,
|
|
85
|
+
IdentifierValidator,
|
|
86
|
+
NumericIdentifierValidator,
|
|
87
|
+
GTINValidator,
|
|
88
|
+
NonGTINNumericIdentifierValidator,
|
|
89
|
+
NonSerializableNumericIdentifierValidator,
|
|
90
|
+
SerializableNumericIdentifierValidator,
|
|
91
|
+
NonNumericIdentifierValidator
|
|
92
|
+
>;
|
|
91
93
|
|
|
92
94
|
/**
|
|
93
95
|
* Identifier validators entry type based on identifier type type.
|
|
@@ -95,8 +97,8 @@ export type IdentifierTypeValidator<TIdentifierType extends IdentifierType> = TI
|
|
|
95
97
|
* @template TIdentifierType
|
|
96
98
|
* Identifier type type.
|
|
97
99
|
*/
|
|
98
|
-
export type IdentifierValidatorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends
|
|
99
|
-
Readonly<Record<
|
|
100
|
+
export type IdentifierValidatorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends GTINType ?
|
|
101
|
+
Readonly<Record<GTINBaseLength, GTINValidator>> :
|
|
100
102
|
IdentifierTypeValidator<TIdentifierType>;
|
|
101
103
|
|
|
102
104
|
/**
|
|
@@ -109,7 +111,7 @@ export type IdentifierValidatorsRecord = {
|
|
|
109
111
|
/**
|
|
110
112
|
* Identifier validators for all identifier types.
|
|
111
113
|
*/
|
|
112
|
-
export const IdentifierValidators: IdentifierValidatorsRecord = {
|
|
114
|
+
export const IdentifierValidators: Readonly<IdentifierValidatorsRecord> = {
|
|
113
115
|
[IdentifierTypes.GTIN]: GTIN_VALIDATORS,
|
|
114
116
|
[IdentifierTypes.GLN]: GLN_VALIDATOR,
|
|
115
117
|
[IdentifierTypes.SSCC]: SSCC_VALIDATOR,
|
|
@@ -122,7 +124,54 @@ export const IdentifierValidators: IdentifierValidatorsRecord = {
|
|
|
122
124
|
[IdentifierTypes.GCN]: GCN_VALIDATOR,
|
|
123
125
|
[IdentifierTypes.CPID]: CPID_VALIDATOR,
|
|
124
126
|
[IdentifierTypes.GMN]: GMN_VALIDATOR
|
|
125
|
-
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* GTIN validator constructor type.
|
|
131
|
+
*/
|
|
132
|
+
export type GTINValidatorConstructor =
|
|
133
|
+
new (gtinBaseLength: GTINBaseLength) => GTINValidator;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Non-GTIN validator constructor type.
|
|
137
|
+
*
|
|
138
|
+
* @template TIdentifierType
|
|
139
|
+
* Identifier type type.
|
|
140
|
+
*/
|
|
141
|
+
export type NonGTINValidatorConstructor<TIdentifierType extends Exclude<IdentifierType, GTINType>> =
|
|
142
|
+
new (identifierType: TIdentifierType) => IdentifierValidatorsRecord[TIdentifierType];
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Identifier validator constructors entry type based on identifier type type.
|
|
146
|
+
*
|
|
147
|
+
* @template TIdentifierType
|
|
148
|
+
* Identifier type type.
|
|
149
|
+
*/
|
|
150
|
+
export type IdentifierValidatorConstructorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends GTINType ?
|
|
151
|
+
GTINValidatorConstructor :
|
|
152
|
+
NonGTINValidatorConstructor<Exclude<TIdentifierType, GTINType>>;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Identifier validator constructors record type.
|
|
156
|
+
*/
|
|
157
|
+
export type IdentifierValidatorConstructorsRecord = {
|
|
158
|
+
readonly [TIdentifierType in IdentifierType]: IdentifierValidatorConstructorsEntry<TIdentifierType>;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export const IdentifierValidatorConstructors: IdentifierValidatorConstructorsRecord = {
|
|
162
|
+
GTIN: GTINValidator,
|
|
163
|
+
GLN: NonSerializableNumericIdentifierValidator,
|
|
164
|
+
SSCC: NonSerializableNumericIdentifierValidator,
|
|
165
|
+
GRAI: SerializableNumericIdentifierValidator,
|
|
166
|
+
GIAI: NonNumericIdentifierValidator,
|
|
167
|
+
GSRN: NonSerializableNumericIdentifierValidator,
|
|
168
|
+
GDTI: SerializableNumericIdentifierValidator,
|
|
169
|
+
GINC: NonNumericIdentifierValidator,
|
|
170
|
+
GSIN: NonSerializableNumericIdentifierValidator,
|
|
171
|
+
GCN: SerializableNumericIdentifierValidator,
|
|
172
|
+
CPID: NonNumericIdentifierValidator,
|
|
173
|
+
GMN: NonNumericIdentifierValidator
|
|
174
|
+
};
|
|
126
175
|
|
|
127
176
|
/**
|
|
128
177
|
* Determine if identifier validators or validator is GTIN validators.
|
|
@@ -133,7 +182,7 @@ export const IdentifierValidators: IdentifierValidatorsRecord = {
|
|
|
133
182
|
* @returns
|
|
134
183
|
* True if GTIN validators.
|
|
135
184
|
*/
|
|
136
|
-
export function isGTINValidators(identifierValidatorsOrValidator: IdentifierValidatorsEntry<IdentifierType>): identifierValidatorsOrValidator is Readonly<Record<
|
|
185
|
+
export function isGTINValidators(identifierValidatorsOrValidator: IdentifierValidatorsEntry<IdentifierType>): identifierValidatorsOrValidator is Readonly<Record<GTINBaseLength, GTINValidator>> {
|
|
137
186
|
return isGTINDescriptors(identifierValidatorsOrValidator);
|
|
138
187
|
}
|
|
139
188
|
|
|
@@ -147,7 +196,7 @@ export function isGTINValidators(identifierValidatorsOrValidator: IdentifierVali
|
|
|
147
196
|
* True if identifier validator is a numeric identifier validator.
|
|
148
197
|
*/
|
|
149
198
|
export function isNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NumericIdentifierValidator {
|
|
150
|
-
return
|
|
199
|
+
return isNumericIdentifierExtension(identifierValidator);
|
|
151
200
|
}
|
|
152
201
|
|
|
153
202
|
/**
|
|
@@ -160,7 +209,7 @@ export function isNumericIdentifierValidator(identifierValidator: IdentifierVali
|
|
|
160
209
|
* True if identifier validator is a GTIN validator.
|
|
161
210
|
*/
|
|
162
211
|
export function isGTINValidator(identifierValidator: IdentifierValidator): identifierValidator is GTINValidator {
|
|
163
|
-
return
|
|
212
|
+
return isGTINExtension(identifierValidator);
|
|
164
213
|
}
|
|
165
214
|
|
|
166
215
|
/**
|
|
@@ -173,7 +222,20 @@ export function isGTINValidator(identifierValidator: IdentifierValidator): ident
|
|
|
173
222
|
* True if identifier validator is a non-GTIN numeric identifier validator.
|
|
174
223
|
*/
|
|
175
224
|
export function isNonGTINNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonGTINNumericIdentifierValidator {
|
|
176
|
-
return
|
|
225
|
+
return isNonGTINNumericIdentifierExtension(identifierValidator);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Determine if identifier validator is a non-serializable numeric identifier validator.
|
|
230
|
+
*
|
|
231
|
+
* @param identifierValidator
|
|
232
|
+
* Identifier validator.
|
|
233
|
+
*
|
|
234
|
+
* @returns
|
|
235
|
+
* True if identifier validator is a non-serializable numeric identifier validator.
|
|
236
|
+
*/
|
|
237
|
+
export function isNonSerializableNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonSerializableNumericIdentifierValidator {
|
|
238
|
+
return isNonSerializableNumericIdentifierExtension(identifierValidator);
|
|
177
239
|
}
|
|
178
240
|
|
|
179
241
|
/**
|
|
@@ -186,7 +248,7 @@ export function isNonGTINNumericIdentifierValidator(identifierValidator: Identif
|
|
|
186
248
|
* True if identifier validator is a serializable numeric identifier validator.
|
|
187
249
|
*/
|
|
188
250
|
export function isSerializableNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is SerializableNumericIdentifierValidator {
|
|
189
|
-
return
|
|
251
|
+
return isSerializableNumericIdentifierExtension(identifierValidator);
|
|
190
252
|
}
|
|
191
253
|
|
|
192
254
|
/**
|
|
@@ -199,5 +261,5 @@ export function isSerializableNumericIdentifierValidator(identifierValidator: Id
|
|
|
199
261
|
* True if identifier validator is a non-numeric identifier validator.
|
|
200
262
|
*/
|
|
201
263
|
export function isNonNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonNumericIdentifierValidator {
|
|
202
|
-
return
|
|
264
|
+
return isNonNumericIdentifierExtension(identifierValidator);
|
|
203
265
|
}
|
package/src/index.ts
CHANGED
|
@@ -27,34 +27,40 @@ export * from "./prefix-validator.js";
|
|
|
27
27
|
export * from "./content-character-set.js";
|
|
28
28
|
|
|
29
29
|
export * from "./identifier-type.js";
|
|
30
|
+
export * from "./leader-type.js";
|
|
30
31
|
export * from "./numeric-identifier-type.js";
|
|
31
32
|
export * from "./gtin-type.js";
|
|
32
|
-
export
|
|
33
|
-
export
|
|
34
|
-
export
|
|
33
|
+
export * from "./non-gtin-numeric-identifier-type.js";
|
|
34
|
+
export * from "./non-serializable-numeric-identifier-type.js";
|
|
35
|
+
export * from "./serializable-numeric-identifier-type.js";
|
|
36
|
+
export * from "./non-numeric-identifier-type.js";
|
|
35
37
|
|
|
36
38
|
export type * from "./identifier-descriptor.js";
|
|
37
39
|
export type * from "./numeric-identifier-descriptor.js";
|
|
40
|
+
export * from "./gtin-length.js";
|
|
38
41
|
export type * from "./gtin-descriptor.js";
|
|
39
42
|
export type * from "./non-gtin-numeric-identifier-descriptor.js";
|
|
43
|
+
export type * from "./non-serializable-numeric-identifier-descriptor.js";
|
|
40
44
|
export type * from "./serializable-numeric-identifier-descriptor.js";
|
|
41
45
|
export type * from "./non-numeric-identifier-descriptor.js";
|
|
42
|
-
export * from "./descriptors.js";
|
|
46
|
+
export * from "./identifier-descriptors.js";
|
|
43
47
|
|
|
44
|
-
export
|
|
45
|
-
export
|
|
48
|
+
export * from "./identifier-validator.js";
|
|
49
|
+
export * from "./numeric-identifier-validator.js";
|
|
46
50
|
export { GTINLevels, type GTINLevelKey, type GTINLevel, type RCNReference, GTINValidator } from "./gtin-validator.js";
|
|
47
51
|
export * from "./non-gtin-numeric-identifier-validator.js";
|
|
52
|
+
export * from "./non-serializable-numeric-identifier-validator.js";
|
|
48
53
|
export * from "./serializable-numeric-identifier-validator.js";
|
|
49
54
|
export * from "./non-numeric-identifier-validator.js";
|
|
50
|
-
export * from "./validators.js";
|
|
55
|
+
export * from "./identifier-validators.js";
|
|
51
56
|
|
|
52
57
|
export type * from "./identifier-creator.js";
|
|
53
58
|
export type * from "./numeric-identifier-creator.js";
|
|
54
59
|
export * from "./gtin-creator.js";
|
|
55
|
-
export * from "./non-gtin-numeric-identifier-creator.js";
|
|
60
|
+
export type * from "./non-gtin-numeric-identifier-creator.js";
|
|
61
|
+
export * from "./non-serializable-numeric-identifier-creator.js";
|
|
56
62
|
export * from "./serializable-numeric-identifier-creator.js";
|
|
57
63
|
export * from "./non-numeric-identifier-creator.js";
|
|
58
|
-
export * from "./creators.js";
|
|
64
|
+
export * from "./identifier-creators.js";
|
|
59
65
|
|
|
60
66
|
export * from "./prefix-manager.js";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leader type.
|
|
3
|
+
*/
|
|
4
|
+
export const LeaderTypes = {
|
|
5
|
+
/**
|
|
6
|
+
* No leader.
|
|
7
|
+
*/
|
|
8
|
+
None: "None",
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Indicator digit (GTIN only).
|
|
12
|
+
*/
|
|
13
|
+
IndicatorDigit: "Indicator digit",
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Extension digit (SSCC only).
|
|
17
|
+
*/
|
|
18
|
+
ExtensionDigit: "Extension digit"
|
|
19
|
+
} as const;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Leader type key.
|
|
23
|
+
*/
|
|
24
|
+
export type LeaderTypeKey = keyof typeof LeaderTypes;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Leader type.
|
|
28
|
+
*/
|
|
29
|
+
export type LeaderType = typeof LeaderTypes[LeaderTypeKey];
|
|
@@ -1,27 +1,12 @@
|
|
|
1
|
-
import { Mixin } from "ts-mixer";
|
|
2
|
-
import { AbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
|
|
3
1
|
import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
|
|
4
|
-
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
5
|
-
import type {
|
|
6
|
-
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
2
|
+
import type { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
3
|
+
import type { NumericIdentifierCreator } from "./numeric-identifier-creator.js";
|
|
7
4
|
|
|
8
5
|
/**
|
|
9
|
-
* Non-GTIN numeric identifier creator.
|
|
6
|
+
* Non-GTIN numeric identifier creator. Creates one or many non-GTIN numeric identifiers.
|
|
7
|
+
*
|
|
8
|
+
* @template TNonGTINNumericIdentifierType
|
|
9
|
+
* Non-GTIN numeric identifier type type.
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
12
|
-
/**
|
|
13
|
-
* Constructor. Typically called internally by a prefix manager but may be called by other code with another prefix
|
|
14
|
-
* provider type.
|
|
15
|
-
*
|
|
16
|
-
* @param prefixProvider
|
|
17
|
-
* Prefix provider.
|
|
18
|
-
*
|
|
19
|
-
* @param identifierType
|
|
20
|
-
* Identifier type.
|
|
21
|
-
*/
|
|
22
|
-
constructor(prefixProvider: PrefixProvider, identifierType: Exclude<NonGTINNumericIdentifierType, SerializableNumericIdentifierType>) {
|
|
23
|
-
super(identifierType);
|
|
24
|
-
|
|
25
|
-
this.init(prefixProvider, prefixProvider.gs1CompanyPrefix);
|
|
26
|
-
}
|
|
11
|
+
export interface NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType = NonGTINNumericIdentifierType> extends NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>, NumericIdentifierCreator<TNonGTINNumericIdentifierType> {
|
|
27
12
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { LeaderType, LeaderTypes } from "./leader-type.js";
|
|
1
2
|
import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
|
|
2
3
|
import type { NumericIdentifierDescriptor } from "./numeric-identifier-descriptor.js";
|
|
3
|
-
import type { LeaderType, LeaderTypes } from "./numeric-identifier-type.js";
|
|
4
4
|
import type { PrefixTypes } from "./prefix-type.js";
|
|
5
5
|
|
|
6
6
|
/**
|