@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,75 @@
|
|
|
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
|
+
* Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
|
|
8
|
+
* PrefixProvider | prefix provider}.
|
|
9
|
+
*
|
|
10
|
+
* @template TIdentifierDescriptor
|
|
11
|
+
* Identifier descriptor type.
|
|
12
|
+
*
|
|
13
|
+
* @template TIdentifierValidation
|
|
14
|
+
* Identifier validation type.
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class AbstractIdentifierCreator<TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation> implements IdentifierCreator<TIdentifierDescriptor, TIdentifierValidation> {
|
|
17
|
+
/**
|
|
18
|
+
* Prefix provider.
|
|
19
|
+
*/
|
|
20
|
+
private _prefixProvider;
|
|
21
|
+
/**
|
|
22
|
+
* Reference length.
|
|
23
|
+
*/
|
|
24
|
+
private _referenceLength;
|
|
25
|
+
/**
|
|
26
|
+
* Initialize the prefix provider. This method is in lieu of a constructor due to the mixin architecture.
|
|
27
|
+
*
|
|
28
|
+
* @param prefixProvider
|
|
29
|
+
* Prefix provider.
|
|
30
|
+
*
|
|
31
|
+
* @param prefix
|
|
32
|
+
* Prefix within prefix provider to use to calculate reference length.
|
|
33
|
+
*
|
|
34
|
+
* @param checkAllowance
|
|
35
|
+
* Number of characters to allow for check digit or check character pair.
|
|
36
|
+
*/
|
|
37
|
+
protected init(prefixProvider: PrefixProvider, prefix: string, checkAllowance: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* @inheritDoc
|
|
40
|
+
*/
|
|
41
|
+
abstract get identifierType(): TIdentifierDescriptor["identifierType"];
|
|
42
|
+
/**
|
|
43
|
+
* @inheritDoc
|
|
44
|
+
*/
|
|
45
|
+
abstract get prefixType(): TIdentifierDescriptor["prefixType"];
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
49
|
+
abstract get length(): number;
|
|
50
|
+
/**
|
|
51
|
+
* @inheritDoc
|
|
52
|
+
*/
|
|
53
|
+
abstract get referenceCharacterSet(): TIdentifierDescriptor["referenceCharacterSet"];
|
|
54
|
+
/**
|
|
55
|
+
* @inheritDoc
|
|
56
|
+
*/
|
|
57
|
+
abstract get referenceCreator(): CharacterSetCreator;
|
|
58
|
+
/**
|
|
59
|
+
* @inheritDoc
|
|
60
|
+
*/
|
|
61
|
+
get prefixProvider(): PrefixProvider;
|
|
62
|
+
/**
|
|
63
|
+
* @inheritDoc
|
|
64
|
+
*/
|
|
65
|
+
get prefix(): string;
|
|
66
|
+
/**
|
|
67
|
+
* @inheritDoc
|
|
68
|
+
*/
|
|
69
|
+
get referenceLength(): number;
|
|
70
|
+
/**
|
|
71
|
+
* @inheritDoc
|
|
72
|
+
*/
|
|
73
|
+
abstract validate(identifier: string, validation?: TIdentifierValidation): void;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=abstract-identifier-creator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-identifier-creator.d.ts","sourceRoot":"","sources":["../src/abstract-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;GASG;AACH,8BAAsB,yBAAyB,CAAC,qBAAqB,SAAS,oBAAoB,EAAE,qBAAqB,SAAS,oBAAoB,CAAE,YAAW,iBAAiB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC9N;;OAEG;IACH,OAAO,CAAC,eAAe,CAAkB;IAEzC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAU;IAElC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAO5F;;OAEG;IACH,QAAQ,KAAK,cAAc,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAEvE;;OAEG;IACH,QAAQ,KAAK,UAAU,IAAI,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAE/D;;OAEG;IACH,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC;IAE9B;;OAEG;IACH,QAAQ,KAAK,qBAAqB,IAAI,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IAErF;;OAEG;IACH,QAAQ,KAAK,gBAAgB,IAAI,mBAAmB,CAAC;IAErD;;OAEG;IACH,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,qBAAqB,GAAG,IAAI;CAClF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
|
|
3
|
+
* PrefixProvider | prefix provider}.
|
|
4
|
+
*
|
|
5
|
+
* @template TIdentifierDescriptor
|
|
6
|
+
* Identifier descriptor type.
|
|
7
|
+
*
|
|
8
|
+
* @template TIdentifierValidation
|
|
9
|
+
* Identifier validation type.
|
|
10
|
+
*/
|
|
11
|
+
export class AbstractIdentifierCreator {
|
|
12
|
+
/**
|
|
13
|
+
* Prefix provider.
|
|
14
|
+
*/
|
|
15
|
+
_prefixProvider;
|
|
16
|
+
/**
|
|
17
|
+
* Reference length.
|
|
18
|
+
*/
|
|
19
|
+
_referenceLength;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize the prefix provider. This method is in lieu of a constructor due to the mixin architecture.
|
|
22
|
+
*
|
|
23
|
+
* @param prefixProvider
|
|
24
|
+
* Prefix provider.
|
|
25
|
+
*
|
|
26
|
+
* @param prefix
|
|
27
|
+
* Prefix within prefix provider to use to calculate reference length.
|
|
28
|
+
*
|
|
29
|
+
* @param checkAllowance
|
|
30
|
+
* Number of characters to allow for check digit or check character pair.
|
|
31
|
+
*/
|
|
32
|
+
init(prefixProvider, prefix, checkAllowance) {
|
|
33
|
+
this._prefixProvider = prefixProvider;
|
|
34
|
+
// Reference length allows for prefix and optionally check digit or check character pair.
|
|
35
|
+
this._referenceLength = this.length - prefix.length - checkAllowance;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @inheritDoc
|
|
39
|
+
*/
|
|
40
|
+
get prefixProvider() {
|
|
41
|
+
return this._prefixProvider;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @inheritDoc
|
|
45
|
+
*/
|
|
46
|
+
get prefix() {
|
|
47
|
+
return this.prefixProvider.gs1CompanyPrefix;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @inheritDoc
|
|
51
|
+
*/
|
|
52
|
+
get referenceLength() {
|
|
53
|
+
return this._referenceLength;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=abstract-identifier-creator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-identifier-creator.js","sourceRoot":"","sources":["../src/abstract-identifier-creator.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,MAAM,OAAgB,yBAAyB;IAC3C;;OAEG;IACK,eAAe,CAAkB;IAEzC;;OAEG;IACK,gBAAgB,CAAU;IAElC;;;;;;;;;;;OAWG;IACO,IAAI,CAAC,cAA8B,EAAE,MAAc,EAAE,cAAsB;QACjF,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QAEtC,yFAAyF;QACzF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;IACzE,CAAC;IA2BD;;OAEG;IACH,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;CAMJ"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type CharacterSetCreator } from "@aidc-toolkit/utility";
|
|
2
|
+
import { type ContentCharacterSet } from "./content-character-set.js";
|
|
3
|
+
import type { IdentifierDescriptor } from "./identifier-descriptor.js";
|
|
4
|
+
import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
|
|
5
|
+
/**
|
|
6
|
+
* Abstract identifier validator. Implements common functionality for an identifier validator.
|
|
7
|
+
*
|
|
8
|
+
* @template TIdentifierDescriptor
|
|
9
|
+
* Identifier descriptor type.
|
|
10
|
+
*
|
|
11
|
+
* @template TIdentifierValidation
|
|
12
|
+
* Identifier validation type.
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class AbstractIdentifierValidator<TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation> implements IdentifierValidator<TIdentifierDescriptor, TIdentifierValidation> {
|
|
15
|
+
private static readonly CHARACTER_SET_CREATORS;
|
|
16
|
+
/**
|
|
17
|
+
* Identifier type.
|
|
18
|
+
*/
|
|
19
|
+
private readonly _identifierType;
|
|
20
|
+
/**
|
|
21
|
+
* Length.
|
|
22
|
+
*/
|
|
23
|
+
private readonly _length;
|
|
24
|
+
/**
|
|
25
|
+
* Reference character set.
|
|
26
|
+
*/
|
|
27
|
+
private readonly _referenceCharacterSet;
|
|
28
|
+
/**
|
|
29
|
+
* Reference creator.
|
|
30
|
+
*/
|
|
31
|
+
private readonly _referenceCreator;
|
|
32
|
+
/**
|
|
33
|
+
* Get the character set creator for a character set.
|
|
34
|
+
*
|
|
35
|
+
* @param characterSet
|
|
36
|
+
* Character set.
|
|
37
|
+
*
|
|
38
|
+
* @returns
|
|
39
|
+
* Character set creator.
|
|
40
|
+
*/
|
|
41
|
+
protected static creatorFor(characterSet: ContentCharacterSet): CharacterSetCreator;
|
|
42
|
+
/**
|
|
43
|
+
* Constructor.
|
|
44
|
+
*
|
|
45
|
+
* @param identifierDescriptor
|
|
46
|
+
* Identifier descriptor.
|
|
47
|
+
*/
|
|
48
|
+
protected constructor(identifierDescriptor: IdentifierDescriptor);
|
|
49
|
+
/**
|
|
50
|
+
* @inheritDoc
|
|
51
|
+
*/
|
|
52
|
+
get identifierType(): TIdentifierDescriptor["identifierType"];
|
|
53
|
+
/**
|
|
54
|
+
* @inheritDoc
|
|
55
|
+
*/
|
|
56
|
+
get prefixType(): TIdentifierDescriptor["prefixType"];
|
|
57
|
+
/**
|
|
58
|
+
* @inheritDoc
|
|
59
|
+
*/
|
|
60
|
+
get length(): number;
|
|
61
|
+
/**
|
|
62
|
+
* @inheritDoc
|
|
63
|
+
*/
|
|
64
|
+
get referenceCharacterSet(): TIdentifierDescriptor["referenceCharacterSet"];
|
|
65
|
+
/**
|
|
66
|
+
* @inheritDoc
|
|
67
|
+
*/
|
|
68
|
+
get referenceCreator(): CharacterSetCreator;
|
|
69
|
+
/**
|
|
70
|
+
* Pad an identifier on the left with zero-value character for validation purposes. This is done to align an
|
|
71
|
+
* identifier with a position offset for any error message that may be thrown by the reference validator.
|
|
72
|
+
*
|
|
73
|
+
* @param identifier
|
|
74
|
+
* Identifier.
|
|
75
|
+
*
|
|
76
|
+
* @param positionOffset
|
|
77
|
+
* Position offset within a larger string.
|
|
78
|
+
*
|
|
79
|
+
* @returns
|
|
80
|
+
* Padded identifier.
|
|
81
|
+
*/
|
|
82
|
+
protected padIdentifier(identifier: string, positionOffset?: number): string;
|
|
83
|
+
/**
|
|
84
|
+
* Validate the prefix within an identifier.
|
|
85
|
+
*
|
|
86
|
+
* @param partialIdentifier
|
|
87
|
+
* Partial identifier.
|
|
88
|
+
*
|
|
89
|
+
* @param positionOffset
|
|
90
|
+
* Position offset within a larger string.
|
|
91
|
+
*/
|
|
92
|
+
protected validatePrefix(partialIdentifier: string, positionOffset?: number): void;
|
|
93
|
+
abstract validate(identifier: string, validation?: TIdentifierValidation): void;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=abstract-identifier-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-identifier-validator.d.ts","sourceRoot":"","sources":["../src/abstract-identifier-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAmB,MAAM,uBAAuB,CAAC;AAElF,OAAO,EAAE,KAAK,mBAAmB,EAAwB,MAAM,4BAA4B,CAAC;AAC5F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAI3F;;;;;;;;GAQG;AACH,8BAAsB,2BAA2B,CAAC,qBAAqB,SAAS,oBAAoB,EAAE,qBAAqB,SAAS,oBAAoB,CAAE,YAAW,mBAAmB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAClO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAI5C;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAE1E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiD;IAExF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IAExD;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,mBAAmB,GAAG,mBAAmB;IAInF;;;;;OAKG;IACH,SAAS,aAAa,oBAAoB,EAAE,oBAAoB;IAOhE;;OAEG;IACH,IAAI,cAAc,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,CAE5D;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,qBAAqB,CAAC,YAAY,CAAC,CAGpD;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,qBAAqB,IAAI,qBAAqB,CAAC,uBAAuB,CAAC,CAE1E;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,mBAAmB,CAE1C;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAK5E;;;;;;;;OAQG;IACH,SAAS,CAAC,cAAc,CAAC,iBAAiB,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlF,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,qBAAqB,GAAG,IAAI;CAClF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { NUMERIC_CREATOR } from "@aidc-toolkit/utility";
|
|
2
|
+
import { AI39_CREATOR, AI82_CREATOR } from "./character-set.js";
|
|
3
|
+
import { ContentCharacterSets } from "./content-character-set.js";
|
|
4
|
+
import { PrefixTypes } from "./prefix-type.js";
|
|
5
|
+
import { PrefixValidator } from "./prefix-validator.js";
|
|
6
|
+
/**
|
|
7
|
+
* Abstract identifier validator. Implements common functionality for an identifier validator.
|
|
8
|
+
*
|
|
9
|
+
* @template TIdentifierDescriptor
|
|
10
|
+
* Identifier descriptor type.
|
|
11
|
+
*
|
|
12
|
+
* @template TIdentifierValidation
|
|
13
|
+
* Identifier validation type.
|
|
14
|
+
*/
|
|
15
|
+
export class AbstractIdentifierValidator {
|
|
16
|
+
static CHARACTER_SET_CREATORS = {
|
|
17
|
+
[ContentCharacterSets.Numeric]: NUMERIC_CREATOR,
|
|
18
|
+
[ContentCharacterSets.AI82]: AI82_CREATOR,
|
|
19
|
+
[ContentCharacterSets.AI39]: AI39_CREATOR
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Identifier type.
|
|
23
|
+
*/
|
|
24
|
+
_identifierType;
|
|
25
|
+
/**
|
|
26
|
+
* Length.
|
|
27
|
+
*/
|
|
28
|
+
_length;
|
|
29
|
+
/**
|
|
30
|
+
* Reference character set.
|
|
31
|
+
*/
|
|
32
|
+
_referenceCharacterSet;
|
|
33
|
+
/**
|
|
34
|
+
* Reference creator.
|
|
35
|
+
*/
|
|
36
|
+
_referenceCreator;
|
|
37
|
+
/**
|
|
38
|
+
* Get the character set creator for a character set.
|
|
39
|
+
*
|
|
40
|
+
* @param characterSet
|
|
41
|
+
* Character set.
|
|
42
|
+
*
|
|
43
|
+
* @returns
|
|
44
|
+
* Character set creator.
|
|
45
|
+
*/
|
|
46
|
+
static creatorFor(characterSet) {
|
|
47
|
+
return AbstractIdentifierValidator.CHARACTER_SET_CREATORS[characterSet];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Constructor.
|
|
51
|
+
*
|
|
52
|
+
* @param identifierDescriptor
|
|
53
|
+
* Identifier descriptor.
|
|
54
|
+
*/
|
|
55
|
+
constructor(identifierDescriptor) {
|
|
56
|
+
this._identifierType = identifierDescriptor.identifierType;
|
|
57
|
+
this._length = identifierDescriptor.length;
|
|
58
|
+
this._referenceCharacterSet = identifierDescriptor.referenceCharacterSet;
|
|
59
|
+
this._referenceCreator = AbstractIdentifierValidator.creatorFor(identifierDescriptor.referenceCharacterSet);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @inheritDoc
|
|
63
|
+
*/
|
|
64
|
+
get identifierType() {
|
|
65
|
+
return this._identifierType;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @inheritDoc
|
|
69
|
+
*/
|
|
70
|
+
get prefixType() {
|
|
71
|
+
// All identifier types except GTIN support only the GS1 Company Prefix.
|
|
72
|
+
return PrefixTypes.GS1CompanyPrefix;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @inheritDoc
|
|
76
|
+
*/
|
|
77
|
+
get length() {
|
|
78
|
+
return this._length;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @inheritDoc
|
|
82
|
+
*/
|
|
83
|
+
get referenceCharacterSet() {
|
|
84
|
+
return this._referenceCharacterSet;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @inheritDoc
|
|
88
|
+
*/
|
|
89
|
+
get referenceCreator() {
|
|
90
|
+
return this._referenceCreator;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Pad an identifier on the left with zero-value character for validation purposes. This is done to align an
|
|
94
|
+
* identifier with a position offset for any error message that may be thrown by the reference validator.
|
|
95
|
+
*
|
|
96
|
+
* @param identifier
|
|
97
|
+
* Identifier.
|
|
98
|
+
*
|
|
99
|
+
* @param positionOffset
|
|
100
|
+
* Position offset within a larger string.
|
|
101
|
+
*
|
|
102
|
+
* @returns
|
|
103
|
+
* Padded identifier.
|
|
104
|
+
*/
|
|
105
|
+
padIdentifier(identifier, positionOffset) {
|
|
106
|
+
// Identifier is returned as is if position offset is undefined.
|
|
107
|
+
return positionOffset === undefined ? identifier : this.referenceCreator.character(0).repeat(positionOffset).concat(identifier);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Validate the prefix within an identifier.
|
|
111
|
+
*
|
|
112
|
+
* @param partialIdentifier
|
|
113
|
+
* Partial identifier.
|
|
114
|
+
*
|
|
115
|
+
* @param positionOffset
|
|
116
|
+
* Position offset within a larger string.
|
|
117
|
+
*/
|
|
118
|
+
validatePrefix(partialIdentifier, positionOffset) {
|
|
119
|
+
// Delegate to prefix validator with support for U.P.C. Company Prefix but not GS1-8 Prefix.
|
|
120
|
+
PrefixValidator.validate(this.prefixType, true, false, partialIdentifier, true, this.referenceCharacterSet === ContentCharacterSets.Numeric, positionOffset);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=abstract-identifier-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-identifier-validator.js","sourceRoot":"","sources":["../src/abstract-identifier-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAA4B,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,OAAgB,2BAA2B;IACrC,MAAM,CAAU,sBAAsB,GAAqD;QAC/F,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe;QAC/C,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,YAAY;QACzC,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,YAAY;KAC5C,CAAC;IAEF;;OAEG;IACc,eAAe,CAA0C;IAE1E;;OAEG;IACc,OAAO,CAAS;IAEjC;;OAEG;IACc,sBAAsB,CAAiD;IAExF;;OAEG;IACc,iBAAiB,CAAsB;IAExD;;;;;;;;OAQG;IACO,MAAM,CAAC,UAAU,CAAC,YAAiC;QACzD,OAAO,2BAA2B,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACH,YAAsB,oBAA0C;QAC5D,IAAI,CAAC,eAAe,GAAG,oBAAoB,CAAC,cAAc,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,qBAAqB,CAAC;QACzE,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,CAAC,UAAU,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IAChH,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACV,wEAAwE;QACxE,OAAO,WAAW,CAAC,gBAAgB,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,qBAAqB;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,aAAa,CAAC,UAAkB,EAAE,cAAuB;QAC/D,gEAAgE;QAChE,OAAO,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpI,CAAC;IAED;;;;;;;;OAQG;IACO,cAAc,CAAC,iBAAyB,EAAE,cAAuB;QACvE,4FAA4F;QAC5F,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,KAAK,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACjK,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { type TransformerInput, type TransformerOutput } from "@aidc-toolkit/utility";
|
|
2
|
+
import { AbstractIdentifierCreator } from "./abstract-identifier-creator.js";
|
|
3
|
+
import type { NumericIdentifierCreator } from "./numeric-identifier-creator.js";
|
|
4
|
+
import type { NumericIdentifierDescriptor } from "./numeric-identifier-descriptor.js";
|
|
5
|
+
import { type LeaderType } from "./numeric-identifier-type.js";
|
|
6
|
+
import type { NumericIdentifierValidation } from "./numeric-identifier-validator.js";
|
|
7
|
+
import type { PrefixProvider } from "./prefix-provider.js";
|
|
8
|
+
/**
|
|
9
|
+
* Abstract numeric identifier creator. Implements common functionality for a numeric identifier creator.
|
|
10
|
+
*
|
|
11
|
+
* @template TNumericIdentifierDescriptor
|
|
12
|
+
* Numeric identifier descriptor type.
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class AbstractNumericIdentifierCreator<TNumericIdentifierDescriptor extends NumericIdentifierDescriptor> extends AbstractIdentifierCreator<TNumericIdentifierDescriptor, NumericIdentifierValidation> implements NumericIdentifierCreator<TNumericIdentifierDescriptor> {
|
|
15
|
+
/**
|
|
16
|
+
* Capacity.
|
|
17
|
+
*/
|
|
18
|
+
private _capacity;
|
|
19
|
+
/**
|
|
20
|
+
* Tweak for sparse creation.
|
|
21
|
+
*/
|
|
22
|
+
private _tweak;
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the prefix provider. This method is in lieu of a constructor due to the mixin architecture.
|
|
25
|
+
*
|
|
26
|
+
* @param prefixProvider
|
|
27
|
+
* Prefix provider.
|
|
28
|
+
*
|
|
29
|
+
* @param prefix
|
|
30
|
+
* Prefix within prefix manager to use to calculate reference length.
|
|
31
|
+
*/
|
|
32
|
+
protected init(prefixProvider: PrefixProvider, prefix: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get the leader type.
|
|
35
|
+
*/
|
|
36
|
+
abstract get leaderType(): LeaderType;
|
|
37
|
+
/**
|
|
38
|
+
* @inheritDoc
|
|
39
|
+
*/
|
|
40
|
+
get capacity(): number;
|
|
41
|
+
/**
|
|
42
|
+
* @inheritDoc
|
|
43
|
+
*/
|
|
44
|
+
get tweak(): bigint;
|
|
45
|
+
/**
|
|
46
|
+
* @inheritDoc
|
|
47
|
+
*/
|
|
48
|
+
set tweak(value: bigint);
|
|
49
|
+
/**
|
|
50
|
+
* Build an identifier from a reference by merging it with the prefix and adding the check digit.
|
|
51
|
+
*
|
|
52
|
+
* @param reference
|
|
53
|
+
* Identifier reference.
|
|
54
|
+
*
|
|
55
|
+
* @returns
|
|
56
|
+
* Identifier.
|
|
57
|
+
*/
|
|
58
|
+
private buildIdentifier;
|
|
59
|
+
/**
|
|
60
|
+
* @inheritDoc
|
|
61
|
+
*/
|
|
62
|
+
create<TTransformerInput extends TransformerInput<number | bigint>>(valueOrValues: TTransformerInput, sparse?: boolean): TransformerOutput<TTransformerInput, string>;
|
|
63
|
+
/**
|
|
64
|
+
* Create all identifiers from a partial identifier. Call is recursive until remaining reference
|
|
65
|
+
* length is 0.
|
|
66
|
+
*
|
|
67
|
+
* @param partialIdentifier
|
|
68
|
+
* Partial identifier. Initial value is `this.prefix`.
|
|
69
|
+
*
|
|
70
|
+
* @param remainingReferenceLength
|
|
71
|
+
* Remaining reference length. Initial value is `this.referenceLength`.
|
|
72
|
+
*
|
|
73
|
+
* @param extensionWeight
|
|
74
|
+
* If this value is not zero, the identifier has an extension digit, this call is setting it, and this value is
|
|
75
|
+
* applied to the calculation of the check digit.
|
|
76
|
+
*
|
|
77
|
+
* @param weight
|
|
78
|
+
* If the extension weight is zero, this value is applied to the calculation of the check digit.
|
|
79
|
+
*
|
|
80
|
+
* @param partialCheckDigitSum
|
|
81
|
+
* Partial check digit sum for the partial identifier.
|
|
82
|
+
*
|
|
83
|
+
* @yields
|
|
84
|
+
* Identifier.
|
|
85
|
+
*/
|
|
86
|
+
private static createAllPartial;
|
|
87
|
+
/**
|
|
88
|
+
* @inheritDoc
|
|
89
|
+
*/
|
|
90
|
+
createAll(): Iterable<string>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=abstract-numeric-identifier-creator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-numeric-identifier-creator.d.ts","sourceRoot":"","sources":["../src/abstract-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,8BAAsB,gCAAgC,CAAC,4BAA4B,SAAS,2BAA2B,CAAE,SAAQ,yBAAyB,CAAC,4BAA4B,EAAE,2BAA2B,CAAE,YAAW,wBAAwB,CAAC,4BAA4B,CAAC;IACnR;;OAEG;IACH,OAAO,CAAC,SAAS,CAAU;IAE3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAM;IAEpB;;;;;;;;OAQG;cACgB,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO7E;;OAEG;IACH,QAAQ,KAAK,UAAU,IAAI,UAAU,CAAC;IAEtC;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,MAAM,CAAC,iBAAiB,SAAS,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAQ,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAInK;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,MAAM,CAAG,gBAAgB;IA6BjC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;CAgBhC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { CharacterSetCreator, Exclusions, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
|
|
2
|
+
import { AbstractIdentifierCreator } from "./abstract-identifier-creator.js";
|
|
3
|
+
import { checkDigit, checkDigitSum } from "./check.js";
|
|
4
|
+
import { LeaderTypes } from "./numeric-identifier-type.js";
|
|
5
|
+
/**
|
|
6
|
+
* Abstract numeric identifier creator. Implements common functionality for a numeric identifier creator.
|
|
7
|
+
*
|
|
8
|
+
* @template TNumericIdentifierDescriptor
|
|
9
|
+
* Numeric identifier descriptor type.
|
|
10
|
+
*/
|
|
11
|
+
export class AbstractNumericIdentifierCreator extends AbstractIdentifierCreator {
|
|
12
|
+
/**
|
|
13
|
+
* Capacity.
|
|
14
|
+
*/
|
|
15
|
+
_capacity;
|
|
16
|
+
/**
|
|
17
|
+
* Tweak for sparse creation.
|
|
18
|
+
*/
|
|
19
|
+
_tweak = 0n;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize the prefix provider. This method is in lieu of a constructor due to the mixin architecture.
|
|
22
|
+
*
|
|
23
|
+
* @param prefixProvider
|
|
24
|
+
* Prefix provider.
|
|
25
|
+
*
|
|
26
|
+
* @param prefix
|
|
27
|
+
* Prefix within prefix manager to use to calculate reference length.
|
|
28
|
+
*/
|
|
29
|
+
init(prefixProvider, prefix) {
|
|
30
|
+
super.init(prefixProvider, prefix, 1);
|
|
31
|
+
// Capacity is always in number range.
|
|
32
|
+
this._capacity = Number(CharacterSetCreator.powerOf10(this.referenceLength));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @inheritDoc
|
|
36
|
+
*/
|
|
37
|
+
get capacity() {
|
|
38
|
+
return this._capacity;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @inheritDoc
|
|
42
|
+
*/
|
|
43
|
+
get tweak() {
|
|
44
|
+
return this._tweak;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
49
|
+
set tweak(value) {
|
|
50
|
+
this._tweak = value;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Build an identifier from a reference by merging it with the prefix and adding the check digit.
|
|
54
|
+
*
|
|
55
|
+
* @param reference
|
|
56
|
+
* Identifier reference.
|
|
57
|
+
*
|
|
58
|
+
* @returns
|
|
59
|
+
* Identifier.
|
|
60
|
+
*/
|
|
61
|
+
buildIdentifier(reference) {
|
|
62
|
+
const partialIdentifier = this.leaderType === LeaderTypes.ExtensionDigit ? reference.substring(0, 1) + this.prefix + reference.substring(1) : this.prefix + reference;
|
|
63
|
+
return partialIdentifier + checkDigit(partialIdentifier);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @inheritDoc
|
|
67
|
+
*/
|
|
68
|
+
create(valueOrValues, sparse = false) {
|
|
69
|
+
return NUMERIC_CREATOR.create(this.referenceLength, valueOrValues, Exclusions.None, sparse ? this.tweak : undefined, reference => this.buildIdentifier(reference));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create all identifiers from a partial identifier. Call is recursive until remaining reference
|
|
73
|
+
* length is 0.
|
|
74
|
+
*
|
|
75
|
+
* @param partialIdentifier
|
|
76
|
+
* Partial identifier. Initial value is `this.prefix`.
|
|
77
|
+
*
|
|
78
|
+
* @param remainingReferenceLength
|
|
79
|
+
* Remaining reference length. Initial value is `this.referenceLength`.
|
|
80
|
+
*
|
|
81
|
+
* @param extensionWeight
|
|
82
|
+
* If this value is not zero, the identifier has an extension digit, this call is setting it, and this value is
|
|
83
|
+
* applied to the calculation of the check digit.
|
|
84
|
+
*
|
|
85
|
+
* @param weight
|
|
86
|
+
* If the extension weight is zero, this value is applied to the calculation of the check digit.
|
|
87
|
+
*
|
|
88
|
+
* @param partialCheckDigitSum
|
|
89
|
+
* Partial check digit sum for the partial identifier.
|
|
90
|
+
*
|
|
91
|
+
* @yields
|
|
92
|
+
* Identifier.
|
|
93
|
+
*/
|
|
94
|
+
static *createAllPartial(partialIdentifier, remainingReferenceLength, extensionWeight, weight, partialCheckDigitSum) {
|
|
95
|
+
if (remainingReferenceLength === 0) {
|
|
96
|
+
// Finalize check digit calculation and append.
|
|
97
|
+
yield partialIdentifier + NUMERIC_CREATOR.character(9 - (partialCheckDigitSum + 9) % 10);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const nextRemainingReferenceLength = remainingReferenceLength - 1;
|
|
101
|
+
let nextPartialCheckDigitSum = partialCheckDigitSum;
|
|
102
|
+
if (extensionWeight !== 0) {
|
|
103
|
+
// Apply every digit to the extension digit.
|
|
104
|
+
for (const c of NUMERIC_CREATOR.characterSet) {
|
|
105
|
+
yield* AbstractNumericIdentifierCreator.createAllPartial(c + partialIdentifier, nextRemainingReferenceLength, 0, weight, nextPartialCheckDigitSum);
|
|
106
|
+
nextPartialCheckDigitSum += extensionWeight;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const nextWeight = 4 - weight;
|
|
111
|
+
// Apply every digit to the current character in the identifier.
|
|
112
|
+
for (const c of NUMERIC_CREATOR.characterSet) {
|
|
113
|
+
yield* AbstractNumericIdentifierCreator.createAllPartial(partialIdentifier + c, nextRemainingReferenceLength, 0, nextWeight, nextPartialCheckDigitSum);
|
|
114
|
+
nextPartialCheckDigitSum += weight;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @inheritDoc
|
|
121
|
+
*/
|
|
122
|
+
createAll() {
|
|
123
|
+
const hasExtensionDigit = this.leaderType === LeaderTypes.ExtensionDigit;
|
|
124
|
+
const prefix = this.prefix;
|
|
125
|
+
const length = this.length;
|
|
126
|
+
const referenceLength = this.referenceLength;
|
|
127
|
+
// Start weight is for reference excluding extension digit, which has its weight calculated separately.
|
|
128
|
+
const startWeight = 3 - 2 * ((referenceLength + 1 - Number(hasExtensionDigit)) % 2);
|
|
129
|
+
// Returning separate Iterable object makes iteration repeatable.
|
|
130
|
+
return {
|
|
131
|
+
[Symbol.iterator]() {
|
|
132
|
+
return AbstractNumericIdentifierCreator.createAllPartial(prefix, referenceLength, hasExtensionDigit ? 3 - 2 * length % 2 : 0, startWeight, checkDigitSum(startWeight === 3, prefix));
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=abstract-numeric-identifier-creator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-numeric-identifier-creator.js","sourceRoot":"","sources":["../src/abstract-numeric-identifier-creator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AbstractIdentifierValidator } from "./abstract-identifier-validator.js";
|
|
2
|
+
import type { NumericIdentifierDescriptor } from "./numeric-identifier-descriptor.js";
|
|
3
|
+
import type { NumericIdentifierValidation, NumericIdentifierValidator } from "./numeric-identifier-validator.js";
|
|
4
|
+
/**
|
|
5
|
+
* Abstract numeric identifier validator.
|
|
6
|
+
*
|
|
7
|
+
* @template TNumericIdentifierDescriptor
|
|
8
|
+
* Numeric identifier descriptor type.
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class AbstractNumericIdentifierValidator<TNumericIdentifierDescriptor extends NumericIdentifierDescriptor> extends AbstractIdentifierValidator<TNumericIdentifierDescriptor, NumericIdentifierValidation> implements NumericIdentifierValidator<TNumericIdentifierDescriptor> {
|
|
11
|
+
/**
|
|
12
|
+
* Leader type.
|
|
13
|
+
*/
|
|
14
|
+
private readonly _leaderType;
|
|
15
|
+
/**
|
|
16
|
+
* Prefix position, determined by the leader type.
|
|
17
|
+
*/
|
|
18
|
+
private readonly _prefixPosition;
|
|
19
|
+
/**
|
|
20
|
+
* Constructor.
|
|
21
|
+
*
|
|
22
|
+
* @param identifierDescriptor
|
|
23
|
+
* Identifier descriptor.
|
|
24
|
+
*/
|
|
25
|
+
constructor(identifierDescriptor: NumericIdentifierDescriptor);
|
|
26
|
+
/**
|
|
27
|
+
* @inheritDoc
|
|
28
|
+
*/
|
|
29
|
+
get leaderType(): TNumericIdentifierDescriptor["leaderType"];
|
|
30
|
+
/**
|
|
31
|
+
* @inheritDoc
|
|
32
|
+
*/
|
|
33
|
+
validate(identifier: string, validation?: NumericIdentifierValidation): void;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=abstract-numeric-identifier-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-numeric-identifier-validator.d.ts","sourceRoot":"","sources":["../src/abstract-numeric-identifier-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAGjF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,KAAK,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEjH;;;;;GAKG;AACH,8BAAsB,kCAAkC,CAAC,4BAA4B,SAAS,2BAA2B,CAAE,SAAQ,2BAA2B,CAAC,4BAA4B,EAAE,2BAA2B,CAAE,YAAW,0BAA0B,CAAC,4BAA4B,CAAC;IACzR;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IAEzE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC;;;;;OAKG;gBACS,oBAAoB,EAAE,2BAA2B;IAO7D;;OAEG;IACH,IAAI,UAAU,IAAI,4BAA4B,CAAC,YAAY,CAAC,CAE3D;IAED;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,2BAA2B,GAAG,IAAI;CAqB/E"}
|