@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,484 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterBuilder = exports.WhereBuilder = void 0;
4
+ exports.isFilter = isFilter;
5
+ exports.filterTemplate = filterTemplate;
6
+ /* eslint-disable @typescript-eslint/no-explicit-any */
7
+ const nonWhereFields = ['fields', 'order', 'limit', 'skip', 'offset', 'include'];
8
+ const filterFields = ['where', ...nonWhereFields];
9
+ /**
10
+ * TypeGuard for Filter
11
+ * @param candidate
12
+ */
13
+ function isFilter(candidate) {
14
+ if (typeof candidate !== 'object')
15
+ return false;
16
+ for (const key in candidate) {
17
+ if (!filterFields.includes(key)) {
18
+ return false;
19
+ }
20
+ }
21
+ return true;
22
+ }
23
+ /**
24
+ * A builder for Where object. It provides fluent APIs to add clauses such as
25
+ * `and`, `or`, and other operators.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const whereBuilder = new WhereBuilder();
30
+ * const where = whereBuilder
31
+ * .eq('a', 1)
32
+ * .and({x: 'x'}, {y: {gt: 1}})
33
+ * .and({b: 'b'}, {c: {lt: 1}})
34
+ * .or({d: 'd'}, {e: {neq: 1}})
35
+ * .build();
36
+ * ```
37
+ */
38
+ class WhereBuilder {
39
+ where;
40
+ constructor(w) {
41
+ this.where = w ?? {};
42
+ }
43
+ add(w) {
44
+ for (const k of Object.keys(w)) {
45
+ if (k in this.where) {
46
+ // Found conflicting keys, create an `and` operator to join the existing
47
+ // conditions with the new one
48
+ const where = { and: [this.where, w] };
49
+ this.where = where;
50
+ return this;
51
+ }
52
+ }
53
+ // Merge the where items
54
+ this.where = Object.assign(this.where, w);
55
+ return this;
56
+ }
57
+ /**
58
+ * @deprecated
59
+ * Starting from TypeScript 3.2, we don't have to cast any more. This method
60
+ * should be considered as `deprecated`.
61
+ *
62
+ * Cast an `and`, `or`, or condition clause to Where
63
+ * @param clause - And/Or/Condition clause
64
+ */
65
+ cast(clause) {
66
+ return clause;
67
+ }
68
+ /**
69
+ * Add an `and` clause.
70
+ * @param w - One or more where objects
71
+ */
72
+ and(...w) {
73
+ let clauses = [];
74
+ w.forEach(where => {
75
+ clauses = clauses.concat(Array.isArray(where) ? where : [where]);
76
+ });
77
+ return this.add({ and: clauses });
78
+ }
79
+ /**
80
+ * Add an `or` clause.
81
+ * @param w - One or more where objects
82
+ */
83
+ or(...w) {
84
+ let clauses = [];
85
+ w.forEach(where => {
86
+ clauses = clauses.concat(Array.isArray(where) ? where : [where]);
87
+ });
88
+ return this.add({ or: clauses });
89
+ }
90
+ /**
91
+ * Add an `=` condition
92
+ * @param key - Property name
93
+ * @param val - Property value
94
+ */
95
+ eq(key, val) {
96
+ const w = {};
97
+ w[key] = val;
98
+ return this.add(w);
99
+ }
100
+ /**
101
+ * Add a `!=` condition
102
+ * @param key - Property name
103
+ * @param val - Property value
104
+ */
105
+ neq(key, val) {
106
+ const w = {};
107
+ w[key] = { neq: val };
108
+ return this.add(w);
109
+ }
110
+ /**
111
+ * Add a `>` condition
112
+ * @param key - Property name
113
+ * @param val - Property value
114
+ */
115
+ gt(key, val) {
116
+ const w = {};
117
+ w[key] = { gt: val };
118
+ return this.add(w);
119
+ }
120
+ /**
121
+ * Add a `>=` condition
122
+ * @param key - Property name
123
+ * @param val - Property value
124
+ */
125
+ gte(key, val) {
126
+ const w = {};
127
+ w[key] = { gte: val };
128
+ return this.add(w);
129
+ }
130
+ /**
131
+ * Add a `<` condition
132
+ * @param key - Property name
133
+ * @param val - Property value
134
+ */
135
+ lt(key, val) {
136
+ const w = {};
137
+ w[key] = { lt: val };
138
+ return this.add(w);
139
+ }
140
+ /**
141
+ * Add a `<=` condition
142
+ * @param key - Property name
143
+ * @param val - Property value
144
+ */
145
+ lte(key, val) {
146
+ const w = {};
147
+ w[key] = { lte: val };
148
+ return this.add(w);
149
+ }
150
+ /**
151
+ * Add a `inq` condition
152
+ * @param key - Property name
153
+ * @param val - An array of property values
154
+ */
155
+ inq(key, val) {
156
+ const w = {};
157
+ w[key] = { inq: val };
158
+ return this.add(w);
159
+ }
160
+ /**
161
+ * Add a `nin` condition
162
+ * @param key - Property name
163
+ * @param val - An array of property values
164
+ */
165
+ nin(key, val) {
166
+ const w = {};
167
+ w[key] = { nin: val };
168
+ return this.add(w);
169
+ }
170
+ /**
171
+ * Add a `between` condition
172
+ * @param key - Property name
173
+ * @param val1 - Property value lower bound
174
+ * @param val2 - Property value upper bound
175
+ */
176
+ between(key, val1, val2) {
177
+ const w = {};
178
+ w[key] = { between: [val1, val2] };
179
+ return this.add(w);
180
+ }
181
+ /**
182
+ * Add a `exists` condition
183
+ * @param key - Property name
184
+ * @param val - Exists or not
185
+ */
186
+ exists(key, val) {
187
+ const w = {};
188
+ w[key] = { exists: !!val || val == null };
189
+ return this.add(w);
190
+ }
191
+ /**
192
+ * Add a where object. For conflicting keys with the existing where object,
193
+ * create an `and` clause.
194
+ * @param where - Where filter
195
+ */
196
+ impose(where) {
197
+ if (!this.where) {
198
+ this.where = where || {};
199
+ }
200
+ else {
201
+ this.add(where);
202
+ }
203
+ return this;
204
+ }
205
+ /**
206
+ * Add a `like` condition
207
+ * @param key - Property name
208
+ * @param val - Regexp condition
209
+ */
210
+ like(key, val) {
211
+ const w = {};
212
+ w[key] = { like: val };
213
+ return this.add(w);
214
+ }
215
+ /**
216
+ * Add a `nlike` condition
217
+ * @param key - Property name
218
+ * @param val - Regexp condition
219
+ */
220
+ nlike(key, val) {
221
+ const w = {};
222
+ w[key] = { nlike: val };
223
+ return this.add(w);
224
+ }
225
+ /**
226
+ * Add a `ilike` condition
227
+ * @param key - Property name
228
+ * @param val - Regexp condition
229
+ */
230
+ ilike(key, val) {
231
+ const w = {};
232
+ w[key] = { ilike: val };
233
+ return this.add(w);
234
+ }
235
+ /**
236
+ * Add a `nilike` condition
237
+ * @param key - Property name
238
+ * @param val - Regexp condition
239
+ */
240
+ nilike(key, val) {
241
+ const w = {};
242
+ w[key] = { nilike: val };
243
+ return this.add(w);
244
+ }
245
+ /**
246
+ * Add a `regexp` condition
247
+ * @param key - Property name
248
+ * @param val - Regexp condition
249
+ */
250
+ regexp(key, val) {
251
+ const w = {};
252
+ w[key] = { regexp: val };
253
+ return this.add(w);
254
+ }
255
+ /**
256
+ * Get the where object
257
+ */
258
+ build() {
259
+ return this.where;
260
+ }
261
+ }
262
+ exports.WhereBuilder = WhereBuilder;
263
+ /**
264
+ * A builder for Filter. It provides fleunt APIs to add clauses such as
265
+ * `fields`, `order`, `where`, `limit`, `offset`, and `include`.
266
+ *
267
+ * @example
268
+ * ```ts
269
+ * const filterBuilder = new FilterBuilder();
270
+ * const filter = filterBuilder
271
+ * .fields('id', 'a', 'b')
272
+ * .limit(10)
273
+ * .offset(0)
274
+ * .order(['a ASC', 'b DESC'])
275
+ * .where({id: 1})
276
+ * .build();
277
+ * ```
278
+ */
279
+ class FilterBuilder {
280
+ filter;
281
+ constructor(f) {
282
+ this.filter = f ?? {};
283
+ }
284
+ /**
285
+ * Set `limit`
286
+ * @param limit - Maximum number of records to be returned
287
+ */
288
+ limit(limit) {
289
+ if (!(limit >= 1)) {
290
+ throw new Error(`Limit ${limit} must a positive number`);
291
+ }
292
+ this.filter.limit = limit;
293
+ return this;
294
+ }
295
+ /**
296
+ * Set `offset`
297
+ * @param offset - Offset of the number of records to be returned
298
+ */
299
+ offset(offset) {
300
+ this.filter.offset = offset;
301
+ return this;
302
+ }
303
+ /**
304
+ * Alias to `offset`
305
+ * @param skip
306
+ */
307
+ skip(skip) {
308
+ return this.offset(skip);
309
+ }
310
+ /**
311
+ * Describe what fields to be included/excluded
312
+ * @param f - A field name to be included, an array of field names to be
313
+ * included, or an Fields object for the inclusion/exclusion
314
+ */
315
+ fields(...f) {
316
+ if (!this.filter.fields) {
317
+ this.filter.fields = {};
318
+ }
319
+ else if (Array.isArray(this.filter.fields)) {
320
+ this.filter.fields = this.filter.fields.reduce((prev, current) => ({ ...prev, [current]: true }), {});
321
+ }
322
+ const { fields } = this.filter;
323
+ for (const field of f) {
324
+ if (Array.isArray(field)) {
325
+ field.forEach(i => (fields[i] = true));
326
+ }
327
+ else if (typeof field === 'string') {
328
+ fields[field] = true;
329
+ }
330
+ else {
331
+ Object.assign(fields, field);
332
+ }
333
+ }
334
+ return this;
335
+ }
336
+ validateOrder(order) {
337
+ if (!(order.match(/^[^\s]+( (ASC|DESC))?$/))) {
338
+ throw new Error(`Invalid order: ${order}`);
339
+ }
340
+ }
341
+ /**
342
+ * Describe the sorting order
343
+ * @param o - A field name with optional direction, an array of field names,
344
+ * or an Order object for the field/direction pairs
345
+ */
346
+ order(...o) {
347
+ if (!this.filter.order) {
348
+ this.filter.order = [];
349
+ }
350
+ o.forEach(order => {
351
+ if (typeof order === 'string') {
352
+ this.validateOrder(order);
353
+ if (!order.endsWith(' ASC') && !order.endsWith(' DESC')) {
354
+ order += ' ASC';
355
+ }
356
+ this.filter.order.push(order);
357
+ return this;
358
+ }
359
+ if (Array.isArray(order)) {
360
+ order.forEach(this.validateOrder);
361
+ order = order.map(i => {
362
+ if (!i.endsWith(' ASC') && !i.endsWith(' DESC')) {
363
+ i += ' ASC';
364
+ }
365
+ return i;
366
+ });
367
+ this.filter.order = this.filter.order.concat(order);
368
+ return this;
369
+ }
370
+ // tslint:disable-next-line: forin
371
+ for (const i in order) {
372
+ this.filter.order.push(`${i} ${order[i]}`);
373
+ }
374
+ });
375
+ return this;
376
+ }
377
+ /**
378
+ * Declare `include`
379
+ * @param i - A relation name, an array of relation names, or an `Inclusion`
380
+ * object for the relation/scope definitions
381
+ */
382
+ include(...i) {
383
+ if (this.filter.include == null) {
384
+ this.filter.include = [];
385
+ }
386
+ for (const include of i) {
387
+ if (typeof include === 'string') {
388
+ this.filter.include.push({ relation: include });
389
+ }
390
+ else if (Array.isArray(include)) {
391
+ for (const inc of include)
392
+ this.filter.include.push({ relation: inc });
393
+ }
394
+ else {
395
+ this.filter.include.push(include);
396
+ }
397
+ }
398
+ return this;
399
+ }
400
+ /**
401
+ * Declare a where clause
402
+ * @param w - Where object
403
+ */
404
+ where(w) {
405
+ this.filter.where = w;
406
+ return this;
407
+ }
408
+ /**
409
+ * Add a Filter or Where constraint object. If it is a filter object, create
410
+ * an `and` clause for conflicting keys with its where object. For any other
411
+ * properties, throw an error. If it's not a Filter, coerce it to a filter,
412
+ * and carry out the same logic.
413
+ *
414
+ * @param constraint - a constraint object to merge with own filter object
415
+ */
416
+ impose(constraint) {
417
+ if (!this.filter) {
418
+ // if constraint is a Where, turn into a Filter
419
+ if (!isFilter(constraint)) {
420
+ constraint = { where: constraint };
421
+ }
422
+ this.filter = constraint || {};
423
+ }
424
+ else {
425
+ if (isFilter(constraint)) {
426
+ // throw error if imposed Filter has non-where fields
427
+ for (const key of Object.keys(constraint)) {
428
+ if (nonWhereFields.includes(key)) {
429
+ throw new Error('merging strategy for selection, pagination, and sorting not implemented');
430
+ }
431
+ }
432
+ }
433
+ this.filter.where = isFilter(constraint)
434
+ ? new WhereBuilder(this.filter.where).impose(constraint.where).build()
435
+ : new WhereBuilder(this.filter.where).impose(constraint).build();
436
+ }
437
+ return this;
438
+ }
439
+ /**
440
+ * Return the filter object
441
+ */
442
+ build() {
443
+ return this.filter;
444
+ }
445
+ }
446
+ exports.FilterBuilder = FilterBuilder;
447
+ /**
448
+ * Get nested properties by path
449
+ * @param value - Value of an object
450
+ * @param path - Path to the property
451
+ */
452
+ function getDeepProperty(value, path) {
453
+ const props = path.split('.');
454
+ for (const p of props) {
455
+ value = value[p];
456
+ if (value == null) {
457
+ return null;
458
+ }
459
+ }
460
+ return value;
461
+ }
462
+ function filterTemplate(strings, ...keys) {
463
+ return function filter(ctx) {
464
+ const tokens = [strings[0]];
465
+ keys.forEach((key, i) => {
466
+ if (typeof key === 'object' ||
467
+ typeof key === 'boolean' ||
468
+ typeof key === 'number') {
469
+ tokens.push(JSON.stringify(key), strings[i + 1]);
470
+ return;
471
+ }
472
+ const value = getDeepProperty(ctx, key);
473
+ tokens.push(JSON.stringify(value), strings[i + 1]);
474
+ });
475
+ const result = tokens.join('');
476
+ try {
477
+ return JSON.parse(result);
478
+ }
479
+ catch (e) {
480
+ throw new Error(`Invalid JSON: ${result}`);
481
+ }
482
+ };
483
+ }
484
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/core/Loopback/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { InclusionFilter } from './query';
2
+ import { Options } from './common-types';
3
+ import { Entity } from './model';
4
+ import { TypeResolver } from './type-resolver';
5
+ export declare enum RelationType {
6
+ belongsTo = "belongsTo",
7
+ hasOne = "hasOne",
8
+ hasMany = "hasMany",
9
+ embedsOne = "embedsOne",
10
+ embedsMany = "embedsMany",
11
+ referencesOne = "referencesOne",
12
+ referencesMany = "referencesMany"
13
+ }
14
+ export interface RelationDefinitionBase {
15
+ /**
16
+ * The type of the relation, must be one of RelationType values.
17
+ */
18
+ type: RelationType;
19
+ /**
20
+ * True for relations targeting multiple instances (e.g. HasMany),
21
+ * false for relations with a single target (e.g. BelongsTo, HasOne).
22
+ * This property is needed by OpenAPI/JSON Schema generator.
23
+ */
24
+ targetsMany: boolean;
25
+ /**
26
+ * The relation name, typically matching the name of the accessor property
27
+ * defined on the source model. For example "orders" or "customer".
28
+ */
29
+ name: string;
30
+ /**
31
+ * The source model of this relation.
32
+ *
33
+ * E.g. when a Customer has many Order instances, then Customer is the source.
34
+ */
35
+ source: typeof Entity;
36
+ /**
37
+ * The target model of this relation.
38
+ *
39
+ * E.g. when a Customer has many Order instances, then Order is the target.
40
+ */
41
+ target: TypeResolver<Entity, typeof Entity>;
42
+ }
43
+ /**
44
+ * HasManyDefinition defines one-to-many relations and also possible defines
45
+ * many-to-many relations with through models.
46
+ */
47
+ export interface HasManyDefinition extends RelationDefinitionBase {
48
+ type: RelationType.hasMany;
49
+ targetsMany: true;
50
+ /**
51
+ * keyTo: The foreign key used by the target model for this relation.
52
+ * keyFrom: The source key used by the source model for this relation.
53
+ *
54
+ * E.g. when a Customer has many Order instances, then keyTo is "customerId".
55
+ * Note that "customerId" is the default FK assumed by the framework, users
56
+ * can provide a custom FK name by setting "keyTo".
57
+ * And Customer.id is keyFrom. keyFrom defaults to the id property of a model.
58
+ * Users can provide a custom source key name by setting "keyTo".
59
+ *
60
+ */
61
+ keyTo?: string;
62
+ keyFrom?: string;
63
+ /**
64
+ * Description of the through model of the hasManyThrough relation.
65
+ *
66
+ * A `hasManyThrough` relation defines a many-to-many connection with another model.
67
+ * This relation indicates that the declaring model can be matched with zero or more
68
+ * instances of another model by proceeding through a third model.
69
+ *
70
+ * E.g a Category has many Products, and a Product can have many Categories.
71
+ * CategoryProductLink can be the through model.
72
+ * Such a through model has information of foreign keys of the source model(Category) and the target model(Product).
73
+ *
74
+ * Warning: The hasManyThrough interface is experimental and is subject to change.
75
+ * If backwards-incompatible changes are made, a new major version may not be
76
+ * released.
77
+ */
78
+ through?: {
79
+ /**
80
+ * The through model of this relation.
81
+ *
82
+ * E.g. when a Category has many CategoryProductLink instances and a Product has many CategoryProductLink instances,
83
+ * then CategoryProductLink is through.
84
+ */
85
+ model: TypeResolver<Entity, typeof Entity>;
86
+ /**
87
+ * The foreign key of the source model defined in the through model, e.g. CategoryProductLink#categoryId
88
+ */
89
+ keyFrom?: string;
90
+ /**
91
+ * The foreign key of the target model defined in the through model, e.g. CategoryProductLink#productId
92
+ */
93
+ keyTo?: string;
94
+ };
95
+ }
96
+ export interface BelongsToDefinition extends RelationDefinitionBase {
97
+ type: RelationType.belongsTo;
98
+ targetsMany: false;
99
+ keyFrom?: string;
100
+ keyTo?: string;
101
+ }
102
+ export interface HasOneDefinition extends RelationDefinitionBase {
103
+ type: RelationType.hasOne;
104
+ targetsMany: false;
105
+ /**
106
+ * keyTo: The foreign key used by the target model for this relation.
107
+ * keyFrom: The source key used by the source model for this relation.
108
+ *
109
+ * E.g. when a Customer has one Address instance, then keyTo is "customerId".
110
+ * Note that "customerId" is the default FK assumed by the framework, users
111
+ * can provide a custom FK name by setting "keyTo".
112
+ * And Customer.id is keyFrom. keyFrom defaults to the id property of a model.
113
+ * Users can provide a custom source key name by setting "keyTo".
114
+ */
115
+ keyTo?: string;
116
+ keyFrom?: string;
117
+ }
118
+ /**
119
+ * A union type describing all possible Relation metadata objects.
120
+ */
121
+ export type RelationMetadata = HasManyDefinition | BelongsToDefinition | HasOneDefinition | RelationDefinitionBase;
122
+ /**
123
+ * @returns An array of resolved values, the items must be ordered in the same
124
+ * way as `sourceEntities`. The resolved value can be one of:
125
+ * - `undefined` when no target model(s) were found
126
+ * - `Entity` for relations targeting a single model
127
+ * - `Entity[]` for relations targeting multiple models
128
+ */
129
+ export type InclusionResolver<S extends Entity, T extends Entity> = (
130
+ /**
131
+ * List of source models as returned by the first database query.
132
+ */
133
+ sourceEntities: S[],
134
+ /**
135
+ * Inclusion requested by the user (e.g. scope constraints to apply).
136
+ */
137
+ inclusion: InclusionFilter,
138
+ /**
139
+ * Generic options object, e.g. carrying the Transaction object.
140
+ */
141
+ options?: Options) => Promise<(T | undefined)[] | (T[] | undefined)[]>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2020. All Rights Reserved.
3
+ // Node module: @loopback/repository
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RelationType = void 0;
8
+ var RelationType;
9
+ (function (RelationType) {
10
+ RelationType["belongsTo"] = "belongsTo";
11
+ RelationType["hasOne"] = "hasOne";
12
+ RelationType["hasMany"] = "hasMany";
13
+ RelationType["embedsOne"] = "embedsOne";
14
+ RelationType["embedsMany"] = "embedsMany";
15
+ RelationType["referencesOne"] = "referencesOne";
16
+ RelationType["referencesMany"] = "referencesMany";
17
+ })(RelationType || (exports.RelationType = RelationType = {}));
18
+ //# sourceMappingURL=relation.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.types.js","sourceRoot":"","sources":["../../../src/core/Loopback/relation.types.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAOhE,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,+CAA+B,CAAA;IAC/B,iDAAiC,CAAA;AACnC,CAAC,EARW,YAAY,4BAAZ,YAAY,QAQvB"}