@aidc-toolkit/gs1 0.9.20-beta → 0.9.21-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.
Files changed (131) hide show
  1. package/dist/character-set.d.ts +4 -4
  2. package/dist/character-set.d.ts.map +1 -1
  3. package/dist/character-set.js +7 -7
  4. package/dist/character-set.js.map +1 -1
  5. package/dist/gtin-creator.d.ts +68 -0
  6. package/dist/gtin-creator.d.ts.map +1 -0
  7. package/dist/gtin-creator.js +158 -0
  8. package/dist/gtin-creator.js.map +1 -0
  9. package/dist/gtin-validator.d.ts +202 -0
  10. package/dist/gtin-validator.d.ts.map +1 -0
  11. package/dist/gtin-validator.js +470 -0
  12. package/dist/gtin-validator.js.map +1 -0
  13. package/dist/identifier-creator.d.ts +72 -0
  14. package/dist/identifier-creator.d.ts.map +1 -0
  15. package/dist/identifier-creator.js +50 -0
  16. package/dist/identifier-creator.js.map +1 -0
  17. package/dist/identifier-type.d.ts +58 -0
  18. package/dist/identifier-type.d.ts.map +1 -0
  19. package/dist/identifier-type.js +54 -0
  20. package/dist/identifier-type.js.map +1 -0
  21. package/dist/identifier-validator.d.ts +174 -0
  22. package/dist/identifier-validator.d.ts.map +1 -0
  23. package/dist/identifier-validator.js +145 -0
  24. package/dist/identifier-validator.js.map +1 -0
  25. package/dist/index.d.ts +16 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +16 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/locale/en/locale-strings.d.ts +3 -3
  30. package/dist/locale/en/locale-strings.js +3 -3
  31. package/dist/locale/en/locale-strings.js.map +1 -1
  32. package/dist/locale/fr/locale-strings.d.ts +3 -3
  33. package/dist/locale/fr/locale-strings.js +3 -3
  34. package/dist/locale/fr/locale-strings.js.map +1 -1
  35. package/dist/non-gtin-numeric-identifier-creator.d.ts +30 -0
  36. package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -0
  37. package/dist/non-gtin-numeric-identifier-creator.js +30 -0
  38. package/dist/non-gtin-numeric-identifier-creator.js.map +1 -0
  39. package/dist/non-gtin-numeric-identifier-validator.d.ts +41 -0
  40. package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -0
  41. package/dist/non-gtin-numeric-identifier-validator.js +40 -0
  42. package/dist/non-gtin-numeric-identifier-validator.js.map +1 -0
  43. package/dist/non-numeric-identifier-creator.d.ts +55 -0
  44. package/dist/non-numeric-identifier-creator.d.ts.map +1 -0
  45. package/dist/non-numeric-identifier-creator.js +93 -0
  46. package/dist/non-numeric-identifier-creator.js.map +1 -0
  47. package/dist/non-numeric-identifier-validator.d.ts +78 -0
  48. package/dist/non-numeric-identifier-validator.d.ts.map +1 -0
  49. package/dist/non-numeric-identifier-validator.js +95 -0
  50. package/dist/non-numeric-identifier-validator.js.map +1 -0
  51. package/dist/numeric-identifier-creator.d.ts +121 -0
  52. package/dist/numeric-identifier-creator.d.ts.map +1 -0
  53. package/dist/numeric-identifier-creator.js +135 -0
  54. package/dist/numeric-identifier-creator.js.map +1 -0
  55. package/dist/numeric-identifier-validator.d.ts +76 -0
  56. package/dist/numeric-identifier-validator.d.ts.map +1 -0
  57. package/dist/numeric-identifier-validator.js +84 -0
  58. package/dist/numeric-identifier-validator.js.map +1 -0
  59. package/dist/prefix-manager.d.ts +224 -0
  60. package/dist/prefix-manager.d.ts.map +1 -0
  61. package/dist/prefix-manager.js +369 -0
  62. package/dist/prefix-manager.js.map +1 -0
  63. package/dist/prefix-provider.d.ts +27 -0
  64. package/dist/prefix-provider.d.ts.map +1 -0
  65. package/dist/prefix-provider.js +2 -0
  66. package/dist/prefix-provider.js.map +1 -0
  67. package/dist/prefix-type.d.ts +22 -0
  68. package/dist/prefix-type.d.ts.map +1 -0
  69. package/dist/prefix-type.js +18 -0
  70. package/dist/prefix-type.js.map +1 -0
  71. package/dist/prefix-validator.d.ts +58 -0
  72. package/dist/prefix-validator.d.ts.map +1 -0
  73. package/dist/prefix-validator.js +154 -0
  74. package/dist/prefix-validator.js.map +1 -0
  75. package/dist/serializable-numeric-identifier-creator.d.ts +86 -0
  76. package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -0
  77. package/dist/serializable-numeric-identifier-creator.js +116 -0
  78. package/dist/serializable-numeric-identifier-creator.js.map +1 -0
  79. package/dist/serializable-numeric-identifier-validator.d.ts +79 -0
  80. package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -0
  81. package/dist/serializable-numeric-identifier-validator.js +99 -0
  82. package/dist/serializable-numeric-identifier-validator.js.map +1 -0
  83. package/gs1.iml +4 -1
  84. package/package.json +2 -3
  85. package/src/character-set.ts +7 -7
  86. package/src/gtin-creator.ts +195 -0
  87. package/src/gtin-validator.ts +564 -0
  88. package/src/identifier-creator.ts +97 -0
  89. package/src/identifier-type.ts +69 -0
  90. package/src/identifier-validator.ts +235 -0
  91. package/src/index.ts +16 -1
  92. package/src/locale/en/locale-strings.ts +3 -3
  93. package/src/locale/fr/locale-strings.ts +3 -3
  94. package/src/non-gtin-numeric-identifier-creator.ts +33 -0
  95. package/src/non-gtin-numeric-identifier-validator.ts +54 -0
  96. package/src/non-numeric-identifier-creator.ts +111 -0
  97. package/src/non-numeric-identifier-validator.ts +128 -0
  98. package/src/numeric-identifier-creator.ts +200 -0
  99. package/src/numeric-identifier-validator.ts +128 -0
  100. package/src/prefix-manager.ts +446 -0
  101. package/src/prefix-provider.ts +31 -0
  102. package/src/prefix-type.ts +24 -0
  103. package/src/prefix-validator.ts +191 -0
  104. package/src/serializable-numeric-identifier-creator.ts +128 -0
  105. package/src/serializable-numeric-identifier-validator.ts +124 -0
  106. package/test/check.test.ts +0 -4
  107. package/test/creator.test.ts +30 -0
  108. package/test/gtin-creator.ts +239 -0
  109. package/test/gtin-validator.test.ts +149 -0
  110. package/test/identifier-creator.ts +84 -0
  111. package/test/identifier-validator.ts +8 -0
  112. package/test/non-gtin-numeric-identifier-creator.ts +98 -0
  113. package/test/non-gtin-numeric-identifier-validator.ts +6 -0
  114. package/test/non-numeric-identifier-validator.ts +24 -0
  115. package/test/numeric-identifier-creator.ts +132 -0
  116. package/test/numeric-identifier-validator.ts +23 -0
  117. package/test/prefix-manager.test.ts +112 -0
  118. package/test/serializable-numeric-identifier-creator.ts +56 -0
  119. package/test/serializable-numeric-identifier-validator.ts +24 -0
  120. package/test/setup.ts +4 -0
  121. package/test/sparse.test.ts +56 -0
  122. package/test/utility.ts +22 -0
  123. package/test/validator.test.ts +52 -0
  124. package/test/variable-measure-rcn.test.ts +201 -0
  125. package/vitest.config.ts +7 -0
  126. package/dist/idkey.d.ts +0 -1346
  127. package/dist/idkey.d.ts.map +0 -1
  128. package/dist/idkey.js +0 -2024
  129. package/dist/idkey.js.map +0 -1
  130. package/src/idkey.ts +0 -2532
  131. package/test/idkey.test.ts +0 -1247
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefix-validator.js","sourceRoot":"","sources":["../src/prefix-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { type TransformerInput, type TransformerOutput } from "@aidc-toolkit/utility";
2
+ import type { IdentifierType } from "./identifier-type.js";
3
+ import type { ContentCharacterSet } from "./identifier-validator.js";
4
+ import { AbstractNumericIdentifierCreator } from "./numeric-identifier-creator.js";
5
+ import type { PrefixProvider } from "./prefix-provider";
6
+ import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
7
+ declare const SerializableNumericIdentifierCreator_base: import("ts-mixer/dist/types/types.js").Class<any[], SerializableNumericIdentifierValidator & AbstractNumericIdentifierCreator, typeof SerializableNumericIdentifierValidator & typeof AbstractNumericIdentifierCreator>;
8
+ /**
9
+ * Serializable numeric identifier creator.
10
+ */
11
+ export declare class SerializableNumericIdentifierCreator extends SerializableNumericIdentifierCreator_base {
12
+ /**
13
+ * Constructor. Typically called internally by a prefix manager but may be called by other code with another prefix
14
+ * provider type.
15
+ *
16
+ * @param prefixProvider
17
+ * Prefix provider.
18
+ *
19
+ * @param identifierType
20
+ * Identifier type.
21
+ *
22
+ * @param length
23
+ * Length.
24
+ *
25
+ * @param serialComponentLength
26
+ * Serial component length.
27
+ *
28
+ * @param serialComponentCharacterSet
29
+ * Serial component character set.
30
+ */
31
+ constructor(prefixProvider: PrefixProvider, identifierType: IdentifierType, length: number, serialComponentLength: number, serialComponentCharacterSet: ContentCharacterSet);
32
+ /**
33
+ * Concatenate a validated base identifier with serial component(s).
34
+ *
35
+ * @template TTransformerInput
36
+ * Transformer input type.
37
+ *
38
+ * @param baseIdentifier
39
+ * Base identifier.
40
+ *
41
+ * @param serialComponentOrComponents
42
+ * Serial component(s).
43
+ *
44
+ * @returns
45
+ * Serialized identifier(s).
46
+ */
47
+ private concatenateValidated;
48
+ /**
49
+ * Create serialized identifier(s) with a reference based on a numeric value concatenated with serial component(s).
50
+ * The value is converted to a reference of the appropriate length using a numeric creator.
51
+ *
52
+ * @template TTransformerInput
53
+ * Transformer input type.
54
+ *
55
+ * @param value
56
+ * Numeric value of the reference.
57
+ *
58
+ * @param serialComponentOrComponents
59
+ * Serial component(s).
60
+ *
61
+ * @param sparse
62
+ * If true, the value is mapped to a sparse sequence resistant to discovery. Default is false.
63
+ *
64
+ * @returns
65
+ * Serialized identifiers.
66
+ */
67
+ createSerialized<TTransformerInput extends TransformerInput<string>>(value: number, serialComponentOrComponents: TTransformerInput, sparse?: boolean): TransformerOutput<TTransformerInput, string>;
68
+ /**
69
+ * Concatenate a base identifier with serial component(s).
70
+ *
71
+ * @template TTransformerInput
72
+ * Transformer input type.
73
+ *
74
+ * @param baseIdentifier
75
+ * Base identifier.
76
+ *
77
+ * @param serialComponentOrComponents
78
+ * Serial component(s).
79
+ *
80
+ * @returns
81
+ * Serialized identifier(s).
82
+ */
83
+ concatenate<TTransformerInput extends TransformerInput<string>>(baseIdentifier: string, serialComponentOrComponents: TTransformerInput): TransformerOutput<TTransformerInput, string>;
84
+ }
85
+ export {};
86
+ //# sourceMappingURL=serializable-numeric-identifier-creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-creator.d.ts","sourceRoot":"","sources":["../src/serializable-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;;AAExG;;GAEG;AACH,qBAAa,oCAAqC,SAAQ,yCAA+E;IACrI;;;;;;;;;;;;;;;;;;OAkBG;gBACS,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,2BAA2B,EAAE,mBAAmB;IAM3K;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAC,iBAAiB,SAAS,gBAAgB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAInM;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,iBAAiB,SAAS,gBAAgB,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,2BAA2B,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAKxL"}
@@ -0,0 +1,116 @@
1
+ import { mapIterable } from "@aidc-toolkit/utility";
2
+ import { Mixin } from "ts-mixer";
3
+ import { AbstractNumericIdentifierCreator } from "./numeric-identifier-creator.js";
4
+ import { SerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
5
+ /**
6
+ * Serializable numeric identifier creator.
7
+ */
8
+ export class SerializableNumericIdentifierCreator extends Mixin(SerializableNumericIdentifierValidator, AbstractNumericIdentifierCreator) {
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
+ * @param length
20
+ * Length.
21
+ *
22
+ * @param serialComponentLength
23
+ * Serial component length.
24
+ *
25
+ * @param serialComponentCharacterSet
26
+ * Serial component character set.
27
+ */
28
+ constructor(prefixProvider, identifierType, length, serialComponentLength, serialComponentCharacterSet) {
29
+ super(identifierType, length, serialComponentLength, serialComponentCharacterSet);
30
+ this.init(prefixProvider, prefixProvider.gs1CompanyPrefix);
31
+ }
32
+ /**
33
+ * Concatenate a validated base identifier with serial component(s).
34
+ *
35
+ * @template TTransformerInput
36
+ * Transformer input type.
37
+ *
38
+ * @param baseIdentifier
39
+ * Base identifier.
40
+ *
41
+ * @param serialComponentOrComponents
42
+ * Serial component(s).
43
+ *
44
+ * @returns
45
+ * Serialized identifier(s).
46
+ */
47
+ concatenateValidated(baseIdentifier, serialComponentOrComponents) {
48
+ // TODO Refactor type when https://github.com/microsoft/TypeScript/pull/56941 released.
49
+ let result;
50
+ const serialComponentCreator = this.serialComponentCreator;
51
+ const serialComponentValidation = this.serialComponentValidation;
52
+ /**
53
+ * Validate a serial component and concatenate it to the base identifier.
54
+ *
55
+ * @param serialComponent
56
+ * Serial component.
57
+ *
58
+ * @returns
59
+ * Serialized identifier.
60
+ */
61
+ function validateAndConcatenate(serialComponent) {
62
+ serialComponentCreator.validate(serialComponent, serialComponentValidation);
63
+ return baseIdentifier + serialComponent;
64
+ }
65
+ if (typeof serialComponentOrComponents !== "object") {
66
+ result = validateAndConcatenate(serialComponentOrComponents);
67
+ }
68
+ else {
69
+ result = mapIterable(serialComponentOrComponents, validateAndConcatenate);
70
+ }
71
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type determination is handled above.
72
+ return result;
73
+ }
74
+ /**
75
+ * Create serialized identifier(s) with a reference based on a numeric value concatenated with serial component(s).
76
+ * The value is converted to a reference of the appropriate length using a numeric creator.
77
+ *
78
+ * @template TTransformerInput
79
+ * Transformer input type.
80
+ *
81
+ * @param value
82
+ * Numeric value of the reference.
83
+ *
84
+ * @param serialComponentOrComponents
85
+ * Serial component(s).
86
+ *
87
+ * @param sparse
88
+ * If true, the value is mapped to a sparse sequence resistant to discovery. Default is false.
89
+ *
90
+ * @returns
91
+ * Serialized identifiers.
92
+ */
93
+ createSerialized(value, serialComponentOrComponents, sparse) {
94
+ return this.concatenateValidated(this.create(value, sparse), serialComponentOrComponents);
95
+ }
96
+ /**
97
+ * Concatenate a base identifier with serial component(s).
98
+ *
99
+ * @template TTransformerInput
100
+ * Transformer input type.
101
+ *
102
+ * @param baseIdentifier
103
+ * Base identifier.
104
+ *
105
+ * @param serialComponentOrComponents
106
+ * Serial component(s).
107
+ *
108
+ * @returns
109
+ * Serialized identifier(s).
110
+ */
111
+ concatenate(baseIdentifier, serialComponentOrComponents) {
112
+ this.validate(baseIdentifier);
113
+ return this.concatenateValidated(baseIdentifier, serialComponentOrComponents);
114
+ }
115
+ }
116
+ //# sourceMappingURL=serializable-numeric-identifier-creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-creator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiD,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,EAAE,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAExG;;GAEG;AACH,MAAM,OAAO,oCAAqC,SAAQ,KAAK,CAAC,sCAAsC,EAAE,gCAAgC,CAAC;IACrI;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,cAA8B,EAAE,cAA8B,EAAE,MAAc,EAAE,qBAA6B,EAAE,2BAAgD;QACvK,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,qBAAqB,EAAE,2BAA2B,CAAC,CAAC;QAElF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACK,oBAAoB,CAAqD,cAAsB,EAAE,2BAA8C;QACnJ,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,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAqD,cAAsB,EAAE,2BAA8C;QAClI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;IAClF,CAAC;CACJ"}
@@ -0,0 +1,79 @@
1
+ import type { CharacterSetCreator, CharacterSetValidation } from "@aidc-toolkit/utility";
2
+ import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
3
+ import { type ContentCharacterSet, type IdentifierValidation } from "./identifier-validator.js";
4
+ import { type NonGTINNumericIdentifierType, NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
5
+ /**
6
+ * Serializable numeric identifier type.
7
+ */
8
+ export type SerializableNumericIdentifierType = Exclude<NonGTINNumericIdentifierType, typeof IdentifierTypes.GLN | typeof IdentifierTypes.SSCC | typeof IdentifierTypes.GSRN | typeof IdentifierTypes.GSIN>;
9
+ /**
10
+ * Serializable numeric identifier validator. Validates both serialized and non-serialized forms of
11
+ * numeric identifiers that support serialization.
12
+ */
13
+ export declare class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator {
14
+ /**
15
+ * Serial component length.
16
+ */
17
+ private readonly _serialComponentLength;
18
+ /**
19
+ * Serial component character set.
20
+ */
21
+ private readonly _serialComponentCharacterSet;
22
+ /**
23
+ * Serial component validation parameters.
24
+ */
25
+ private readonly _serialComponentValidation;
26
+ /**
27
+ * Serial component creator.
28
+ */
29
+ private readonly _serialComponentCreator;
30
+ /**
31
+ * Constructor.
32
+ *
33
+ * @param identifierType
34
+ * Identifier type.
35
+ *
36
+ * @param length
37
+ * Length.
38
+ *
39
+ * @param serialComponentLength
40
+ * Serial component length.
41
+ *
42
+ * @param serialComponentCharacterSet
43
+ * Serial component character set.
44
+ */
45
+ constructor(identifierType: IdentifierType, length: number, serialComponentLength: number, serialComponentCharacterSet: ContentCharacterSet);
46
+ /**
47
+ * Get the serial component length.
48
+ */
49
+ get serialComponentLength(): number;
50
+ /**
51
+ * Get the serial component character set.
52
+ */
53
+ get serialComponentCharacterSet(): ContentCharacterSet;
54
+ /**
55
+ * Get the serial component validation parameters.
56
+ */
57
+ protected get serialComponentValidation(): CharacterSetValidation;
58
+ /**
59
+ * Get the serial component creator.
60
+ */
61
+ get serialComponentCreator(): CharacterSetCreator;
62
+ /**
63
+ * @inheritDoc
64
+ */
65
+ validate(identifier: string, validation?: IdentifierValidation): void;
66
+ }
67
+ /**
68
+ * GRAI validator.
69
+ */
70
+ export declare const GRAI_VALIDATOR: SerializableNumericIdentifierValidator;
71
+ /**
72
+ * GDTI validator.
73
+ */
74
+ export declare const GDTI_VALIDATOR: SerializableNumericIdentifierValidator;
75
+ /**
76
+ * GCN validator.
77
+ */
78
+ export declare const GCN_VALIDATOR: SerializableNumericIdentifierValidator;
79
+ //# sourceMappingURL=serializable-numeric-identifier-validator.d.ts.map
@@ -0,0 +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;AACzF,OAAO,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,KAAK,mBAAmB,EAAwB,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtH,OAAO,EACH,KAAK,4BAA4B,EACjC,iCAAiC,EACpC,MAAM,4CAA4C,CAAC;AAGpD;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAC,4BAA4B,EAAE,OAAO,eAAe,CAAC,GAAG,GAAG,OAAO,eAAe,CAAC,IAAI,GAAG,OAAO,eAAe,CAAC,IAAI,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAE5M;;;GAGG;AACH,qBAAa,sCAAuC,SAAQ,iCAAiC;IACzF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAsB;IAEnE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAyB;IAEpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D;;;;;;;;;;;;;;OAcG;gBACS,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,2BAA2B,EAAE,mBAAmB;IAe3I;;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;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,wCAAsG,CAAC;AAElI;;GAEG;AACH,eAAO,MAAM,cAAc,wCAAsG,CAAC;AAElI;;GAEG;AACH,eAAO,MAAM,aAAa,wCAAwG,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { IdentifierTypes } from "./identifier-type.js";
2
+ import { ContentCharacterSets } from "./identifier-validator.js";
3
+ import { i18nextGS1 } from "./locale/i18n.js";
4
+ import { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
5
+ import { LeaderTypes } from "./numeric-identifier-validator.js";
6
+ /**
7
+ * Serializable numeric identifier validator. Validates both serialized and non-serialized forms of
8
+ * numeric identifiers that support serialization.
9
+ */
10
+ export class SerializableNumericIdentifierValidator extends NonGTINNumericIdentifierValidator {
11
+ /**
12
+ * Serial component length.
13
+ */
14
+ _serialComponentLength;
15
+ /**
16
+ * Serial component character set.
17
+ */
18
+ _serialComponentCharacterSet;
19
+ /**
20
+ * Serial component validation parameters.
21
+ */
22
+ _serialComponentValidation;
23
+ /**
24
+ * Serial component creator.
25
+ */
26
+ _serialComponentCreator;
27
+ /**
28
+ * Constructor.
29
+ *
30
+ * @param identifierType
31
+ * Identifier type.
32
+ *
33
+ * @param length
34
+ * Length.
35
+ *
36
+ * @param serialComponentLength
37
+ * Serial component length.
38
+ *
39
+ * @param serialComponentCharacterSet
40
+ * Serial component character set.
41
+ */
42
+ constructor(identifierType, length, serialComponentLength, serialComponentCharacterSet) {
43
+ super(identifierType, length, LeaderTypes.None);
44
+ this._serialComponentLength = serialComponentLength;
45
+ this._serialComponentCharacterSet = serialComponentCharacterSet;
46
+ this._serialComponentValidation = {
47
+ minimumLength: 1,
48
+ maximumLength: serialComponentLength,
49
+ component: () => i18nextGS1.t("Identifier.serialComponent")
50
+ };
51
+ this._serialComponentCreator = SerializableNumericIdentifierValidator.creatorFor(serialComponentCharacterSet);
52
+ }
53
+ /**
54
+ * Get the serial component length.
55
+ */
56
+ get serialComponentLength() {
57
+ return this._serialComponentLength;
58
+ }
59
+ /**
60
+ * Get the serial component character set.
61
+ */
62
+ get serialComponentCharacterSet() {
63
+ return this._serialComponentCharacterSet;
64
+ }
65
+ /**
66
+ * Get the serial component validation parameters.
67
+ */
68
+ get serialComponentValidation() {
69
+ return this._serialComponentValidation;
70
+ }
71
+ /**
72
+ * Get the serial component creator.
73
+ */
74
+ get serialComponentCreator() {
75
+ return this._serialComponentCreator;
76
+ }
77
+ /**
78
+ * @inheritDoc
79
+ */
80
+ validate(identifier, validation) {
81
+ super.validate(identifier.substring(0, this.length), validation);
82
+ if (identifier.length > this.length) {
83
+ this.serialComponentCreator.validate(identifier.substring(this.length), this._serialComponentValidation);
84
+ }
85
+ }
86
+ }
87
+ /**
88
+ * GRAI validator.
89
+ */
90
+ export const GRAI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GRAI, 13, 16, ContentCharacterSets.AI82);
91
+ /**
92
+ * GDTI validator.
93
+ */
94
+ export const GDTI_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GDTI, 13, 17, ContentCharacterSets.AI82);
95
+ /**
96
+ * GCN validator.
97
+ */
98
+ export const GCN_VALIDATOR = new SerializableNumericIdentifierValidator(IdentifierTypes.GCN, 13, 12, ContentCharacterSets.Numeric);
99
+ //# sourceMappingURL=serializable-numeric-identifier-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-numeric-identifier-validator.js","sourceRoot":"","sources":["../src/serializable-numeric-identifier-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAA4B,oBAAoB,EAA6B,MAAM,2BAA2B,CAAC;AACtH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEH,iCAAiC,EACpC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAOhE;;;GAGG;AACH,MAAM,OAAO,sCAAuC,SAAQ,iCAAiC;IACzF;;OAEG;IACc,sBAAsB,CAAS;IAEhD;;OAEG;IACc,4BAA4B,CAAsB;IAEnE;;OAEG;IACc,0BAA0B,CAAyB;IAEpE;;OAEG;IACc,uBAAuB,CAAsB;IAE9D;;;;;;;;;;;;;;OAcG;IACH,YAAY,cAA8B,EAAE,MAAc,EAAE,qBAA6B,EAAE,2BAAgD;QACvI,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;QACpD,IAAI,CAAC,4BAA4B,GAAG,2BAA2B,CAAC;QAEhE,IAAI,CAAC,0BAA0B,GAAG;YAC9B,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,qBAAqB;YACpC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC;SAC9D,CAAC;QAEF,IAAI,CAAC,uBAAuB,GAAG,sCAAsC,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;IAClH,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;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,sCAAsC,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAElI;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,sCAAsC,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAElI;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,sCAAsC,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC"}
package/gs1.iml CHANGED
@@ -2,7 +2,10 @@
2
2
  <module type="WEB_MODULE" version="4">
3
3
  <component name="NewModuleRootManager" inherit-compiler-output="true">
4
4
  <exclude-output />
5
- <content url="file://$MODULE_DIR$" />
5
+ <content url="file://$MODULE_DIR$">
6
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
7
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
8
+ </content>
6
9
  <orderEntry type="inheritedJdk" />
7
10
  <orderEntry type="sourceFolder" forTests="false" />
8
11
  </component>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aidc-toolkit/gs1",
3
- "version": "0.9.20-beta",
3
+ "version": "0.9.21-beta",
4
4
  "description": "GS1 AIDC Toolkit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,12 +28,11 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@aidc-toolkit/dev": "beta",
31
- "vitest": "^4.0.13"
31
+ "vitest": "^4.0.14"
32
32
  },
