@goatlab/fluent 0.7.39 → 0.7.41

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 (276) hide show
  1. package/dist/BaseConnector.d.ts +112 -0
  2. package/dist/BaseConnector.js +347 -0
  3. package/dist/BaseConnector.js.map +1 -0
  4. package/dist/Fluent.d.ts +11 -0
  5. package/dist/Fluent.js +27 -0
  6. package/dist/Fluent.js.map +1 -0
  7. package/dist/FluentConnectorInterface.d.ts +17 -0
  8. package/dist/FluentConnectorInterface.js +3 -0
  9. package/dist/FluentConnectorInterface.js.map +1 -0
  10. package/dist/FluentEntity.d.ts +7 -0
  11. package/dist/FluentEntity.js +34 -0
  12. package/dist/FluentEntity.js.map +1 -0
  13. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +123 -0
  14. package/dist/TypeOrmConnector/TypeOrmConnector.js +765 -0
  15. package/dist/TypeOrmConnector/TypeOrmConnector.js.map +1 -0
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +12 -0
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +167 -0
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js.map +1 -0
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +11 -0
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +52 -0
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js.map +1 -0
  22. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
  23. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +20 -0
  24. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js.map +1 -0
  25. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +7 -0
  26. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +19 -0
  27. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js.map +1 -0
  28. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +11 -0
  29. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +173 -0
  30. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js.map +1 -0
  31. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +13 -0
  32. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +207 -0
  33. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js.map +1 -0
  34. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +11 -0
  35. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +214 -0
  36. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js.map +1 -0
  37. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +44 -0
  38. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +87 -0
  39. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js.map +1 -0
  40. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +38 -0
  41. package/dist/TypeOrmConnector/test/basic/goat.entity.js +82 -0
  42. package/dist/TypeOrmConnector/test/basic/goat.entity.js.map +1 -0
  43. package/dist/TypeOrmConnector/test/flock.d.ts +4 -0
  44. package/dist/TypeOrmConnector/test/flock.js +26 -0
  45. package/dist/TypeOrmConnector/test/flock.js.map +1 -0
  46. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +7 -0
  47. package/dist/TypeOrmConnector/util/clearEmpties.js +33 -0
  48. package/dist/TypeOrmConnector/util/clearEmpties.js.map +1 -0
  49. package/dist/TypeOrmConnector/util/extractConditions.d.ts +12 -0
  50. package/dist/TypeOrmConnector/util/extractConditions.js +89 -0
  51. package/dist/TypeOrmConnector/util/extractConditions.js.map +1 -0
  52. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  53. package/dist/TypeOrmConnector/util/extractInclude.js +26 -0
  54. package/dist/TypeOrmConnector/util/extractInclude.js.map +1 -0
  55. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  56. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +49 -0
  57. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js.map +1 -0
  58. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +2 -0
  59. package/dist/TypeOrmConnector/util/extractOrderBy.js +24 -0
  60. package/dist/TypeOrmConnector/util/extractOrderBy.js.map +1 -0
  61. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  62. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +27 -0
  63. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js.map +1 -0
  64. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +6 -0
  65. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +29 -0
  66. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js.map +1 -0
  67. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  68. package/dist/TypeOrmConnector/util/isAnyObject.js +8 -0
  69. package/dist/TypeOrmConnector/util/isAnyObject.js.map +1 -0
  70. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  71. package/dist/TypeOrmConnector/util/nestQueryResults.js +38 -0
  72. package/dist/TypeOrmConnector/util/nestQueryResults.js.map +1 -0
  73. package/dist/core/Loopback/build-schema.d.ts +148 -0
  74. package/dist/core/Loopback/build-schema.js +443 -0
  75. package/dist/core/Loopback/build-schema.js.map +1 -0
  76. package/dist/core/Loopback/common-types.d.ts +96 -0
  77. package/dist/core/Loopback/common-types.js +24 -0
  78. package/dist/core/Loopback/common-types.js.map +1 -0
  79. package/dist/core/Loopback/json-to-schema.d.ts +41 -0
  80. package/dist/core/Loopback/json-to-schema.js +113 -0
  81. package/dist/core/Loopback/json-to-schema.js.map +1 -0
  82. package/dist/core/Loopback/mapValues.js +2280 -0
  83. package/dist/core/Loopback/metadata.d.ts +16 -0
  84. package/dist/core/Loopback/metadata.js +49 -0
  85. package/dist/core/Loopback/metadata.js.map +1 -0
  86. package/dist/core/Loopback/model.d.ts +233 -0
  87. package/dist/core/Loopback/model.js +394 -0
  88. package/dist/core/Loopback/model.js.map +1 -0
  89. package/dist/core/Loopback/query.d.ts +394 -0
  90. package/dist/core/Loopback/query.js +484 -0
  91. package/dist/core/Loopback/query.js.map +1 -0
  92. package/dist/core/Loopback/relation.types.d.ts +141 -0
  93. package/dist/core/Loopback/relation.types.js +18 -0
  94. package/dist/core/Loopback/relation.types.js.map +1 -0
  95. package/dist/core/Loopback/type-resolver.d.ts +42 -0
  96. package/dist/core/Loopback/type-resolver.js +60 -0
  97. package/dist/core/Loopback/type-resolver.js.map +1 -0
  98. package/dist/core/Loopback/type.d.ts +38 -0
  99. package/dist/core/Loopback/type.js +7 -0
  100. package/dist/core/Loopback/type.js.map +1 -0
  101. package/dist/core/Nestjs/applyDecorators.d.ts +10 -0
  102. package/dist/core/Nestjs/applyDecorators.js +26 -0
  103. package/dist/core/Nestjs/applyDecorators.js.map +1 -0
  104. package/dist/core/Nestjs/types/common.d.ts +16 -0
  105. package/dist/core/Nestjs/types/common.js +38 -0
  106. package/dist/core/Nestjs/types/common.js.map +1 -0
  107. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  108. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +8 -0
  109. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js.map +1 -0
  110. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  111. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +66 -0
  112. package/dist/core/Nestjs/types/decorators/api-property.decorator.js.map +1 -0
  113. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  114. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +136 -0
  115. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js.map +1 -0
  116. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +4 -0
  117. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +24 -0
  118. package/dist/core/Nestjs/types/decorators/args-type.decorator.js.map +1 -0
  119. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  120. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  121. package/dist/core/Nestjs/types/decorators/create-property.decorator.js.map +1 -0
  122. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +4 -0
  123. package/dist/core/Nestjs/types/decorators/directive.decorator.js +39 -0
  124. package/dist/core/Nestjs/types/decorators/directive.decorator.js.map +1 -0
  125. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +4 -0
  126. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +28 -0
  127. package/dist/core/Nestjs/types/decorators/extensions.decorator.js.map +1 -0
  128. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +48 -0
  129. package/dist/core/Nestjs/types/decorators/field.decorator.js +63 -0
  130. package/dist/core/Nestjs/types/decorators/field.decorator.js.map +1 -0
  131. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +25 -0
  132. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +29 -0
  133. package/dist/core/Nestjs/types/decorators/input-type.decorator.js.map +1 -0
  134. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +33 -0
  135. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +35 -0
  136. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js.map +1 -0
  137. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  138. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +46 -0
  139. package/dist/core/Nestjs/types/decorators/partial-type.helper.js.map +1 -0
  140. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  141. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +10 -0
  142. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js.map +1 -0
  143. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  144. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +10 -0
  145. package/dist/core/Nestjs/types/errors/directive-parsing.error.js.map +1 -0
  146. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  147. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +10 -0
  148. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js.map +1 -0
  149. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  150. package/dist/core/Nestjs/types/errors/undefined-type.error.js +11 -0
  151. package/dist/core/Nestjs/types/errors/undefined-type.error.js.map +1 -0
  152. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  153. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +11 -0
  154. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js.map +1 -0
  155. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +11 -0
  156. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +3 -0
  157. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js.map +1 -0
  158. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  159. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +3 -0
  160. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js.map +1 -0
  161. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  162. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +3 -0
  163. package/dist/core/Nestjs/types/interfaces/complexity.interface.js.map +1 -0
  164. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  165. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +3 -0
  166. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js.map +1 -0
  167. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +239 -0
  168. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +7 -0
  169. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js.map +1 -0
  170. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  171. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +3 -0
  172. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js.map +1 -0
  173. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  174. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +3 -0
  175. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js.map +1 -0
  176. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  177. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +3 -0
  178. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js.map +1 -0
  179. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  180. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +3 -0
  181. package/dist/core/Nestjs/types/interfaces/type-options.interface.js.map +1 -0
  182. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  183. package/dist/core/Nestjs/types/lazy-metadata.storage.js +66 -0
  184. package/dist/core/Nestjs/types/lazy-metadata.storage.js.map +1 -0
  185. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  186. package/dist/core/Nestjs/types/metadata/class.metadata.js +3 -0
  187. package/dist/core/Nestjs/types/metadata/class.metadata.js.map +1 -0
  188. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  189. package/dist/core/Nestjs/types/metadata/directive.metadata.js +3 -0
  190. package/dist/core/Nestjs/types/metadata/directive.metadata.js.map +1 -0
  191. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  192. package/dist/core/Nestjs/types/metadata/enum.metadata.js +3 -0
  193. package/dist/core/Nestjs/types/metadata/enum.metadata.js.map +1 -0
  194. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  195. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +3 -0
  196. package/dist/core/Nestjs/types/metadata/extensions.metadata.js.map +1 -0
  197. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  198. package/dist/core/Nestjs/types/metadata/index.js +12 -0
  199. package/dist/core/Nestjs/types/metadata/index.js.map +1 -0
  200. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  201. package/dist/core/Nestjs/types/metadata/interface.metadata.js +3 -0
  202. package/dist/core/Nestjs/types/metadata/interface.metadata.js.map +1 -0
  203. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  204. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +3 -0
  205. package/dist/core/Nestjs/types/metadata/object-type.metadata.js.map +1 -0
  206. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  207. package/dist/core/Nestjs/types/metadata/param.metadata.js +3 -0
  208. package/dist/core/Nestjs/types/metadata/param.metadata.js.map +1 -0
  209. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  210. package/dist/core/Nestjs/types/metadata/property.metadata.js +3 -0
  211. package/dist/core/Nestjs/types/metadata/property.metadata.js.map +1 -0
  212. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  213. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +3 -0
  214. package/dist/core/Nestjs/types/metadata/resolver.metadata.js.map +1 -0
  215. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  216. package/dist/core/Nestjs/types/metadata/union.metadata.js +3 -0
  217. package/dist/core/Nestjs/types/metadata/union.metadata.js.map +1 -0
  218. package/dist/core/Nestjs/types/object-type.decorator.d.ts +32 -0
  219. package/dist/core/Nestjs/types/object-type.decorator.js +33 -0
  220. package/dist/core/Nestjs/types/object-type.decorator.js.map +1 -0
  221. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  222. package/dist/core/Nestjs/types/omit-type.js +34 -0
  223. package/dist/core/Nestjs/types/omit-type.js.map +1 -0
  224. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  225. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  226. package/dist/core/Nestjs/types/reflection.utils.js.map +1 -0
  227. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +20 -0
  228. package/dist/core/Nestjs/types/set-metadata.decorator.js +33 -0
  229. package/dist/core/Nestjs/types/set-metadata.decorator.js.map +1 -0
  230. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +73 -0
  231. package/dist/core/Nestjs/types/type-metadata.storage.js +349 -0
  232. package/dist/core/Nestjs/types/type-metadata.storage.js.map +1 -0
  233. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  234. package/dist/core/Nestjs/types/utils/enum.utils.js +31 -0
  235. package/dist/core/Nestjs/types/utils/enum.utils.js.map +1 -0
  236. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +13 -0
  237. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
  238. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js.map +1 -0
  239. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
  240. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
  241. package/dist/core/Nestjs/types/utils/mapped-types.utils.js.map +1 -0
  242. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
  243. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +37 -0
  244. package/dist/core/Nestjs/types/utils/model-properties-accessor.js.map +1 -0
  245. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  246. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  247. package/dist/core/Nestjs/types/utils/type-helpers.utils.js.map +1 -0
  248. package/dist/core/types.d.ts +23 -0
  249. package/dist/core/types.js +31 -0
  250. package/dist/core/types.js.map +1 -0
  251. package/dist/decorators.d.ts +92 -0
  252. package/dist/decorators.js +163 -0
  253. package/dist/decorators.js.map +1 -0
  254. package/dist/generatorDatasource.d.ts +2 -0
  255. package/dist/generatorDatasource.js +13 -0
  256. package/dist/generatorDatasource.js.map +1 -0
  257. package/dist/index.d.ts +34 -0
  258. package/dist/index.js +59 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/loadRelations.d.ts +12 -0
  261. package/dist/loadRelations.js +139 -0
  262. package/dist/loadRelations.js.map +1 -0
  263. package/dist/outputKeys.d.ts +2 -0
  264. package/dist/outputKeys.js +18 -0
  265. package/dist/outputKeys.js.map +1 -0
  266. package/dist/testing/genericUnifiedTestSuite.d.ts +21 -0
  267. package/dist/testing/genericUnifiedTestSuite.js +256 -0
  268. package/dist/testing/genericUnifiedTestSuite.js.map +1 -0
  269. package/dist/testing/unifiedTestFactory.d.ts +38 -0
  270. package/dist/testing/unifiedTestFactory.js +297 -0
  271. package/dist/testing/unifiedTestFactory.js.map +1 -0
  272. package/dist/tsconfig.tsbuildinfo +1 -0
  273. package/dist/types.d.ts +104 -0
  274. package/dist/types.js +23 -0
  275. package/dist/types.js.map +1 -0
  276. package/package.json +48 -24
