@goatlab/fluent 0.7.38 → 0.7.40

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 +112 -0
  2. package/dist/BaseConnector.js +343 -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 +29 -0
  12. package/dist/FluentEntity.js.map +1 -0
  13. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +123 -0
  14. package/dist/TypeOrmConnector/TypeOrmConnector.js +760 -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/util/clearEmpties.d.ts +7 -0
  38. package/dist/TypeOrmConnector/util/clearEmpties.js +33 -0
  39. package/dist/TypeOrmConnector/util/clearEmpties.js.map +1 -0
  40. package/dist/TypeOrmConnector/util/extractConditions.d.ts +12 -0
  41. package/dist/TypeOrmConnector/util/extractConditions.js +89 -0
  42. package/dist/TypeOrmConnector/util/extractConditions.js.map +1 -0
  43. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  44. package/dist/TypeOrmConnector/util/extractInclude.js +26 -0
  45. package/dist/TypeOrmConnector/util/extractInclude.js.map +1 -0
  46. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  47. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +49 -0
  48. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js.map +1 -0
  49. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +2 -0
  50. package/dist/TypeOrmConnector/util/extractOrderBy.js +24 -0
  51. package/dist/TypeOrmConnector/util/extractOrderBy.js.map +1 -0
  52. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  53. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +27 -0
  54. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js.map +1 -0
  55. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +6 -0
  56. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +29 -0
  57. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js.map +1 -0
  58. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  59. package/dist/TypeOrmConnector/util/isAnyObject.js +8 -0
  60. package/dist/TypeOrmConnector/util/isAnyObject.js.map +1 -0
  61. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  62. package/dist/TypeOrmConnector/util/nestQueryResults.js +38 -0
  63. package/dist/TypeOrmConnector/util/nestQueryResults.js.map +1 -0
  64. package/dist/core/Loopback/build-schema.d.ts +148 -0
  65. package/dist/core/Loopback/build-schema.js +443 -0
  66. package/dist/core/Loopback/build-schema.js.map +1 -0
  67. package/dist/core/Loopback/common-types.d.ts +96 -0
  68. package/dist/core/Loopback/common-types.js +24 -0
  69. package/dist/core/Loopback/common-types.js.map +1 -0
  70. package/dist/core/Loopback/json-to-schema.d.ts +41 -0
  71. package/dist/core/Loopback/json-to-schema.js +113 -0
  72. package/dist/core/Loopback/json-to-schema.js.map +1 -0
  73. package/dist/core/Loopback/metadata.d.ts +16 -0
  74. package/dist/core/Loopback/metadata.js +49 -0
  75. package/dist/core/Loopback/metadata.js.map +1 -0
  76. package/dist/core/Loopback/model.d.ts +233 -0
  77. package/dist/core/Loopback/model.js +387 -0
  78. package/dist/core/Loopback/model.js.map +1 -0
  79. package/dist/core/Loopback/query.d.ts +394 -0
  80. package/dist/core/Loopback/query.js +482 -0
  81. package/dist/core/Loopback/query.js.map +1 -0
  82. package/dist/core/Loopback/relation.types.d.ts +141 -0
  83. package/dist/core/Loopback/relation.types.js +18 -0
  84. package/dist/core/Loopback/relation.types.js.map +1 -0
  85. package/dist/core/Loopback/type-resolver.d.ts +42 -0
  86. package/dist/core/Loopback/type-resolver.js +60 -0
  87. package/dist/core/Loopback/type-resolver.js.map +1 -0
  88. package/dist/core/Loopback/type.d.ts +38 -0
  89. package/dist/core/Loopback/type.js +7 -0
  90. package/dist/core/Loopback/type.js.map +1 -0
  91. package/dist/core/Nestjs/applyDecorators.d.ts +10 -0
  92. package/dist/core/Nestjs/applyDecorators.js +26 -0
  93. package/dist/core/Nestjs/applyDecorators.js.map +1 -0
  94. package/dist/core/Nestjs/types/common.d.ts +16 -0
  95. package/dist/core/Nestjs/types/common.js +38 -0
  96. package/dist/core/Nestjs/types/common.js.map +1 -0
  97. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  98. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +8 -0
  99. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js.map +1 -0
  100. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  101. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +66 -0
  102. package/dist/core/Nestjs/types/decorators/api-property.decorator.js.map +1 -0
  103. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  104. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +136 -0
  105. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js.map +1 -0
  106. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +4 -0
  107. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +24 -0
  108. package/dist/core/Nestjs/types/decorators/args-type.decorator.js.map +1 -0
  109. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  110. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  111. package/dist/core/Nestjs/types/decorators/create-property.decorator.js.map +1 -0
  112. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +4 -0
  113. package/dist/core/Nestjs/types/decorators/directive.decorator.js +39 -0
  114. package/dist/core/Nestjs/types/decorators/directive.decorator.js.map +1 -0
  115. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +4 -0
  116. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +28 -0
  117. package/dist/core/Nestjs/types/decorators/extensions.decorator.js.map +1 -0
  118. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +48 -0
  119. package/dist/core/Nestjs/types/decorators/field.decorator.js +63 -0
  120. package/dist/core/Nestjs/types/decorators/field.decorator.js.map +1 -0
  121. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +25 -0
  122. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +29 -0
  123. package/dist/core/Nestjs/types/decorators/input-type.decorator.js.map +1 -0
  124. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +33 -0
  125. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +35 -0
  126. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js.map +1 -0
  127. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  128. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +46 -0
  129. package/dist/core/Nestjs/types/decorators/partial-type.helper.js.map +1 -0
  130. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  131. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +10 -0
  132. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js.map +1 -0
  133. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  134. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +10 -0
  135. package/dist/core/Nestjs/types/errors/directive-parsing.error.js.map +1 -0
  136. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  137. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +10 -0
  138. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js.map +1 -0
  139. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  140. package/dist/core/Nestjs/types/errors/undefined-type.error.js +11 -0
  141. package/dist/core/Nestjs/types/errors/undefined-type.error.js.map +1 -0
  142. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  143. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +11 -0
  144. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js.map +1 -0
  145. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +11 -0
  146. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +3 -0
  147. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js.map +1 -0
  148. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  149. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +3 -0
  150. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js.map +1 -0
  151. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  152. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +3 -0
  153. package/dist/core/Nestjs/types/interfaces/complexity.interface.js.map +1 -0
  154. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  155. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +3 -0
  156. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js.map +1 -0
  157. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +239 -0
  158. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +7 -0
  159. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js.map +1 -0
  160. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  161. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +3 -0
  162. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js.map +1 -0
  163. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  164. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +3 -0
  165. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js.map +1 -0
  166. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  167. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +3 -0
  168. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js.map +1 -0
  169. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  170. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +3 -0
  171. package/dist/core/Nestjs/types/interfaces/type-options.interface.js.map +1 -0
  172. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  173. package/dist/core/Nestjs/types/lazy-metadata.storage.js +68 -0
  174. package/dist/core/Nestjs/types/lazy-metadata.storage.js.map +1 -0
  175. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  176. package/dist/core/Nestjs/types/metadata/class.metadata.js +3 -0
  177. package/dist/core/Nestjs/types/metadata/class.metadata.js.map +1 -0
  178. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  179. package/dist/core/Nestjs/types/metadata/directive.metadata.js +3 -0
  180. package/dist/core/Nestjs/types/metadata/directive.metadata.js.map +1 -0
  181. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  182. package/dist/core/Nestjs/types/metadata/enum.metadata.js +3 -0
  183. package/dist/core/Nestjs/types/metadata/enum.metadata.js.map +1 -0
  184. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  185. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +3 -0
  186. package/dist/core/Nestjs/types/metadata/extensions.metadata.js.map +1 -0
  187. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  188. package/dist/core/Nestjs/types/metadata/index.js +12 -0
  189. package/dist/core/Nestjs/types/metadata/index.js.map +1 -0
  190. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  191. package/dist/core/Nestjs/types/metadata/interface.metadata.js +3 -0
  192. package/dist/core/Nestjs/types/metadata/interface.metadata.js.map +1 -0
  193. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  194. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +3 -0
  195. package/dist/core/Nestjs/types/metadata/object-type.metadata.js.map +1 -0
  196. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  197. package/dist/core/Nestjs/types/metadata/param.metadata.js +3 -0
  198. package/dist/core/Nestjs/types/metadata/param.metadata.js.map +1 -0
  199. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  200. package/dist/core/Nestjs/types/metadata/property.metadata.js +3 -0
  201. package/dist/core/Nestjs/types/metadata/property.metadata.js.map +1 -0
  202. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  203. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +3 -0
  204. package/dist/core/Nestjs/types/metadata/resolver.metadata.js.map +1 -0
  205. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  206. package/dist/core/Nestjs/types/metadata/union.metadata.js +3 -0
  207. package/dist/core/Nestjs/types/metadata/union.metadata.js.map +1 -0
  208. package/dist/core/Nestjs/types/object-type.decorator.d.ts +32 -0
  209. package/dist/core/Nestjs/types/object-type.decorator.js +33 -0
  210. package/dist/core/Nestjs/types/object-type.decorator.js.map +1 -0
  211. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  212. package/dist/core/Nestjs/types/omit-type.js +34 -0
  213. package/dist/core/Nestjs/types/omit-type.js.map +1 -0
  214. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  215. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  216. package/dist/core/Nestjs/types/reflection.utils.js.map +1 -0
  217. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +20 -0
  218. package/dist/core/Nestjs/types/set-metadata.decorator.js +33 -0
  219. package/dist/core/Nestjs/types/set-metadata.decorator.js.map +1 -0
  220. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +73 -0
  221. package/dist/core/Nestjs/types/type-metadata.storage.js +351 -0
  222. package/dist/core/Nestjs/types/type-metadata.storage.js.map +1 -0
  223. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  224. package/dist/core/Nestjs/types/utils/enum.utils.js +31 -0
  225. package/dist/core/Nestjs/types/utils/enum.utils.js.map +1 -0
  226. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +13 -0
  227. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
  228. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js.map +1 -0
  229. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
  230. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
  231. package/dist/core/Nestjs/types/utils/mapped-types.utils.js.map +1 -0
  232. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
  233. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +37 -0
  234. package/dist/core/Nestjs/types/utils/model-properties-accessor.js.map +1 -0
  235. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  236. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  237. package/dist/core/Nestjs/types/utils/type-helpers.utils.js.map +1 -0
  238. package/dist/core/types.d.ts +23 -0
  239. package/dist/core/types.js +31 -0
  240. package/dist/core/types.js.map +1 -0
  241. package/dist/decorators.d.ts +92 -0
  242. package/dist/decorators.js +162 -0
  243. package/dist/decorators.js.map +1 -0
  244. package/dist/generatorDatasource.d.ts +2 -0
  245. package/dist/generatorDatasource.js +13 -0
  246. package/dist/generatorDatasource.js.map +1 -0
  247. package/dist/index.d.ts +30 -0
  248. package/dist/index.js +50 -0
  249. package/dist/index.js.map +1 -0
  250. package/dist/loadRelations.d.ts +12 -0
  251. package/dist/loadRelations.js +139 -0
  252. package/dist/loadRelations.js.map +1 -0
  253. package/dist/outputKeys.d.ts +2 -0
  254. package/dist/outputKeys.js +18 -0
  255. package/dist/outputKeys.js.map +1 -0
  256. package/dist/tsconfig.tsbuildinfo +1 -0
  257. package/dist/types.d.ts +104 -0
  258. package/dist/types.js +23 -0
  259. package/dist/types.js.map +1 -0
  260. package/package.json +48 -24
