@goatlab/fluent 0.7.31 → 0.7.33

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 (262) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/package.json +34 -34
  4. package/dist/BaseConnector.d.ts +0 -43
  5. package/dist/BaseConnector.js +0 -257
  6. package/dist/Fluent.d.ts +0 -7
  7. package/dist/Fluent.js +0 -22
  8. package/dist/FluentConnectorInterface.d.ts +0 -17
  9. package/dist/FluentConnectorInterface.js +0 -2
  10. package/dist/FluentEntity.d.ts +0 -7
  11. package/dist/FluentEntity.js +0 -28
  12. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +0 -39
  13. package/dist/TypeOrmConnector/TypeOrmConnector.js +0 -392
  14. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +0 -7
  15. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +0 -149
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +0 -6
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +0 -46
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +0 -4
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +0 -19
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +0 -4
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +0 -12
  22. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +0 -6
  23. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +0 -166
  24. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +0 -8
  25. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +0 -200
  26. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +0 -6
  27. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +0 -207
  28. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +0 -1
  29. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +0 -256
  30. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +0 -116
  31. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +0 -74
  32. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +0 -5
  33. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +0 -17
  34. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +0 -5
  35. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +0 -17
  36. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +0 -5
  37. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +0 -17
  38. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +0 -1
  39. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +0 -193
  40. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +0 -53
  41. package/dist/TypeOrmConnector/test/basic/goat.entity.js +0 -53
  42. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +0 -5
  43. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +0 -16
  44. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +0 -5
  45. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +0 -16
  46. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +0 -5
  47. package/dist/TypeOrmConnector/test/basic/goat.repository.js +0 -16
  48. package/dist/TypeOrmConnector/test/dbEntities.d.ts +0 -6
  49. package/dist/TypeOrmConnector/test/dbEntities.js +0 -17
  50. package/dist/TypeOrmConnector/test/docker/docker.d.ts +0 -35
  51. package/dist/TypeOrmConnector/test/docker/docker.js +0 -148
  52. package/dist/TypeOrmConnector/test/docker/mongo.d.ts +0 -16
  53. package/dist/TypeOrmConnector/test/docker/mongo.js +0 -93
  54. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +0 -17
  55. package/dist/TypeOrmConnector/test/docker/mysql.js +0 -132
  56. package/dist/TypeOrmConnector/test/flock.d.ts +0 -4
  57. package/dist/TypeOrmConnector/test/flock.js +0 -25
  58. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +0 -10
  59. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +0 -28
  60. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +0 -2
  61. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +0 -12
  62. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +0 -9
  63. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +0 -25
  64. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +0 -6
  65. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +0 -17
  66. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +0 -10
  67. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +0 -32
  68. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +0 -10
  69. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +0 -26
  70. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +0 -2
  71. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +0 -16
  72. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +0 -9
  73. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +0 -25
  74. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +0 -6
  75. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +0 -17
  76. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +0 -10
  77. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +0 -33
  78. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +0 -7
  79. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +0 -32
  80. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +0 -511
  81. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +0 -8
  82. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +0 -10
  83. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +0 -26
  84. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +0 -15
  85. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +0 -9
  86. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +0 -1
  87. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +0 -575
  88. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +0 -152
  89. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +0 -14
  90. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +0 -12
  91. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +0 -8
  92. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +0 -6
  93. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +0 -29
  94. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +0 -9
  95. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +0 -25
  96. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +0 -5
  97. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +0 -23
  98. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +0 -15
  99. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +0 -9
  100. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +0 -6
  101. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +0 -17
  102. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +0 -14
  103. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +0 -56
  104. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +0 -10
  105. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +0 -30
  106. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +0 -546
  107. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +0 -67
  108. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +0 -2
  109. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +0 -12
  110. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +0 -1
  111. package/dist/TypeOrmConnector/util/clearEmpties.js +0 -25
  112. package/dist/TypeOrmConnector/util/extractConditions.d.ts +0 -6
  113. package/dist/TypeOrmConnector/util/extractConditions.js +0 -80
  114. package/dist/TypeOrmConnector/util/extractInclude.d.ts +0 -2
  115. package/dist/TypeOrmConnector/util/extractInclude.js +0 -25
  116. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +0 -12
  117. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +0 -42
  118. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +0 -4
  119. package/dist/TypeOrmConnector/util/extractOrderBy.js +0 -18
  120. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +0 -19
  121. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +0 -26
  122. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +0 -1
  123. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +0 -20
  124. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +0 -1
  125. package/dist/TypeOrmConnector/util/isAnyObject.js +0 -7
  126. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +0 -2
  127. package/dist/TypeOrmConnector/util/nestQueryResults.js +0 -31
  128. package/dist/cache.d.ts +0 -9
  129. package/dist/cache.js +0 -43
  130. package/dist/core/Loopback/build-schema.d.ts +0 -31
  131. package/dist/core/Loopback/build-schema.js +0 -333
  132. package/dist/core/Loopback/common-types.d.ts +0 -36
  133. package/dist/core/Loopback/common-types.js +0 -13
  134. package/dist/core/Loopback/json-to-schema.d.ts +0 -6
  135. package/dist/core/Loopback/json-to-schema.js +0 -96
  136. package/dist/core/Loopback/mapValues.d.ts +0 -2
  137. package/dist/core/Loopback/mapValues.js +0 -835
  138. package/dist/core/Loopback/metadata.d.ts +0 -9
  139. package/dist/core/Loopback/metadata.js +0 -28
  140. package/dist/core/Loopback/model.d.ts +0 -87
  141. package/dist/core/Loopback/model.js +0 -244
  142. package/dist/core/Loopback/query.d.ts +0 -97
  143. package/dist/core/Loopback/query.js +0 -292
  144. package/dist/core/Loopback/relation.types.d.ts +0 -45
  145. package/dist/core/Loopback/relation.types.js +0 -13
  146. package/dist/core/Loopback/type-resolver.d.ts +0 -7
  147. package/dist/core/Loopback/type-resolver.js +0 -34
  148. package/dist/core/Loopback/type.d.ts +0 -9
  149. package/dist/core/Loopback/type.js +0 -2
  150. package/dist/core/Nestjs/applyDecorators.d.ts +0 -1
  151. package/dist/core/Nestjs/applyDecorators.js +0 -17
  152. package/dist/core/Nestjs/types/common.d.ts +0 -16
  153. package/dist/core/Nestjs/types/common.js +0 -37
  154. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +0 -1
  155. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +0 -7
  156. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +0 -27
  157. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +0 -65
  158. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +0 -5
  159. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +0 -131
  160. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +0 -1
  161. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +0 -19
  162. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +0 -2
  163. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +0 -55
  164. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +0 -1
  165. package/dist/core/Nestjs/types/decorators/directive.decorator.js +0 -36
  166. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +0 -1
  167. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +0 -25
  168. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +0 -15
  169. package/dist/core/Nestjs/types/decorators/field.decorator.js +0 -56
  170. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +0 -7
  171. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +0 -23
  172. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +0 -9
  173. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +0 -27
  174. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +0 -3
  175. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +0 -42
  176. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +0 -3
  177. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +0 -9
  178. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +0 -3
  179. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +0 -9
  180. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +0 -3
  181. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +0 -9
  182. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +0 -3
  183. package/dist/core/Nestjs/types/errors/undefined-type.error.js +0 -10
  184. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +0 -3
  185. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +0 -10
  186. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +0 -5
  187. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +0 -2
  188. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +0 -5
  189. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +0 -2
  190. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +0 -11
  191. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +0 -2
  192. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +0 -15
  193. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +0 -2
  194. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +0 -235
  195. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +0 -2
  196. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +0 -2
  197. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +0 -2
  198. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +0 -5
  199. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +0 -2
  200. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +0 -9
  201. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +0 -2
  202. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +0 -5
  203. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +0 -2
  204. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +0 -15
  205. package/dist/core/Nestjs/types/lazy-metadata.storage.js +0 -67
  206. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +0 -11
  207. package/dist/core/Nestjs/types/metadata/class.metadata.js +0 -2
  208. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +0 -8
  209. package/dist/core/Nestjs/types/metadata/directive.metadata.js +0 -2
  210. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +0 -11
  211. package/dist/core/Nestjs/types/metadata/enum.metadata.js +0 -2
  212. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +0 -8
  213. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +0 -2
  214. package/dist/core/Nestjs/types/metadata/index.d.ts +0 -8
  215. package/dist/core/Nestjs/types/metadata/index.js +0 -11
  216. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +0 -6
  217. package/dist/core/Nestjs/types/metadata/interface.metadata.js +0 -2
  218. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +0 -4
  219. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +0 -2
  220. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +0 -18
  221. package/dist/core/Nestjs/types/metadata/param.metadata.js +0 -2
  222. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +0 -20
  223. package/dist/core/Nestjs/types/metadata/property.metadata.js +0 -2
  224. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +0 -34
  225. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +0 -2
  226. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +0 -9
  227. package/dist/core/Nestjs/types/metadata/union.metadata.js +0 -2
  228. package/dist/core/Nestjs/types/object-type.decorator.d.ts +0 -8
  229. package/dist/core/Nestjs/types/object-type.decorator.js +0 -25
  230. package/dist/core/Nestjs/types/omit-type.d.ts +0 -2
  231. package/dist/core/Nestjs/types/omit-type.js +0 -34
  232. package/dist/core/Nestjs/types/reflection.utils.d.ts +0 -15
  233. package/dist/core/Nestjs/types/reflection.utils.js +0 -65
  234. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +0 -4
  235. package/dist/core/Nestjs/types/set-metadata.decorator.js +0 -16
  236. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +0 -69
  237. package/dist/core/Nestjs/types/type-metadata.storage.js +0 -342
  238. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +0 -3
  239. package/dist/core/Nestjs/types/utils/enum.utils.js +0 -29
  240. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +0 -3
  241. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +0 -72
  242. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +0 -2
  243. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +0 -38
  244. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +0 -6
  245. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +0 -36
  246. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +0 -2
  247. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +0 -16
  248. package/dist/core/types.d.ts +0 -23
  249. package/dist/core/types.js +0 -29
  250. package/dist/decorators.d.ts +0 -47
  251. package/dist/decorators.js +0 -104
  252. package/dist/generatorDatasource.d.ts +0 -2
  253. package/dist/generatorDatasource.js +0 -12
  254. package/dist/index.d.ts +0 -30
  255. package/dist/index.js +0 -49
  256. package/dist/loadRelations.d.ts +0 -12
  257. package/dist/loadRelations.js +0 -133
  258. package/dist/outputKeys.d.ts +0 -2
  259. package/dist/outputKeys.js +0 -17
  260. package/dist/tsconfig.tsbuildinfo +0 -1
  261. package/dist/types.d.ts +0 -141
  262. package/dist/types.js +0 -22
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) GOAT, SPA. and its affiliates.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
File without changes
package/package.json CHANGED
@@ -1,59 +1,43 @@
1
1
  {
2
- "name": "@goatlab/fluent",
3
- "version": "0.7.31",
4
- "description": "Readable query Interface & API generator for TS and Node",
5
- "scripts": {
6
- "install-p": "yarn",
7
- "prebuild": "rimraf dist",
8
- "prestart": "rimraf dist",
9
- "predev": "rimraf dist",
10
- "test": "jest --forceExit",
11
- "dev": "tsc --watch",
12
- "lint": "eslint src --fix",
13
- "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
14
- "update:packages": "npm-check-updates -u && yarn",
15
- "serve": "tsc -w",
16
- "build": "tsc"
17
- },
2
+ "author": "ignacio.cabrera@goatlab.io",
18
3
  "dependencies": {
19
- "@goatlab/js-utils": "^0.8.24",
20
- "@loopback/metadata": "^4.1.2",
4
+ "@loopback/metadata": "^7.0.8",
21
5
  "bson": "^4.6.2",
22
6
  "graphql": "^16.3.0",
23
7
  "keyv": "^4.2.2",
24
8
  "openapi3-ts": "^2.0.2",
25
9
  "reflect-metadata": "^0.1.13",
26
10
  "typeorm": "^0.3.9",
27
- "zod": "^3.17.10"
11
+ "zod": "^3.17.10",
12
+ "@goatlab/js-utils": "0.8.35"
28
13
  },
14
+ "description": "Readable query Interface & API generator for TS and Node",
29
15
  "devDependencies": {
30
16
  "@types/node": "^18.7.13",
31
17
  "cross-spawn": "^7.0.3",
32
18
  "detect-port": "^1.3.0",
33
19
  "dotenv-cli": "^5.1.0",
34
20
  "eslint": "^8.5.0",
35
- "jest": "^27.5.1",
21
+ "jest": "^29.7.0",
36
22
  "modern-spawn": "^1.0.0",
37
23
  "mongodb": "^4.9.0",
38
24
  "mysql2": "^2.3.3",
39
25
  "net": "^1.0.2",
40
26
  "prettier": "^2.6.1",
41
27
  "pretty-quick": "^3.1.3",
42
- "ts-jest": "^27.1.4",
43
- "ts-node": "^10.7.0",
28
+ "ts-jest": "^29.2.6",
29
+ "ts-node": "^10.9.2",
44
30
  "turbo": "^1.1.10",
45
- "typescript": "^4.6.3"
31
+ "typescript": "^4.6.3",
32
+ "@goatlab/tsconfig": "0.0.11"
33
+ },
34
+ "engines": {
35
+ "node": ">=14.16.0"
46
36
  },
47
- "homepage": "https://docs.goatlab.io",
48
- "main": "dist/index.js",
49
- "types": "dist/index.d.ts",
50
37
  "files": [
51
38
  "dist"
52
39
  ],
53
- "private": false,
54
- "publishConfig": {
55
- "access": "public"
56
- },
40
+ "homepage": "https://docs.goatlab.io",
57
41
  "keywords": [
58
42
  "goat",
59
43
  "fluent",
@@ -64,9 +48,25 @@
64
48
  "typescript",
65
49
  "TS"
66
50
  ],
67
- "author": "ignacio.cabrera@goatlab.io",
68
51
  "license": "MIT",
69
- "engines": {
70
- "node": ">=14.16.0"
52
+ "main": "dist/index.js",
53
+ "name": "@goatlab/fluent",
54
+ "private": false,
55
+ "publishConfig": {
56
+ "access": "public"
57
+ },
58
+ "types": "dist/index.d.ts",
59
+ "version": "0.7.33",
60
+ "scripts": {
61
+ "build": "echo 'skip'",
62
+ "dev": "tsc --watch",
63
+ "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
64
+ "lint": "echo 'skip'",
65
+ "prebuild": "rimraf dist",
66
+ "predev": "rimraf dist",
67
+ "prestart": "rimraf dist",
68
+ "serve": "tsc -w",
69
+ "test": "echo 'skip'",
70
+ "update:packages": "npm-check-updates -u && yarn"
71
71
  }
72
- }
72
+ }
@@ -1,43 +0,0 @@
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
- insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
20
- updateById(id: string, data: InputDTO): Promise<OutputDTO>;
21
- findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>;
22
- findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO> | null>;
23
- requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<QueryOutput<FindByIdFilter<ModelDTO>, ModelDTO>>;
24
- requireFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>>;
25
- findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO>[]>;
26
- findById<T extends FindByIdFilter<ModelDTO>>(id: string, q?: T): Promise<QueryOutput<T, ModelDTO> | null>;
27
- collect(query: FluentQuery<ModelDTO>): Promise<Collection<OutputDTO>>;
28
- pluck(path: QueryFieldSelector<ModelDTO>, query?: FluentQuery<ModelDTO>): Promise<Primitives[]>;
29
- protected setRelatedQuery(r: {
30
- entity: new () => ModelDTO;
31
- query?: FluentQuery<ModelDTO>;
32
- repository?: any;
33
- key?: string;
34
- }): void;
35
- associate(data: InputDTO | OutputDTO): Promise<OutputDTO[]>;
36
- attach(id: string, pivot?: AnyObject): Promise<any[]>;
37
- protected hasMany<T extends FluentHasManyParams<T>>(r: T): InstanceType<T['repository']>;
38
- protected belongsTo<T extends FluentBelongsToParams<T>>(r: T): InstanceType<T['repository']>;
39
- protected hasOne(): void;
40
- protected belongsToMany<T extends FluentBelongsToManyParams<T>>(r: T): InstanceType<T['repository']>;
41
- protected hasManyThrough(): void;
42
- protected jsApplySelect(select: FluentQuery<ModelDTO>['select'], data: ModelDTO[]): ModelDTO[];
43
- }
@@ -1,257 +0,0 @@
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
- constructor() {
8
- this.chunk = null;
9
- this.pullSize = null;
10
- this.paginator = undefined;
11
- this.rawQuery = undefined;
12
- this.chunk = null;
13
- this.pullSize = null;
14
- this.paginator = undefined;
15
- this.rawQuery = undefined;
16
- this.outputKeys = [];
17
- }
18
- async insertMany(data) {
19
- throw new Error('get() method not implemented');
20
- }
21
- async updateById(id, data) {
22
- throw new Error('get() method not implemented');
23
- }
24
- async findMany(query) {
25
- throw new Error('findMany() method not implemented');
26
- }
27
- async findFirst(query) {
28
- const data = await this.findMany({ ...query, limit: 1 });
29
- if (!data[0]) {
30
- return null;
31
- }
32
- return data[0];
33
- }
34
- async requireById(id, q) {
35
- const found = await this.findByIds([id], {
36
- select: q?.select,
37
- include: q?.include,
38
- limit: 1
39
- });
40
- found.map(d => {
41
- if (this.isMongoDB) {
42
- d['id'] = d['id'].toString();
43
- }
44
- (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
45
- });
46
- if (!found[0]) {
47
- throw new Error(`Object ${id} not found`);
48
- }
49
- return found[0];
50
- }
51
- async requireFirst(query) {
52
- const found = await this.findMany({ ...query, limit: 1 });
53
- found.map(d => {
54
- if (this.isMongoDB) {
55
- d['id'] = d['id'].toString();
56
- }
57
- (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
58
- });
59
- if (!found[0]) {
60
- const stringQuery = query ? JSON.stringify(query) : '';
61
- throw new Error(`No objects found matching: ${stringQuery}`);
62
- }
63
- return found[0];
64
- }
65
- async findByIds(ids, q) {
66
- let data = await this.findMany({
67
- where: {
68
- id: {
69
- in: ids
70
- }
71
- },
72
- limit: q?.limit,
73
- select: q?.select,
74
- include: q?.include
75
- });
76
- return data;
77
- }
78
- async findById(id, q) {
79
- const result = await this.findByIds([id], { ...q, limit: 1 });
80
- if (!result[0]) {
81
- return null;
82
- }
83
- return result[0];
84
- }
85
- async collect(query) {
86
- const data = await this.findMany(query);
87
- if (!Array.isArray(data)) {
88
- return new js_utils_1.Collection([data]);
89
- }
90
- return new js_utils_1.Collection(data);
91
- }
92
- async pluck(path, query) {
93
- const data = await this.findMany(query);
94
- const paths = Object.keys(js_utils_1.Objects.flatten(path));
95
- const result = data.map(e => {
96
- const extracted = js_utils_1.Objects.getFromPath(e, String(paths[0]), undefined);
97
- if (typeof extracted.value !== 'undefined') {
98
- return extracted.value;
99
- }
100
- });
101
- return result;
102
- }
103
- setRelatedQuery(r) {
104
- this.relatedQuery = r;
105
- }
106
- async associate(data) {
107
- if (!this.relatedQuery?.entity || !this.relatedQuery.key) {
108
- throw new Error('Associate can only be called as a related model');
109
- }
110
- const parentData = await this.relatedQuery.repository.findMany({
111
- ...this.relatedQuery.query,
112
- select: { id: true }
113
- });
114
- let foreignKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
115
- .inverseSidePropertyPath;
116
- if (!foreignKeyName) {
117
- throw new Error('The relationship was not properly defined. Please check that your Repository and Model relations have the same keys');
118
- }
119
- const relatedData = parentData.map(r => ({
120
- [foreignKeyName]: r.id,
121
- ...data
122
- }));
123
- const existingIds = (0, clearEmpties_1.clearEmpties)(relatedData.map(r => r.id));
124
- const existingData = existingIds.length
125
- ? await this.findByIds(relatedData.map(r => r.id))
126
- : [];
127
- const updateQueries = [];
128
- const insertQueries = [];
129
- for (const related of relatedData) {
130
- const exists = existingData.find((d) => {
131
- const p = d;
132
- return p.id === related.id;
133
- });
134
- if (exists) {
135
- updateQueries.push(this.updateById(exists.id, {
136
- ...exists,
137
- [foreignKeyName]: related[foreignKeyName]
138
- }));
139
- }
140
- else {
141
- insertQueries.push(related);
142
- }
143
- }
144
- const updateResult = await Promise.all(updateQueries);
145
- const insertedResult = await this.insertMany(insertQueries);
146
- return [...updateResult, ...insertedResult];
147
- }
148
- async attach(id, pivot) {
149
- if (!this.relatedQuery?.entity || !this.relatedQuery.key) {
150
- throw new Error('Associate can only be called as a related model');
151
- }
152
- const parentData = await this.relatedQuery.repository.findMany({
153
- ...this.relatedQuery.query,
154
- select: { id: true }
155
- });
156
- const foreignKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
157
- .joinColumns[0].propertyPath;
158
- const inverseKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
159
- .inverseJoinColumns[0].propertyPath;
160
- if (!foreignKeyName || !inverseKeyName) {
161
- 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}`);
162
- }
163
- const relatedData = parentData.map(d => ({
164
- [foreignKeyName]: d.id,
165
- [inverseKeyName]: id,
166
- ...pivot
167
- }));
168
- return this.relatedQuery.pivot.insertMany(relatedData);
169
- }
170
- hasMany(r) {
171
- const newRepo = new r.repository();
172
- const calleeName = new Error('dummy')
173
- .stack.split('\n')[2]
174
- .replace(/^\s+at\s+(.+?)\s.+/g, '$1')
175
- .split('.')[1];
176
- if (this.relatedQuery) {
177
- newRepo.setRelatedQuery({
178
- ...this.relatedQuery,
179
- key: calleeName
180
- });
181
- }
182
- return newRepo;
183
- }
184
- belongsTo(r) {
185
- return this.hasMany(r);
186
- }
187
- hasOne() {
188
- throw new Error('Method not implemented');
189
- }
190
- belongsToMany(r) {
191
- const newRepo = new r.repository();
192
- const relationName = new Error('dummy')
193
- .stack.split('\n')[2]
194
- .replace(/^\s+at\s+(.+?)\s.+/g, '$1')
195
- .split('.')[1];
196
- const pivot = new r.pivot();
197
- pivot.setRelatedQuery({
198
- ...this.relatedQuery,
199
- key: relationName
200
- });
201
- if (this.relatedQuery) {
202
- newRepo.setRelatedQuery({
203
- ...this.relatedQuery,
204
- key: relationName,
205
- pivot
206
- });
207
- }
208
- else {
209
- newRepo.setRelatedQuery({
210
- key: relationName,
211
- pivot
212
- });
213
- }
214
- return newRepo;
215
- }
216
- hasManyThrough() {
217
- throw new Error('Method not implemented');
218
- }
219
- jsApplySelect(select, data) {
220
- const _data = Array.isArray(data) ? [...data] : [data];
221
- if (!select) {
222
- return data;
223
- }
224
- const selectedAttributes = Object.keys(js_utils_1.Objects.flatten(select));
225
- const iterationArray = this.outputKeys.length === 0 && selectedAttributes.length > 0
226
- ? selectedAttributes
227
- : [...this.outputKeys];
228
- const compareArray = this.outputKeys.length === 0 && selectedAttributes.length > 0
229
- ? [...this.outputKeys]
230
- : selectedAttributes;
231
- return _data.map(element => {
232
- const newElement = {};
233
- iterationArray.forEach(attribute => {
234
- if (compareArray.length > 0 && !compareArray.includes(attribute)) {
235
- return undefined;
236
- }
237
- const extract = js_utils_1.Objects.getFromPath(element, attribute, undefined);
238
- let value = js_utils_1.Objects.get(() => extract.value, undefined);
239
- if (typeof value !== 'undefined' && value !== null) {
240
- if (typeof value === 'object' &&
241
- value.hasOwnProperty('data') &&
242
- value.data.hasOwnProperty('name')) {
243
- newElement[extract.label] = value.data.name;
244
- }
245
- else {
246
- if (typeof value === 'object' && js_utils_1.Ids.isValidObjectID(value)) {
247
- value = js_utils_1.Ids.objectIdString(value);
248
- }
249
- newElement[extract.label] = value;
250
- }
251
- }
252
- });
253
- return js_utils_1.Objects.nest(newElement);
254
- });
255
- }
256
- }
257
- exports.BaseConnector = BaseConnector;
package/dist/Fluent.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- import { AnyObject, Primitives } from './types';
3
- import { Collection } from '@goatlab/js-utils';
4
- export declare class Fluent {
5
- static collect<T = AnyObject | Primitives>(data: T[]): Collection<T>;
6
- static initialize(dataSources: DataSource[], Entities: any[]): Promise<void>;
7
- }
package/dist/Fluent.js DELETED
@@ -1,22 +0,0 @@
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
- static collect(data) {
8
- return new js_utils_1.Collection(data);
9
- }
10
- static async initialize(dataSources, Entities) {
11
- generatorDatasource_1.modelGeneratorDataSource.setOptions({ entities: Entities });
12
- if (!generatorDatasource_1.modelGeneratorDataSource.isInitialized) {
13
- await generatorDatasource_1.modelGeneratorDataSource.initialize();
14
- }
15
- for (const dataSource of dataSources) {
16
- if (!dataSource.isInitialized) {
17
- await dataSource.initialize();
18
- }
19
- }
20
- }
21
- }
22
- exports.Fluent = Fluent;
@@ -1,17 +0,0 @@
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
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +0,0 @@
1
- export declare class FluentEntity {
2
- type?: string;
3
- roles?: string[];
4
- created?: Date;
5
- updated?: Date;
6
- deleted?: Date;
7
- }
@@ -1,28 +0,0 @@
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
- }
8
- tslib_1.__decorate([
9
- decorators_1.f.property({ required: false }),
10
- tslib_1.__metadata("design:type", String)
11
- ], FluentEntity.prototype, "type", void 0);
12
- tslib_1.__decorate([
13
- decorators_1.f.stringArray(String, { required: false }),
14
- tslib_1.__metadata("design:type", Array)
15
- ], FluentEntity.prototype, "roles", void 0);
16
- tslib_1.__decorate([
17
- decorators_1.f.created(),
18
- tslib_1.__metadata("design:type", Date)
19
- ], FluentEntity.prototype, "created", void 0);
20
- tslib_1.__decorate([
21
- decorators_1.f.updated(),
22
- tslib_1.__metadata("design:type", Date)
23
- ], FluentEntity.prototype, "updated", void 0);
24
- tslib_1.__decorate([
25
- decorators_1.f.deleted(),
26
- tslib_1.__metadata("design:type", Date)
27
- ], FluentEntity.prototype, "deleted", void 0);
28
- exports.FluentEntity = FluentEntity;
@@ -1,39 +0,0 @@
1
- import { LoadedResult, QueryOutput } from './../types';
2
- import { Repository, MongoRepository } from 'typeorm';
3
- import { BaseConnector } from '../BaseConnector';
4
- import { FluentConnectorInterface } from '../FluentConnectorInterface';
5
- import type { AnyObject, FluentQuery } from '../types';
6
- import { DataSource } from 'typeorm';
7
- import { z } from 'zod';
8
- export interface TypeOrmConnectorParams<Input, Output> {
9
- entity: any;
10
- dataSource: DataSource;
11
- inputSchema: z.ZodType<Input>;
12
- outputSchema?: z.ZodType<Output>;
13
- }
14
- export declare class TypeOrmConnector<ModelDTO = AnyObject, InputDTO = ModelDTO, OutputDTO = InputDTO> extends BaseConnector<ModelDTO, InputDTO, OutputDTO> implements FluentConnectorInterface<ModelDTO, InputDTO, OutputDTO> {
15
- private repository;
16
- private readonly dataSource;
17
- private readonly inputSchema;
18
- private readonly outputSchema;
19
- private readonly entity;
20
- constructor({ entity, dataSource, inputSchema, outputSchema }: TypeOrmConnectorParams<InputDTO, OutputDTO>);
21
- initDB(): number;
22
- insert(data: InputDTO): Promise<OutputDTO>;
23
- insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
24
- findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>;
25
- updateById(id: string, data: InputDTO): Promise<OutputDTO>;
26
- replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
27
- deleteById(id: string): Promise<string>;
28
- clear(): Promise<boolean>;
29
- loadFirst(query?: FluentQuery<ModelDTO>): LoadedResult<this>;
30
- loadById(id: string): LoadedResult<this>;
31
- raw(): Repository<ModelDTO>;
32
- mongoRaw(): MongoRepository<ModelDTO>;
33
- protected clone(): any;
34
- private generateTypeOrmQuery;
35
- private customTypeOrmRelatedFind;
36
- private getTypeOrmQueryBuilderSelect;
37
- private getTypeOrmQueryBuilderSubqueries;
38
- private customMongoRelatedFind;
39
- }