@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,75 +1,41 @@
1
- import type { CharacterSetCreator } from "@aidc-toolkit/utility";
1
+ import type { AbstractConstructor } from "@aidc-toolkit/core";
2
2
  import type { IdentifierCreator } from "./identifier-creator.js";
3
- import type { IdentifierDescriptor } from "./identifier-descriptor.js";
4
- import type { IdentifierValidation } from "./identifier-validator.js";
3
+ import type { IdentifierType } from "./identifier-type.js";
4
+ import type { IdentifierValidation, IdentifierValidator } from "./identifier-validator.js";
5
+ import type { IdentifierTypeValidator, IdentifierValidatorConstructorsEntry } from "./identifier-validators.js";
5
6
  import type { PrefixProvider } from "./prefix-provider.js";
6
7
  /**
7
- * Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
8
- * PrefixProvider | prefix provider}.
8
+ * Identifier creator constructor type, which delegates to an identifier validator constructor.
9
9
  *
10
- * @template TIdentifierDescriptor
11
- * Identifier descriptor type.
10
+ * @template TIdentifierType
11
+ * Identifier type type.
12
12
  *
13
13
  * @template TIdentifierValidation
14
14
  * Identifier validation type.
15
+ *
16
+ * @template TIdentifierValidator
17
+ * Identifier validator type.
18
+ */
19
+ export type IdentifierCreatorConstructor<TIdentifierType extends IdentifierType, TIdentifierValidation extends IdentifierValidation, TIdentifierValidator extends IdentifierValidator<TIdentifierType, TIdentifierValidation>> = AbstractConstructor<[
20
+ prefixProvider: PrefixProvider,
21
+ prefix: string,
22
+ checkAllowance: number,
23
+ ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>
24
+ ], TIdentifierValidator & IdentifierCreator<TIdentifierType, TIdentifierValidation>>;
25
+ /**
26
+ * Mixin implementation of {@linkcode IdentifierCreator} with an appropriate identifier validator base.
27
+ *
28
+ * @template TIdentifierType
29
+ * Identifier type type.
30
+ *
31
+ * @template TIdentifierValidation
32
+ * Identifier validation type.
33
+ *
34
+ * @param IdentifierValidatorConstructor
35
+ * Identifier validator base.
36
+ *
37
+ * @returns
38
+ * Identifier creator class.
15
39
  */
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
- }
40
+ export declare function MixinAbstractIdentifierCreator<TIdentifierType extends IdentifierType, TIdentifierValidation extends IdentifierValidation>(IdentifierValidatorConstructor: AbstractConstructor<ConstructorParameters<IdentifierValidatorConstructorsEntry<TIdentifierType>>, IdentifierTypeValidator<TIdentifierType>>): IdentifierCreatorConstructor<TIdentifierType, TIdentifierValidation, IdentifierTypeValidator<TIdentifierType>>;
75
41
  //# sourceMappingURL=abstract-identifier-creator.d.ts.map