33
33
  "dependencies": {
34
34
  "@aidc-toolkit/core": "beta",
35
35
  "@aidc-toolkit/utility": "beta",
36
- "i18next": "^25.6.3",
37
36
  "ts-mixer": "^6.0.4"
38
37
  }
39
38
  }
@@ -1,8 +1,8 @@
1
- import { CharacterSetCreator, type CharacterSetValidator, Exclusion } from "@aidc-toolkit/utility";
1
+ import { CharacterSetCreator, type CharacterSetValidator, Exclusions } from "@aidc-toolkit/utility";
2
2
 
3
3
  /**
4
4
  * GS1 AI encodable character set 82 creator as defined in section 7.11 of the {@link https://www.gs1.org/genspecs | GS1
5
- * General Specifications}. Supports {@linkcode Exclusion.AllNumeric}.
5
+ * General Specifications}. Supports {@linkcode Exclusions.AllNumeric}.
6
6
  */
7
7
  export const AI82_CREATOR = new CharacterSetCreator([
8
8
  "!", "\"", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/",
@@ -13,27 +13,27 @@ export const AI82_CREATOR = new CharacterSetCreator([
13
13
  "_",
14
14
  "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
15
15
  "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
16
- ], Exclusion.AllNumeric);
16
+ ], Exclusions.AllNumeric);
17
17
 