@@ -0,0 +1,112 @@
1
+ import { Collection } from '@goatlab/js-utils';
2
+ import { FindByIdFilter, FluentHasManyParams, FluentBelongsToParams, FluentBelongsToManyParams, FluentQuery, Primitives, QueryFieldSelector, QueryOutput, AnyObject } from './types';
3
+ export declare abstract class BaseConnector<ModelDTO, InputDTO, OutputDTO> {
4
+ protected outputKeys: string[];
5
+ protected relatedQuery?: {
6
+ entity: new () => ModelDTO;
7
+ query?: FluentQuery<ModelDTO>;
8
+ repository?: any;
9
+ key?: string;
10
+ pivot?: any;
11
+ };
12
+ protected chunk: null;
13
+ protected pullSize: null;
14
+ protected paginator: undefined;
15
+ protected rawQuery: undefined;
16
+ protected modelRelations: any;
17
+ isMongoDB: boolean;
18
+ constructor();
19
+ /**
20
+ *
21
+ * @param data
22
+ */
23
+ insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
24
+ /**
25
+ *
26
+ * @param id
27
+ * @param data
28
+ */
29
+ updateById(id: string, data: InputDTO): Promise<OutputDTO>;
30
+ /**
31
+ *
32
+ * @param query
33
+ */
34
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>;
35
+ /**
36
+ * Executes the findMany() method and
37
+ * returns it's first result
38
+ *
39
+ * @return {Object} First result
40
+ */
41
+ findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO> | null>;
42
+ requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<QueryOutput<FindByIdFilter<ModelDTO>, ModelDTO>>;
43
+ requireFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>>;
44
+ findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO>[]>;
45
+ findById<T extends FindByIdFilter<ModelDTO>>(id: string, q?: T): Promise<QueryOutput<T, ModelDTO> | null>;
46
+ /**
47
+ *
48
+ * Gets the data in the current query and
49
+ * transforms it into a collection
50
+ * @returns {Collection} Fluent Collection
51
+ */
52
+ collect(query: FluentQuery<ModelDTO>): Promise<Collection<OutputDTO>>;
53
+ /**
54
+ * Gets all values for a given KEY
55
+ * @returns {Array}
56
+ * @param path
57
+ */
58
+ pluck(path: QueryFieldSelector<ModelDTO>, query?: FluentQuery<ModelDTO>): Promise<Primitives[]>;
59
+ /**
60
+ * Sets the relatedQuery param, to be used by the
61
+ * different LOAD methods
62
+ * @param r
63
+ */
64
+ protected setRelatedQuery(r: {
65
+ entity: new () => ModelDTO;
66
+ query?: FluentQuery<ModelDTO>;
67
+ repository?: any;
68
+ key?: string;
69
+ }): void;
70
+ /**
71
+ * Associate One-to-Many relationship.
72
+ * Associate an object to the parent.
73
+ * @param data
74
+ */
75
+ associate(data: InputDTO | OutputDTO): Promise<OutputDTO[]>;
76
+ /**
77
+ * Attach an object with Many-to-Many relation
78
+ * @param id
79
+ */
80
+ attach(id: string, pivot?: AnyObject): Promise<any[]>;
81
+ /**
82
+ * One-to-Many relationship
83
+ * To be used in the "parent" entity (One)
84
+ */
85
+ protected hasMany<T extends FluentHasManyParams<T>>(r: T): InstanceType<T['repository']>;
86
+ /**
87
+ * Inverse One-to-Many relationship
88
+ * To be used in the "children" entity (Many)
89
+ */
90
+ protected belongsTo<T extends FluentBelongsToParams<T>>(r: T): InstanceType<T['repository']>;
91
+ /**
92
+ * One-to-One model relationship
93
+ */
94
+ protected hasOne(): void;
95
+ /**
96
+ * Many-to-Many relationship
97
+ * To be used in both of the Related models (excluding pivot)
98
+ */
99
+ protected belongsToMany<T extends FluentBelongsToManyParams<T>>(r: T): InstanceType<T['repository']>;
100
+ /**
101
+ *
102
+ */
103
+ protected hasManyThrough(): void;
104
+ /**
105
+ * Maps the given Data to show only those fields
106
+ * explicitly detailed on the Select function
107
+ *
108
+ * @param {Array} data Data from local or remote DB
109
+ * @returns {Array} Formatted data with the selected columns
110
+ */
111
+ protected jsApplySelect(select: FluentQuery<ModelDTO>['select'], data: ModelDTO[]): ModelDTO[];
112
+ }
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseConnector = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const clearEmpties_1 = require("./TypeOrmConnector/util/clearEmpties");
6
+ class BaseConnector {
7
+ outputKeys;
8
+ relatedQuery;
9
+ chunk = null;
10
+ pullSize = null;
11
+ paginator = undefined;
12
+ rawQuery = undefined;
13
+ modelRelations;
14
+ isMongoDB;
15
+ constructor() {
16
+ this.chunk = null;
17
+ this.pullSize = null;
18
+ this.paginator = undefined;
19
+ this.rawQuery = undefined;
20
+ this.outputKeys = [];
21
+ }
22
+ /**
23
+ *
24
+ * @param data
25
+ */
26
+ async insertMany(data) {
27
+ throw new Error('get() method not implemented');
28
+ }
29
+ /**
30
+ *
31
+ * @param id
32
+ * @param data
33
+ */
34
+ async updateById(id, data) {
35
+ throw new Error('get() method not implemented');
36
+ }
37
+ /**
38
+ *
39
+ * @param query
40
+ */
41
+ async findMany(query) {
42
+ throw new Error('findMany() method not implemented');
43
+ }
44
+ /**
45
+ * Executes the findMany() method and
46
+ * returns it's first result
47
+ *
48
+ * @return {Object} First result
49
+ */
50
+ async findFirst(query) {
51
+ const data = await this.findMany({ ...query, limit: 1 });
52
+ if (!data[0]) {
53
+ return null;
54
+ }
55
+ return data[0];
56
+ }
57
+ async requireById(id, q) {
58
+ const found = await this.findByIds([id], {
59
+ select: q?.select,
60
+ include: q?.include,
61
+ limit: 1
62
+ });
63
+ found.map(d => {
64
+ if (this.isMongoDB) {
65
+ d['id'] = d['id'].toString();
66
+ }
67
+ (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
68
+ });
69
+ if (!found[0]) {
70
+ throw new Error(`Object ${id} not found`);
71
+ }
72
+ // No need to validate, as findMany already validates
73
+ return found[0];
74
+ }
75
+ async requireFirst(query) {
76
+ const found = await this.findMany({ ...query, limit: 1 });
77
+ found.map(d => {
78
+ if (this.isMongoDB) {
79
+ d['id'] = d['id'].toString();
80
+ }
81
+ (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
82
+ });
83
+ if (!found[0]) {
84
+ const stringQuery = query ? JSON.stringify(query) : '';
85
+ throw new Error(`No objects found matching: ${stringQuery}`);
86
+ }
87
+ // The object is already validated by findMany
88
+ return found[0];
89
+ }
90
+ async findByIds(ids, q) {
91
+ const query = {
92
+ where: {
93
+ id: {
94
+ in: ids
95
+ }
96
+ },
97
+ limit: q?.limit,
98
+ select: q?.select,
99
+ include: q?.include
100
+ };
101
+ let data = await this.findMany(query);
102
+ // The object should already be validated by FindMany
103
+ return data;
104
+ }
105
+ async findById(id, q) {
106
+ const result = await this.findByIds([id], { ...q, limit: 1 });
107
+ if (!result[0]) {
108
+ return null;
109
+ }
110
+ return result[0];
111
+ }
112
+ /**
113
+ *
114
+ * Gets the data in the current query and
115
+ * transforms it into a collection
116
+ * @returns {Collection} Fluent Collection
117
+ */
118
+ async collect(query) {
119
+ const data = await this.findMany(query);
120
+ if (!Array.isArray(data)) {
121
+ return new js_utils_1.Collection([data]);
122
+ }
123
+ return new js_utils_1.Collection(data);
124
+ }
125
+ /**
126
+ * Gets all values for a given KEY
127
+ * @returns {Array}
128
+ * @param path
129
+ */
130
+ async pluck(path, query) {
131
+ const data = await this.findMany(query);
132
+ const paths = Object.keys(js_utils_1.Objects.flatten(path));
133
+ const result = data.map(e => {
134
+ const extracted = js_utils_1.Objects.getFromPath(e, String(paths[0]), undefined);
135
+ if (typeof extracted.value !== 'undefined') {
136
+ return extracted.value;
137
+ }
138
+ });
139
+ return result;
140
+ }
141
+ /**
142
+ * Sets the relatedQuery param, to be used by the
143
+ * different LOAD methods
144
+ * @param r
145
+ */
146
+ setRelatedQuery(r) {
147
+ this.relatedQuery = r;
148
+ }
149
+ /**
150
+ * Associate One-to-Many relationship.
151
+ * Associate an object to the parent.
152
+ * @param data
153
+ */
154
+ async associate(data) {
155
+ if (!this.relatedQuery?.entity || !this.relatedQuery.key) {
156
+ throw new Error('Associate can only be called as a related model');
157
+ }
158
+ // Get ids of the Loaded query "One" side of relation
159
+ const parentData = await this.relatedQuery.repository.findMany({
160
+ ...this.relatedQuery.query,
161
+ // We just need the IDs to make the relations
162
+ select: { id: true }
163
+ });
164
+ // "Many" side of relation foreignKey
165
+ let foreignKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
166
+ .inverseSidePropertyPath;
167
+ if (!foreignKeyName) {
168
+ throw new Error('The relationship was not properly defined. Please check that your Repository and Model relations have the same keys');
169
+ }
170
+ const relatedData = parentData.map(r => ({
171
+ [foreignKeyName]: r.id,
172
+ ...data
173
+ }));
174
+ const existingIds = (0, clearEmpties_1.clearEmpties)(relatedData.map(r => r.id));
175
+ const existingData = existingIds.length
176
+ ? await this.findByIds(relatedData.map(r => r.id))
177
+ : [];
178
+ const updateQueries = [];
179
+ const insertQueries = [];
180
+ for (const related of relatedData) {
181
+ const exists = existingData.find((d) => {
182
+ // We need to manually define the id field
183
+ const p = d;
184
+ return p.id === related.id;
185
+ });
186
+ if (exists) {
187
+ updateQueries.push(this.updateById(exists.id, {
188
+ ...exists,
189
+ [foreignKeyName]: related[foreignKeyName]
190
+ }));
191
+ }
192
+ else {
193
+ insertQueries.push(related);
194
+ }
195
+ }
196
+ const updateResult = await Promise.all(updateQueries);
197
+ const insertedResult = await this.insertMany(insertQueries);
198
+ return [...updateResult, ...insertedResult];
199
+ }
200
+ /**
201
+ * Attach an object with Many-to-Many relation
202
+ * @param id
203
+ */
204
+ // TODO: properly type the pivot object
205
+ async attach(id, pivot) {
206
+ if (!this.relatedQuery?.entity || !this.relatedQuery.key) {
207
+ throw new Error('Associate can only be called as a related model');
208
+ }
209
+ const parentData = await this.relatedQuery.repository.findMany({
210
+ ...this.relatedQuery.query,
211
+ // We just need the IDs to make the relations
212
+ select: { id: true }
213
+ });
214
+ const foreignKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
215
+ .joinColumns[0].propertyPath;
216
+ const inverseKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
217
+ .inverseJoinColumns[0].propertyPath;
218
+ if (!foreignKeyName || !inverseKeyName) {
219
+ throw new Error(`The relationship was not properly defined. Please check that your Repository and Model relations have the same keys: Searching for: ${this.relatedQuery.key}`);
220
+ }
221
+ // TODO: insert data to the pivot table
222
+ const relatedData = parentData.map(d => ({
223
+ [foreignKeyName]: d.id,
224
+ [inverseKeyName]: id,
225
+ ...pivot
226
+ }));
227
+ return this.relatedQuery.pivot.insertMany(relatedData);
228
+ }
229
+ /**
230
+ * One-to-Many relationship
231
+ * To be used in the "parent" entity (One)
232
+ */
233
+ hasMany(r) {
234
+ const newRepo = new r.repository();
235
+ const calleeName = new Error('dummy')
236
+ .stack?.split('\n')[2] || ''
237
+ // " at functionName ( ..." => "functionName"
238
+ .replace(/^\s+at\s+(.+?)\s.+/g, '$1')
239
+ .split('.')[1];
240
+ if (this.relatedQuery) {
241
+ newRepo.setRelatedQuery({
242
+ ...this.relatedQuery,
243
+ key: calleeName
244
+ });
245
+ }
246
+ return newRepo;
247
+ }
248
+ /**
249
+ * Inverse One-to-Many relationship
250
+ * To be used in the "children" entity (Many)
251
+ */
252
+ belongsTo(r) {
253
+ return this.hasMany(r);
254
+ }
255
+ /**
256
+ * One-to-One model relationship
257
+ */
258
+ // TODO implement hasOne
259
+ hasOne() {
260
+ throw new Error('Method not implemented');
261
+ }
262
+ /**
263
+ * Many-to-Many relationship
264
+ * To be used in both of the Related models (excluding pivot)
265
+ */
266
+ belongsToMany(r) {
267
+ const newRepo = new r.repository();
268
+ // Hacky way to get the name of the callee function
269
+ const relationName = new Error('dummy')
270
+ .stack?.split('\n')[2] || ''
271
+ // " at functionName ( ..." => "functionName"
272
+ .replace(/^\s+at\s+(.+?)\s.+/g, '$1')
273
+ .split('.')[1];
274
+ const pivot = new r.pivot();
275
+ pivot.setRelatedQuery({
276
+ ...this.relatedQuery,
277
+ key: relationName
278
+ });
279
+ if (this.relatedQuery) {
280
+ newRepo.setRelatedQuery({
281
+ ...this.relatedQuery,
282
+ key: relationName,
283
+ pivot
284
+ });
285
+ }
286
+ else {
287
+ newRepo.setRelatedQuery({
288
+ key: relationName,
289
+ pivot
290
+ });
291
+ }
292
+ // this.relationQuery.relations[relationName]
293
+ return newRepo;
294
+ }
295
+ /**
296
+ *
297
+ */
298
+ // TODO implement hasManyThrough
299
+ hasManyThrough() {
300
+ throw new Error('Method not implemented');
301
+ }
302
+ /**
303
+ * Maps the given Data to show only those fields
304
+ * explicitly detailed on the Select function
305
+ *
306
+ * @param {Array} data Data from local or remote DB
307
+ * @returns {Array} Formatted data with the selected columns
308
+ */
309
+ jsApplySelect(select, data) {
310
+ const _data = Array.isArray(data) ? [...data] : [data];
311
+ if (!select) {
312
+ return data;
313
+ }
314
+ const selectedAttributes = Object.keys(js_utils_1.Objects.flatten(select));
315
+ const iterationArray = this.outputKeys.length === 0 && selectedAttributes.length > 0
316
+ ? selectedAttributes
317
+ : [...this.outputKeys];
318
+ const compareArray = this.outputKeys.length === 0 && selectedAttributes.length > 0
319
+ ? [...this.outputKeys]
320
+ : selectedAttributes;
321
+ return _data.map(element => {
322
+ const newElement = {};
323
+ iterationArray.forEach(attribute => {
324
+ if (compareArray.length > 0 && !compareArray.includes(attribute)) {
325
+ return undefined;
326
+ }
327
+ const extract = js_utils_1.Objects.getFromPath(element, attribute, undefined);
328
+ let value = js_utils_1.Objects.get(() => extract.value, undefined);
329
+ if (typeof value !== 'undefined' && value !== null) {
330
+ if (typeof value === 'object' &&
331
+ value.hasOwnProperty('data') &&
332
+ value.data.hasOwnProperty('name')) {
333
+ newElement[extract.label] = value.data.name;
334
+ }
335
+ else {
336
+ // Skip ObjectId conversion for now to fix build
337
+ // TODO: Implement proper ObjectId handling
338
+ newElement[extract.label] = value;
339
+ }
340
+ }
341
+ });
342
+ return js_utils_1.Objects.nest(newElement);
343
+ });
344
+ }
345
+ }
346
+ exports.BaseConnector = BaseConnector;
347
+ //# sourceMappingURL=BaseConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConnector.js","sourceRoot":"","sources":["../src/BaseConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { AnyObject, Primitives } from './types';
3
+ import { Collection } from '@goatlab/js-utils';
4
+ export declare class Fluent {
5
+ /**
6
+ *
7
+ * @param args
8
+ */
9
+ static collect<T = AnyObject | Primitives>(data: T[]): Collection<T>;
10
+ static initialize(dataSources: DataSource[], Entities: any[]): Promise<void>;
11
+ }
package/dist/Fluent.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Fluent = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const generatorDatasource_1 = require("./generatorDatasource");
6
+ class Fluent {
7
+ /**
8
+ *
9
+ * @param args
10
+ */
11
+ static collect(data) {
12
+ return new js_utils_1.Collection(data);
13
+ }
14
+ static async initialize(dataSources, Entities) {
15
+ generatorDatasource_1.modelGeneratorDataSource.setOptions({ entities: Entities });
16
+ if (!generatorDatasource_1.modelGeneratorDataSource.isInitialized) {
17
+ await generatorDatasource_1.modelGeneratorDataSource.initialize();
18
+ }
19
+ for (const dataSource of dataSources) {
20
+ if (!dataSource.isInitialized) {
21
+ await dataSource.initialize();
22
+ }
23
+ }
24
+ }
25
+ }
26
+ exports.Fluent = Fluent;
27
+ //# sourceMappingURL=Fluent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fluent.js","sourceRoot":"","sources":["../src/Fluent.ts"],"names":[],"mappings":";;;AAEA,gDAA8C;AAC9C,+DAAgE;AAEhE,MAAa,MAAM;IACjB;;;OAGG;IACI,MAAM,CAAC,OAAO,CAA6B,IAAS;QACzD,OAAO,IAAI,qBAAU,CAAI,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAC5B,WAAyB,EACzB,QAAe;QAEf,8CAAwB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,8CAAwB,CAAC,aAAa,EAAE,CAAC;YAC5C,MAAM,8CAAwB,CAAC,UAAU,EAAE,CAAA;QAC7C,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC9B,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAxBD,wBAwBC"}
@@ -0,0 +1,17 @@
1
+ import { FindByIdFilter, FluentQuery, QueryOutput } from './types';
2
+ export interface FluentConnectorInterface<ModelDTO, InputDTO, OutputDTO> {
3
+ insert(data: InputDTO): Promise<OutputDTO>;
4
+ insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
5
+ findById<T extends FindByIdFilter<ModelDTO>>(id: string, q?: T): Promise<QueryOutput<T, ModelDTO> | null>;
6
+ findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO>[]>;
7
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>;
8
+ findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO> | null>;
9
+ requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<QueryOutput<FindByIdFilter<ModelDTO>, ModelDTO>>;
10
+ requireFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>>;
11
+ updateById(id: string, data: InputDTO): Promise<OutputDTO>;
12
+ replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
13
+ deleteById(id: string): Promise<string>;
14
+ loadFirst(query?: FluentQuery<ModelDTO>): any;
15
+ loadById(id: string): any;
16
+ raw(): any;
17
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=FluentConnectorInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentConnectorInterface.js","sourceRoot":"","sources":["../src/FluentConnectorInterface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export declare class FluentEntity {
2
+ type?: string;
3
+ roles?: string[];
4
+ created?: Date;
5
+ updated?: Date;
6
+ deleted?: Date;
7
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FluentEntity = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const decorators_1 = require("./decorators");
6
+ class FluentEntity {
7
+ type;
8
+ roles;
9
+ created;
10
+ updated;
11
+ deleted;
12
+ }
13
+ exports.FluentEntity = FluentEntity;
14
+ tslib_1.__decorate([
15
+ decorators_1.f.property({ required: false }),
16
+ tslib_1.__metadata("design:type", String)
17
+ ], FluentEntity.prototype, "type", void 0);
18
+ tslib_1.__decorate([
19
+ decorators_1.f.stringArray(String, { required: false }),
20
+ tslib_1.__metadata("design:type", Array)
21
+ ], FluentEntity.prototype, "roles", void 0);
22
+ tslib_1.__decorate([
23
+ decorators_1.f.created(),
24
+ tslib_1.__metadata("design:type", Date)
25
+ ], FluentEntity.prototype, "created", void 0);
26
+ tslib_1.__decorate([
27
+ decorators_1.f.updated(),
28
+ tslib_1.__metadata("design:type", Date)
29
+ ], FluentEntity.prototype, "updated", void 0);
30
+ tslib_1.__decorate([
31
+ decorators_1.f.deleted(),
32
+ tslib_1.__metadata("design:type", Date)
33
+ ], FluentEntity.prototype, "deleted", void 0);
34
+ //# sourceMappingURL=FluentEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentEntity.js","sourceRoot":"","sources":["../src/FluentEntity.ts"],"names":[],"mappings":";;;;AAAA,6CAAgC;AAEhC,MAAa,YAAY;IAEvB,IAAI,CAAS;IAGb,KAAK,CAAW;IAGhB,OAAO,CAAO;IAGd,OAAO,CAAO;IAGd,OAAO,CAAO;CACf;AAfD,oCAeC;AAbC;IADC,cAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;0CACnB;AAGb;IADC,cAAC,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;2CAC3B;AAGhB;IADC,cAAC,CAAC,OAAO,EAAE;sCACF,IAAI;6CAAA;AAGd;IADC,cAAC,CAAC,OAAO,EAAE;sCACF,IAAI;6CAAA;AAGd;IADC,cAAC,CAAC,OAAO,EAAE;sCACF,IAAI;6CAAA"}