@@ -1 +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"}
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,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,KAAK,EAAE,uBAAuB,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAChH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,4BAA4B,CACpC,eAAe,SAAS,cAAc,EACtC,qBAAqB,SAAS,oBAAoB,EAClD,oBAAoB,SAAS,mBAAmB,CAAC,eAAe,EAAE,qBAAqB,CAAC,IACxF,mBAAmB,CACnB;IAAC,cAAc,EAAE,cAAc;IAAE,MAAM,EAAE,MAAM;IAAE,cAAc,EAAE,MAAM;IAAE,GAAG,IAAI,EAAE,qBAAqB,CAAC,oCAAoC,CAAC,eAAe,CAAC,CAAC;CAAC,EAC/J,oBAAoB,GAAG,iBAAiB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CACnF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAC1C,eAAe,SAAS,cAAc,EACtC,qBAAqB,SAAS,oBAAoB,EACpD,8BAA8B,EAAE,mBAAmB,CACjD,qBAAqB,CAAC,oCAAoC,CAAC,eAAe,CAAC,CAAC,EAC5E,uBAAuB,CAAC,eAAe,CAAC,CAC3C,GAAG,4BAA4B,CAC5B,eAAe,EACf,qBAAqB,EACrB,uBAAuB,CAAC,eAAe,CAAC,CAC3C,CAwEA"}
@@ -1,56 +1,73 @@
1
1
  /**
2
- * Abstract identifier creator. Implements common functionality for an identifier creator, bound to a {@link
3
- * PrefixProvider | prefix provider}.
2
+ * Mixin implementation of {@linkcode IdentifierCreator} with an appropriate identifier validator base.
4
3
  *
5
- * @template TIdentifierDescriptor
6
- * Identifier descriptor type.
4
+ * @template TIdentifierType
5
+ * Identifier type type.
7
6
  *
8
7
  * @template TIdentifierValidation
9
8
  * Identifier validation type.
9
+ *
10
+ * @param IdentifierValidatorConstructor
11
+ * Identifier validator base.
12
+ *
13
+ * @returns
14
+ * Identifier creator class.
10
15
  */
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
- }
16
+ export function MixinAbstractIdentifierCreator(IdentifierValidatorConstructor) {
49
17
  /**
50
- * @inheritDoc
18
+ * Abstract numeric identifier creator. Implements common functionality for a numeric identifier creator, mixed in
19
+ * with a matching numeric identifier validator.
51
20
  */
52
- get referenceLength() {
53
- return this._referenceLength;
21
+ class AbstractIdentifierCreator extends IdentifierValidatorConstructor {
22
+ /**
23
+ * Prefix provider.
24
+ */
25
+ #prefixProvider;
26
+ /**
27
+ * Reference length.
28
+ */
29
+ #referenceLength;
30
+ /**
31
+ * Constructor.
32
+ *
33
+ * @param prefixProvider
34
+ * Prefix provider.
35
+ *
36
+ * @param prefix
37
+ * Prefix within prefix provider to use to calculate reference length.
38
+ *
39
+ * @param checkAllowance
40
+ * Number of characters to allow for check digit or check character pair.
41
+ *
42
+ * @param args
43
+ * Originating constructor arguments.
44
+ */
45
+ constructor(prefixProvider, prefix, checkAllowance, ...args) {
46
+ super(...args);
47
+ this.#prefixProvider = prefixProvider;
48
+ // Reference length allows for prefix and optionally check digit or check character pair.
49
+ this.#referenceLength = this.length - prefix.length - checkAllowance;
50
+ }
51
+ /**
52
+ * @inheritDoc
53
+ */
54
+ get prefixProvider() {
55
+ return this.#prefixProvider;
56
+ }
57
+ /**
58
+ * @inheritDoc
59
+ */
60
+ get prefix() {
61
+ return this.prefixProvider.gs1CompanyPrefix;
62
+ }
63
+ /**
64
+ * @inheritDoc
65
+ */
66
+ get referenceLength() {
67
+ return this.#referenceLength;
68
+ }
54
69
  }
70
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
71
+ return AbstractIdentifierCreator;
55
72
  }
56
73
  //# sourceMappingURL=abstract-identifier-creator.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"abstract-identifier-creator.js","sourceRoot":"","sources":["../src/abstract-identifier-creator.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,8BAA8B,CAG5C,8BAGD;IAKG;;;OAGG;IACH,MAAe,yBAA0B,SACrC,8BAIH;QACG;;WAEG;QACM,eAAe,CAAiB;QAEzC;;WAEG;QACM,gBAAgB,CAAS;QAElC;;;;;;;;;;;;;;WAcG;QACH,YAAY,cAA8B,EAAE,MAAc,EAAE,cAAsB,EAAE,GAAG,IAAkF;YACrK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAEf,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;YAEtC,yFAAyF;YACzF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;QACzE,CAAC;QAED;;WAEG;QACH,IAAI,cAAc;YACd,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAED;;WAEG;QACH,IAAI,MAAM;YACN,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAChD,CAAC;QAED;;WAEG;QACH,IAAI,eAAe;YACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;QACjC,CAAC;KACJ;IAED,kKAAkK;IAClK,OAAO,yBAGN,CAAC;AACN,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { AbstractConstructor } from "@aidc-toolkit/core";
2
+ import type { IdentifierTypeValidator, IdentifierValidatorConstructorsEntry } from "./identifier-validators.js";
3
+ import type { NonGTINNumericIdentifierCreator } from "./non-gtin-numeric-identifier-creator.js";
4
+ import type { NonGTINNumericIdentifierType } from "./non-gtin-numeric-identifier-type.js";
5
+ import type { NonGTINNumericIdentifierValidator } from "./non-gtin-numeric-identifier-validator.js";
6
+ import type { PrefixProvider } from "./prefix-provider.js";
7
+ /**
8
+ * Non-GTIN numeric identifier creator constructor type, which delegates to a non-GTIN numeric identifier validator
9
+ * constructor.
10
+ *
11
+ * @template TNonGTINNumericIdentifierType
12
+ * Non-GTIN numeric identifier type type.
13
+ *
14
+ * @template TNonGTINNumericIdentifierValidator
15
+ * Non-GTIN numeric identifier validator type.
16
+ */
17
+ type NonGTINNumericIdentifierCreatorConstructor<TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType, TNonGTINNumericIdentifierValidator extends NonGTINNumericIdentifierValidator<TNonGTINNumericIdentifierType>> = AbstractConstructor<[
18
+ prefixProvider: PrefixProvider,
19
+ ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>
20
+ ], TNonGTINNumericIdentifierValidator & NonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType>>;
21
+ /**
22
+ * Mixin implementation of {@linkcode NonGTINNumericIdentifierCreator} with an appropriate non-GTIN numeric identifier
23
+ * validator base.
24
+ *
25
+ * @template TNonGTINNumericIdentifierType
26
+ * Non-GTIN numeric identifier type type.
27
+ *
28
+ * @param NonGTINNumericIdentifierValidatorConstructor
29
+ * Non-GTIN numeric identifier validator constructor.
30
+ *
31
+ * @returns
32
+ * Non-GTIN numeric identifier creator class.
33
+ */
34
+ export declare function MixinAbstractNonGTINNumericIdentifierCreator<TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType>(NonGTINNumericIdentifierValidatorConstructor: AbstractConstructor<ConstructorParameters<IdentifierValidatorConstructorsEntry<TNonGTINNumericIdentifierType>>, IdentifierTypeValidator<TNonGTINNumericIdentifierType>>): NonGTINNumericIdentifierCreatorConstructor<TNonGTINNumericIdentifierType, IdentifierTypeValidator<TNonGTINNumericIdentifierType>>;
35
+ export {};
36
+ //# sourceMappingURL=abstract-non-gtin-numeric-identifier-creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-non-gtin-numeric-identifier-creator.d.ts","sourceRoot":"","sources":["../src/abstract-non-gtin-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAChH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAChG,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;GASG;AACH,KAAK,0CAA0C,CAC3C,6BAA6B,SAAS,4BAA4B,EAClE,kCAAkC,SAAS,iCAAiC,CAAC,6BAA6B,CAAC,IAC3G,mBAAmB,CACnB;IAAC,cAAc,EAAE,cAAc;IAAE,GAAG,IAAI,EAAE,qBAAqB,CAAC,oCAAoC,CAAC,6BAA6B,CAAC,CAAC;CAAC,EACrI,kCAAkC,GAAG,+BAA+B,CAAC,6BAA6B,CAAC,CACtG,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,4CAA4C,CACxD,6BAA6B,SAAS,4BAA4B,EACpE,4CAA4C,EAAE,mBAAmB,CAC/D,qBAAqB,CAAC,oCAAoC,CAAC,6BAA6B,CAAC,CAAC,EAC1F,uBAAuB,CAAC,6BAA6B,CAAC,CACzD,GAAG,0CAA0C,CAC1C,6BAA6B,EAC7B,uBAAuB,CAAC,6BAA6B,CAAC,CACzD,CA8BA"}
@@ -0,0 +1,37 @@
1
+ import { MixinAbstractNumericIdentifierCreator } from "./abstract-numeric-identifier-creator.js";
2
+ /**
3
+ * Mixin implementation of {@linkcode NonGTINNumericIdentifierCreator} with an appropriate non-GTIN numeric identifier
4
+ * validator base.
5
+ *
6
+ * @template TNonGTINNumericIdentifierType
7
+ * Non-GTIN numeric identifier type type.
8
+ *
9
+ * @param NonGTINNumericIdentifierValidatorConstructor
10
+ * Non-GTIN numeric identifier validator constructor.
11
+ *
12
+ * @returns
13
+ * Non-GTIN numeric identifier creator class.
14
+ */
15
+ export function MixinAbstractNonGTINNumericIdentifierCreator(NonGTINNumericIdentifierValidatorConstructor) {
16
+ /**
17
+ * Abstract non-GTIN numeric identifier creator. Implements common functionality for a non-GTIN numeric identifier
18
+ * creator, mixed in with a matching non-GTIN numeric identifier validator.
19
+ */
20
+ class AbstractNonGTINNumericIdentifierCreator extends MixinAbstractNumericIdentifierCreator(NonGTINNumericIdentifierValidatorConstructor) {
21
+ /**
22
+ * Constructor.
23
+ *
24
+ * @param prefixProvider
25
+ * Prefix provider.
26
+ *
27
+ * @param args
28
+ * Originating constructor arguments.
29
+ */
30
+ constructor(prefixProvider, ...args) {
31
+ super(prefixProvider, prefixProvider.gs1CompanyPrefix, ...args);
32
+ }
33
+ }
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Base class was upcast to type with statically known members for mixin, downcast result.
35
+ return AbstractNonGTINNumericIdentifierCreator;
36
+ }
37
+ //# sourceMappingURL=abstract-non-gtin-numeric-identifier-creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-non-gtin-numeric-identifier-creator.js","sourceRoot":"","sources":["../src/abstract-non-gtin-numeric-identifier-creator.ts"],"names":[],"mappings":"AACA,OAAO,EACH,qCAAqC,EAExC,MAAM,0CAA0C,CAAC;AAyBlD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,4CAA4C,CAE1D,4CAGD;IAIG;;;OAGG;IACH,MAAe,uCAAwC,SACnD,qCAAqC,CAAC,4CAA4C,CAIrF;QACG;;;;;;;;WAQG;QACH,YAAY,cAA8B,EAAE,GAAG,IAAgG;YAC3I,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;KACJ;IAED,kKAAkK;IAClK,OAAO,uCAGN,CAAC;AACN,CAAC"}
@@ -1,92 +1,34 @@
1
- import { type TransformerInput, type TransformerOutput } from "@aidc-toolkit/utility";
2
- import { AbstractIdentifierCreator } from "./abstract-identifier-creator.js";
1
+ import type { AbstractConstructor } from "@aidc-toolkit/core";
2
+ import type { IdentifierTypeValidator, IdentifierValidatorConstructorsEntry } from "./identifier-validators.js";
3
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";
4
+ import type { NumericIdentifierType } from "./numeric-identifier-type.js";
5
+ import type { NumericIdentifierValidator } from "./numeric-identifier-validator.js";
7
6
  import type { PrefixProvider } from "./prefix-provider.js";
8
7
  /**
9
- * Abstract numeric identifier creator. Implements common functionality for a numeric identifier creator.
8
+ * Numeric identifier creator constructor type, which delegates to a numeric identifier validator constructor.
10
9
  *
11
- * @template TNumericIdentifierDescriptor
12
- * Numeric identifier descriptor type.
10
+ * @template TNumericIdentifierType
11
+ * Numeric identifier type type.
12
+ *
13
+ * @template TNumericIdentifierValidator
14
+ * Numeric identifier validator type.
15
+ */
16
+ export type NumericIdentifierCreatorConstructor<TNumericIdentifierType extends NumericIdentifierType, TNumericIdentifierValidator extends NumericIdentifierValidator<TNumericIdentifierType>> = AbstractConstructor<[
17
+ prefixProvider: PrefixProvider,
18
+ prefix: string,
19
+ ...args: ConstructorParameters<IdentifierValidatorConstructorsEntry<TNumericIdentifierType>>
20
+ ], TNumericIdentifierValidator & NumericIdentifierCreator<TNumericIdentifierType>>;
21
+ /**
22
+ * Mixin implementation of {@linkcode NumericIdentifierCreator} with an appropriate numeric identifier validator base.
23
+ *
24
+ * @template TNumericIdentifierType
25
+ * Numeric identifier type type.
26
+ *
27
+ * @param NumericIdentifierValidatorConstructor
28
+ * Numeric identifier validator base.
29
+ *
30
+ * @returns
31
+ * Numeric identifier creator class.
13
32
  */
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
- }
33
+ export declare function MixinAbstractNumericIdentifierCreator<TNumericIdentifierType extends NumericIdentifierType>(NumericIdentifierValidatorConstructor: AbstractConstructor<ConstructorParameters<IdentifierValidatorConstructorsEntry<TNumericIdentifierType>>, IdentifierTypeValidator<TNumericIdentifierType>>): NumericIdentifierCreatorConstructor<TNumericIdentifierType, IdentifierTypeValidator<TNumericIdentifierType>>;
92
34
  //# sourceMappingURL=abstract-numeric-identifier-creator.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"abstract-numeric-identifier-creator.d.ts","sourceRoot":"","sources":["../src/abstract-numeric-identifier-creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAU9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAEhH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAA+B,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACjH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,MAAM,mCAAmC,CAC3C,sBAAsB,SAAS,qBAAqB,EACpD,2BAA2B,SAAS,0BAA0B,CAAC,sBAAsB,CAAC,IACtF,mBAAmB,CACnB;IAAC,cAAc,EAAE,cAAc;IAAE,MAAM,EAAE,MAAM;IAAE,GAAG,IAAI,EAAE,qBAAqB,CAAC,oCAAoC,CAAC,sBAAsB,CAAC,CAAC;CAAC,EAC9I,2BAA2B,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,CACjF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qCAAqC,CACjD,sBAAsB,SAAS,qBAAqB,EACtD,qCAAqC,EAAE,mBAAmB,CACxD,qBAAqB,CAAC,oCAAoC,CAAC,sBAAsB,CAAC,CAAC,EACnF,uBAAuB,CAAC,sBAAsB,CAAC,CAClD,GAAG,mCAAmC,CACnC,sBAAsB,EACtB,uBAAuB,CAAC,sBAAsB,CAAC,CAClD,CAqKA"}