@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
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { GTINBaseType } from "./gtin-type.js";
|
|
2
|
+
import { type GTINValidator } from "./gtin-validator.js";
|
|
3
|
+
import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
|
|
4
|
+
import type { IdentifierValidator } from "./identifier-validator.js";
|
|
5
|
+
import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
|
|
6
|
+
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
7
|
+
import type { NonNumericIdentifierType } from "./non-numeric-identifier-type.js";
|
|
8
|
+
import { NonNumericIdentifierValidator } from "./non-numeric-identifier-validator.js";
|
|
9
|
+
import type { NumericIdentifierValidator } from "./numeric-identifier-validator.js";
|
|
10
|
+
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
11
|
+
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
|
|
12
|
+
/**
|
|
13
|
+
* Identifier validator type based on identifier type type.
|
|
14
|
+
*
|
|
15
|
+
* @template TIdentifierType
|
|
16
|
+
* Identifier type type.
|
|
17
|
+
*/
|
|
18
|
+
export type IdentifierTypeValidator<TIdentifierType extends IdentifierType> = TIdentifierType extends NonNumericIdentifierType ? NonNumericIdentifierValidator : TIdentifierType extends SerializableNumericIdentifierType ? SerializableNumericIdentifierValidator : TIdentifierType extends NonGTINNumericIdentifierType ? NonGTINNumericIdentifierValidator : TIdentifierType extends typeof IdentifierTypes.GTIN ? GTINValidator : IdentifierValidator;
|
|
19
|
+
/**
|
|
20
|
+
* Identifier validators entry type based on identifier type type.
|
|
21
|
+
*
|
|
22
|
+
* @template TIdentifierType
|
|
23
|
+
* Identifier type type.
|
|
24
|
+
*/
|
|
25
|
+
export type IdentifierValidatorsEntry<TIdentifierType extends IdentifierType> = TIdentifierType extends typeof IdentifierTypes.GTIN ? Readonly<Record<GTINBaseType, GTINValidator>> : IdentifierTypeValidator<TIdentifierType>;
|
|
26
|
+
/**
|
|
27
|
+
* Identifier validators record type.
|
|
28
|
+
*/
|
|
29
|
+
export type IdentifierValidatorsRecord = {
|
|
30
|
+
[TIdentifierType in IdentifierType]: IdentifierValidatorsEntry<TIdentifierType>;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Identifier validators for all identifier types.
|
|
34
|
+
*/
|
|
35
|
+
export declare const IdentifierValidators: IdentifierValidatorsRecord;
|
|
36
|
+
/**
|
|
37
|
+
* Determine if identifier validators or validator is GTIN validators.
|
|
38
|
+
*
|
|
39
|
+
* @param identifierValidatorsOrValidator
|
|
40
|
+
* Identifier validators or validator.
|
|
41
|
+
*
|
|
42
|
+
* @returns
|
|
43
|
+
* True if GTIN validators.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isGTINValidators(identifierValidatorsOrValidator: IdentifierValidatorsEntry<IdentifierType>): identifierValidatorsOrValidator is Readonly<Record<GTINBaseType, GTINValidator>>;
|
|
46
|
+
/**
|
|
47
|
+
* Determine if identifier validator is a numeric identifier validator.
|
|
48
|
+
*
|
|
49
|
+
* @param identifierValidator
|
|
50
|
+
* Identifier validator.
|
|
51
|
+
*
|
|
52
|
+
* @returns
|
|
53
|
+
* True if identifier validator is a numeric identifier validator.
|
|
54
|
+
*/
|
|
55
|
+
export declare function isNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NumericIdentifierValidator;
|
|
56
|
+
/**
|
|
57
|
+
* Determine if identifier validator is a GTIN validator.
|
|
58
|
+
*
|
|
59
|
+
* @param identifierValidator
|
|
60
|
+
* Identifier validator.
|
|
61
|
+
*
|
|
62
|
+
* @returns
|
|
63
|
+
* True if identifier validator is a GTIN validator.
|
|
64
|
+
*/
|
|
65
|
+
export declare function isGTINValidator(identifierValidator: IdentifierValidator): identifierValidator is GTINValidator;
|
|
66
|
+
/**
|
|
67
|
+
* Determine if identifier validator is a non-GTIN numeric identifier validator.
|
|
68
|
+
*
|
|
69
|
+
* @param identifierValidator
|
|
70
|
+
* Identifier validator.
|
|
71
|
+
*
|
|
72
|
+
* @returns
|
|
73
|
+
* True if identifier validator is a non-GTIN numeric identifier validator.
|
|
74
|
+
*/
|
|
75
|
+
export declare function isNonGTINNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonGTINNumericIdentifierValidator;
|
|
76
|
+
/**
|
|
77
|
+
* Determine if identifier validator is a serializable numeric identifier validator.
|
|
78
|
+
*
|
|
79
|
+
* @param identifierValidator
|
|
80
|
+
* Identifier validator.
|
|
81
|
+
*
|
|
82
|
+
* @returns
|
|
83
|
+
* True if identifier validator is a serializable numeric identifier validator.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isSerializableNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is SerializableNumericIdentifierValidator;
|
|
86
|
+
/**
|
|
87
|
+
* Determine if identifier validator is a non-numeric identifier validator.
|
|
88
|
+
*
|
|
89
|
+
* @param identifierValidator
|
|
90
|
+
* Identifier validator.
|
|
91
|
+
*
|
|
92
|
+
* @returns
|
|
93
|
+
* True if identifier validator is a non-numeric identifier validator.
|
|
94
|
+
*/
|
|
95
|
+
export declare function isNonNumericIdentifierValidator(identifierValidator: IdentifierValidator): identifierValidator is NonNumericIdentifierValidator;
|
|
96
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAyDxG;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,CAAC,eAAe,SAAS,cAAc,IAAI,eAAe,SAAS,wBAAwB,GAC1H,6BAA6B,GAC7B,eAAe,SAAS,iCAAiC,GACrD,sCAAsC,GACtC,eAAe,SAAS,4BAA4B,GAChD,iCAAiC,GACjC,eAAe,SAAS,OAAO,eAAe,CAAC,IAAI,GAC/C,aAAa,GACb,mBAAmB,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,CAAC,eAAe,SAAS,cAAc,IAAI,eAAe,SAAS,OAAO,eAAe,CAAC,IAAI,GAC/H,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GAC7C,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;KACpC,eAAe,IAAI,cAAc,GAAG,yBAAyB,CAAC,eAAe,CAAC;CAClF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,0BAazB,CAAC;AAEX;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,+BAA+B,EAAE,yBAAyB,CAAC,cAAc,CAAC,GAAG,+BAA+B,IAAI,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAE7L;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,0BAA0B,CAExI;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,aAAa,CAE9G;AAED;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,iCAAiC,CAEtJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,wCAAwC,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,sCAAsC,CAEhK;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,mBAAmB,IAAI,6BAA6B,CAE9I"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { isGTINDescriptor, isGTINDescriptors, isNonGTINNumericIdentifierDescriptor, isNonNumericIdentifierDescriptor, isNumericIdentifierDescriptor, isSerializableNumericIdentifierDescriptor } from "./descriptors.js";
|
|
2
|
+
import { GTIN_VALIDATORS } from "./gtin-validator.js";
|
|
3
|
+
import { IdentifierTypes } from "./identifier-type.js";
|
|
4
|
+
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
5
|
+
import { NonNumericIdentifierValidator } from "./non-numeric-identifier-validator.js";
|
|
6
|
+
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
|
|
7
|
+
/**
|
|
8
|
+
* GLN validator.
|
|
9
|
+
*/
|
|
10
|
+
const GLN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GLN);
|
|
11
|
+
/**
|
|
12
|
+
* SSCC validator.
|
|
13
|
+
*/
|
|
14
|
+
const SSCC_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.SSCC);
|
|
15
|
+
/**
|
|
16
|
+
* GRAI validator.
|
|
17
|
+
*/
|
|
18
|
+
const GRAI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GRAI);
|
|
19
|
+
/**
|
|
20
|
+
* GIAI validator.
|
|
21
|
+
*/
|
|
22
|
+
const GIAI_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GIAI);
|
|
23
|
+
/**
|
|
24
|
+
* GSRN validator.
|
|
25
|
+
*/
|
|
26
|
+
const GSRN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GSRN);
|
|
27
|
+
/**
|
|
28
|
+
* GDTI validator.
|
|
29
|
+
*/
|
|
30
|
+
const GDTI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GDTI);
|
|
31
|
+
/**
|
|
32
|
+
* GINC validator.
|
|
33
|
+
*/
|
|
34
|
+
const GINC_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GINC);
|
|
35
|
+
/**
|
|
36
|
+
* GSIN validator.
|
|
37
|
+
*/
|
|
38
|
+
const GSIN_VALIDATOR = new NonGTINNumericIdentifierValidator(IdentifierTypes.GSIN);
|
|
39
|
+
/**
|
|
40
|
+
* GCN validator.
|
|
41
|
+
*/
|
|
42
|
+
const GCN_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GCN);
|
|
43
|
+
/**
|
|
44
|
+
* CPID validator.
|
|
45
|
+
*/
|
|
46
|
+
const CPID_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.CPID);
|
|
47
|
+
/**
|
|
48
|
+
* GMN validator.
|
|
49
|
+
*/
|
|
50
|
+
const GMN_VALIDATOR = new NonNumericIdentifierValidator(IdentifierTypes.GMN);
|
|
51
|
+
/**
|
|
52
|
+
* Identifier validators for all identifier types.
|
|
53
|
+
*/
|
|
54
|
+
export const IdentifierValidators = {
|
|
55
|
+
[IdentifierTypes.GTIN]: GTIN_VALIDATORS,
|
|
56
|
+
[IdentifierTypes.GLN]: GLN_VALIDATOR,
|
|
57
|
+
[IdentifierTypes.SSCC]: SSCC_VALIDATOR,
|
|
58
|
+
[IdentifierTypes.GRAI]: GRAI_VALIDATOR,
|
|
59
|
+
[IdentifierTypes.GIAI]: GIAI_VALIDATOR,
|
|
60
|
+
[IdentifierTypes.GSRN]: GSRN_VALIDATOR,
|
|
61
|
+
[IdentifierTypes.GDTI]: GDTI_VALIDATOR,
|
|
62
|
+
[IdentifierTypes.GINC]: GINC_VALIDATOR,
|
|
63
|
+
[IdentifierTypes.GSIN]: GSIN_VALIDATOR,
|
|
64
|
+
[IdentifierTypes.GCN]: GCN_VALIDATOR,
|
|
65
|
+
[IdentifierTypes.CPID]: CPID_VALIDATOR,
|
|
66
|
+
[IdentifierTypes.GMN]: GMN_VALIDATOR
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Determine if identifier validators or validator is GTIN validators.
|
|
70
|
+
*
|
|
71
|
+
* @param identifierValidatorsOrValidator
|
|
72
|
+
* Identifier validators or validator.
|
|
73
|
+
*
|
|
74
|
+
* @returns
|
|
75
|
+
* True if GTIN validators.
|
|
76
|
+
*/
|
|
77
|
+
export function isGTINValidators(identifierValidatorsOrValidator) {
|
|
78
|
+
return isGTINDescriptors(identifierValidatorsOrValidator);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Determine if identifier validator is a numeric identifier validator.
|
|
82
|
+
*
|
|
83
|
+
* @param identifierValidator
|
|
84
|
+
* Identifier validator.
|
|
85
|
+
*
|
|
86
|
+
* @returns
|
|
87
|
+
* True if identifier validator is a numeric identifier validator.
|
|
88
|
+
*/
|
|
89
|
+
export function isNumericIdentifierValidator(identifierValidator) {
|
|
90
|
+
return isNumericIdentifierDescriptor(identifierValidator);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Determine if identifier validator is a GTIN validator.
|
|
94
|
+
*
|
|
95
|
+
* @param identifierValidator
|
|
96
|
+
* Identifier validator.
|
|
97
|
+
*
|
|
98
|
+
* @returns
|
|
99
|
+
* True if identifier validator is a GTIN validator.
|
|
100
|
+
*/
|
|
101
|
+
export function isGTINValidator(identifierValidator) {
|
|
102
|
+
return isGTINDescriptor(identifierValidator);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Determine if identifier validator is a non-GTIN numeric identifier validator.
|
|
106
|
+
*
|
|
107
|
+
* @param identifierValidator
|
|
108
|
+
* Identifier validator.
|
|
109
|
+
*
|
|
110
|
+
* @returns
|
|
111
|
+
* True if identifier validator is a non-GTIN numeric identifier validator.
|
|
112
|
+
*/
|
|
113
|
+
export function isNonGTINNumericIdentifierValidator(identifierValidator) {
|
|
114
|
+
return isNonGTINNumericIdentifierDescriptor(identifierValidator);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Determine if identifier validator is a serializable numeric identifier validator.
|
|
118
|
+
*
|
|
119
|
+
* @param identifierValidator
|
|
120
|
+
* Identifier validator.
|
|
121
|
+
*
|
|
122
|
+
* @returns
|
|
123
|
+
* True if identifier validator is a serializable numeric identifier validator.
|
|
124
|
+
*/
|
|
125
|
+
export function isSerializableNumericIdentifierValidator(identifierValidator) {
|
|
126
|
+
return isSerializableNumericIdentifierDescriptor(identifierValidator);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Determine if identifier validator is a non-numeric identifier validator.
|
|
130
|
+
*
|
|
131
|
+
* @param identifierValidator
|
|
132
|
+
* Identifier validator.
|
|
133
|
+
*
|
|
134
|
+
* @returns
|
|
135
|
+
* True if identifier validator is a non-numeric identifier validator.
|
|
136
|
+
*/
|
|
137
|
+
export function isNonNumericIdentifierValidator(identifierValidator) {
|
|
138
|
+
return isNonNumericIdentifierDescriptor(identifierValidator);
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,oCAAoC,EACpC,gCAAgC,EAChC,6BAA6B,EAC7B,yCAAyC,EAC5C,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAuB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAE/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAGtF,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAExG;;GAEG;AACH,MAAM,aAAa,GAAG,IAAI,iCAAiC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAEjF;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,iCAAiC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAEnF;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,sCAAsC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,6BAA6B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,iCAAiC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAEnF;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,sCAAsC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,6BAA6B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,iCAAiC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAEnF;;GAEG;AACH,MAAM,aAAa,GAAG,IAAI,sCAAsC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAEtF;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,6BAA6B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,aAAa,GAAG,IAAI,6BAA6B,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAmC7E;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC5D,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe;IACvC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,aAAa;IACpC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,aAAa;IACpC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc;IACtC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,aAAa;CAC9B,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,+BAA0E;IACvG,OAAO,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,mBAAwC;IACjF,OAAO,6BAA6B,CAAC,mBAAmB,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,mBAAwC;IACpE,OAAO,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mCAAmC,CAAC,mBAAwC;IACxF,OAAO,oCAAoC,CAAC,mBAAmB,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wCAAwC,CAAC,mBAAwC;IAC7F,OAAO,yCAAyC,CAAC,mBAAmB,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAAC,mBAAwC;IACpF,OAAO,gCAAgC,CAAC,mBAAmB,CAAC,CAAC;AACjE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aidc-toolkit/gs1",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.26-beta",
|
|
4
4
|
"description": "GS1 AIDC Toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"homepage": "https://aidc-toolkit.com/",
|
|
8
|
-
"repository":
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/aidc-toolkit/gs1.git"
|
|
11
|
+
},
|
|
9
12
|
"bugs": {
|
|
10
13
|
"url": "https://github.com/aidc-toolkit/gs1/issues"
|
|
11
14
|
},
|
|
@@ -17,18 +20,19 @@
|
|
|
17
20
|
},
|
|
18
21
|
"scripts": {
|
|
19
22
|
"lint": "eslint",
|
|
20
|
-
"
|
|
21
|
-
"build:
|
|
23
|
+
"tsc:core": "tsc --project tsconfig-src.json",
|
|
24
|
+
"build:dev": "rimraf dist && npm run tsc:core -- --declarationMap --sourceMap",
|
|
25
|
+
"build:release": "npm run tsc:core -- --noEmit && tsup",
|
|
22
26
|
"build:doc": "npm run build:dev",
|
|
23
27
|
"test": "vitest run"
|
|
24
28
|
},
|
|
25
29
|
"devDependencies": {
|
|
26
|
-
"@aidc-toolkit/dev": "beta",
|
|
27
|
-
"vitest": "^4.0.
|
|
30
|
+
"@aidc-toolkit/dev": "1.0.26-beta",
|
|
31
|
+
"vitest": "^4.0.15"
|
|
28
32
|
},
|
|
29
33
|
"dependencies": {
|
|
30
|
-
"@aidc-toolkit/core": "beta",
|
|
31
|
-
"@aidc-toolkit/utility": "beta",
|
|
34
|
+
"@aidc-toolkit/core": "1.0.26-beta",
|
|
35
|
+
"@aidc-toolkit/utility": "1.0.26-beta",
|
|
32
36
|
"ts-mixer": "^6.0.4"
|
|
33
37
|
}
|
|
34
38
|
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { CharacterSetCreator } from "@aidc-toolkit/utility";
|
|
2
|
+
import type { IdentifierCreator } from "./identifier-creator.js";
|
|
3
|
+
import type { IdentifierDescriptor } from "./identifier-descriptor.js";
|
|
4
|
+
import type { IdentifierValidation } from "./identifier-validator.js";
|
|
5
|
+
import type { PrefixProvider } from "./prefix-provider.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
|
|
9
|
+
* PrefixProvider | prefix provider}.
|
|
10
|
+
*
|
|
11
|
+
* @template TIdentifierDescriptor
|
|
12
|
+
* Identifier descriptor type.
|
|
13
|
+
*
|
|
14
|
+
* @template TIdentifierValidation
|
|
15
|
+
* Identifier validation type.
|
|
16
|
+
*/
|
|
17
|
+
export abstract class AbstractIdentifierCreator<TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation> implements IdentifierCreator<TIdentifierDescriptor, TIdentifierValidation> {
|
|
18
|
+
/**
|
|
19
|
+
* Prefix provider.
|
|
20
|
+
*/
|
|
21
|
+
private _prefixProvider!: PrefixProvider;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Reference length.
|
|
25
|
+
*/
|
|
26
|
+
private _referenceLength!: number;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Initialize the prefix provider. This method is in lieu of a constructor due to the mixin architecture.
|
|
30
|
+
*
|
|
31
|
+
* @param prefixProvider
|
|
32
|
+
* Prefix provider.
|
|
33
|
+
*
|
|
34
|
+
* @param prefix
|
|
35
|
+
* Prefix within prefix provider to use to calculate reference length.
|
|
36
|
+
*
|
|
37
|
+
* @param checkAllowance
|
|
38
|
+
* Number of characters to allow for check digit or check character pair.
|
|
39
|
+
*/
|
|
40
|
+
protected init(prefixProvider: PrefixProvider, prefix: string, checkAllowance: number): void {
|
|
41
|
+
this._prefixProvider = prefixProvider;
|
|
42
|
+
|
|
43
|
+
// Reference length allows for prefix and optionally check digit or check character pair.
|
|
44
|
+
this._referenceLength = this.length - prefix.length - checkAllowance;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @inheritDoc
|
|
49
|
+
*/
|
|
50
|
+
abstract get identifierType(): TIdentifierDescriptor["identifierType"];
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @inheritDoc
|
|
54
|
+
*/
|
|
55
|
+
abstract get prefixType(): TIdentifierDescriptor["prefixType"];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @inheritDoc
|
|
59
|
+
*/
|
|
60
|
+
abstract get length(): number;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @inheritDoc
|
|
64
|
+
*/
|
|
65
|
+
abstract get referenceCharacterSet(): TIdentifierDescriptor["referenceCharacterSet"];
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @inheritDoc
|
|
69
|
+
*/
|
|
70
|
+
abstract get referenceCreator(): CharacterSetCreator;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @inheritDoc
|
|
74
|
+
*/
|
|
75
|
+
get prefixProvider(): PrefixProvider {
|
|
76
|
+
return this._prefixProvider;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @inheritDoc
|
|
81
|
+
*/
|
|
82
|
+
get prefix(): string {
|
|
83
|
+
return this.prefixProvider.gs1CompanyPrefix;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @inheritDoc
|
|
88
|
+
*/
|
|
89
|
+
get referenceLength(): number {
|
|
90
|
+
return this._referenceLength;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @inheritDoc
|
|
95
|
+
*/
|
|
96
|
+
abstract validate(identifier: string, validation?: TIdentifierValidation): void;
|
|
97
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { type CharacterSetCreator, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
|
|
2
|
+
import { AI39_CREATOR, AI82_CREATOR } from "./character-set.js";
|
|
3
|
+
import { type ContentCharacterSet, ContentCharacterSets } from "./content-character-set.js";
|
|
4
|
+
import type { IdentifierDescriptor } from "./identifier-descriptor.js";
|
|
5
|
+
import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
|
|
6
|
+
import { PrefixTypes } from "./prefix-type.js";
|
|
7
|
+
import { PrefixValidator } from "./prefix-validator.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Abstract identifier validator. Implements common functionality for an identifier validator.
|
|
11
|
+
*
|
|
12
|
+
* @template TIdentifierDescriptor
|
|
13
|
+
* Identifier descriptor type.
|
|
14
|
+
*
|
|
15
|
+
* @template TIdentifierValidation
|
|
16
|
+
* Identifier validation type.
|
|
17
|
+
*/
|
|
18
|
+
export abstract class AbstractIdentifierValidator<TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation> implements IdentifierValidator<TIdentifierDescriptor, TIdentifierValidation> {
|
|
19
|
+
private static readonly CHARACTER_SET_CREATORS: Record<ContentCharacterSet, CharacterSetCreator> = {
|
|
20
|
+
[ContentCharacterSets.Numeric]: NUMERIC_CREATOR,
|
|
21
|
+
[ContentCharacterSets.AI82]: AI82_CREATOR,
|
|
22
|
+
[ContentCharacterSets.AI39]: AI39_CREATOR
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Identifier type.
|
|
27
|
+
*/
|
|
28
|
+
private readonly _identifierType: TIdentifierDescriptor["identifierType"];
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Length.
|
|
32
|
+
*/
|
|
33
|
+
private readonly _length: number;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Reference character set.
|
|
37
|
+
*/
|
|
38
|
+
private readonly _referenceCharacterSet: TIdentifierDescriptor["referenceCharacterSet"];
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Reference creator.
|
|
42
|
+
*/
|
|
43
|
+
private readonly _referenceCreator: CharacterSetCreator;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Get the character set creator for a character set.
|
|
47
|
+
*
|
|
48
|
+
* @param characterSet
|
|
49
|
+
* Character set.
|
|
50
|
+
*
|
|
51
|
+
* @returns
|
|
52
|
+
* Character set creator.
|
|
53
|
+
*/
|
|
54
|
+
protected static creatorFor(characterSet: ContentCharacterSet): CharacterSetCreator {
|
|
55
|
+
return AbstractIdentifierValidator.CHARACTER_SET_CREATORS[characterSet];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Constructor.
|
|
60
|
+
*
|
|
61
|
+
* @param identifierDescriptor
|
|
62
|
+
* Identifier descriptor.
|
|
63
|
+
*/
|
|
64
|
+
protected constructor(identifierDescriptor: IdentifierDescriptor) {
|
|
65
|
+
this._identifierType = identifierDescriptor.identifierType;
|
|
66
|
+
this._length = identifierDescriptor.length;
|
|
67
|
+
this._referenceCharacterSet = identifierDescriptor.referenceCharacterSet;
|
|
68
|
+
this._referenceCreator = AbstractIdentifierValidator.creatorFor(identifierDescriptor.referenceCharacterSet);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @inheritDoc
|
|
73
|
+
*/
|
|
74
|
+
get identifierType(): TIdentifierDescriptor["identifierType"] {
|
|
75
|
+
return this._identifierType;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @inheritDoc
|
|
80
|
+
*/
|
|
81
|
+
get prefixType(): TIdentifierDescriptor["prefixType"] {
|
|
82
|
+
// All identifier types except GTIN support only the GS1 Company Prefix.
|
|
83
|
+
return PrefixTypes.GS1CompanyPrefix;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @inheritDoc
|
|
88
|
+
*/
|
|
89
|
+
get length(): number {
|
|
90
|
+
return this._length;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @inheritDoc
|
|
95
|
+
*/
|
|
96
|
+
get referenceCharacterSet(): TIdentifierDescriptor["referenceCharacterSet"] {
|
|
97
|
+
return this._referenceCharacterSet;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @inheritDoc
|
|
102
|
+
*/
|
|
103
|
+
get referenceCreator(): CharacterSetCreator {
|
|
104
|
+
return this._referenceCreator;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Pad an identifier on the left with zero-value character for validation purposes. This is done to align an
|
|
109
|
+
* identifier with a position offset for any error message that may be thrown by the reference validator.
|
|
110
|
+
*
|
|
111
|
+
* @param identifier
|
|
112
|
+
* Identifier.
|
|
113
|
+
*
|
|
114
|
+
* @param positionOffset
|
|
115
|
+
* Position offset within a larger string.
|
|
116
|
+
*
|
|
117
|
+
* @returns
|
|
118
|
+
* Padded identifier.
|
|
119
|
+
*/
|
|
120
|
+
protected padIdentifier(identifier: string, positionOffset?: number): string {
|
|
121
|
+
// Identifier is returned as is if position offset is undefined.
|
|
122
|
+
return positionOffset === undefined ? identifier : this.referenceCreator.character(0).repeat(positionOffset).concat(identifier);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Validate the prefix within an identifier.
|
|
127
|
+
*
|
|
128
|
+
* @param partialIdentifier
|
|
129
|
+
* Partial identifier.
|
|
130
|
+
*
|
|
131
|
+
* @param positionOffset
|
|
132
|
+
* Position offset within a larger string.
|
|
133
|
+
*/
|
|
134
|
+
protected validatePrefix(partialIdentifier: string, positionOffset?: number): void {
|
|
135
|
+
// Delegate to prefix validator with support for U.P.C. Company Prefix but not GS1-8 Prefix.
|
|
136
|
+
PrefixValidator.validate(this.prefixType, true, false, partialIdentifier, true, this.referenceCharacterSet === ContentCharacterSets.Numeric, positionOffset);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
abstract validate(identifier: string, validation?: TIdentifierValidation): void;
|
|
140
|
+
}
|