18
18
  /**
19
19
  * GS1 AI encodable character set 82 validator as defined in section 7.11 of the {@link https://www.gs1.org/genspecs |
20
- * GS1 General Specifications}. Supports {@linkcode Exclusion.AllNumeric}.
20
+ * GS1 General Specifications}. Supports {@linkcode Exclusions.AllNumeric}.
21
21
  */
22
22
  export const AI82_VALIDATOR = AI82_CREATOR as CharacterSetValidator;
23
23
 
24
24
  /**
25
25
  * GS1 AI encodable character set 39 creator as defined in section 7.11 of the {@link https://www.gs1.org/genspecs | GS1
26
- * General Specifications}. Supports {@linkcode Exclusion.AllNumeric}.
26
+ * General Specifications}. Supports {@linkcode Exclusions.AllNumeric}.
27
27
  */
28
28
  export const AI39_CREATOR = new CharacterSetCreator([
29
29
  "#", "-", "/",
30
30
  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
31
31
  "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
32
32
  "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
33
- ], Exclusion.AllNumeric);
33
+ ], Exclusions.AllNumeric);
34
34
 
35
35
  /**
36
36
  * GS1 AI encodable character set 39 validator as defined in section 7.11 of the {@link https://www.gs1.org/genspecs |
37
- * GS1 General Specifications}. Supports {@linkcode Exclusion.AllNumeric}.
37
+ * GS1 General Specifications}. Supports {@linkcode Exclusions.AllNumeric}.
38
38
  */
39
39
  export const AI39_VALIDATOR = AI39_CREATOR as CharacterSetValidator;