@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.
Files changed (205) hide show
  1. package/dist/abstract-identifier-creator.d.ts +32 -66
  2. package/dist/abstract-identifier-creator.d.ts.map +1 -1
  3. package/dist/abstract-identifier-creator.js +62 -45
  4. package/dist/abstract-identifier-creator.js.map +1 -1
  5. package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts +36 -0
  6. package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts.map +1 -0
  7. package/dist/abstract-non-gtin-numeric-identifier-creator.js +37 -0
  8. package/dist/abstract-non-gtin-numeric-identifier-creator.js.map +1 -0
  9. package/dist/abstract-numeric-identifier-creator.d.ts +28 -86
  10. package/dist/abstract-numeric-identifier-creator.d.ts.map +1 -1
  11. package/dist/abstract-numeric-identifier-creator.js +138 -121
  12. package/dist/abstract-numeric-identifier-creator.js.map +1 -1
  13. package/dist/content-character-set-creators.d.ts +4 -0
  14. package/dist/content-character-set-creators.d.ts.map +1 -0
  15. package/dist/content-character-set-creators.js +9 -0
  16. package/dist/content-character-set-creators.js.map +1 -0
  17. package/dist/gtin-creator.d.ts +8 -13
  18. package/dist/gtin-creator.d.ts.map +1 -1
  19. package/dist/gtin-creator.js +12 -15
  20. package/dist/gtin-creator.js.map +1 -1
  21. package/dist/gtin-descriptor.d.ts +8 -3
  22. package/dist/gtin-descriptor.d.ts.map +1 -1
  23. package/dist/gtin-length.d.ts +64 -0
  24. package/dist/gtin-length.d.ts.map +1 -0
  25. package/dist/gtin-length.js +36 -0
  26. package/dist/gtin-length.js.map +1 -0
  27. package/dist/gtin-type.d.ts +15 -28
  28. package/dist/gtin-type.d.ts.map +1 -1
  29. package/dist/gtin-type.js +4 -28
  30. package/dist/gtin-type.js.map +1 -1
  31. package/dist/gtin-validator.d.ts +9 -23
  32. package/dist/gtin-validator.d.ts.map +1 -1
  33. package/dist/gtin-validator.js +32 -39
  34. package/dist/gtin-validator.js.map +1 -1
  35. package/dist/identifier-creator.d.ts +4 -4
  36. package/dist/identifier-creator.d.ts.map +1 -1
  37. package/dist/{creators.d.ts → identifier-creators.d.ts} +47 -10
  38. package/dist/identifier-creators.d.ts.map +1 -0
  39. package/dist/identifier-creators.js +92 -0
  40. package/dist/identifier-creators.js.map +1 -0
  41. package/dist/{descriptors.d.ts → identifier-descriptors.d.ts} +20 -10
  42. package/dist/identifier-descriptors.d.ts.map +1 -0
  43. package/dist/{descriptors.js → identifier-descriptors.js} +27 -31
  44. package/dist/identifier-descriptors.js.map +1 -0
  45. package/dist/identifier-extension.d.ts +82 -0
  46. package/dist/identifier-extension.d.ts.map +1 -0
  47. package/dist/identifier-extension.js +79 -0
  48. package/dist/identifier-extension.js.map +1 -0
  49. package/dist/identifier-validator.d.ts +44 -9
  50. package/dist/identifier-validator.d.ts.map +1 -1
  51. package/dist/identifier-validator.js +109 -1
  52. package/dist/identifier-validator.js.map +1 -1
  53. package/dist/{validators.d.ts → identifier-validators.d.ts} +47 -12
  54. package/dist/identifier-validators.d.ts.map +1 -0
  55. package/dist/{validators.js → identifier-validators.js} +40 -13
  56. package/dist/identifier-validators.js.map +1 -0
  57. package/dist/index.d.ts +15 -9
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +13 -4
  60. package/dist/index.js.map +1 -1
  61. package/dist/leader-type.d.ts +26 -0
  62. package/dist/leader-type.d.ts.map +1 -0
  63. package/dist/leader-type.js +18 -0
  64. package/dist/leader-type.js.map +1 -0
  65. package/dist/non-gtin-numeric-identifier-creator.d.ts +7 -19
  66. package/dist/non-gtin-numeric-identifier-creator.d.ts.map +1 -1
  67. package/dist/non-gtin-numeric-identifier-creator.js +1 -22
  68. package/dist/non-gtin-numeric-identifier-creator.js.map +1 -1
  69. package/dist/non-gtin-numeric-identifier-descriptor.d.ts +1 -1
  70. package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +1 -1
  71. package/dist/non-gtin-numeric-identifier-type.d.ts +22 -3
  72. package/dist/non-gtin-numeric-identifier-type.d.ts.map +1 -1
  73. package/dist/non-gtin-numeric-identifier-type.js +7 -1
  74. package/dist/non-gtin-numeric-identifier-type.js.map +1 -1
  75. package/dist/non-gtin-numeric-identifier-validator.d.ts +5 -10
  76. package/dist/non-gtin-numeric-identifier-validator.d.ts.map +1 -1
  77. package/dist/non-gtin-numeric-identifier-validator.js +5 -12
  78. package/dist/non-gtin-numeric-identifier-validator.js.map +1 -1
  79. package/dist/non-numeric-identifier-creator.d.ts +4 -9
  80. package/dist/non-numeric-identifier-creator.d.ts.map +1 -1
  81. package/dist/non-numeric-identifier-creator.js +8 -10
  82. package/dist/non-numeric-identifier-creator.js.map +1 -1
  83. package/dist/non-numeric-identifier-type.d.ts +22 -3
  84. package/dist/non-numeric-identifier-type.d.ts.map +1 -1
  85. package/dist/non-numeric-identifier-type.js +7 -1
  86. package/dist/non-numeric-identifier-type.js.map +1 -1
  87. package/dist/non-numeric-identifier-validator.d.ts +3 -11
  88. package/dist/non-numeric-identifier-validator.d.ts.map +1 -1
  89. package/dist/non-numeric-identifier-validator.js +8 -8
  90. package/dist/non-numeric-identifier-validator.js.map +1 -1
  91. package/dist/non-serializable-numeric-identifier-creator.d.ts +10 -0
  92. package/dist/non-serializable-numeric-identifier-creator.d.ts.map +1 -0
  93. package/dist/non-serializable-numeric-identifier-creator.js +8 -0
  94. package/dist/non-serializable-numeric-identifier-creator.js.map +1 -0
  95. package/dist/non-serializable-numeric-identifier-descriptor.d.ts +12 -0
  96. package/dist/non-serializable-numeric-identifier-descriptor.d.ts.map +1 -0
  97. package/dist/non-serializable-numeric-identifier-descriptor.js +2 -0
  98. package/dist/non-serializable-numeric-identifier-descriptor.js.map +1 -0
  99. package/dist/non-serializable-numeric-identifier-type.d.ts +26 -0
  100. package/dist/non-serializable-numeric-identifier-type.d.ts.map +1 -0
  101. package/dist/non-serializable-numeric-identifier-type.js +7 -0
  102. package/dist/non-serializable-numeric-identifier-type.js.map +1 -0
  103. package/dist/non-serializable-numeric-identifier-validator.d.ts +16 -0
  104. package/dist/non-serializable-numeric-identifier-validator.d.ts.map +1 -0
  105. package/dist/non-serializable-numeric-identifier-validator.js +17 -0
  106. package/dist/non-serializable-numeric-identifier-validator.js.map +1 -0
  107. package/dist/numeric-identifier-creator.d.ts +6 -6
  108. package/dist/numeric-identifier-creator.d.ts.map +1 -1
  109. package/dist/numeric-identifier-descriptor.d.ts +2 -1
  110. package/dist/numeric-identifier-descriptor.d.ts.map +1 -1
  111. package/dist/numeric-identifier-type.d.ts +19 -24
  112. package/dist/numeric-identifier-type.d.ts.map +1 -1
  113. package/dist/numeric-identifier-type.js +4 -15
  114. package/dist/numeric-identifier-type.js.map +1 -1
  115. package/dist/numeric-identifier-validator.d.ts +20 -6
  116. package/dist/numeric-identifier-validator.d.ts.map +1 -1
  117. package/dist/numeric-identifier-validator.js +60 -1
  118. package/dist/numeric-identifier-validator.js.map +1 -1
  119. package/dist/prefix-manager.d.ts +13 -94
  120. package/dist/prefix-manager.d.ts.map +1 -1
  121. package/dist/prefix-manager.js +65 -102
  122. package/dist/prefix-manager.js.map +1 -1
  123. package/dist/serializable-numeric-identifier-creator.d.ts +3 -31
  124. package/dist/serializable-numeric-identifier-creator.d.ts.map +1 -1
  125. package/dist/serializable-numeric-identifier-creator.js +7 -21
  126. package/dist/serializable-numeric-identifier-creator.js.map +1 -1
  127. package/dist/serializable-numeric-identifier-descriptor.d.ts +1 -1
  128. package/dist/serializable-numeric-identifier-descriptor.d.ts.map +1 -1
  129. package/dist/serializable-numeric-identifier-type.d.ts +22 -2
  130. package/dist/serializable-numeric-identifier-type.d.ts.map +1 -1
  131. package/dist/serializable-numeric-identifier-type.js +7 -1
  132. package/dist/serializable-numeric-identifier-type.js.map +1 -1
  133. package/dist/serializable-numeric-identifier-validator.d.ts +3 -18
  134. package/dist/serializable-numeric-identifier-validator.d.ts.map +1 -1
  135. package/dist/serializable-numeric-identifier-validator.js +17 -16
  136. package/dist/serializable-numeric-identifier-validator.js.map +1 -1
  137. package/package.json +4 -5
  138. package/src/abstract-identifier-creator.ts +104 -75
  139. package/src/abstract-non-gtin-numeric-identifier-creator.ts +81 -0
  140. package/src/abstract-numeric-identifier-creator.ts +185 -133
  141. package/src/content-character-set-creators.ts +9 -0
  142. package/src/gtin-creator.ts +15 -16
  143. package/src/gtin-descriptor.ts +9 -3
  144. package/src/gtin-length.ts +61 -0
  145. package/src/gtin-type.ts +6 -37
  146. package/src/gtin-validator.ts +34 -41
  147. package/src/identifier-creator.ts +4 -4
  148. package/src/identifier-creators.ts +177 -0
  149. package/src/{descriptors.ts → identifier-descriptors.ts} +56 -54
  150. package/src/identifier-extension.ts +155 -0
  151. package/src/identifier-validator.ts +93 -10
  152. package/src/{validators.ts → identifier-validators.ts} +98 -36
  153. package/src/index.ts +15 -9
  154. package/src/leader-type.ts +29 -0
  155. package/src/non-gtin-numeric-identifier-creator.ts +7 -22
  156. package/src/non-gtin-numeric-identifier-descriptor.ts +1 -1
  157. package/src/non-gtin-numeric-identifier-type.ts +14 -3
  158. package/src/non-gtin-numeric-identifier-validator.ts +5 -13
  159. package/src/non-numeric-identifier-creator.ts +15 -12
  160. package/src/non-numeric-identifier-type.ts +14 -3
  161. package/src/non-numeric-identifier-validator.ts +8 -9
  162. package/src/non-serializable-numeric-identifier-creator.ts +11 -0
  163. package/src/non-serializable-numeric-identifier-descriptor.ts +12 -0
  164. package/src/non-serializable-numeric-identifier-type.ts +22 -0
  165. package/src/non-serializable-numeric-identifier-validator.ts +19 -0
  166. package/src/numeric-identifier-creator.ts +7 -6
  167. package/src/numeric-identifier-descriptor.ts +2 -1
  168. package/src/numeric-identifier-type.ts +17 -35
  169. package/src/numeric-identifier-validator.ts +61 -6
  170. package/src/prefix-manager.ts +76 -112
  171. package/src/serializable-numeric-identifier-creator.ts +10 -25
  172. package/src/serializable-numeric-identifier-descriptor.ts +1 -1
  173. package/src/serializable-numeric-identifier-type.ts +14 -5
  174. package/src/serializable-numeric-identifier-validator.ts +17 -16
  175. package/test/gtin-creator.ts +9 -2
  176. package/test/gtin-validator.test.ts +8 -10
  177. package/test/identifier-creator.ts +7 -7
  178. package/test/mixin.test.ts +35 -0
  179. package/test/non-gtin-numeric-identifier-validator.ts +7 -2
  180. package/test/non-numeric-identifier-validator.ts +2 -2
  181. package/test/non-serializable-numeric-identifier-creator.ts +64 -0
  182. package/test/non-serializable-numeric-identifier-validator.ts +6 -0
  183. package/test/numeric-identifier-creator.ts +7 -2
  184. package/test/serializable-numeric-identifier-validator.ts +2 -2
  185. package/test/utility.ts +6 -6
  186. package/test/validator.test.ts +11 -10
  187. package/test/variable-measure-rcn.test.ts +23 -23
  188. package/dist/abstract-identifier-validator.d.ts +0 -95
  189. package/dist/abstract-identifier-validator.d.ts.map +0 -1
  190. package/dist/abstract-identifier-validator.js +0 -123
  191. package/dist/abstract-identifier-validator.js.map +0 -1
  192. package/dist/abstract-numeric-identifier-validator.d.ts +0 -35
  193. package/dist/abstract-numeric-identifier-validator.d.ts.map +0 -1
  194. package/dist/abstract-numeric-identifier-validator.js +0 -61
  195. package/dist/abstract-numeric-identifier-validator.js.map +0 -1
  196. package/dist/creators.d.ts.map +0 -1
  197. package/dist/creators.js +0 -62
  198. package/dist/creators.js.map +0 -1
  199. package/dist/descriptors.d.ts.map +0 -1
  200. package/dist/descriptors.js.map +0 -1
  201. package/dist/validators.d.ts.map +0 -1
  202. package/dist/validators.js.map +0 -1
  203. package/src/abstract-identifier-validator.ts +0 -140
  204. package/src/abstract-numeric-identifier-validator.ts +0 -69
  205. package/src/creators.ts +0 -113
