@solid-nestjs/common 0.2.6 → 0.2.9

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 (253) hide show
  1. package/dist/adapters/index.d.ts +7 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/adapters/index.js +23 -0
  4. package/dist/adapters/index.js.map +1 -0
  5. package/dist/adapters/validation.adapter.d.ts +20 -0
  6. package/dist/adapters/validation.adapter.d.ts.map +1 -0
  7. package/dist/adapters/validation.adapter.js +309 -0
  8. package/dist/adapters/validation.adapter.js.map +1 -0
  9. package/dist/decorator-registry/decorator-registry.d.ts +54 -0
  10. package/dist/decorator-registry/decorator-registry.d.ts.map +1 -0
  11. package/dist/decorator-registry/decorator-registry.js +161 -0
  12. package/dist/decorator-registry/decorator-registry.js.map +1 -0
  13. package/dist/decorator-registry/index.d.ts +2 -0
  14. package/dist/decorator-registry/index.d.ts.map +1 -0
  15. package/dist/decorator-registry/index.js +18 -0
  16. package/dist/decorator-registry/index.js.map +1 -0
  17. package/dist/decorators/index.d.ts +6 -0
  18. package/dist/decorators/index.d.ts.map +1 -1
  19. package/dist/decorators/index.js +6 -0
  20. package/dist/decorators/index.js.map +1 -1
  21. package/dist/decorators/solid-entity.decorator.d.ts +6 -0
  22. package/dist/decorators/solid-entity.decorator.d.ts.map +1 -0
  23. package/dist/decorators/solid-entity.decorator.js +23 -0
  24. package/dist/decorators/solid-entity.decorator.js.map +1 -0
  25. package/dist/decorators/solid-field.decorator.d.ts +7 -0
  26. package/dist/decorators/solid-field.decorator.d.ts.map +1 -0
  27. package/dist/decorators/solid-field.decorator.js +51 -0
  28. package/dist/decorators/solid-field.decorator.js.map +1 -0
  29. package/dist/decorators/solid-id.decorator.d.ts +9 -0
  30. package/dist/decorators/solid-id.decorator.d.ts.map +1 -0
  31. package/dist/decorators/solid-id.decorator.js +27 -0
  32. package/dist/decorators/solid-id.decorator.js.map +1 -0
  33. package/dist/decorators/solid-input.decorator.d.ts +6 -0
  34. package/dist/decorators/solid-input.decorator.d.ts.map +1 -0
  35. package/dist/decorators/solid-input.decorator.js +35 -0
  36. package/dist/decorators/solid-input.decorator.js.map +1 -0
  37. package/dist/decorators/solid-relation.decorator.d.ts +19 -0
  38. package/dist/decorators/solid-relation.decorator.d.ts.map +1 -0
  39. package/dist/decorators/solid-relation.decorator.js +66 -0
  40. package/dist/decorators/solid-relation.decorator.js.map +1 -0
  41. package/dist/decorators/solid-timestamp.decorator.d.ts +13 -0
  42. package/dist/decorators/solid-timestamp.decorator.d.ts.map +1 -0
  43. package/dist/decorators/solid-timestamp.decorator.js +49 -0
  44. package/dist/decorators/solid-timestamp.decorator.js.map +1 -0
  45. package/dist/enums/aggregate-function.enum.d.ts +42 -0
  46. package/dist/enums/aggregate-function.enum.d.ts.map +1 -0
  47. package/dist/enums/aggregate-function.enum.js +46 -0
  48. package/dist/enums/aggregate-function.enum.js.map +1 -0
  49. package/dist/enums/index.d.ts +1 -0
  50. package/dist/enums/index.d.ts.map +1 -1
  51. package/dist/enums/index.js +1 -0
  52. package/dist/enums/index.js.map +1 -1
  53. package/dist/helpers/args-helpers/class-generator.helper.d.ts +143 -0
  54. package/dist/helpers/args-helpers/class-generator.helper.d.ts.map +1 -0
  55. package/dist/helpers/args-helpers/class-generator.helper.js +221 -0
  56. package/dist/helpers/args-helpers/class-generator.helper.js.map +1 -0
  57. package/dist/helpers/args-helpers/create-groupby-request.helper.d.ts +83 -0
  58. package/dist/helpers/args-helpers/create-groupby-request.helper.d.ts.map +1 -0
  59. package/dist/helpers/args-helpers/create-groupby-request.helper.js +119 -0
  60. package/dist/helpers/args-helpers/create-groupby-request.helper.js.map +1 -0
  61. package/dist/helpers/args-helpers/decorator-builder.helper.d.ts +160 -0
  62. package/dist/helpers/args-helpers/decorator-builder.helper.d.ts.map +1 -0
  63. package/dist/helpers/args-helpers/decorator-builder.helper.js +161 -0
  64. package/dist/helpers/args-helpers/decorator-builder.helper.js.map +1 -0
  65. package/dist/helpers/args-helpers/field-config.helper.d.ts +98 -0
  66. package/dist/helpers/args-helpers/field-config.helper.d.ts.map +1 -0
  67. package/dist/helpers/args-helpers/field-config.helper.js +143 -0
  68. package/dist/helpers/args-helpers/field-config.helper.js.map +1 -0
  69. package/dist/helpers/args-helpers/groupby-args-from.helper.d.ts +87 -0
  70. package/dist/helpers/args-helpers/groupby-args-from.helper.d.ts.map +1 -0
  71. package/dist/helpers/args-helpers/groupby-args-from.helper.js +185 -0
  72. package/dist/helpers/args-helpers/groupby-args-from.helper.js.map +1 -0
  73. package/dist/helpers/args-helpers/index.d.ts +15 -0
  74. package/dist/helpers/args-helpers/index.d.ts.map +1 -0
  75. package/dist/helpers/args-helpers/index.js +58 -0
  76. package/dist/helpers/args-helpers/index.js.map +1 -0
  77. package/dist/helpers/args-helpers/type-inference.helper.d.ts +191 -0
  78. package/dist/helpers/args-helpers/type-inference.helper.d.ts.map +1 -0
  79. package/dist/helpers/args-helpers/type-inference.helper.js +330 -0
  80. package/dist/helpers/args-helpers/type-inference.helper.js.map +1 -0
  81. package/dist/helpers/class-generation/dynamic-class.helper.d.ts +101 -0
  82. package/dist/helpers/class-generation/dynamic-class.helper.d.ts.map +1 -0
  83. package/dist/helpers/class-generation/dynamic-class.helper.js +180 -0
  84. package/dist/helpers/class-generation/dynamic-class.helper.js.map +1 -0
  85. package/dist/helpers/class-generation/index.d.ts +9 -0
  86. package/dist/helpers/class-generation/index.d.ts.map +1 -0
  87. package/dist/helpers/class-generation/index.js +18 -0
  88. package/dist/helpers/class-generation/index.js.map +1 -0
  89. package/dist/helpers/decorators/decorator-utils.helper.d.ts +75 -0
  90. package/dist/helpers/decorators/decorator-utils.helper.d.ts.map +1 -0
  91. package/dist/helpers/decorators/decorator-utils.helper.js +92 -0
  92. package/dist/helpers/decorators/decorator-utils.helper.js.map +1 -0
  93. package/dist/helpers/decorators/index.d.ts +9 -0
  94. package/dist/helpers/decorators/index.d.ts.map +1 -0
  95. package/dist/helpers/decorators/index.js +16 -0
  96. package/dist/helpers/decorators/index.js.map +1 -0
  97. package/dist/helpers/dto-generator-base.helper.d.ts +19 -0
  98. package/dist/helpers/dto-generator-base.helper.d.ts.map +1 -0
  99. package/dist/helpers/dto-generator-base.helper.js +72 -0
  100. package/dist/helpers/dto-generator-base.helper.js.map +1 -0
  101. package/dist/helpers/index.d.ts +9 -0
  102. package/dist/helpers/index.d.ts.map +1 -1
  103. package/dist/helpers/index.js +9 -0
  104. package/dist/helpers/index.js.map +1 -1
  105. package/dist/helpers/metadata-extractor.helper.d.ts +26 -0
  106. package/dist/helpers/metadata-extractor.helper.d.ts.map +1 -0
  107. package/dist/helpers/metadata-extractor.helper.js +67 -0
  108. package/dist/helpers/metadata-extractor.helper.js.map +1 -0
  109. package/dist/helpers/package-detector.helper.d.ts +33 -0
  110. package/dist/helpers/package-detector.helper.d.ts.map +1 -0
  111. package/dist/helpers/package-detector.helper.js +82 -0
  112. package/dist/helpers/package-detector.helper.js.map +1 -0
  113. package/dist/helpers/property-filter.helper.d.ts +15 -0
  114. package/dist/helpers/property-filter.helper.d.ts.map +1 -0
  115. package/dist/helpers/property-filter.helper.js +44 -0
  116. package/dist/helpers/property-filter.helper.js.map +1 -0
  117. package/dist/helpers/type-inference.helper.d.ts +76 -0
  118. package/dist/helpers/type-inference.helper.d.ts.map +1 -0
  119. package/dist/helpers/type-inference.helper.js +205 -0
  120. package/dist/helpers/type-inference.helper.js.map +1 -0
  121. package/dist/helpers/validation-inference.helper.d.ts +18 -0
  122. package/dist/helpers/validation-inference.helper.d.ts.map +1 -0
  123. package/dist/helpers/validation-inference.helper.js +100 -0
  124. package/dist/helpers/validation-inference.helper.js.map +1 -0
  125. package/dist/index.d.ts +4 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +4 -0
  128. package/dist/index.js.map +1 -1
  129. package/dist/interfaces/adapters/decorator-adapter.interface.d.ts +8 -0
  130. package/dist/interfaces/adapters/decorator-adapter.interface.d.ts.map +1 -0
  131. package/dist/interfaces/adapters/decorator-adapter.interface.js +3 -0
  132. package/dist/interfaces/adapters/decorator-adapter.interface.js.map +1 -0
  133. package/dist/interfaces/decorators/solid-field-options.interface.d.ts +55 -0
  134. package/dist/interfaces/decorators/solid-field-options.interface.d.ts.map +1 -0
  135. package/dist/interfaces/decorators/solid-field-options.interface.js +3 -0
  136. package/dist/interfaces/decorators/solid-field-options.interface.js.map +1 -0
  137. package/dist/interfaces/index.d.ts +5 -0
  138. package/dist/interfaces/index.d.ts.map +1 -1
  139. package/dist/interfaces/index.js +5 -0
  140. package/dist/interfaces/index.js.map +1 -1
  141. package/dist/interfaces/inputs/filters.interfaces.d.ts +36 -0
  142. package/dist/interfaces/inputs/filters.interfaces.d.ts.map +1 -0
  143. package/dist/interfaces/inputs/filters.interfaces.js +3 -0
  144. package/dist/interfaces/inputs/filters.interfaces.js.map +1 -0
  145. package/dist/interfaces/inputs/find-args.interface.d.ts +8 -0
  146. package/dist/interfaces/inputs/find-args.interface.d.ts.map +1 -0
  147. package/dist/interfaces/inputs/find-args.interface.js +3 -0
  148. package/dist/interfaces/inputs/find-args.interface.js.map +1 -0
  149. package/dist/interfaces/inputs/group-by-args.interface.d.ts +33 -0
  150. package/dist/interfaces/inputs/group-by-args.interface.d.ts.map +1 -0
  151. package/dist/interfaces/inputs/group-by-args.interface.js +3 -0
  152. package/dist/interfaces/inputs/group-by-args.interface.js.map +1 -0
  153. package/dist/interfaces/inputs/group-by-request.interface.d.ts +63 -0
  154. package/dist/interfaces/inputs/group-by-request.interface.d.ts.map +1 -0
  155. package/dist/interfaces/inputs/group-by-request.interface.js +3 -0
  156. package/dist/interfaces/inputs/group-by-request.interface.js.map +1 -0
  157. package/dist/interfaces/inputs/index.d.ts +6 -0
  158. package/dist/interfaces/inputs/index.d.ts.map +1 -0
  159. package/dist/interfaces/inputs/index.js +22 -0
  160. package/dist/interfaces/inputs/index.js.map +1 -0
  161. package/dist/interfaces/inputs/pagination-request.interface.d.ts +7 -0
  162. package/dist/interfaces/inputs/pagination-request.interface.d.ts.map +1 -0
  163. package/dist/interfaces/inputs/pagination-request.interface.js +3 -0
  164. package/dist/interfaces/inputs/pagination-request.interface.js.map +1 -0
  165. package/dist/interfaces/metadata/field-metadata.interface.d.ts +29 -0
  166. package/dist/interfaces/metadata/field-metadata.interface.d.ts.map +1 -0
  167. package/dist/interfaces/metadata/field-metadata.interface.js +3 -0
  168. package/dist/interfaces/metadata/field-metadata.interface.js.map +1 -0
  169. package/dist/interfaces/misc/group-by-args.interface.d.ts +33 -0
  170. package/dist/interfaces/misc/group-by-args.interface.d.ts.map +1 -0
  171. package/dist/interfaces/misc/group-by-args.interface.js +3 -0
  172. package/dist/interfaces/misc/group-by-args.interface.js.map +1 -0
  173. package/dist/interfaces/misc/group-by-request.interface.d.ts +63 -0
  174. package/dist/interfaces/misc/group-by-request.interface.d.ts.map +1 -0
  175. package/dist/interfaces/misc/group-by-request.interface.js +3 -0
  176. package/dist/interfaces/misc/group-by-request.interface.js.map +1 -0
  177. package/dist/interfaces/misc/group-by-response.interface.d.ts +59 -0
  178. package/dist/interfaces/misc/group-by-response.interface.d.ts.map +1 -0
  179. package/dist/interfaces/misc/group-by-response.interface.js +3 -0
  180. package/dist/interfaces/misc/group-by-response.interface.js.map +1 -0
  181. package/dist/interfaces/misc/group-by.interface.d.ts +145 -0
  182. package/dist/interfaces/misc/group-by.interface.d.ts.map +1 -0
  183. package/dist/interfaces/misc/group-by.interface.js +3 -0
  184. package/dist/interfaces/misc/group-by.interface.js.map +1 -0
  185. package/dist/interfaces/misc/index.d.ts +0 -4
  186. package/dist/interfaces/misc/index.d.ts.map +1 -1
  187. package/dist/interfaces/misc/index.js +0 -4
  188. package/dist/interfaces/misc/index.js.map +1 -1
  189. package/dist/interfaces/outputs/group-by-response.interface.d.ts +59 -0
  190. package/dist/interfaces/outputs/group-by-response.interface.d.ts.map +1 -0
  191. package/dist/interfaces/outputs/group-by-response.interface.js +3 -0
  192. package/dist/interfaces/outputs/group-by-response.interface.js.map +1 -0
  193. package/dist/interfaces/outputs/index.d.ts +3 -0
  194. package/dist/interfaces/outputs/index.d.ts.map +1 -0
  195. package/dist/interfaces/outputs/index.js +19 -0
  196. package/dist/interfaces/outputs/index.js.map +1 -0
  197. package/dist/interfaces/outputs/pagination-result.interface.d.ts +10 -0
  198. package/dist/interfaces/outputs/pagination-result.interface.d.ts.map +1 -0
  199. package/dist/interfaces/outputs/pagination-result.interface.js +3 -0
  200. package/dist/interfaces/outputs/pagination-result.interface.js.map +1 -0
  201. package/dist/interfaces/services/crud-service.interface.d.ts +2 -1
  202. package/dist/interfaces/services/crud-service.interface.d.ts.map +1 -1
  203. package/dist/interfaces/services/crud-service.interface.js.map +1 -1
  204. package/dist/interfaces/services/data-service.interface.d.ts +3 -1
  205. package/dist/interfaces/services/data-service.interface.d.ts.map +1 -1
  206. package/dist/interfaces/structures/common-services.index.d.ts +1 -0
  207. package/dist/interfaces/structures/common-services.index.d.ts.map +1 -0
  208. package/dist/interfaces/structures/common-services.index.js +2 -0
  209. package/dist/interfaces/structures/common-services.index.js.map +1 -0
  210. package/dist/interfaces/structures/crud-service-structure.interface.d.ts +2 -1
  211. package/dist/interfaces/structures/crud-service-structure.interface.d.ts.map +1 -1
  212. package/dist/interfaces/structures/data-service-structure.interface.d.ts +2 -1
  213. package/dist/interfaces/structures/data-service-structure.interface.d.ts.map +1 -1
  214. package/dist/interfaces/structures/entity-provider-structure.interface.d.ts +2 -1
  215. package/dist/interfaces/structures/entity-provider-structure.interface.d.ts.map +1 -1
  216. package/dist/interfaces/structures/entity-provider-structure.interface.js.map +1 -1
  217. package/dist/interfaces/structures/service-plugins.interface.d.ts +2 -1
  218. package/dist/interfaces/structures/service-plugins.interface.d.ts.map +1 -1
  219. package/dist/metadata/index.d.ts +2 -0
  220. package/dist/metadata/index.d.ts.map +1 -0
  221. package/dist/metadata/index.js +18 -0
  222. package/dist/metadata/index.js.map +1 -0
  223. package/dist/metadata/metadata-storage.d.ts +54 -0
  224. package/dist/metadata/metadata-storage.d.ts.map +1 -0
  225. package/dist/metadata/metadata-storage.js +106 -0
  226. package/dist/metadata/metadata-storage.js.map +1 -0
  227. package/dist/registry/index.d.ts +2 -0
  228. package/dist/registry/index.d.ts.map +1 -0
  229. package/dist/registry/index.js +18 -0
  230. package/dist/registry/index.js.map +1 -0
  231. package/dist/registry/relation-adapter-registry.d.ts +11 -0
  232. package/dist/registry/relation-adapter-registry.d.ts.map +1 -0
  233. package/dist/registry/relation-adapter-registry.js +30 -0
  234. package/dist/registry/relation-adapter-registry.js.map +1 -0
  235. package/dist/types/dto-generation.types.d.ts +46 -0
  236. package/dist/types/dto-generation.types.d.ts.map +1 -0
  237. package/dist/types/dto-generation.types.js +6 -0
  238. package/dist/types/dto-generation.types.js.map +1 -0
  239. package/dist/types/find-args.type.d.ts +9 -7
  240. package/dist/types/find-args.type.d.ts.map +1 -1
  241. package/dist/types/group-by.type.d.ts +41 -0
  242. package/dist/types/group-by.type.d.ts.map +1 -0
  243. package/dist/types/group-by.type.js +3 -0
  244. package/dist/types/group-by.type.js.map +1 -0
  245. package/dist/types/index.d.ts +2 -0
  246. package/dist/types/index.d.ts.map +1 -1
  247. package/dist/types/index.js +2 -0
  248. package/dist/types/index.js.map +1 -1
  249. package/package.json +2 -2
  250. package/dist/utils/object.utils.d.ts +0 -8
  251. package/dist/utils/object.utils.d.ts.map +0 -1
  252. package/dist/utils/object.utils.js +0 -11
  253. package/dist/utils/object.utils.js.map +0 -1