@@ -0,0 +1,394 @@
1
+ type AnyObject = Record<string, any>;
2
+ /**
3
+ * Operators for where clauses
4
+ */
5
+ export type Operators = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'inq' | 'nin' | 'between' | 'exists' | 'and' | 'or' | 'like' | 'nlike' | 'ilike' | 'nilike' | 'regexp';
6
+ /**
7
+ * Matching predicate comparison
8
+ */
9
+ export type PredicateComparison<PT> = {
10
+ eq?: PT;
11
+ neq?: PT;
12
+ gt?: PT;
13
+ gte?: PT;
14
+ lt?: PT;
15
+ lte?: PT;
16
+ inq?: PT[];
17
+ nin?: PT[];
18
+ between?: [PT, PT];
19
+ exists?: boolean;
20
+ like?: PT;
21
+ nlike?: PT;
22
+ ilike?: PT;
23
+ nilike?: PT;
24
+ regexp?: string | RegExp;
25
+ };
26
+ /**
27
+ * Value types for `{propertyName: value}`
28
+ */
29
+ export type ShortHandEqualType = string | number | boolean | Date;
30
+ /**
31
+ * Key types of a given model, excluding operators
32
+ */
33
+ export type KeyOf<MT extends object> = Exclude<Extract<keyof MT, string>, Operators>;
34
+ /**
35
+ * Condition clause
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * {
40
+ * name: {inq: ['John', 'Mary']},
41
+ * status: 'ACTIVE',
42
+ * age: {gte: 40}
43
+ * }
44
+ * ```
45
+ */
46
+ export type Condition<MT extends object> = {
47
+ [P in KeyOf<MT>]?: PredicateComparison<MT[P]> | (MT[P] & ShortHandEqualType);
48
+ };
49
+ /**
50
+ * Where clause
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * {
55
+ * name: {inq: ['John', 'Mary']},
56
+ * status: 'ACTIVE'
57
+ * and: [...],
58
+ * or: [...],
59
+ * }
60
+ * ```
61
+ */
62
+ export type Where<MT extends object = AnyObject> = Condition<MT> | AndClause<MT> | OrClause<MT>;
63
+ /**
64
+ * And clause
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * {
69
+ * and: [...],
70
+ * }
71
+ * ```
72
+ */
73
+ export interface AndClause<MT extends object> {
74
+ and: Where<MT>[];
75
+ }
76
+ /**
77
+ * Or clause
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * {
82
+ * or: [...],
83
+ * }
84
+ * ```
85
+ */
86
+ export interface OrClause<MT extends object> {
87
+ or: Where<MT>[];
88
+ }
89
+ /**
90
+ * Order by direction
91
+ */
92
+ export type Direction = 'ASC' | 'DESC';
93
+ /**
94
+ * Order by
95
+ *
96
+ * Example:
97
+ * `{afieldname: 'ASC'}`
98
+ */
99
+ export type Order<MT = AnyObject> = {
100
+ [P in keyof MT]: Direction;
101
+ };
102
+ /**
103
+ * Selection of fields
104
+ *
105
+ * Example:
106
+ * `{afieldname: true}`
107
+ */
108
+ export type Fields<MT = AnyObject> = {
109
+ [P in keyof MT]?: boolean;
110
+ } | Extract<keyof MT, string>[];
111
+ /**
112
+ * Inclusion of related items
113
+ *
114
+ * Note: scope means filter on related items
115
+ *
116
+ * Example:
117
+ * `{relation: 'aRelationName', scope: {<AFilterObject>}}`
118
+ */
119
+ export interface Inclusion {
120
+ relation: string;
121
+ scope?: Filter<AnyObject> & {
122
+ /**
123
+ * Global maximum number of inclusions. This is just to remain backward
124
+ * compatability. This totalLimit props takes precedence over limit
125
+ * https://github.com/loopbackio/loopback-next/issues/6832
126
+ */
127
+ totalLimit?: number;
128
+ };
129
+ }
130
+ /**
131
+ * Query filter object
132
+ */
133
+ export interface Filter<MT extends object = AnyObject> {
134
+ /**
135
+ * The matching criteria
136
+ */
137
+ where?: Where<MT>;
138
+ /**
139
+ * To include/exclude fields
140
+ */
141
+ fields?: Fields<MT>;
142
+ /**
143
+ * Sorting order for matched entities. Each item should be formatted as
144
+ * `fieldName ASC` or `fieldName DESC`.
145
+ * For example: `['f1 ASC', 'f2 DESC', 'f3 ASC']`.
146
+ *
147
+ * We might want to use `Order` in the future. Keep it as `string[]` for now
148
+ * for compatibility with LoopBack 3.x.
149
+ */
150
+ order?: string[];
151
+ /**
152
+ * Maximum number of entities
153
+ */
154
+ limit?: number;
155
+ /**
156
+ * Skip N number of entities
157
+ */
158
+ skip?: number;
159
+ /**
160
+ * Offset N number of entities. An alias for `skip`
161
+ */
162
+ offset?: number;
163
+ /**
164
+ * To include related objects
165
+ */
166
+ include?: InclusionFilter[];
167
+ }
168
+ /**
169
+ * Inclusion filter type e.g. 'property', {relation: 'property'}
170
+ */
171
+ export type InclusionFilter = string | Inclusion;
172
+ /**
173
+ * Filter without `where` property
174
+ */
175
+ export type FilterExcludingWhere<MT extends object = AnyObject> = Omit<Filter<MT>, 'where'>;
176
+ /**
177
+ * TypeGuard for Filter
178
+ * @param candidate
179
+ */
180
+ export declare function isFilter<MT extends object>(candidate: any): candidate is Filter<MT>;
181
+ /**
182
+ * A builder for Where object. It provides fluent APIs to add clauses such as
183
+ * `and`, `or`, and other operators.
184
+ *
185
+ * @example
186
+ * ```ts
187
+ * const whereBuilder = new WhereBuilder();
188
+ * const where = whereBuilder
189
+ * .eq('a', 1)
190
+ * .and({x: 'x'}, {y: {gt: 1}})
191
+ * .and({b: 'b'}, {c: {lt: 1}})
192
+ * .or({d: 'd'}, {e: {neq: 1}})
193
+ * .build();
194
+ * ```
195
+ */
196
+ export declare class WhereBuilder<MT extends object = AnyObject> {
197
+ where: Where<MT>;
198
+ constructor(w?: Where<MT>);
199
+ private add;
200
+ /**
201
+ * @deprecated
202
+ * Starting from TypeScript 3.2, we don't have to cast any more. This method
203
+ * should be considered as `deprecated`.
204
+ *
205
+ * Cast an `and`, `or`, or condition clause to Where
206
+ * @param clause - And/Or/Condition clause
207
+ */
208
+ cast(clause: AndClause<MT> | OrClause<MT> | Condition<MT>): Where<MT>;
209
+ /**
210
+ * Add an `and` clause.
211
+ * @param w - One or more where objects
212
+ */
213
+ and(...w: (Where<MT> | Where<MT>[])[]): this;
214
+ /**
215
+ * Add an `or` clause.
216
+ * @param w - One or more where objects
217
+ */
218
+ or(...w: (Where<MT> | Where<MT>[])[]): this;
219
+ /**
220
+ * Add an `=` condition
221
+ * @param key - Property name
222
+ * @param val - Property value
223
+ */
224
+ eq<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
225
+ /**
226
+ * Add a `!=` condition
227
+ * @param key - Property name
228
+ * @param val - Property value
229
+ */
230
+ neq<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
231
+ /**
232
+ * Add a `>` condition
233
+ * @param key - Property name
234
+ * @param val - Property value
235
+ */
236
+ gt<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
237
+ /**
238
+ * Add a `>=` condition
239
+ * @param key - Property name
240
+ * @param val - Property value
241
+ */
242
+ gte<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
243
+ /**
244
+ * Add a `<` condition
245
+ * @param key - Property name
246
+ * @param val - Property value
247
+ */
248
+ lt<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
249
+ /**
250
+ * Add a `<=` condition
251
+ * @param key - Property name
252
+ * @param val - Property value
253
+ */
254
+ lte<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
255
+ /**
256
+ * Add a `inq` condition
257
+ * @param key - Property name
258
+ * @param val - An array of property values
259
+ */
260
+ inq<K extends KeyOf<MT>>(key: K, val: MT[K][]): this;
261
+ /**
262
+ * Add a `nin` condition
263
+ * @param key - Property name
264
+ * @param val - An array of property values
265
+ */
266
+ nin<K extends KeyOf<MT>>(key: K, val: MT[K][]): this;
267
+ /**
268
+ * Add a `between` condition
269
+ * @param key - Property name
270
+ * @param val1 - Property value lower bound
271
+ * @param val2 - Property value upper bound
272
+ */
273
+ between<K extends KeyOf<MT>>(key: K, val1: MT[K], val2: MT[K]): this;
274
+ /**
275
+ * Add a `exists` condition
276
+ * @param key - Property name
277
+ * @param val - Exists or not
278
+ */
279
+ exists<K extends KeyOf<MT>>(key: K, val?: boolean): this;
280
+ /**
281
+ * Add a where object. For conflicting keys with the existing where object,
282
+ * create an `and` clause.
283
+ * @param where - Where filter
284
+ */
285
+ impose(where: Where<MT>): this;
286
+ /**
287
+ * Add a `like` condition
288
+ * @param key - Property name
289
+ * @param val - Regexp condition
290
+ */
291
+ like<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
292
+ /**
293
+ * Add a `nlike` condition
294
+ * @param key - Property name
295
+ * @param val - Regexp condition
296
+ */
297
+ nlike<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
298
+ /**
299
+ * Add a `ilike` condition
300
+ * @param key - Property name
301
+ * @param val - Regexp condition
302
+ */
303
+ ilike<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
304
+ /**
305
+ * Add a `nilike` condition
306
+ * @param key - Property name
307
+ * @param val - Regexp condition
308
+ */
309
+ nilike<K extends KeyOf<MT>>(key: K, val: MT[K]): this;
310
+ /**
311
+ * Add a `regexp` condition
312
+ * @param key - Property name
313
+ * @param val - Regexp condition
314
+ */
315
+ regexp<K extends KeyOf<MT>>(key: K, val: string | RegExp): this;
316
+ /**
317
+ * Get the where object
318
+ */
319
+ build(): Where<MT>;
320
+ }
321
+ /**
322
+ * A builder for Filter. It provides fleunt APIs to add clauses such as
323
+ * `fields`, `order`, `where`, `limit`, `offset`, and `include`.
324
+ *
325
+ * @example
326
+ * ```ts
327
+ * const filterBuilder = new FilterBuilder();
328
+ * const filter = filterBuilder
329
+ * .fields('id', 'a', 'b')
330
+ * .limit(10)
331
+ * .offset(0)
332
+ * .order(['a ASC', 'b DESC'])
333
+ * .where({id: 1})
334
+ * .build();
335
+ * ```
336
+ */
337
+ export declare class FilterBuilder<MT extends object = AnyObject> {
338
+ filter: Filter<MT>;
339
+ constructor(f?: Filter<MT>);
340
+ /**
341
+ * Set `limit`
342
+ * @param limit - Maximum number of records to be returned
343
+ */
344
+ limit(limit: number): this;
345
+ /**
346
+ * Set `offset`
347
+ * @param offset - Offset of the number of records to be returned
348
+ */
349
+ offset(offset: number): this;
350
+ /**
351
+ * Alias to `offset`
352
+ * @param skip
353
+ */
354
+ skip(skip: number): this;
355
+ /**
356
+ * Describe what fields to be included/excluded
357
+ * @param f - A field name to be included, an array of field names to be
358
+ * included, or an Fields object for the inclusion/exclusion
359
+ */
360
+ fields(...f: (Fields<MT> | Extract<keyof MT, string>)[]): this;
361
+ private validateOrder;
362
+ /**
363
+ * Describe the sorting order
364
+ * @param o - A field name with optional direction, an array of field names,
365
+ * or an Order object for the field/direction pairs
366
+ */
367
+ order(...o: (string | string[] | Order<MT>)[]): this;
368
+ /**
369
+ * Declare `include`
370
+ * @param i - A relation name, an array of relation names, or an `Inclusion`
371
+ * object for the relation/scope definitions
372
+ */
373
+ include(...i: (string | string[] | Inclusion)[]): this;
374
+ /**
375
+ * Declare a where clause
376
+ * @param w - Where object
377
+ */
378
+ where(w: Where<MT>): this;
379
+ /**
380
+ * Add a Filter or Where constraint object. If it is a filter object, create
381
+ * an `and` clause for conflicting keys with its where object. For any other
382
+ * properties, throw an error. If it's not a Filter, coerce it to a filter,
383
+ * and carry out the same logic.
384
+ *
385
+ * @param constraint - a constraint object to merge with own filter object
386
+ */
387
+ impose(constraint: Filter<MT> | Where<MT>): this;
388
+ /**
389
+ * Return the filter object
390
+ */
391
+ build(): Filter<MT>;
392
+ }
393
+ export declare function filterTemplate(strings: TemplateStringsArray, ...keys: any[]): (ctx: AnyObject) => any;
394
+ export {};