@@ -1,8 +1,8 @@
1
1
  import { describe, expect, test } from "vitest";
2
2
  import {
3
- type GTINBaseType,
3
+ type GTINBaseLength,
4
+ GTINLengths,
4
5
  GTINLevels,
5
- GTINTypes,
6
6
  GTINValidator,
7
7
  IdentifierTypes,
8
8
  LeaderTypes,
@@ -11,26 +11,24 @@ import {
11
11
  } from "../src/index.js";
12
12
  import { validateNumericIdentifierValidator } from "./numeric-identifier-validator.js";
13
13
 
14
- export function validateGTINValidator(validator: GTINValidator, isCreator: boolean, gtinBaseType: GTINBaseType): void {
14
+ export function validateGTINValidator(validator: GTINValidator, isCreator: boolean, gtinBaseLength: GTINBaseLength): void {
15
15
  let prefixType: PrefixType;
16
16
 
17
- switch (gtinBaseType) {
18
- case GTINTypes.GTIN13:
17
+ switch (gtinBaseLength) {
18
+ case GTINLengths.GTIN13:
19
19
  prefixType = PrefixTypes.GS1CompanyPrefix;
20
20
  break;
21
21
 
22
- case GTINTypes.GTIN12:
22
+ case GTINLengths.GTIN12:
23
23
  prefixType = PrefixTypes.UPCCompanyPrefix;
24
24
  break;
25
25
 
26
- case GTINTypes.GTIN8:
26
+ case GTINLengths.GTIN8:
27
27
  prefixType = PrefixTypes.GS18Prefix;
28
28
  break;
29
29
  }
30
30
 
31
- validateNumericIdentifierValidator(validator, IdentifierTypes.GTIN, prefixType, gtinBaseType, LeaderTypes.IndicatorDigit);
32
-
33
- expect(validator.gtinType).toBe(gtinBaseType);
31
+ validateNumericIdentifierValidator(validator, IdentifierTypes.GTIN, prefixType, gtinBaseLength, LeaderTypes.IndicatorDigit);
34
32
  }
35
33
 
36
34
  describe("GTIN validation and normalization", () => {
@@ -1,8 +1,8 @@
1
1
  import { expect } from "vitest";
2
2
  import {
3
3
  ContentCharacterSets,
4
- type GTINType,
5
- GTINTypes,
4
+ type GTINLength,
5
+ GTINLengths,
6
6
  IdentifierTypes,
7
7
  LeaderTypes,
8
8
  type PrefixManager,
@@ -14,29 +14,29 @@ import { validateNonNumericIdentifierValidator } from "./non-numeric-identifier-
14
14
  import { validateSerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
15
15
 
16
16
  export function validateIdentifierCreators(prefixManager: PrefixManager): void {
17
- let gtinType: GTINType;
17
+ let gtinLength: GTINLength;
18
18
 
19
19
  switch (prefixManager.prefixType) {
20
20
  case PrefixTypes.GS1CompanyPrefix:
21
21
  expect(prefixManager.prefix).toBe(prefixManager.gs1CompanyPrefix);
22
- gtinType = GTINTypes.GTIN13;
22
+ gtinLength = GTINLengths.GTIN13;
23
23
  break;
24
24
 
25
25
  case PrefixTypes.UPCCompanyPrefix:
26
26
  expect(prefixManager.prefix).toBe(prefixManager.upcCompanyPrefix);
27
- gtinType = GTINTypes.GTIN12;
27
+ gtinLength = GTINLengths.GTIN12;
28
28
  break;
29
29
 
30
30
  case PrefixTypes.GS18Prefix:
31
31
  expect(prefixManager.prefix).toBe(prefixManager.gs18Prefix);
32
- gtinType = GTINTypes.GTIN8;
32
+ gtinLength = GTINLengths.GTIN8;
33
33
  break;
34
34
  }
35
35
 
36
36
  // Validate creator caching.
37
37
  expect(prefixManager.gtinCreator).toBe(prefixManager.gtinCreator);
38
38
 
39
- validateGTINValidator(prefixManager.gtinCreator, true, gtinType);
39
+ validateGTINValidator(prefixManager.gtinCreator, true, gtinLength);
40
40
 
41
41
  if (prefixManager.prefixType !== PrefixTypes.GS18Prefix) {
42
42
  // Validate creator caching.
@@ -0,0 +1,35 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import {
3
+ GTINBaseLengths,
4
+ type IdentifierCreator,
5
+ IdentifierTypes,
6
+ IdentifierValidators,
7
+ PrefixManager,
8
+ PrefixTypes
9
+ } from "../src/index.js";
10
+
11
+ describe("Mixins", () => {
12
+ function validate<TValidator extends object, TCreator extends TValidator & IdentifierCreator>(validator: TValidator, creator: TCreator): void {
13
+ for (const key of Object.keys(validator)) {
14
+ expect(key in creator, key).toBe(true);
15
+ }
16
+ }
17
+
18
+ const prefixManager = PrefixManager.get(PrefixTypes.GS1CompanyPrefix, "9521234");
19
+
20
+ test(IdentifierTypes.GTIN, () => {
21
+ validate(IdentifierValidators.GTIN[GTINBaseLengths.GTIN13], prefixManager.gtinCreator);
22
+ });
23
+
24
+ test("Non-serialized numeric", () => {
25
+ validate(IdentifierValidators.GLN, prefixManager.glnCreator);
26
+ });
27
+
28
+ test("Serialized numeric", () => {
29
+ validate(IdentifierValidators.GRAI, prefixManager.graiCreator);
30
+ });
31
+
32
+ test("Non-numeric", () => {
33
+ validate(IdentifierValidators.GIAI, prefixManager.giaiCreator);
34
+ });
35
+ });
@@ -1,6 +1,11 @@
1
- import { type IdentifierType, type LeaderType, type NonGTINNumericIdentifierValidator, PrefixTypes } from "../src/index.js";
1
+ import {
2
+ type IdentifierType,
3
+ type LeaderType,
4
+ type NonSerializableNumericIdentifierValidator,
5
+ PrefixTypes
6
+ } from "../src/index.js";
2
7
  import { validateNumericIdentifierValidator } from "./numeric-identifier-validator.js";
3
8
 
4
- export function validateNonGTINNumericIdentifierValidator(validator: NonGTINNumericIdentifierValidator, isCreator: boolean, identifierType: IdentifierType, length: number, leaderType: LeaderType): void {
9
+ export function validateNonGTINNumericIdentifierValidator(validator: NonSerializableNumericIdentifierValidator, isCreator: boolean, identifierType: IdentifierType, length: number, leaderType: LeaderType): void {
5
10
  validateNumericIdentifierValidator(validator, identifierType, PrefixTypes.GS1CompanyPrefix, length, leaderType);
6
11
  }
@@ -7,12 +7,12 @@ import {
7
7
  PrefixTypes
8
8
  } from "../src/index.js";
9
9
  import { validateIdentifierValidator } from "./identifier-validator.js";
10
- import { creatorFor } from "./utility.js";
10
+ import { characterSetCreatorFor } from "./utility.js";
11
11
 
12
12
  export function validateNonNumericIdentifierValidator(validator: NonNumericIdentifierValidator, isCreator: boolean, identifierType: IdentifierType, length: number, referenceCharacterSet: ContentCharacterSet, requiresCheckCharacterPair: boolean): void {
13
13
  validateIdentifierValidator(validator, identifierType, PrefixTypes.GS1CompanyPrefix, length);
14
14
 
15
- const referenceCreator = creatorFor(referenceCharacterSet);
15
+ const referenceCreator = characterSetCreatorFor(referenceCharacterSet);
16
16
 
17
17
  expect(validator.referenceCharacterSet).toBe(referenceCharacterSet);
18
18
  expect(validator.referenceCreator).toBe(referenceCreator);
@@ -0,0 +1,64 @@
1
+ import { expect, test } from "vitest";
2
+ import {
3
+ ContentCharacterSets,
4
+ isSerializableNumericIdentifierCreator,
5
+ type SerializableNumericIdentifierCreator
6
+ } from "../src/index.js";
7
+ import { testNonGTINNumericIdentifierCreator } from "./non-gtin-numeric-identifier-creator.js";
8
+
9
+ export function testSerializableNumericIdentifierCreator(creator: SerializableNumericIdentifierCreator): void {
10
+ testNonGTINNumericIdentifierCreator(creator, () => {
11
+ test("Mapping", () => {
12
+ expect(isSerializableNumericIdentifierCreator(creator)).toBe(true);
13
+ });
14
+ }, () => {
15
+ test("Serialization", () => {
16
+ const identifier = creator.create(0, true);
17
+ const serial = "12345678";
18
+ const serializedIdentifier = identifier + serial;
19
+ const serials = [serial, "23456789", "34567890", "456789012"];
20
+ const serializedIdentifiers = serials.map(serial => identifier + serial);
21
+
22
+ expect(creator.createSerialized(0, serial, true)).toBe(serializedIdentifier);
23
+ expect(creator.concatenate(identifier, serial)).toBe(serializedIdentifier);
24
+ expect(Array.from(creator.createSerialized(0, serials, true))).toStrictEqual(serializedIdentifiers);
25
+ expect(Array.from(creator.concatenate(identifier, serials))).toStrictEqual(serializedIdentifiers);
26
+
27
+ const fullLengthSerial = "0".repeat(creator.serialComponentLength);
28
+ const fullLengthPlusOneSerial = fullLengthSerial + "0";
29
+ const fullLengthPlusOneSerialErrorMessage = `Length ${creator.serialComponentLength + 1} of serial component must be less than or equal to ${creator.serialComponentLength}`;
30
+
31
+ expect(() => creator.createSerialized(0, fullLengthSerial, true)).not.toThrow(RangeError);
32
+ expect(() => creator.concatenate(identifier, fullLengthSerial)).not.toThrow(RangeError);
33
+ expect(() => Array.from(creator.createSerialized(0, [...serials, fullLengthSerial], true))).not.toThrow(RangeError);
34
+ expect(() => Array.from(creator.concatenate(identifier, [...serials, fullLengthSerial]))).not.toThrow(RangeError);
35
+ expect(() => creator.createSerialized(0, fullLengthPlusOneSerial, true)).toThrow(fullLengthPlusOneSerialErrorMessage);
36
+ expect(() => creator.concatenate(identifier, fullLengthPlusOneSerial)).toThrow(fullLengthPlusOneSerialErrorMessage);
37
+ expect(() => Array.from(creator.createSerialized(0, [...serials, fullLengthPlusOneSerial], true))).toThrow(fullLengthPlusOneSerialErrorMessage);
38
+ expect(() => Array.from(creator.concatenate(identifier, [...serials, fullLengthPlusOneSerial]))).toThrow(fullLengthPlusOneSerialErrorMessage);
39
+
40
+ let invalidSerial: string;
41
+
42
+ switch (creator.serialComponentCharacterSet) {
43
+ case ContentCharacterSets.Numeric:
44
+ invalidSerial = "1234A5678";
45
+ break;
46
+
47
+ case ContentCharacterSets.AI82:
48
+ invalidSerial = "ABCD~1234";
49
+ break;
50
+
51
+ case ContentCharacterSets.AI39:
52
+ invalidSerial = "ABCD%1234";
53
+ break;
54
+ }
55
+
56
+ const invalidSerialErrorMessage = `Invalid character '${invalidSerial.charAt(4)}' at position 5 of serial component`;
57
+
58
+ expect(() => creator.createSerialized(0, invalidSerial, true)).toThrow(invalidSerialErrorMessage);
59
+ expect(() => creator.concatenate(identifier, invalidSerial)).toThrow(invalidSerialErrorMessage);
60
+ expect(() => Array.from(creator.createSerialized(0, [...serials, invalidSerial], true))).toThrow(invalidSerialErrorMessage);
61
+ expect(() => Array.from(creator.concatenate(identifier, [...serials, invalidSerial]))).toThrow(invalidSerialErrorMessage);
62
+ });
63
+ });
64
+ }
@@ -0,0 +1,6 @@
1
+ import type { IdentifierType, LeaderType, NonSerializableNumericIdentifierValidator } from "../src/index.js";
2
+ import { validateNonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
3
+
4
+ export function validateNonSerializableNumericIdentifierValidator(validator: NonSerializableNumericIdentifierValidator, isCreator: boolean, identifierType: IdentifierType, length: number, leaderType: LeaderType): void {
5
+ validateNonGTINNumericIdentifierValidator(validator, isCreator, identifierType, length, leaderType);
6
+ }
@@ -3,16 +3,21 @@ import { describe, expect, test } from "vitest";
3
3
  import {
4
4
  hasValidCheckDigit,
5
5
  isGTINCreator,
6
+ isNumericIdentifierCreator,
6
7
  LeaderTypes,
7
8
  type NumericIdentifierCreator,
8
- type NumericIdentifierDescriptor
9
+ type NumericIdentifierType
9
10
  } from "../src/index.js";
10
11
  import { testIdentifierCreatorCallback } from "./identifier-creator.js";
11
12
 
12
- export function testNumericIdentifierCreator<TNumericIdentifierDescriptor extends NumericIdentifierDescriptor>(creator: NumericIdentifierCreator<TNumericIdentifierDescriptor>, preTestCallback?: () => void, postTestCallback?: () => void): void {
13
+ export function testNumericIdentifierCreator<TNumericIdentifierType extends NumericIdentifierType>(creator: NumericIdentifierCreator<TNumericIdentifierType>, preTestCallback?: () => void, postTestCallback?: () => void): void {
13
14
  describe(isGTINCreator(creator) ? `${creator.identifierType}-${creator.length}` : creator.identifierType as string, () => {
14
15
  testIdentifierCreatorCallback(preTestCallback);
15
16
 
17
+ test("Mapping", () => {
18
+ expect(isNumericIdentifierCreator(creator)).toBe(true);
19
+ });
20
+
16
21
  const prefix = creator.prefix;
17
22
  const prefixLength = prefix.length;
18
23
  const hasExtensionDigit = creator.leaderType === LeaderTypes.ExtensionDigit;
@@ -7,12 +7,12 @@ import type {
7
7
  SerializableNumericIdentifierValidator
8
8
  } from "../src/index.js";
9
9
  import { validateNonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
10
- import { creatorFor } from "./utility.js";
10
+ import { characterSetCreatorFor } from "./utility.js";
11
11
 
12
12
  export function validateSerializableNumericIdentifierValidator(validator: SerializableNumericIdentifierValidator, isCreator: boolean, identifierType: IdentifierType, length: number, leaderType: LeaderType, serialLength: number, serialCharacterSet: ContentCharacterSet): void {
13
13
  validateNonGTINNumericIdentifierValidator(validator, isCreator, identifierType, length, leaderType);
14
14
 
15
- const serialCreator = creatorFor(serialCharacterSet);
15
+ const serialCreator = characterSetCreatorFor(serialCharacterSet);
16
16
 
17
17
  expect(validator.serialComponentLength).toBe(serialLength);
18
18
  expect(validator.serialComponentCharacterSet).toBe(serialCharacterSet);
package/test/utility.ts CHANGED
@@ -1,22 +1,22 @@
1
1
  import { type CharacterSetCreator, NUMERIC_CREATOR } from "@aidc-toolkit/utility";
2
2
  import { AI39_CREATOR, AI82_CREATOR, type ContentCharacterSet, ContentCharacterSets } from "../src/index.js";
3
3
 
4
- export function creatorFor(characterSet: ContentCharacterSet): CharacterSetCreator {
5
- let creator: CharacterSetCreator;
4
+ export function characterSetCreatorFor(characterSet: ContentCharacterSet): CharacterSetCreator {
5
+ let characterSetCreator: CharacterSetCreator;
6
6
 
7
7
  switch (characterSet) {
8
8
  case ContentCharacterSets.Numeric:
9
- creator = NUMERIC_CREATOR;
9
+ characterSetCreator = NUMERIC_CREATOR;
10
10
  break;
11
11
 
12
12
  case ContentCharacterSets.AI82:
13
- creator = AI82_CREATOR;
13
+ characterSetCreator = AI82_CREATOR;
14
14
  break;
15
15
 
16
16
  case ContentCharacterSets.AI39:
17
- creator = AI39_CREATOR;
17
+ characterSetCreator = AI39_CREATOR;
18
18
  break;
19
19
  }
20
20
 
21
- return creator;
21
+ return characterSetCreator;
22
22
  }
@@ -1,8 +1,8 @@
1
1
  import { describe, expect, test } from "vitest";
2
2
  import {
3
3
  ContentCharacterSets,
4
- type GTINBaseType,
5
- GTINTypes,
4
+ type GTINBaseLength,
5
+ GTINLengths,
6
6
  type GTINValidator,
7
7
  type IdentifierType,
8
8
  IdentifierTypes,
@@ -12,6 +12,7 @@ import {
12
12
  isGTINValidators,
13
13
  isNonGTINNumericIdentifierValidator,
14
14
  isNonNumericIdentifierValidator,
15
+ isNonSerializableNumericIdentifierValidator,
15
16
  isNumericIdentifierValidator,
16
17
  isSerializableNumericIdentifierValidator,
17
18
  LeaderTypes
@@ -22,7 +23,7 @@ import { validateNonNumericIdentifierValidator } from "./non-numeric-identifier-
22
23
  import { validateSerializableNumericIdentifierValidator } from "./serializable-numeric-identifier-validator.js";
23
24
 
24
25
  describe("Validators", () => {
25
- function validateMapping(identifierType: IdentifierType, expectedIdentifierValidatorsOrValidator: Readonly<Record<GTINBaseType, GTINValidator>> | IdentifierValidator, ...isIdentifierValidatorTypes: Array<(validator: IdentifierValidator) => boolean>): void {
26
+ function validateMapping(identifierType: IdentifierType, expectedIdentifierValidatorsOrValidator: Readonly<Record<GTINBaseLength, GTINValidator>> | IdentifierValidator, ...isIdentifierValidatorTypes: Array<(validator: IdentifierValidator) => boolean>): void {
26
27
  test(identifierType, () => {
27
28
  const validatorsOrValidator = IdentifierValidators[identifierType];
28
29
 
@@ -44,23 +45,23 @@ describe("Validators", () => {
44
45
 
45
46
  describe("Mapping", () => {
46
47
  validateMapping(IdentifierTypes.GTIN, IdentifierValidators.GTIN, isNumericIdentifierValidator, isGTINValidator);
47
- validateMapping(IdentifierTypes.GLN, IdentifierValidators.GLN, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator);
48
- validateMapping(IdentifierTypes.SSCC, IdentifierValidators.SSCC, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator);
48
+ validateMapping(IdentifierTypes.GLN, IdentifierValidators.GLN, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator, isNonSerializableNumericIdentifierValidator);
49
+ validateMapping(IdentifierTypes.SSCC, IdentifierValidators.SSCC, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator, isNonSerializableNumericIdentifierValidator);
49
50
  validateMapping(IdentifierTypes.GRAI, IdentifierValidators.GRAI, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator, isSerializableNumericIdentifierValidator);
50
51
  validateMapping(IdentifierTypes.GIAI, IdentifierValidators.GIAI, isNonNumericIdentifierValidator);
51
- validateMapping(IdentifierTypes.GSRN, IdentifierValidators.GSRN, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator);
52
+ validateMapping(IdentifierTypes.GSRN, IdentifierValidators.GSRN, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator, isNonSerializableNumericIdentifierValidator);
52
53
  validateMapping(IdentifierTypes.GDTI, IdentifierValidators.GDTI, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator, isSerializableNumericIdentifierValidator);
53
54
  validateMapping(IdentifierTypes.GINC, IdentifierValidators.GINC, isNonNumericIdentifierValidator);
54
- validateMapping(IdentifierTypes.GSIN, IdentifierValidators.GSIN, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator);
55
+ validateMapping(IdentifierTypes.GSIN, IdentifierValidators.GSIN, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator, isNonSerializableNumericIdentifierValidator);
55
56
  validateMapping(IdentifierTypes.GCN, IdentifierValidators.GCN, isNumericIdentifierValidator, isNonGTINNumericIdentifierValidator, isSerializableNumericIdentifierValidator);
56
57
  validateMapping(IdentifierTypes.CPID, IdentifierValidators.CPID, isNonNumericIdentifierValidator);
57
58
  validateMapping(IdentifierTypes.GMN, IdentifierValidators.GMN, isNonNumericIdentifierValidator);
58
59
  });
59
60
 
60
61
  test("Structure", () => {
61
- validateGTINValidator(IdentifierValidators.GTIN[GTINTypes.GTIN13], false, GTINTypes.GTIN13);
62
- validateGTINValidator(IdentifierValidators.GTIN[GTINTypes.GTIN12], false, GTINTypes.GTIN12);
63
- validateGTINValidator(IdentifierValidators.GTIN[GTINTypes.GTIN8], false, GTINTypes.GTIN8);
62
+ validateGTINValidator(IdentifierValidators.GTIN[GTINLengths.GTIN13], false, GTINLengths.GTIN13);
63
+ validateGTINValidator(IdentifierValidators.GTIN[GTINLengths.GTIN12], false, GTINLengths.GTIN12);
64
+ validateGTINValidator(IdentifierValidators.GTIN[GTINLengths.GTIN8], false, GTINLengths.GTIN8);
64
65
  validateNonGTINNumericIdentifierValidator(IdentifierValidators.GLN, false, IdentifierTypes.GLN, 13, LeaderTypes.None);
65
66
  validateNonGTINNumericIdentifierValidator(IdentifierValidators.SSCC, false, IdentifierTypes.SSCC, 18, LeaderTypes.ExtensionDigit);
66
67
  validateSerializableNumericIdentifierValidator(IdentifierValidators.GRAI, false, IdentifierTypes.GRAI, 13, LeaderTypes.None, 16, ContentCharacterSets.AI82);
@@ -68,40 +68,40 @@ describe("Variable measure RCN", () => {
68
68
  expect(() => GTINCreator.createVariableMeasureRCN("2IIIIIIIIIIC", 12345, 54321)).toThrow("Invalid variable measure RCN format");
69
69
 
70
70
  expect(() => {
71
- GTINCreator.parseVariableMeasureRCN("3PPPPPIIIIIC", "2543211234540");
71
+ GTINValidator.parseVariableMeasureRCN("3PPPPPIIIIIC", "2543211234540");
72
72
  }).toThrow("RCN length must match format length");
73
73
  expect(() => {
74
- GTINCreator.parseVariableMeasureRCN("3PPPPPIIIIIC", "25432112345");
74
+ GTINValidator.parseVariableMeasureRCN("3PPPPPIIIIIC", "25432112345");
75
75
  }).toThrow("RCN length must match format length");
76
76
  expect(() => {
77
- GTINCreator.parseVariableMeasureRCN("3PPPPPIIIIIC", "254321123454");
77
+ GTINValidator.parseVariableMeasureRCN("3PPPPPIIIIIC", "254321123454");
78
78
  }).toThrow("Invalid variable measure RCN format");
79
79
  expect(() => {
80
- GTINCreator.parseVariableMeasureRCN("20PPPPPIIIIC", "254321123454");
80
+ GTINValidator.parseVariableMeasureRCN("20PPPPPIIIIC", "254321123454");
81
81
  }).toThrow("Invalid variable measure RCN format");
82
82
  expect(() => {
83
- GTINCreator.parseVariableMeasureRCN("2PPPPPIIIIII", "254321123454");
83
+ GTINValidator.parseVariableMeasureRCN("2PPPPPIIIIII", "254321123454");
84
84
  }).toThrow("Invalid variable measure RCN format");
85
85
  expect(() => {
86
- GTINCreator.parseVariableMeasureRCN("2PPPPPIIIIKC", "254321123454");
86
+ GTINValidator.parseVariableMeasureRCN("2PPPPPIIIIKC", "254321123454");
87
87
  }).toThrow("Invalid variable measure RCN format");
88
88
  expect(() => {
89
- GTINCreator.parseVariableMeasureRCN("2PPPPPIIPIIC", "254321123454");
89
+ GTINValidator.parseVariableMeasureRCN("2PPPPPIIPIIC", "254321123454");
90
90
  }).toThrow("Invalid variable measure RCN format");
91
91
  expect(() => {
92
- GTINCreator.parseVariableMeasureRCN("2PPIPPIIIIIC", "254321123454");
92
+ GTINValidator.parseVariableMeasureRCN("2PPIPPIIIIIC", "254321123454");
93
93
  }).toThrow("Invalid variable measure RCN format");
94
94
  expect(() => {
95
- GTINCreator.parseVariableMeasureRCN("2PPPPPIIIIC", "25432112345");
95
+ GTINValidator.parseVariableMeasureRCN("2PPPPPIIIIC", "25432112345");
96
96
  }).toThrow("Invalid variable measure RCN format");
97
97
  expect(() => {
98
- GTINCreator.parseVariableMeasureRCN("2PPPPPIIIIIIC", "2543211234540");
98
+ GTINValidator.parseVariableMeasureRCN("2PPPPPIIIIIIC", "2543211234540");
99
99
  }).toThrow("Invalid variable measure RCN format");
100
100
  expect(() => {
101
- GTINCreator.parseVariableMeasureRCN("2PPPPPPPPPPC", "254321123454");
101
+ GTINValidator.parseVariableMeasureRCN("2PPPPPPPPPPC", "254321123454");
102
102
  }).toThrow("Invalid variable measure RCN format");
103
103
  expect(() => {
104
- GTINCreator.parseVariableMeasureRCN("2IIIIIIIIIIC", "254321123454");
104
+ GTINValidator.parseVariableMeasureRCN("2IIIIIIIIIIC", "254321123454");
105
105
  }).toThrow("Invalid variable measure RCN format");
106
106
  });
107
107
 
@@ -165,37 +165,37 @@ describe("Variable measure RCN", () => {
165
165
  expect(() => GTINCreator.createVariableMeasureRCN("27IIIIIIIIIIC", 12345, 54321)).toThrow("Invalid variable measure RCN format");
166
166
 
167
167
  expect(() => {
168
- GTINCreator.parseVariableMeasureRCN("30PPPPPIIIIIC", "27543211234570");
168
+ GTINValidator.parseVariableMeasureRCN("30PPPPPIIIIIC", "27543211234570");
169
169
  }).toThrow("RCN length must match format length");
170
170
  expect(() => {
171
- GTINCreator.parseVariableMeasureRCN("30PPPPPIIIIIC", "275432112345");
171
+ GTINValidator.parseVariableMeasureRCN("30PPPPPIIIIIC", "275432112345");
172
172
  }).toThrow("RCN length must match format length");
173
173
  expect(() => {
174
- GTINCreator.parseVariableMeasureRCN("30PPPPPIIIIIC", "2754321123457");
174
+ GTINValidator.parseVariableMeasureRCN("30PPPPPIIIIIC", "2754321123457");
175
175
  }).toThrow("Invalid variable measure RCN format");
176
176
  expect(() => {
177
- GTINCreator.parseVariableMeasureRCN("20PPPPPIIIIII", "2754321123457");
177
+ GTINValidator.parseVariableMeasureRCN("20PPPPPIIIIII", "2754321123457");
178
178
  }).toThrow("Invalid variable measure RCN format");
179
179
  expect(() => {
180
- GTINCreator.parseVariableMeasureRCN("21PPPPPIIIIKC", "2754321123457");
180
+ GTINValidator.parseVariableMeasureRCN("21PPPPPIIIIKC", "2754321123457");
181
181
  }).toThrow("Invalid variable measure RCN format");
182
182
  expect(() => {
183
- GTINCreator.parseVariableMeasureRCN("22PPPPPIIPIIC", "2754321123457");
183
+ GTINValidator.parseVariableMeasureRCN("22PPPPPIIPIIC", "2754321123457");
184
184
  }).toThrow("Invalid variable measure RCN format");
185
185
  expect(() => {
186
- GTINCreator.parseVariableMeasureRCN("23PPIPPIIIIIC", "2754321123457");
186
+ GTINValidator.parseVariableMeasureRCN("23PPIPPIIIIIC", "2754321123457");
187
187
  }).toThrow("Invalid variable measure RCN format");
188
188
  expect(() => {
189
- GTINCreator.parseVariableMeasureRCN("24PPPPPIIIIC", "275432112345");
189
+ GTINValidator.parseVariableMeasureRCN("24PPPPPIIIIC", "275432112345");
190
190
  }).toThrow("Invalid variable measure RCN format");
191
191
  expect(() => {
192
- GTINCreator.parseVariableMeasureRCN("25PPPPPIIIIIIC", "27543211234570");
192
+ GTINValidator.parseVariableMeasureRCN("25PPPPPIIIIIIC", "27543211234570");
193
193
  }).toThrow("Invalid variable measure RCN format");
194
194
  expect(() => {
195
- GTINCreator.parseVariableMeasureRCN("26PPPPPPPPPPC", "2754321123457");
195
+ GTINValidator.parseVariableMeasureRCN("26PPPPPPPPPPC", "2754321123457");
196
196
  }).toThrow("Invalid variable measure RCN format");
197
197
  expect(() => {
198
- GTINCreator.parseVariableMeasureRCN("27IIIIIIIIIIC", "2754321123457");
198
+ GTINValidator.parseVariableMeasureRCN("27IIIIIIIIIIC", "2754321123457");
199
199
  }).toThrow("Invalid variable measure RCN format");
200
200
  });
201
201
  });
@@ -1,95 +0,0 @@
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
@@ -1 +0,0 @@
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"}