@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
|
@@ -1,25 +1,11 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Used in JSDoc.
|
|
1
2
|
import { mapIterable } from "@aidc-toolkit/utility";
|
|
2
|
-
import {
|
|
3
|
-
import { AbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
|
|
3
|
+
import { MixinAbstractNonGTINNumericIdentifierCreator } from "./abstract-non-gtin-numeric-identifier-creator.js";
|
|
4
4
|
import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
|
|
5
5
|
/**
|
|
6
6
|
* Serializable numeric identifier creator.
|
|
7
7
|
*/
|
|
8
|
-
export class SerializableNumericIdentifierCreator extends
|
|
9
|
-
/**
|
|
10
|
-
* Constructor. Typically called internally by a prefix manager but may be called by other code with another prefix
|
|
11
|
-
* provider type.
|
|
12
|
-
*
|
|
13
|
-
* @param prefixProvider
|
|
14
|
-
* Prefix provider.
|
|
15
|
-
*
|
|
16
|
-
* @param identifierType
|
|
17
|
-
* Identifier type.
|
|
18
|
-
*/
|
|
19
|
-
constructor(prefixProvider, identifierType) {
|
|
20
|
-
super(identifierType);
|
|
21
|
-
this.init(prefixProvider, prefixProvider.gs1CompanyPrefix);
|
|
22
|
-
}
|
|
8
|
+
export class SerializableNumericIdentifierCreator extends MixinAbstractNonGTINNumericIdentifierCreator(SerializableNumericIdentifierValidator) {
|
|
23
9
|
/**
|
|
24
10
|
* Concatenate a validated base identifier with serial component(s).
|
|
25
11
|
*
|
|
@@ -35,7 +21,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
35
21
|
* @returns
|
|
36
22
|
* Serialized identifier(s).
|
|
37
23
|
*/
|
|
38
|
-
concatenateValidated(baseIdentifier, serialComponentOrComponents) {
|
|
24
|
+
#concatenateValidated(baseIdentifier, serialComponentOrComponents) {
|
|
39
25
|
// TODO Refactor type when https://github.com/microsoft/TypeScript/pull/56941 released.
|
|
40
26
|
let result;
|
|
41
27
|
const serialComponentCreator = this.serialComponentCreator;
|
|
@@ -64,7 +50,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
64
50
|
}
|
|
65
51
|
/**
|
|
66
52
|
* Create serialized identifier(s) with a reference based on a numeric value concatenated with serial component(s).
|
|
67
|
-
* The value is converted to a reference of the appropriate length using
|
|
53
|
+
* The value is converted to a reference of the appropriate length using {@linkcode NUMERIC_CREATOR}.
|
|
68
54
|
*
|
|
69
55
|
* @template TTransformerInput
|
|
70
56
|
* Transformer input type.
|
|
@@ -82,7 +68,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
82
68
|
* Serialized identifiers.
|
|
83
69
|
*/
|
|
84
70
|
createSerialized(value, serialComponentOrComponents, sparse) {
|
|
85
|
-
return this
|
|
71
|
+
return this.#concatenateValidated(this.create(value, sparse), serialComponentOrComponents);
|
|
86
72
|
}
|
|
87
73
|
/**
|
|
88
74
|
* Concatenate a base identifier with serial component(s).
|
|
@@ -101,7 +87,7 @@ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNume
|
|
|
101
87
|
*/
|
|
102
88
|
concatenate(baseIdentifier, serialComponentOrComponents) {
|
|
103
89
|
this.validate(baseIdentifier);
|
|
104
|
-
return this
|
|
90
|
+
return this.#concatenateValidated(baseIdentifier, serialComponentOrComponents);
|
|
105
91
|
}
|
|
106
92
|
}
|
|
107
93
|
//# sourceMappingURL=serializable-numeric-identifier-creator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializable-numeric-identifier-creator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"serializable-numeric-identifier-creator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAkE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;AAEjH,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAExG;;GAEG;AACH,MAAM,OAAO,oCAAqC,SAAQ,4CAA4C,CAEpG,sCAAsC,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,qBAAqB,CAAqD,cAAsB,EAAE,2BAA8C;QAC5I,uFAAuF;QACvF,IAAI,MAAiC,CAAC;QAEtC,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC3D,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QAEjE;;;;;;;;WAQG;QACH,SAAS,sBAAsB,CAAC,eAAuB;YACnD,sBAAsB,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;YAE5E,OAAO,cAAc,GAAG,eAAe,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,2BAA2B,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,GAAG,sBAAsB,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,WAAW,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;QAC9E,CAAC;QAED,+GAA+G;QAC/G,OAAO,MAAsD,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAqD,KAAa,EAAE,2BAA8C,EAAE,MAAgB;QAChJ,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC/F,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAqD,cAAsB,EAAE,2BAA8C;QAClI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;IACnF,CAAC;CACJ"}
|
|
@@ -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
|
* Serializable numeric identifier descriptor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializable-numeric-identifier-descriptor.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"serializable-numeric-identifier-descriptor.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AACtG,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,uCAAwC,SAAQ,kCAAkC;IAC/F;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,iCAAiC,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;CAC7D"}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Serializable numeric identifier types.
|
|
3
|
+
*/
|
|
4
|
+
export declare const SerializableNumericIdentifierTypes: Omit<Omit<Pick<{
|
|
5
|
+
readonly GTIN: "GTIN";
|
|
6
|
+
readonly GLN: "GLN";
|
|
7
|
+
readonly SSCC: "SSCC";
|
|
8
|
+
readonly GRAI: "GRAI";
|
|
9
|
+
readonly GIAI: "GIAI";
|
|
10
|
+
readonly GSRN: "GSRN";
|
|
11
|
+
readonly GDTI: "GDTI";
|
|
12
|
+
readonly GINC: "GINC";
|
|
13
|
+
readonly GSIN: "GSIN";
|
|
14
|
+
readonly GCN: "GCN";
|
|
15
|
+
readonly CPID: "CPID";
|
|
16
|
+
readonly GMN: "GMN";
|
|
17
|
+
}, "GTIN" | "GLN" | "SSCC" | "GRAI" | "GSRN" | "GDTI" | "GSIN" | "GCN">, "GTIN">, "GLN" | "SSCC" | "GSRN" | "GSIN">;
|
|
18
|
+
/**
|
|
19
|
+
* Serializable numeric identifier type key.
|
|
20
|
+
*/
|
|
21
|
+
export type SerializableNumericIdentifierTypeKey = keyof typeof SerializableNumericIdentifierTypes;
|
|
2
22
|
/**
|
|
3
23
|
* Serializable numeric identifier type.
|
|
4
24
|
*/
|
|
5
|
-
export type SerializableNumericIdentifierType = typeof
|
|
25
|
+
export type SerializableNumericIdentifierType = typeof SerializableNumericIdentifierTypes[SerializableNumericIdentifierTypeKey];
|
|
6
26
|
//# sourceMappingURL=serializable-numeric-identifier-type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializable-numeric-identifier-type.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serializable-numeric-identifier-type.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;mHAAgF,CAAC;AAEhI;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAAG,MAAM,OAAO,kCAAkC,CAAC;AAEnG;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,OAAO,kCAAkC,CAAC,oCAAoC,CAAC,CAAC"}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
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
|
+
* Serializable numeric identifier types.
|
|
6
|
+
*/
|
|
7
|
+
export const SerializableNumericIdentifierTypes = exclude(NonGTINNumericIdentifierTypes, NonSerializableNumericIdentifierTypes);
|
|
2
8
|
//# sourceMappingURL=serializable-numeric-identifier-type.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializable-numeric-identifier-type.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"serializable-numeric-identifier-type.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAC;AAEtG;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAO,CAAC,6BAA6B,EAAE,qCAAqC,CAAC,CAAC"}
|
|
@@ -1,30 +1,15 @@
|
|
|
1
1
|
import type { CharacterSetCreator, CharacterSetValidation } from "@aidc-toolkit/utility";
|
|
2
|
-
import { AbstractNumericIdentifierValidator } from "./abstract-numeric-identifier-validator.js";
|
|
3
2
|
import type { ContentCharacterSet } from "./content-character-set.js";
|
|
4
3
|
import type { IdentifierValidation } from "./identifier-validator.js";
|
|
4
|
+
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
5
5
|
import type { SerializableNumericIdentifierDescriptor } from "./serializable-numeric-identifier-descriptor.js";
|
|
6
6
|
import type { SerializableNumericIdentifierType } from "./serializable-numeric-identifier-type.js";
|
|
7
7
|
/**
|
|
8
8
|
* Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
|
|
9
9
|
* that support serialization.
|
|
10
10
|
*/
|
|
11
|
-
export declare class SerializableNumericIdentifierValidator extends
|
|
12
|
-
|
|
13
|
-
* Serial component length.
|
|
14
|
-
*/
|
|
15
|
-
private readonly _serialComponentLength;
|
|
16
|
-
/**
|
|
17
|
-
* Serial component character set.
|
|
18
|
-
*/
|
|
19
|
-
private readonly _serialComponentCharacterSet;
|
|
20
|
-
/**
|
|
21
|
-
* Serial component validation parameters.
|
|
22
|
-
*/
|
|
23
|
-
private readonly _serialComponentValidation;
|
|
24
|
-
/**
|
|
25
|
-
* Serial component creator.
|
|
26
|
-
*/
|
|
27
|
-
private readonly _serialComponentCreator;
|
|
11
|
+
export declare class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator<SerializableNumericIdentifierType> implements SerializableNumericIdentifierDescriptor {
|
|
12
|
+
#private;
|
|
28
13
|
/**
|
|
29
14
|
* Constructor.
|
|
30
15
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializable-numeric-identifier-validator.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"serializable-numeric-identifier-validator.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,iDAAiD,CAAC;AAC/G,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAEnG;;;GAGG;AACH,qBAAa,sCAAuC,SAAQ,iCAAiC,CAAC,iCAAiC,CAAE,YAAW,uCAAuC;;IAqB/K;;;;;OAKG;gBACS,cAAc,EAAE,iCAAiC;IAiB7D;;OAEG;IACH,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED;;OAEG;IACH,IAAI,2BAA2B,IAAI,mBAAmB,CAErD;IAED;;OAEG;IACH,SAAS,KAAK,yBAAyB,IAAI,sBAAsB,CAEhE;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,mBAAmB,CAEhD;IAED;;OAEG;IACM,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI;CAOjF"}
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IdentifierDescriptors } from "./descriptors.js";
|
|
1
|
+
import { CONTENT_CHARACTER_SET_CREATORS } from "./content-character-set-creators.js";
|
|
2
|
+
import { IdentifierDescriptors } from "./identifier-descriptors.js";
|
|
3
3
|
import { i18nextGS1 } from "./locale/i18n.js";
|
|
4
|
+
import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
4
5
|
/**
|
|
5
6
|
* Serializable numeric identifier validator. Validates both serialized and non-serialized forms of numeric identifiers
|
|
6
7
|
* that support serialization.
|
|
7
8
|
*/
|
|
8
|
-
export class SerializableNumericIdentifierValidator extends
|
|
9
|
+
export class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator {
|
|
9
10
|
/**
|
|
10
11
|
* Serial component length.
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
#serialComponentLength;
|
|
13
14
|
/**
|
|
14
15
|
* Serial component character set.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
+
#serialComponentCharacterSet;
|
|
17
18
|
/**
|
|
18
19
|
* Serial component validation parameters.
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
|
+
#serialComponentValidation;
|
|
21
22
|
/**
|
|
22
23
|
* Serial component creator.
|
|
23
24
|
*/
|
|
24
|
-
|
|
25
|
+
#serialComponentCreator;
|
|
25
26
|
/**
|
|
26
27
|
* Constructor.
|
|
27
28
|
*
|
|
@@ -31,38 +32,38 @@ export class SerializableNumericIdentifierValidator extends AbstractNumericIdent
|
|
|
31
32
|
constructor(identifierType) {
|
|
32
33
|
const identifierDescriptor = IdentifierDescriptors[identifierType];
|
|
33
34
|
super(identifierDescriptor);
|
|
34
|
-
this
|
|
35
|
-
this
|
|
36
|
-
this
|
|
35
|
+
this.#serialComponentLength = identifierDescriptor.serialComponentLength;
|
|
36
|
+
this.#serialComponentCharacterSet = identifierDescriptor.serialComponentCharacterSet;
|
|
37
|
+
this.#serialComponentValidation = {
|
|
37
38
|
minimumLength: 1,
|
|
38
39
|
maximumLength: identifierDescriptor.serialComponentLength,
|
|
39
40
|
component: () => i18nextGS1.t("Identifier.serialComponent")
|
|
40
41
|
};
|
|
41
|
-
this
|
|
42
|
+
this.#serialComponentCreator = CONTENT_CHARACTER_SET_CREATORS[identifierDescriptor.serialComponentCharacterSet];
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* Get the serial component length.
|
|
45
46
|
*/
|
|
46
47
|
get serialComponentLength() {
|
|
47
|
-
return this
|
|
48
|
+
return this.#serialComponentLength;
|
|
48
49
|
}
|
|
49
50
|
/**
|
|
50
51
|
* Get the serial component character set.
|
|
51
52
|
*/
|
|
52
53
|
get serialComponentCharacterSet() {
|
|
53
|
-
return this
|
|
54
|
+
return this.#serialComponentCharacterSet;
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
57
|
* Get the serial component validation parameters.
|
|
57
58
|
*/
|
|
58
59
|
get serialComponentValidation() {
|
|
59
|
-
return this
|
|
60
|
+
return this.#serialComponentValidation;
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
63
|
* Get the serial component creator.
|
|
63
64
|
*/
|
|
64
65
|
get serialComponentCreator() {
|
|
65
|
-
return this
|
|
66
|
+
return this.#serialComponentCreator;
|
|
66
67
|
}
|
|
67
68
|
/**
|
|
68
69
|
* @inheritDoc
|
|
@@ -70,7 +71,7 @@ export class SerializableNumericIdentifierValidator extends AbstractNumericIdent
|
|
|
70
71
|
validate(identifier, validation) {
|
|
71
72
|
super.validate(identifier.substring(0, this.length), validation);
|
|
72
73
|
if (identifier.length > this.length) {
|
|
73
|
-
this.serialComponentCreator.validate(identifier.substring(this.length), this
|
|
74
|
+
this.serialComponentCreator.validate(identifier.substring(this.length), this.#serialComponentValidation);
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializable-numeric-identifier-validator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"serializable-numeric-identifier-validator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAI/F;;;GAGG;AACH,MAAM,OAAO,sCAAuC,SAAQ,iCAAoE;IAC5H;;OAEG;IACM,sBAAsB,CAAS;IAExC;;OAEG;IACM,4BAA4B,CAAsB;IAE3D;;OAEG;IACM,0BAA0B,CAAyB;IAE5D;;OAEG;IACM,uBAAuB,CAAsB;IAEtD;;;;;OAKG;IACH,YAAY,cAAiD;QACzD,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAEnE,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE5B,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,qBAAqB,CAAC;QACzE,IAAI,CAAC,4BAA4B,GAAG,oBAAoB,CAAC,2BAA2B,CAAC;QAErF,IAAI,CAAC,0BAA0B,GAAG;YAC9B,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,oBAAoB,CAAC,qBAAqB;YACzD,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC;SAC9D,CAAC;QAEF,IAAI,CAAC,uBAAuB,GAAG,8BAA8B,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACpH,CAAC;IAED;;OAEG;IACH,IAAI,qBAAqB;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,2BAA2B;QAC3B,OAAO,IAAI,CAAC,4BAA4B,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAc,yBAAyB;QACnC,OAAO,IAAI,CAAC,0BAA0B,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI,sBAAsB;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IAED;;OAEG;IACM,QAAQ,CAAC,UAAkB,EAAE,UAAiC;QACnE,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QAEjE,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aidc-toolkit/gs1",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28-beta",
|
|
4
4
|
"description": "GS1 AIDC Toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,12 +27,11 @@
|
|
|
27
27
|
"test": "vitest run"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@aidc-toolkit/dev": "1.0.
|
|
30
|
+
"@aidc-toolkit/dev": "1.0.28-beta",
|
|
31
31
|
"vitest": "^4.0.15"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@aidc-toolkit/core": "1.0.
|
|
35
|
-
"@aidc-toolkit/utility": "1.0.
|
|
36
|
-
"ts-mixer": "^6.0.4"
|
|
34
|
+
"@aidc-toolkit/core": "1.0.28-beta",
|
|
35
|
+
"@aidc-toolkit/utility": "1.0.28-beta"
|
|
37
36
|
}
|
|
38
37
|
}
|
|
@@ -1,97 +1,126 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AbstractConstructor } from "@aidc-toolkit/core";
|
|
2
2
|
import type { IdentifierCreator } from "./identifier-creator.js";
|
|
3
|
-
import type {
|
|
4
|
-
import type { IdentifierValidation } from "./identifier-validator.js";
|
|
3
|
+
import type { IdentifierType } from "./identifier-type.js";
|
|
4
|
+
import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
|
|
5
|
+
import type { IdentifierTypeValidator, IdentifierValidatorConstructorsEntry } from "./identifier-validators.js";
|
|
5
6
|
import type { PrefixProvider } from "./prefix-provider.js";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
-
* PrefixProvider | prefix provider}.
|
|
9
|
+
* Identifier creator constructor type, which delegates to an identifier validator constructor.
|
|
10
10
|
*
|
|
11
|
-
* @template
|
|
12
|
-
* Identifier
|
|
11
|
+
* @template TIdentifierType
|
|
12
|
+
* Identifier type type.
|
|
13
13
|
*
|
|
14
14
|
* @template TIdentifierValidation
|
|
15
15
|
* Identifier validation type.
|
|
16
|
+
*
|
|
17
|
+
* @template TIdentifierValidator
|
|
18
|
+
* Identifier validator type.
|
|
16
19
|
*/
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
export type IdentifierCreatorConstructor<
|
|
21
|
+
TIdentifierType extends IdentifierType,
|
|
22
|
+
TIdentifierValidation extends IdentifierValidation,
|
|
23
|
+
TIdentifierValidator extends IdentifierValidator<TIdentifierType, TIdentifierValidation>
|
|
24
|
+
> = AbstractConstructor<
|
|
25
|
+
[prefixProvider: PrefixProvider, prefix: string, checkAllowance: number, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>],
|
|
26
|
+
TIdentifierValidator & IdentifierCreator<TIdentifierType, TIdentifierValidation>
|
|
27
|
+
>;
|
|
22
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Mixin implementation of {@linkcode IdentifierCreator} with an appropriate identifier validator base.
|
|
31
|
+
*
|
|
32
|
+
* @template TIdentifierType
|
|
33
|
+
* Identifier type type.
|
|
34
|
+
*
|
|
35
|
+
* @template TIdentifierValidation
|
|
36
|
+
* Identifier validation type.
|
|
37
|
+
*
|
|
38
|
+
* @param IdentifierValidatorConstructor
|
|
39
|
+
* Identifier validator base.
|
|
40
|
+
*
|
|
41
|
+
* @returns
|
|
42
|
+
* Identifier creator class.
|
|
43
|
+
*/
|
|
44
|
+
export function MixinAbstractIdentifierCreator<
|
|
45
|
+
TIdentifierType extends IdentifierType,
|
|
46
|
+
TIdentifierValidation extends IdentifierValidation
|
|
47
|
+
>(IdentifierValidatorConstructor: AbstractConstructor<
|
|
48
|
+
ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>,
|
|
49
|
+
IdentifierTypeValidator<TIdentifierType>
|
|
50
|
+
>): IdentifierCreatorConstructor<
|
|
51
|
+
TIdentifierType,
|
|
52
|
+
TIdentifierValidation,
|
|
53
|
+
IdentifierTypeValidator<TIdentifierType>
|
|
54
|
+
> {
|
|
23
55
|
/**
|
|
24
|
-
*
|
|
56
|
+
* Abstract numeric identifier creator. Implements common functionality for a numeric identifier creator, mixed in
|
|
57
|
+
* with a matching numeric identifier validator.
|
|
25
58
|
*/
|
|
26
|
-
|
|
59
|
+
abstract class AbstractIdentifierCreator extends (
|
|
60
|
+
IdentifierValidatorConstructor as AbstractConstructor<
|
|
61
|
+
ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>,
|
|
62
|
+
IdentifierValidator<TIdentifierType>
|
|
63
|
+
>
|
|
64
|
+
) implements IdentifierCreator<TIdentifierType, TIdentifierValidation> {
|
|
65
|
+
/**
|
|
66
|
+
* Prefix provider.
|
|
67
|
+
*/
|
|
68
|
+
readonly #prefixProvider: PrefixProvider;
|
|
27
69
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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;
|
|
70
|
+
/**
|
|
71
|
+
* Reference length.
|
|
72
|
+
*/
|
|
73
|
+
readonly #referenceLength: number;
|
|
42
74
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Constructor.
|
|
77
|
+
*
|
|
78
|
+
* @param prefixProvider
|
|
79
|
+
* Prefix provider.
|
|
80
|
+
*
|
|
81
|
+
* @param prefix
|
|
82
|
+
* Prefix within prefix provider to use to calculate reference length.
|
|
83
|
+
*
|
|
84
|
+
* @param checkAllowance
|
|
85
|
+
* Number of characters to allow for check digit or check character pair.
|
|
86
|
+
*
|
|
87
|
+
* @param args
|
|
88
|
+
* Originating constructor arguments.
|
|
89
|
+
*/
|
|
90
|
+
constructor(prefixProvider: PrefixProvider, prefix: string, checkAllowance: number, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>) {
|
|
91
|
+
super(...args);
|
|
46
92
|
|
|
47
|
-
|
|
48
|
-
* @inheritDoc
|
|
49
|
-
*/
|
|
50
|
-
abstract get identifierType(): TIdentifierDescriptor["identifierType"];
|
|
93
|
+
this.#prefixProvider = prefixProvider;
|
|
51
94
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
abstract get prefixType(): TIdentifierDescriptor["prefixType"];
|
|
95
|
+
// Reference length allows for prefix and optionally check digit or check character pair.
|
|
96
|
+
this.#referenceLength = this.length - prefix.length - checkAllowance;
|
|
97
|
+
}
|
|
56
98
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
}
|
|
99
|
+
/**
|
|
100
|
+
* @inheritDoc
|
|
101
|
+
*/
|
|
102
|
+
get prefixProvider(): PrefixProvider {
|
|
103
|
+
return this.#prefixProvider;
|
|
104
|
+
}
|
|
78
105
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
106
|
+
/**
|
|
107
|
+
* @inheritDoc
|
|
108
|
+
*/
|
|
109
|
+
get prefix(): string {
|
|
110
|
+
return this.prefixProvider.gs1CompanyPrefix;
|
|
111
|
+
}
|
|
85
112
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
113
|
+
/**
|
|
114
|
+
* @inheritDoc
|
|
115
|
+
*/
|
|
116
|
+
get referenceLength(): number {
|
|
117
|
+
return this.#referenceLength;
|
|
118
|
+
}
|
|
91
119
|
}
|
|
92
120
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
|
|
122
|
+
return AbstractIdentifierCreator as AbstractConstructor<
|
|
123
|
+
ConstructorParameters<typeof AbstractIdentifierCreator>,
|
|
124
|
+
IdentifierTypeValidator<TIdentifierType> & AbstractIdentifierCreator
|
|
125
|
+
>;
|
|
97
126
|
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { AbstractConstructor } from "@aidc-toolkit/core";
|
|
2
|
+
import {
|
|
3
|
+
MixinAbstractNumericIdentifierCreator,
|
|
4
|
+
type NumericIdentifierCreatorConstructor
|
|
5
|
+
} from "./abstract-numeric-identifier-creator.js";
|
|
6
|
+
import type { IdentifierTypeValidator, IdentifierValidatorConstructorsEntry } from "./identifier-validators.js";
|
|
7
|
+
import type { NonGTINNumericIdentifierCreator } from "./non-gtin-numeric-identifier-creator.js";
|
|
8
|
+
import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
|
|
9
|
+
import type { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
|
|
10
|
+
import type { PrefixProvider } from "./prefix-provider.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Non-GTIN numeric identifier creator constructor type, which delegates to a non-GTIN numeric identifier validator
|
|
14
|
+
* constructor.
|
|
15
|
+
*
|
|
16
|
+
* @template TNonGTINNumericIdentifierType
|
|
17
|
+
* Non-GTIN numeric identifier type type.
|
|
18
|
+
*
|
|
19
|
+
* @template TNonGTINNumericIdentifierValidator
|
|
20
|
+
* Non-GTIN numeric identifier validator type.
|
|
21
|
+
*/
|
|
22
|
+
type NonGTINNumericIdentifierCreatorConstructor<
|
|
23
|
+
TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType,
|
|
24
|
+
TNonGTINNumericIdentifierValidator extends NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>
|
|
25
|
+
> = AbstractConstructor<
|
|
26
|
+
[prefixProvider: PrefixProvider, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>],
|
|
27
|
+
TNonGTINNumericIdentifierValidator & NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType>
|
|
28
|
+
>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Mixin implementation of {@linkcode NonGTINNumericIdentifierCreator} with an appropriate non-GTIN numeric identifier
|
|
32
|
+
* validator base.
|
|
33
|
+
*
|
|
34
|
+
* @template TNonGTINNumericIdentifierType
|
|
35
|
+
* Non-GTIN numeric identifier type type.
|
|
36
|
+
*
|
|
37
|
+
* @param NonGTINNumericIdentifierValidatorConstructor
|
|
38
|
+
* Non-GTIN numeric identifier validator constructor.
|
|
39
|
+
*
|
|
40
|
+
* @returns
|
|
41
|
+
* Non-GTIN numeric identifier creator class.
|
|
42
|
+
*/
|
|
43
|
+
export function MixinAbstractNonGTINNumericIdentifierCreator<
|
|
44
|
+
TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType
|
|
45
|
+
>(NonGTINNumericIdentifierValidatorConstructor: AbstractConstructor<
|
|
46
|
+
ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>,
|
|
47
|
+
IdentifierTypeValidator<TNonGTINNumericIdentifierType>
|
|
48
|
+
>): NonGTINNumericIdentifierCreatorConstructor<
|
|
49
|
+
TNonGTINNumericIdentifierType,
|
|
50
|
+
IdentifierTypeValidator<TNonGTINNumericIdentifierType>
|
|
51
|
+
> {
|
|
52
|
+
/**
|
|
53
|
+
* Abstract non-GTIN numeric identifier creator. Implements common functionality for a non-GTIN numeric identifier
|
|
54
|
+
* creator, mixed in with a matching non-GTIN numeric identifier validator.
|
|
55
|
+
*/
|
|
56
|
+
abstract class AbstractNonGTINNumericIdentifierCreator extends (
|
|
57
|
+
MixinAbstractNumericIdentifierCreator(NonGTINNumericIdentifierValidatorConstructor) as NumericIdentifierCreatorConstructor<
|
|
58
|
+
TNonGTINNumericIdentifierType,
|
|
59
|
+
NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>
|
|
60
|
+
>
|
|
61
|
+
) implements NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType> {
|
|
62
|
+
/**
|
|
63
|
+
* Constructor.
|
|
64
|
+
*
|
|
65
|
+
* @param prefixProvider
|
|
66
|
+
* Prefix provider.
|
|
67
|
+
*
|
|
68
|
+
* @param args
|
|
69
|
+
* Originating constructor arguments.
|
|
70
|
+
*/
|
|
71
|
+
constructor(prefixProvider: PrefixProvider, ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>) {
|
|
72
|
+
super(prefixProvider, prefixProvider.gs1CompanyPrefix, ...args);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
|
|
77
|
+
return AbstractNonGTINNumericIdentifierCreator as AbstractConstructor<
|
|
78
|
+
ConstructorParameters<typeof AbstractNonGTINNumericIdentifierCreator>,
|
|
79
|
+
IdentifierTypeValidator<TNonGTINNumericIdentifierType> & AbstractNonGTINNumericIdentifierCreator
|
|
80
|
+
>;
|
|
81
|
+
}
|