@goatlab/fluent 0.7.21 → 0.7.24

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 (260) hide show
  1. package/dist/BaseConnector.d.ts +43 -0
  2. package/dist/BaseConnector.js +258 -0
  3. package/dist/Fluent.d.ts +7 -0
  4. package/dist/Fluent.js +22 -0
  5. package/dist/FluentConnectorInterface.d.ts +17 -0
  6. package/dist/FluentConnectorInterface.js +2 -0
  7. package/dist/FluentEntity.d.ts +7 -0
  8. package/dist/FluentEntity.js +28 -0
  9. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +38 -0
  10. package/dist/TypeOrmConnector/TypeOrmConnector.js +370 -0
  11. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +7 -0
  12. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +148 -0
  13. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +6 -0
  14. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +45 -0
  15. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +19 -0
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +4 -0
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +12 -0
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +6 -0
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +166 -0
  21. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +8 -0
  22. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +200 -0
  23. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +6 -0
  24. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +207 -0
  25. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +1 -0
  26. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +256 -0
  27. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +116 -0
  28. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +74 -0
  29. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +5 -0
  30. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +17 -0
  31. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +5 -0
  32. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +17 -0
  33. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +5 -0
  34. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +17 -0
  35. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -0
  36. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +193 -0
  37. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +53 -0
  38. package/dist/TypeOrmConnector/test/basic/goat.entity.js +53 -0
  39. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +5 -0
  40. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +16 -0
  41. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +5 -0
  42. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +16 -0
  43. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +5 -0
  44. package/dist/TypeOrmConnector/test/basic/goat.repository.js +16 -0
  45. package/dist/TypeOrmConnector/test/dbEntities.d.ts +6 -0
  46. package/dist/TypeOrmConnector/test/dbEntities.js +17 -0
  47. package/dist/TypeOrmConnector/test/docker/docker.d.ts +35 -0
  48. package/dist/TypeOrmConnector/test/docker/docker.js +148 -0
  49. package/dist/TypeOrmConnector/test/docker/mongo.d.ts +16 -0
  50. package/dist/TypeOrmConnector/test/docker/mongo.js +93 -0
  51. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +17 -0
  52. package/dist/TypeOrmConnector/test/docker/mysql.js +132 -0
  53. package/dist/TypeOrmConnector/test/flock.d.ts +4 -0
  54. package/dist/TypeOrmConnector/test/flock.js +25 -0
  55. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +10 -0
  56. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +28 -0
  57. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +2 -0
  58. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +12 -0
  59. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +9 -0
  60. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +25 -0
  61. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +6 -0
  62. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +17 -0
  63. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +10 -0
  64. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +32 -0
  65. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +10 -0
  66. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +26 -0
  67. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +2 -0
  68. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +16 -0
  69. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +9 -0
  70. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +25 -0
  71. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +6 -0
  72. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +17 -0
  73. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +10 -0
  74. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +33 -0
  75. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +7 -0
  76. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +32 -0
  77. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +511 -0
  78. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +8 -0
  79. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +10 -0
  80. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +26 -0
  81. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +15 -0
  82. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +9 -0
  83. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +1 -0
  84. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +548 -0
  85. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +152 -0
  86. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +14 -0
  87. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +12 -0
  88. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +8 -0
  89. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +6 -0
  90. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +29 -0
  91. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +9 -0
  92. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +25 -0
  93. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +5 -0
  94. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +23 -0
  95. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +15 -0
  96. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +9 -0
  97. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +6 -0
  98. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +17 -0
  99. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +14 -0
  100. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +56 -0
  101. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +10 -0
  102. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +30 -0
  103. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +546 -0
  104. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +67 -0
  105. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +2 -0
  106. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +12 -0
  107. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +1 -0
  108. package/dist/TypeOrmConnector/util/clearEmpties.js +25 -0
  109. package/dist/TypeOrmConnector/util/extractConditions.d.ts +6 -0
  110. package/dist/TypeOrmConnector/util/extractConditions.js +80 -0
  111. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  112. package/dist/TypeOrmConnector/util/extractInclude.js +25 -0
  113. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  114. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +42 -0
  115. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +4 -0
  116. package/dist/TypeOrmConnector/util/extractOrderBy.js +18 -0
  117. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  118. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +26 -0
  119. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +1 -0
  120. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +20 -0
  121. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  122. package/dist/TypeOrmConnector/util/isAnyObject.js +7 -0
  123. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  124. package/dist/TypeOrmConnector/util/nestQueryResults.js +31 -0
  125. package/dist/cache.d.ts +9 -0
  126. package/dist/cache.js +43 -0
  127. package/dist/core/Loopback/build-schema.d.ts +31 -0
  128. package/dist/core/Loopback/build-schema.js +333 -0
  129. package/dist/core/Loopback/common-types.d.ts +36 -0
  130. package/dist/core/Loopback/common-types.js +13 -0
  131. package/dist/core/Loopback/json-to-schema.d.ts +6 -0
  132. package/dist/core/Loopback/json-to-schema.js +96 -0
  133. package/dist/core/Loopback/mapValues.d.ts +2 -0
  134. package/dist/core/Loopback/mapValues.js +835 -0
  135. package/dist/core/Loopback/metadata.d.ts +9 -0
  136. package/dist/core/Loopback/metadata.js +28 -0
  137. package/dist/core/Loopback/model.d.ts +87 -0
  138. package/dist/core/Loopback/model.js +244 -0
  139. package/dist/core/Loopback/query.d.ts +97 -0
  140. package/dist/core/Loopback/query.js +292 -0
  141. package/dist/core/Loopback/relation.types.d.ts +45 -0
  142. package/dist/core/Loopback/relation.types.js +13 -0
  143. package/dist/core/Loopback/type-resolver.d.ts +7 -0
  144. package/dist/core/Loopback/type-resolver.js +34 -0
  145. package/dist/core/Loopback/type.d.ts +9 -0
  146. package/dist/core/Loopback/type.js +2 -0
  147. package/dist/core/Nestjs/applyDecorators.d.ts +1 -0
  148. package/dist/core/Nestjs/applyDecorators.js +17 -0
  149. package/dist/core/Nestjs/types/common.d.ts +16 -0
  150. package/dist/core/Nestjs/types/common.js +37 -0
  151. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  152. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +7 -0
  153. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  154. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +65 -0
  155. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  156. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +131 -0
  157. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +1 -0
  158. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +19 -0
  159. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  160. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  161. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +1 -0
  162. package/dist/core/Nestjs/types/decorators/directive.decorator.js +36 -0
  163. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +1 -0
  164. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +25 -0
  165. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +15 -0
  166. package/dist/core/Nestjs/types/decorators/field.decorator.js +56 -0
  167. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +7 -0
  168. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +23 -0
  169. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +9 -0
  170. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +27 -0
  171. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  172. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +42 -0
  173. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  174. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +9 -0
  175. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  176. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +9 -0
  177. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  178. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +9 -0
  179. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  180. package/dist/core/Nestjs/types/errors/undefined-type.error.js +10 -0
  181. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  182. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +10 -0
  183. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +5 -0
  184. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +2 -0
  185. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  186. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +2 -0
  187. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  188. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +2 -0
  189. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  190. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +2 -0
  191. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +235 -0
  192. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +2 -0
  193. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  194. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +2 -0
  195. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  196. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +2 -0
  197. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  198. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +2 -0
  199. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  200. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +2 -0
  201. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  202. package/dist/core/Nestjs/types/lazy-metadata.storage.js +67 -0
  203. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  204. package/dist/core/Nestjs/types/metadata/class.metadata.js +2 -0
  205. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  206. package/dist/core/Nestjs/types/metadata/directive.metadata.js +2 -0
  207. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  208. package/dist/core/Nestjs/types/metadata/enum.metadata.js +2 -0
  209. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  210. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +2 -0
  211. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  212. package/dist/core/Nestjs/types/metadata/index.js +11 -0
  213. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  214. package/dist/core/Nestjs/types/metadata/interface.metadata.js +2 -0
  215. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  216. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +2 -0
  217. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  218. package/dist/core/Nestjs/types/metadata/param.metadata.js +2 -0
  219. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  220. package/dist/core/Nestjs/types/metadata/property.metadata.js +2 -0
  221. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  222. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +2 -0
  223. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  224. package/dist/core/Nestjs/types/metadata/union.metadata.js +2 -0
  225. package/dist/core/Nestjs/types/object-type.decorator.d.ts +8 -0
  226. package/dist/core/Nestjs/types/object-type.decorator.js +25 -0
  227. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  228. package/dist/core/Nestjs/types/omit-type.js +34 -0
  229. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  230. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  231. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +4 -0
  232. package/dist/core/Nestjs/types/set-metadata.decorator.js +16 -0
  233. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +69 -0
  234. package/dist/core/Nestjs/types/type-metadata.storage.js +342 -0
  235. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  236. package/dist/core/Nestjs/types/utils/enum.utils.js +29 -0
  237. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +3 -0
  238. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -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/model-properties-accessor.d.ts +6 -0
  242. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +36 -0
  243. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  244. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  245. package/dist/core/types.d.ts +23 -0
  246. package/dist/core/types.js +29 -0
  247. package/dist/decorators.d.ts +47 -0
  248. package/dist/decorators.js +104 -0
  249. package/dist/generatorDatasource.d.ts +2 -0
  250. package/dist/generatorDatasource.js +12 -0
  251. package/dist/index.d.ts +29 -0
  252. package/dist/index.js +49 -0
  253. package/dist/loadRelations.d.ts +12 -0
  254. package/dist/loadRelations.js +133 -0
  255. package/dist/outputKeys.d.ts +2 -0
  256. package/dist/outputKeys.js +17 -0
  257. package/dist/tsconfig.tsbuildinfo +1 -0
  258. package/dist/types.d.ts +141 -0
  259. package/dist/types.js +22 -0
  260. package/package.json +2 -2
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractConditions = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const types_1 = require("../../types");
6
+ const isAnyObject_1 = require("./isAnyObject");
7
+ const extractConditions = (conditions) => {
8
+ const accumulatedClauses = [];
9
+ if (!conditions) {
10
+ return accumulatedClauses;
11
+ }
12
+ for (const clause of conditions) {
13
+ if (!clause) {
14
+ continue;
15
+ }
16
+ for (const el of Object.keys(clause)) {
17
+ const value = clause[el];
18
+ if ((0, isAnyObject_1.isAnyObject)(value)) {
19
+ const initialKey = el;
20
+ const flatten = js_utils_1.Objects.flatten(value);
21
+ for (const key of Object.keys(flatten)) {
22
+ const transformedKey = key.replace(new RegExp('.[0-9]', 'g'), '');
23
+ if (types_1.LogicOperator[transformedKey]) {
24
+ if (types_1.LogicOperator[transformedKey] === types_1.LogicOperator.in ||
25
+ types_1.LogicOperator[transformedKey] === types_1.LogicOperator.notIn) {
26
+ accumulatedClauses.push({
27
+ operator: types_1.LogicOperator[transformedKey],
28
+ element: `${initialKey}`,
29
+ value: value[transformedKey]
30
+ });
31
+ }
32
+ else {
33
+ accumulatedClauses.push({
34
+ operator: types_1.LogicOperator[transformedKey],
35
+ element: `${initialKey}`,
36
+ value: flatten[key]
37
+ });
38
+ }
39
+ }
40
+ else if (transformedKey.includes('.')) {
41
+ const op = key.split('.').slice(-1).pop();
42
+ if (!op) {
43
+ continue;
44
+ }
45
+ if (types_1.LogicOperator[op]) {
46
+ accumulatedClauses.push({
47
+ operator: types_1.LogicOperator[op],
48
+ element: `${initialKey}.${key.replace(`.${op}`, '')}`,
49
+ value: flatten[key]
50
+ });
51
+ }
52
+ else {
53
+ accumulatedClauses.push({
54
+ operator: types_1.LogicOperator.equals,
55
+ element: `${initialKey}.${key}`,
56
+ value: flatten[key]
57
+ });
58
+ }
59
+ }
60
+ else {
61
+ accumulatedClauses.push({
62
+ operator: types_1.LogicOperator.equals,
63
+ element: `${initialKey}.${transformedKey}`,
64
+ value: flatten[key]
65
+ });
66
+ }
67
+ }
68
+ }
69
+ else {
70
+ accumulatedClauses.push({
71
+ operator: types_1.LogicOperator.equals,
72
+ element: el,
73
+ value
74
+ });
75
+ }
76
+ }
77
+ }
78
+ return accumulatedClauses.filter((v, i, a) => a.findIndex(v2 => JSON.stringify(v2) === JSON.stringify(v)) === i);
79
+ };
80
+ exports.extractConditions = extractConditions;
@@ -0,0 +1,2 @@
1
+ import { AnyObject, FluentQuery } from '../../types';
2
+ export declare const extractInclude: <T>(include?: import("../../types").QueryIncludeRelation<T> | undefined) => AnyObject | undefined;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractInclude = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const extractInclude = (include) => {
6
+ if (!include) {
7
+ return undefined;
8
+ }
9
+ const flatten = js_utils_1.Objects.flatten(include);
10
+ const extractedInclude = {};
11
+ for (const key of Object.keys(flatten)) {
12
+ if (key.includes('include')) {
13
+ const parsedKey = key.split('.include');
14
+ let acc = '';
15
+ for (const entity of parsedKey) {
16
+ extractedInclude[`${acc}${entity}`] = true;
17
+ acc = acc + entity;
18
+ }
19
+ continue;
20
+ }
21
+ extractedInclude[key] = true;
22
+ }
23
+ return extractedInclude;
24
+ };
25
+ exports.extractInclude = extractInclude;
@@ -0,0 +1,12 @@
1
+ export interface KeysMetadata {
2
+ keyName: string;
3
+ nestableKey: string;
4
+ relation?: string;
5
+ parentRelation?: string;
6
+ level?: number;
7
+ cardinality?: string;
8
+ }
9
+ export interface KeysMetadataResponse {
10
+ [key: string]: KeysMetadata;
11
+ }
12
+ export declare const extractMetadataFromKeys: (keys: string[]) => KeysMetadataResponse;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractMetadataFromKeys = void 0;
4
+ const extractMetadataFromKeys = (keys) => {
5
+ const keyToNestedKeyMap = {};
6
+ for (const key of keys) {
7
+ const preAttributeIndex = key.lastIndexOf('_');
8
+ const fullTableAlias = key.slice(0, preAttributeIndex).replace('_', '');
9
+ const keyName = key.slice(preAttributeIndex + 1, key.length);
10
+ const flattened = fullTableAlias
11
+ .replace(/___XXManyToOneXX/g, '')
12
+ .replace(/___XXOneToManyXX/g, '')
13
+ .replace(/___/g, '.')
14
+ .replace('__', '.')
15
+ .replace('.XXOneToManyXX', '');
16
+ const possibleCurrentTableKey = key.lastIndexOf('___');
17
+ const relation = possibleCurrentTableKey <= 0
18
+ ? undefined
19
+ : key.slice(possibleCurrentTableKey + 3, preAttributeIndex);
20
+ const possibleParentTableKeyInit = key.lastIndexOf('___XX');
21
+ const possibleParentTableKeyEnd = key.lastIndexOf('XX__');
22
+ const cardinality = key.slice(possibleParentTableKeyInit, possibleParentTableKeyEnd) ||
23
+ undefined;
24
+ const parentRelationKey = key
25
+ .substring(0, possibleParentTableKeyInit)
26
+ .lastIndexOf('___');
27
+ const parentRelation = key
28
+ .substring(parentRelationKey, possibleParentTableKeyInit)
29
+ .replace(/___/g, '') || undefined;
30
+ var level = (key.match(/XX___/g) || []).length;
31
+ keyToNestedKeyMap[key] = {
32
+ keyName,
33
+ nestableKey: `${flattened}.${keyName}`,
34
+ relation,
35
+ parentRelation,
36
+ level,
37
+ cardinality: cardinality && cardinality.replace(/XX/g, '').replace(/___/g, '')
38
+ };
39
+ }
40
+ return keyToNestedKeyMap;
41
+ };
42
+ exports.extractMetadataFromKeys = extractMetadataFromKeys;
@@ -0,0 +1,4 @@
1
+ import { FluentQuery } from '../../types';
2
+ export declare const extractOrderBy: <T>(orderBy?: Partial<{ [K in keyof import("../../types").Concrete<T>]: import("../../types").Concrete<T>[K] extends object ? Partial<Partial<{ [K_1 in keyof import("../../types").Concrete<import("../../types").Concrete<T>[K]>]: import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1] extends object ? Partial<Partial<{ [K_2 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2] extends object ? Partial<Partial<{ [K_3 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3] extends object ? Partial<Partial<{ [K_4 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4] extends object ? Partial<Partial<{ [K_5 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5] extends object ? Partial<Partial<{ [K_6 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>[K_6] extends object ? Partial<Partial<{ [K_7 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>[K_6]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>[K_6]>[K_7] extends object ? Partial<Partial<{ [K_8 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>[K_6]>[K_7]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>[K_6]>[K_7]>[K_8] extends object ? Partial<Partial<{ [K_9 in keyof import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>[K_6]>[K_7]>[K_8]>]: import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<import("../../types").Concrete<T>[K]>[K_1]>[K_2]>[K_3]>[K_4]>[K_5]>[K_6]>[K_7]>[K_8]>[K_9] extends object ? any : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>> : "asc" | "desc" | undefined; }>[] | undefined) => {
3
+ [key: string]: any;
4
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractOrderBy = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const extractOrderBy = (orderBy) => {
6
+ if (!orderBy || !Array.isArray(orderBy) || orderBy.length === 0) {
7
+ return {};
8
+ }
9
+ const order = {};
10
+ for (const orderElement of orderBy) {
11
+ const flattenOrder = js_utils_1.Objects.flatten(orderElement);
12
+ for (const k of Object.keys(flattenOrder)) {
13
+ order[k] = flattenOrder[k];
14
+ }
15
+ }
16
+ return js_utils_1.Objects.nest(order);
17
+ };
18
+ exports.extractOrderBy = extractOrderBy;
@@ -0,0 +1,19 @@
1
+ import { Repository } from 'typeorm';
2
+ export interface GeneratedModelRelations {
3
+ relations: {
4
+ [key: string]: {
5
+ isOneToMany: boolean;
6
+ isManyToOne: boolean;
7
+ isManyToMany: boolean;
8
+ inverseSidePropertyRelationPath?: string;
9
+ inverseSidePropertyPath?: string;
10
+ propertyName: string;
11
+ entityName: string;
12
+ tableName: string;
13
+ targetClass: string;
14
+ joinColumns: any[];
15
+ inverseJoinColumns: any[];
16
+ };
17
+ };
18
+ }
19
+ export declare const getRelationsFromModelGenerator: (typeOrmRepo: Repository<any>) => GeneratedModelRelations;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRelationsFromModelGenerator = void 0;
4
+ const getRelationsFromModelGenerator = (typeOrmRepo) => {
5
+ const relations = {};
6
+ for (const relation of typeOrmRepo.metadata.relations) {
7
+ const pPath = relation.inverseRelation?.joinColumns[0];
8
+ relations[relation.propertyName] = {
9
+ isOneToMany: relation.isOneToMany,
10
+ isManyToOne: relation.isManyToOne,
11
+ isManyToMany: relation.isManyToMany,
12
+ inverseSidePropertyRelationPath: relation.inverseSidePropertyPath,
13
+ inverseSidePropertyPath: pPath?.propertyPath,
14
+ propertyName: relation.propertyName,
15
+ entityName: relation.inverseEntityMetadata.name,
16
+ tableName: relation.inverseEntityMetadata.tableName,
17
+ targetClass: relation.inverseEntityMetadata.target,
18
+ joinColumns: relation.joinColumns,
19
+ inverseJoinColumns: relation.inverseJoinColumns
20
+ };
21
+ }
22
+ return {
23
+ relations
24
+ };
25
+ };
26
+ exports.getRelationsFromModelGenerator = getRelationsFromModelGenerator;
@@ -0,0 +1 @@
1
+ export declare const getSelectedKeysFromRawSql: (sql: string) => string[];
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSelectedKeysFromRawSql = void 0;
4
+ const getSelectedKeysFromRawSql = (sql) => {
5
+ const possibleKeys = sql.split('AS');
6
+ const keys = new Set([]);
7
+ for (const stringKey of possibleKeys) {
8
+ if (stringKey.includes('SELECT')) {
9
+ const key = stringKey.split('"')[1];
10
+ if (key.includes('___') || !key.includes('_')) {
11
+ continue;
12
+ }
13
+ keys.add(key.replace('_id', 'id').replace('_', '.'));
14
+ continue;
15
+ }
16
+ keys.add(stringKey.split('"')[1].replace('_id', 'id').replace('_', '.'));
17
+ }
18
+ return Array.from(keys);
19
+ };
20
+ exports.getSelectedKeysFromRawSql = getSelectedKeysFromRawSql;
@@ -0,0 +1 @@
1
+ export declare const isAnyObject: (val: any) => boolean;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAnyObject = void 0;
4
+ const isAnyObject = (val) => {
5
+ return typeof val === 'object' && !Array.isArray(val) && val !== null;
6
+ };
7
+ exports.isAnyObject = isAnyObject;
@@ -0,0 +1,2 @@
1
+ import { AnyObject } from '../../types';
2
+ export declare const nestQueryResults: (results: AnyObject[], keyToNestedKeyMap: AnyObject) => AnyObject[];
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nestQueryResults = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const nestQueryResults = (results, keyToNestedKeyMap) => {
6
+ let nestableObject = {};
7
+ let currentLevel = 0;
8
+ for (const key of Object.keys(keyToNestedKeyMap)) {
9
+ if (!key.endsWith('_id')) {
10
+ continue;
11
+ }
12
+ const currentLevelMetadata = keyToNestedKeyMap[key];
13
+ currentLevel = currentLevelMetadata.level;
14
+ const grouped = js_utils_1.Arrays.groupBy(results, r => r[key]);
15
+ const resultCount = Object.keys(grouped)?.length || 0;
16
+ for (const [index, k] of Object.keys(grouped).entries()) {
17
+ const prefixindex = currentLevelMetadata.nestableKey.lastIndexOf('.');
18
+ const prefix = currentLevelMetadata.nestableKey.substring(0, prefixindex);
19
+ const currentIndex = `${prefix}.${index}.${currentLevelMetadata.keyName}`;
20
+ const results = grouped[k];
21
+ console.log(currentLevelMetadata);
22
+ if (currentLevelMetadata.level === currentLevel) {
23
+ nestableObject[`${currentIndex}`] = k;
24
+ }
25
+ for (const result of results) {
26
+ }
27
+ }
28
+ }
29
+ return results;
30
+ };
31
+ exports.nestQueryResults = nestQueryResults;
@@ -0,0 +1,9 @@
1
+ import Keyv from 'keyv';
2
+ export declare class Cache extends Keyv {
3
+ has(key: string): Promise<boolean>;
4
+ remember(key: string, ms: number, fx: () => Promise<any>): Promise<any>;
5
+ rememberForever(key: string, fx: () => Promise<any>): Promise<any>;
6
+ pull(key: string): Promise<any>;
7
+ forget(key: string): Promise<boolean>;
8
+ flush(): Promise<void>;
9
+ }
package/dist/cache.js ADDED
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cache = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const keyv_1 = tslib_1.__importDefault(require("keyv"));
6
+ class Cache extends keyv_1.default {
7
+ async has(key) {
8
+ const value = await this.get(key);
9
+ return value ? true : false;
10
+ }
11
+ async remember(key, ms, fx) {
12
+ const value = await this.get(key);
13
+ if (value) {
14
+ return value;
15
+ }
16
+ const result = await fx();
17
+ await this.set(key, result, ms);
18
+ return result;
19
+ }
20
+ async rememberForever(key, fx) {
21
+ const value = await this.get(key);
22
+ if (value) {
23
+ return value;
24
+ }
25
+ const result = await fx();
26
+ await this.set(key, result);
27
+ return result;
28
+ }
29
+ async pull(key) {
30
+ const value = await this.get(key);
31
+ if (value) {
32
+ this.delete(key);
33
+ }
34
+ return value;
35
+ }
36
+ async forget(key) {
37
+ return await this.delete(key);
38
+ }
39
+ async flush() {
40
+ return await this.clear();
41
+ }
42
+ }
43
+ exports.Cache = Cache;
@@ -0,0 +1,31 @@
1
+ import { MetadataAccessor } from '@loopback/metadata';
2
+ import { SchemaObject as JsonSchema } from 'openapi3-ts';
3
+ import { RelationMetadata } from './relation.types';
4
+ import { PropertyDefinition, PropertyType } from './model';
5
+ export declare const JSON_SCHEMA_KEY: MetadataAccessor<{
6
+ [key: string]: JsonSchema;
7
+ }, ClassDecorator>;
8
+ export interface JsonSchemaOptions<T extends object> {
9
+ title?: string;
10
+ includeRelations?: boolean;
11
+ partial?: boolean | 'deep';
12
+ exclude?: (keyof T)[];
13
+ optional?: (keyof T)[];
14
+ visited?: {
15
+ [key: string]: JsonSchema;
16
+ };
17
+ }
18
+ export declare function buildModelCacheKey<T extends object>(options?: JsonSchemaOptions<T>): string;
19
+ export declare function getJsonSchema<T extends object>(ctor: Function & {
20
+ prototype: T;
21
+ }, options?: JsonSchemaOptions<T>): JsonSchema;
22
+ export declare function getJsonSchemaRef<T extends object>(modelCtor: Function & {
23
+ prototype: T;
24
+ }, options?: JsonSchemaOptions<T>): JsonSchema;
25
+ export declare function stringTypeToWrapper(type: string | Function): Function;
26
+ export declare function isArrayType(type: string | Function | PropertyType): boolean;
27
+ export declare function metaToJsonProperty(meta: PropertyDefinition): JsonSchema;
28
+ export declare function getNavigationalPropertyForRelation(relMeta: RelationMetadata, targetRef: JsonSchema): JsonSchema;
29
+ export declare function modelToJsonSchema<T extends object>(ctor: Function & {
30
+ prototype: T;
31
+ }, jsonSchemaOptions?: JsonSchemaOptions<T>): JsonSchema;