@@ -0,0 +1,143 @@
1
+ import { Type } from '@nestjs/common';
2
+ import 'reflect-metadata';
3
+ /**
4
+ * Options for generating a dynamic class
5
+ */
6
+ export interface ClassGeneratorOptions {
7
+ className: string;
8
+ baseClass?: Type<any>;
9
+ interfaces?: Type<any>[];
10
+ metadata?: Record<string, any>;
11
+ isAbstract?: boolean;
12
+ description?: string;
13
+ }
14
+ /**
15
+ * Options for adding a property to a class
16
+ */
17
+ export interface PropertyOptions {
18
+ type: Type<any>;
19
+ isOptional?: boolean;
20
+ isArray?: boolean;
21
+ description?: string;
22
+ example?: any;
23
+ deprecated?: boolean;
24
+ }
25
+ /**
26
+ * Generates a base class with the specified options.
27
+ * This is the foundation for creating dynamic DTO classes.
28
+ *
29
+ * @param options - Configuration for the class generation
30
+ * @returns A dynamically created class constructor
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const MyClass = generateBaseClass({
35
+ * className: 'ProductWhereFields',
36
+ * metadata: { version: '1.0' }
37
+ * });
38
+ *
39
+ * const instance = new MyClass();
40
+ * console.log(instance.constructor.name); // 'ProductWhereFields'
41
+ * ```
42
+ */
43
+ export declare function generateBaseClass(options: ClassGeneratorOptions): Type<any>;
44
+ /**
45
+ * Adds a property to a class prototype with proper descriptors.
46
+ * This function is used to dynamically add fields to generated DTO classes.
47
+ *
48
+ * @param targetClass - The class to add the property to
49
+ * @param propertyName - Name of the property to add
50
+ * @param options - Configuration for the property
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const MyClass = generateBaseClass({ className: 'TestClass' });
55
+ *
56
+ * addPropertyToClass(MyClass, 'name', {
57
+ * type: String,
58
+ * isOptional: true,
59
+ * description: 'The name field'
60
+ * });
61
+ *
62
+ * const instance = new MyClass();
63
+ * instance.name = 'test'; // Property is now available
64
+ * ```
65
+ */
66
+ export declare function addPropertyToClass(targetClass: Type<any>, propertyName: string, options: PropertyOptions): void;
67
+ /**
68
+ * Applies a decorator to a class property.
69
+ * This is a utility function for applying decorators dynamically.
70
+ *
71
+ * @param decorator - The decorator function to apply
72
+ * @param targetClass - The class containing the property
73
+ * @param propertyName - The name of the property to decorate
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * import { IsOptional } from 'class-validator';
78
+ *
79
+ * applyPropertyDecorator(
80
+ * IsOptional(),
81
+ * MyClass,
82
+ * 'name'
83
+ * );
84
+ * ```
85
+ */
86
+ export declare function applyPropertyDecorator(decorator: PropertyDecorator, targetClass: Type<any>, propertyName: string): void;
87
+ /**
88
+ * Applies multiple decorators to a class property.
89
+ *
90
+ * @param decorators - Array of decorators to apply
91
+ * @param targetClass - The class containing the property
92
+ * @param propertyName - The name of the property to decorate
93
+ */
94
+ export declare function applyPropertyDecorators(decorators: PropertyDecorator[], targetClass: Type<any>, propertyName: string): void;
95
+ /**
96
+ * Applies a decorator to a class.
97
+ *
98
+ * @param decorator - The class decorator to apply
99
+ * @param targetClass - The class to decorate
100
+ */
101
+ export declare function applyClassDecorator(decorator: ClassDecorator, targetClass: Type<any>): void;
102
+ /**
103
+ * Applies multiple decorators to a class.
104
+ *
105
+ * @param decorators - Array of class decorators to apply
106
+ * @param targetClass - The class to decorate
107
+ */
108
+ export declare function applyMultipleClassDecorators(decorators: ClassDecorator[], targetClass: Type<any>): void;
109
+ /**
110
+ * Gets metadata for a property from a class.
111
+ *
112
+ * @param targetClass - The class to get metadata from
113
+ * @param propertyName - The property name
114
+ * @param metadataKey - The metadata key to retrieve
115
+ * @returns The metadata value or undefined
116
+ */
117
+ export declare function getPropertyMetadata(targetClass: Type<any>, propertyName: string, metadataKey: string): any;
118
+ /**
119
+ * Sets metadata for a property on a class.
120
+ *
121
+ * @param targetClass - The class to set metadata on
122
+ * @param propertyName - The property name
123
+ * @param metadataKey - The metadata key
124
+ * @param metadataValue - The metadata value
125
+ */
126
+ export declare function setPropertyMetadata(targetClass: Type<any>, propertyName: string, metadataKey: string, metadataValue: any): void;
127
+ /**
128
+ * Gets all property names that have been defined on a class.
129
+ *
130
+ * @param targetClass - The class to inspect
131
+ * @returns Array of property names
132
+ */
133
+ export declare function getDefinedProperties(targetClass: Type<any>): string[];
134
+ /**
135
+ * Clones a class constructor, creating a new class with the same properties.
136
+ * This is useful for creating variations of existing classes.
137
+ *
138
+ * @param sourceClass - The class to clone
139
+ * @param newClassName - Name for the new class
140
+ * @returns A new class constructor
141
+ */
142
+ export declare function cloneClass(sourceClass: Type<any>, newClassName: string): Type<any>;
143
+ //# sourceMappingURL=class-generator.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-generator.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/args-helpers/class-generator.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CA4B3E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,GACvB,IAAI,CA4BN;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EACtB,YAAY,EAAE,MAAM,GACnB,IAAI,CAEN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EACtB,YAAY,EAAE,MAAM,GACnB,IAAI,CAIN;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GACrB,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,cAAc,EAAE,EAC5B,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GACrB,IAAI,CAIN;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EACtB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,GAAG,CAEL;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EACtB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,GAAG,GACjB,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAmBrE;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAWlF"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateBaseClass = generateBaseClass;
4
+ exports.addPropertyToClass = addPropertyToClass;
5
+ exports.applyPropertyDecorator = applyPropertyDecorator;
6
+ exports.applyPropertyDecorators = applyPropertyDecorators;
7
+ exports.applyClassDecorator = applyClassDecorator;
8
+ exports.applyMultipleClassDecorators = applyMultipleClassDecorators;
9
+ exports.getPropertyMetadata = getPropertyMetadata;
10
+ exports.setPropertyMetadata = setPropertyMetadata;
11
+ exports.getDefinedProperties = getDefinedProperties;
12
+ exports.cloneClass = cloneClass;
13
+ require("reflect-metadata");
14
+ /**
15
+ * Generates a base class with the specified options.
16
+ * This is the foundation for creating dynamic DTO classes.
17
+ *
18
+ * @param options - Configuration for the class generation
19
+ * @returns A dynamically created class constructor
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const MyClass = generateBaseClass({
24
+ * className: 'ProductWhereFields',
25
+ * metadata: { version: '1.0' }
26
+ * });
27
+ *
28
+ * const instance = new MyClass();
29
+ * console.log(instance.constructor.name); // 'ProductWhereFields'
30
+ * ```
31
+ */
32
+ function generateBaseClass(options) {
33
+ const { className, baseClass, metadata } = options;
34
+ // Create the dynamic class
35
+ let DynamicClass;
36
+ if (baseClass) {
37
+ // Extend from base class if provided
38
+ DynamicClass = class extends baseClass {
39
+ };
40
+ }
41
+ else {
42
+ // Create standalone class
43
+ DynamicClass = class {
44
+ };
45
+ }
46
+ // Set the class name
47
+ Object.defineProperty(DynamicClass, 'name', {
48
+ value: className,
49
+ configurable: true
50
+ });
51
+ // Apply custom metadata if provided
52
+ if (metadata) {
53
+ for (const [key, value] of Object.entries(metadata)) {
54
+ Reflect.defineMetadata(key, value, DynamicClass);
55
+ }
56
+ }
57
+ return DynamicClass;
58
+ }
59
+ /**
60
+ * Adds a property to a class prototype with proper descriptors.
61
+ * This function is used to dynamically add fields to generated DTO classes.
62
+ *
63
+ * @param targetClass - The class to add the property to
64
+ * @param propertyName - Name of the property to add
65
+ * @param options - Configuration for the property
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const MyClass = generateBaseClass({ className: 'TestClass' });
70
+ *
71
+ * addPropertyToClass(MyClass, 'name', {
72
+ * type: String,
73
+ * isOptional: true,
74
+ * description: 'The name field'
75
+ * });
76
+ *
77
+ * const instance = new MyClass();
78
+ * instance.name = 'test'; // Property is now available
79
+ * ```
80
+ */
81
+ function addPropertyToClass(targetClass, propertyName, options) {
82
+ const { type, isOptional = true } = options;
83
+ // Define the property on the prototype
84
+ Object.defineProperty(targetClass.prototype, propertyName, {
85
+ writable: true,
86
+ enumerable: true,
87
+ configurable: true,
88
+ value: undefined
89
+ });
90
+ // Set design-time type metadata for reflection
91
+ Reflect.defineMetadata('design:type', type, targetClass.prototype, propertyName);
92
+ // Set parameter types metadata (for constructor injection if needed)
93
+ const existingParamTypes = Reflect.getMetadata('design:paramtypes', targetClass) || [];
94
+ Reflect.defineMetadata('design:paramtypes', existingParamTypes, targetClass);
95
+ // Store additional property metadata
96
+ const propertyMetadata = {
97
+ type,
98
+ isOptional,
99
+ description: options.description,
100
+ example: options.example,
101
+ deprecated: options.deprecated
102
+ };
103
+ Reflect.defineMetadata(`property:${propertyName}`, propertyMetadata, targetClass.prototype);
104
+ }
105
+ /**
106
+ * Applies a decorator to a class property.
107
+ * This is a utility function for applying decorators dynamically.
108
+ *
109
+ * @param decorator - The decorator function to apply
110
+ * @param targetClass - The class containing the property
111
+ * @param propertyName - The name of the property to decorate
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * import { IsOptional } from 'class-validator';
116
+ *
117
+ * applyPropertyDecorator(
118
+ * IsOptional(),
119
+ * MyClass,
120
+ * 'name'
121
+ * );
122
+ * ```
123
+ */
124
+ function applyPropertyDecorator(decorator, targetClass, propertyName) {
125
+ decorator(targetClass.prototype, propertyName);
126
+ }
127
+ /**
128
+ * Applies multiple decorators to a class property.
129
+ *
130
+ * @param decorators - Array of decorators to apply
131
+ * @param targetClass - The class containing the property
132
+ * @param propertyName - The name of the property to decorate
133
+ */
134
+ function applyPropertyDecorators(decorators, targetClass, propertyName) {
135
+ for (const decorator of decorators) {
136
+ applyPropertyDecorator(decorator, targetClass, propertyName);
137
+ }
138
+ }
139
+ /**
140
+ * Applies a decorator to a class.
141
+ *
142
+ * @param decorator - The class decorator to apply
143
+ * @param targetClass - The class to decorate
144
+ */
145
+ function applyClassDecorator(decorator, targetClass) {
146
+ decorator(targetClass);
147
+ }
148
+ /**
149
+ * Applies multiple decorators to a class.
150
+ *
151
+ * @param decorators - Array of class decorators to apply
152
+ * @param targetClass - The class to decorate
153
+ */
154
+ function applyMultipleClassDecorators(decorators, targetClass) {
155
+ for (const decorator of decorators) {
156
+ applyClassDecorator(decorator, targetClass);
157
+ }
158
+ }
159
+ /**
160
+ * Gets metadata for a property from a class.
161
+ *
162
+ * @param targetClass - The class to get metadata from
163
+ * @param propertyName - The property name
164
+ * @param metadataKey - The metadata key to retrieve
165
+ * @returns The metadata value or undefined
166
+ */
167
+ function getPropertyMetadata(targetClass, propertyName, metadataKey) {
168
+ return Reflect.getMetadata(metadataKey, targetClass.prototype, propertyName);
169
+ }
170
+ /**
171
+ * Sets metadata for a property on a class.
172
+ *
173
+ * @param targetClass - The class to set metadata on
174
+ * @param propertyName - The property name
175
+ * @param metadataKey - The metadata key
176
+ * @param metadataValue - The metadata value
177
+ */
178
+ function setPropertyMetadata(targetClass, propertyName, metadataKey, metadataValue) {
179
+ Reflect.defineMetadata(metadataKey, metadataValue, targetClass.prototype, propertyName);
180
+ }
181
+ /**
182
+ * Gets all property names that have been defined on a class.
183
+ *
184
+ * @param targetClass - The class to inspect
185
+ * @returns Array of property names
186
+ */
187
+ function getDefinedProperties(targetClass) {
188
+ const properties = [];
189
+ const prototype = targetClass.prototype;
190
+ // Get own property names
191
+ const ownProps = Object.getOwnPropertyNames(prototype);
192
+ properties.push(...ownProps.filter(prop => prop !== 'constructor'));
193
+ // Walk up the prototype chain to get inherited properties
194
+ let currentProto = Object.getPrototypeOf(prototype);
195
+ while (currentProto && currentProto !== Object.prototype) {
196
+ const protoProps = Object.getOwnPropertyNames(currentProto);
197
+ properties.push(...protoProps.filter(prop => prop !== 'constructor' && !properties.includes(prop)));
198
+ currentProto = Object.getPrototypeOf(currentProto);
199
+ }
200
+ return properties;
201
+ }
202
+ /**
203
+ * Clones a class constructor, creating a new class with the same properties.
204
+ * This is useful for creating variations of existing classes.
205
+ *
206
+ * @param sourceClass - The class to clone
207
+ * @param newClassName - Name for the new class
208
+ * @returns A new class constructor
209
+ */
210
+ function cloneClass(sourceClass, newClassName) {
211
+ // Create new class extending the source
212
+ const ClonedClass = class extends sourceClass {
213
+ };
214
+ // Set the new name
215
+ Object.defineProperty(ClonedClass, 'name', {
216
+ value: newClassName,
217
+ configurable: true
218
+ });
219
+ return ClonedClass;
220
+ }
221
+ //# sourceMappingURL=class-generator.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-generator.helper.js","sourceRoot":"","sources":["../../../src/helpers/args-helpers/class-generator.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Core GroupByRequest Helper - Common Infrastructure
3
+ *
4
+ * This module provides the shared logic for creating GroupByRequest classes.
5
+ * It's used by the package-specific implementations in rest-api, graphql, and rest-graphql packages.
6
+ */
7
+ import { Type } from '@nestjs/common';
8
+ import { type ClassOptions } from './field-config.helper';
9
+ /**
10
+ * Configuration for creating a GroupByRequest class
11
+ */
12
+ export interface GroupByRequestConfig {
13
+ /** The GroupByFields class containing field definitions */
14
+ fields: Type<any>;
15
+ /** Optional custom class name (defaults to `${fields.name}Request`) */
16
+ className?: string;
17
+ /** Optional description for the GroupByRequest */
18
+ description?: string;
19
+ /** Optional class-level configuration */
20
+ classOptions?: ClassOptions;
21
+ }
22
+ /**
23
+ * Parsed and validated GroupByRequest configuration
24
+ */
25
+ export interface ParsedGroupByRequestConfig {
26
+ fieldsType: Type<any>;
27
+ className: string;
28
+ description: string;
29
+ classOptions: ClassOptions;
30
+ }
31
+ /**
32
+ * Validates and parses GroupByRequest configuration
33
+ *
34
+ * @param config - Raw configuration object
35
+ * @returns Parsed and validated configuration
36
+ * @throws Error if configuration is invalid
37
+ */
38
+ export declare function parseGroupByRequestConfig(config: GroupByRequestConfig): ParsedGroupByRequestConfig;
39
+ /**
40
+ * Creates the base GroupByRequest class with shared logic.
41
+ * This is the core implementation used by package-specific helpers.
42
+ *
43
+ * @param config - Configuration for GroupByRequest creation
44
+ * @returns Base class ready for decorator application
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // This is typically used by package-specific implementations
49
+ * const BaseClass = createGroupByRequestBase({
50
+ * fields: ProductGroupByFields,
51
+ * className: 'ProductGroupByRequest'
52
+ * });
53
+ *
54
+ * // Then apply package-specific decorators...
55
+ * ```
56
+ */
57
+ export declare function createGroupByRequestBase(config: GroupByRequestConfig): Type<any>;
58
+ /**
59
+ * Gets GroupByRequest metadata from a class
60
+ *
61
+ * @param target - The GroupByRequest class
62
+ * @returns Metadata object or undefined if not found
63
+ */
64
+ export declare function getGroupByRequestMetadata(target: Type<any>): any;
65
+ /**
66
+ * Checks if a class was created using createGroupByRequest helpers
67
+ *
68
+ * @param target - The class to check
69
+ * @returns True if it's a GroupByRequest class
70
+ */
71
+ export declare function isGroupByRequestClass(target: Type<any>): boolean;
72
+ /**
73
+ * Base class that can be extended by GroupByRequest implementations
74
+ * Provides common structure and can be used for type checking
75
+ */
76
+ export declare abstract class GroupByRequestInput {
77
+ /** Fields to group by */
78
+ fields?: any;
79
+ /** Optional aggregates configuration (for future use) */
80
+ aggregates?: any[];
81
+ }
82
+ export type { GroupByRequestConfig as GroupByRequestConfigType };
83
+ //# sourceMappingURL=create-groupby-request.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-groupby-request.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/args-helpers/create-groupby-request.helper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAA2C,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,GAAG,0BAA0B,CAkClG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CA+BhF;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAEhE;AAED;;;GAGG;AACH,8BAAsB,mBAAmB;IACvC,yBAAyB;IACzB,MAAM,CAAC,EAAE,GAAG,CAAC;IAEb,yDAAyD;IACzD,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;CACpB;AAGD,YAAY,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * Core GroupByRequest Helper - Common Infrastructure
4
+ *
5
+ * This module provides the shared logic for creating GroupByRequest classes.
6
+ * It's used by the package-specific implementations in rest-api, graphql, and rest-graphql packages.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.GroupByRequestInput = void 0;
10
+ exports.parseGroupByRequestConfig = parseGroupByRequestConfig;
11
+ exports.createGroupByRequestBase = createGroupByRequestBase;
12
+ exports.getGroupByRequestMetadata = getGroupByRequestMetadata;
13
+ exports.isGroupByRequestClass = isGroupByRequestClass;
14
+ const class_generation_1 = require("../class-generation");
15
+ const field_config_helper_1 = require("./field-config.helper");
16
+ /**
17
+ * Validates and parses GroupByRequest configuration
18
+ *
19
+ * @param config - Raw configuration object
20
+ * @returns Parsed and validated configuration
21
+ * @throws Error if configuration is invalid
22
+ */
23
+ function parseGroupByRequestConfig(config) {
24
+ if (!config) {
25
+ throw new Error('GroupByRequestConfig is required');
26
+ }
27
+ if (!config.fields) {
28
+ throw new Error('fields is required in GroupByRequestConfig');
29
+ }
30
+ if (typeof config.fields !== 'function') {
31
+ throw new Error('fields must be a class constructor (Type<any>)');
32
+ }
33
+ // Validate class options if provided
34
+ if (config.classOptions) {
35
+ (0, field_config_helper_1.validateClassOptions)(config.classOptions);
36
+ }
37
+ // Generate class name
38
+ const className = config.className || `${config.fields.name}Request`;
39
+ // Parse class options
40
+ const classOptions = (0, field_config_helper_1.parseClassOptions)(config.fields.name, 'Request', config.classOptions);
41
+ return {
42
+ fieldsType: config.fields,
43
+ className,
44
+ description: config.description || `GroupBy request with ${config.fields.name}`,
45
+ classOptions
46
+ };
47
+ }
48
+ /**
49
+ * Creates the base GroupByRequest class with shared logic.
50
+ * This is the core implementation used by package-specific helpers.
51
+ *
52
+ * @param config - Configuration for GroupByRequest creation
53
+ * @returns Base class ready for decorator application
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * // This is typically used by package-specific implementations
58
+ * const BaseClass = createGroupByRequestBase({
59
+ * fields: ProductGroupByFields,
60
+ * className: 'ProductGroupByRequest'
61
+ * });
62
+ *
63
+ * // Then apply package-specific decorators...
64
+ * ```
65
+ */
66
+ function createGroupByRequestBase(config) {
67
+ const parsedConfig = parseGroupByRequestConfig(config);
68
+ // Generate base class
69
+ const BaseClass = (0, class_generation_1.generateBaseClass)({
70
+ className: parsedConfig.className,
71
+ metadata: {
72
+ 'groupby-request:config': {
73
+ fieldsType: parsedConfig.fieldsType.name,
74
+ className: parsedConfig.className,
75
+ description: parsedConfig.description,
76
+ },
77
+ ...parsedConfig.classOptions.metadata
78
+ }
79
+ });
80
+ // Add fields property to prototype (will be decorated by package-specific implementations)
81
+ Object.defineProperty(BaseClass.prototype, 'fields', {
82
+ writable: true,
83
+ enumerable: true,
84
+ configurable: true
85
+ });
86
+ // Add aggregates property to prototype (optional, for future aggregation support)
87
+ Object.defineProperty(BaseClass.prototype, 'aggregates', {
88
+ writable: true,
89
+ enumerable: true,
90
+ configurable: true
91
+ });
92
+ return BaseClass;
93
+ }
94
+ /**
95
+ * Gets GroupByRequest metadata from a class
96
+ *
97
+ * @param target - The GroupByRequest class
98
+ * @returns Metadata object or undefined if not found
99
+ */
100
+ function getGroupByRequestMetadata(target) {
101
+ return Reflect.getMetadata('groupby-request:config', target);
102
+ }
103
+ /**
104
+ * Checks if a class was created using createGroupByRequest helpers
105
+ *
106
+ * @param target - The class to check
107
+ * @returns True if it's a GroupByRequest class
108
+ */
109
+ function isGroupByRequestClass(target) {
110
+ return !!getGroupByRequestMetadata(target);
111
+ }
112
+ /**
113
+ * Base class that can be extended by GroupByRequest implementations
114
+ * Provides common structure and can be used for type checking
115
+ */
116
+ class GroupByRequestInput {
117
+ }
118
+ exports.GroupByRequestInput = GroupByRequestInput;
119
+ //# sourceMappingURL=create-groupby-request.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-groupby-request.helper.js","sourceRoot":"","sources":["../../../src/helpers/args-helpers/create-groupby-request.helper.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqCH,8DAkCC;AAoBD,4DA+BC;AAQD,8DAEC;AAQD,sDAEC;AA3ID,0DAAoF;AACpF,+DAAmG;AA0BnG;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAC,MAA4B;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,qCAAqC;IACrC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,IAAA,0CAAoB,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,sBAAsB;IACtB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IAErE,sBAAsB;IACtB,MAAM,YAAY,GAAG,IAAA,uCAAiB,EACpC,MAAM,CAAC,MAAM,CAAC,IAAI,EAClB,SAAS,EACT,MAAM,CAAC,YAAY,CACpB,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,SAAS;QACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,wBAAwB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAC/E,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,wBAAwB,CAAC,MAA4B;IACnE,MAAM,YAAY,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAEvD,sBAAsB;IACtB,MAAM,SAAS,GAAG,IAAA,oCAAiB,EAAC;QAClC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,QAAQ,EAAE;YACR,wBAAwB,EAAE;gBACxB,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI;gBACxC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,WAAW,EAAE,YAAY,CAAC,WAAW;aACtC;YACD,GAAG,YAAY,CAAC,YAAY,CAAC,QAAQ;SACtC;KACF,CAAC,CAAC;IAEH,2FAA2F;IAC3F,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE;QACnD,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,kFAAkF;IAClF,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE;QACvD,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,MAAiB;IACzD,OAAO,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,MAAiB;IACrD,OAAO,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAsB,mBAAmB;CAMxC;AAND,kDAMC"}