effect-app 4.0.0-beta.29 → 4.0.0-beta.290

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 (363) hide show
  1. package/CHANGELOG.md +1395 -0
  2. package/dist/Array.d.ts +2 -1
  3. package/dist/Array.d.ts.map +1 -1
  4. package/dist/Array.js +4 -4
  5. package/dist/Chunk.d.ts.map +1 -1
  6. package/dist/Config/SecretURL.d.ts +3 -1
  7. package/dist/Config/SecretURL.d.ts.map +1 -1
  8. package/dist/Config/SecretURL.js +3 -6
  9. package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
  10. package/dist/Config/internal/configSecretURL.js +2 -2
  11. package/dist/Config.d.ts +2 -0
  12. package/dist/Config.d.ts.map +1 -0
  13. package/dist/Config.js +8 -0
  14. package/dist/ConfigProvider.d.ts +2 -0
  15. package/dist/ConfigProvider.d.ts.map +1 -0
  16. package/dist/ConfigProvider.js +6 -0
  17. package/dist/{ServiceMap.d.ts → Context.d.ts} +18 -20
  18. package/dist/Context.d.ts.map +1 -0
  19. package/dist/Context.js +67 -0
  20. package/dist/DataDependencies.d.ts +388 -0
  21. package/dist/DataDependencies.d.ts.map +1 -0
  22. package/dist/DataDependencies.js +64 -0
  23. package/dist/Effect.d.ts +10 -9
  24. package/dist/Effect.d.ts.map +1 -1
  25. package/dist/Effect.js +5 -8
  26. package/dist/Emailer.d.ts +51 -0
  27. package/dist/Emailer.d.ts.map +1 -0
  28. package/dist/Emailer.js +7 -0
  29. package/dist/Function.d.ts.map +1 -1
  30. package/dist/Layer.d.ts +10 -6
  31. package/dist/Layer.d.ts.map +1 -1
  32. package/dist/Layer.js +3 -2
  33. package/dist/Model/Repository/Registry.d.ts +22 -0
  34. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  35. package/dist/Model/Repository/Registry.js +18 -0
  36. package/dist/Model/Repository/ext.d.ts +60 -0
  37. package/dist/Model/Repository/ext.d.ts.map +1 -0
  38. package/dist/Model/Repository/ext.js +122 -0
  39. package/dist/Model/Repository/internal/internal.d.ts +63 -0
  40. package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
  41. package/dist/Model/Repository/internal/internal.js +438 -0
  42. package/dist/Model/Repository/legacy.d.ts +21 -0
  43. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  44. package/dist/Model/Repository/legacy.js +2 -0
  45. package/dist/Model/Repository/makeRepo.d.ts +54 -0
  46. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  47. package/dist/Model/Repository/makeRepo.js +27 -0
  48. package/dist/Model/Repository/service.d.ts +121 -0
  49. package/dist/Model/Repository/service.d.ts.map +1 -0
  50. package/dist/Model/Repository/service.js +2 -0
  51. package/dist/Model/Repository/validation.d.ts +58 -0
  52. package/dist/Model/Repository/validation.d.ts.map +1 -0
  53. package/dist/Model/Repository/validation.js +32 -0
  54. package/dist/Model/Repository.d.ts +7 -0
  55. package/dist/Model/Repository.d.ts.map +1 -0
  56. package/dist/Model/Repository.js +7 -0
  57. package/dist/Model/dsl.d.ts +33 -0
  58. package/dist/Model/dsl.d.ts.map +1 -0
  59. package/dist/Model/dsl.js +43 -0
  60. package/dist/Model/filter/filterApi.d.ts +30 -0
  61. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  62. package/dist/Model/filter/filterApi.js +2 -0
  63. package/dist/Model/filter/types/errors.d.ts +29 -0
  64. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  65. package/dist/Model/filter/types/errors.js +2 -0
  66. package/dist/Model/filter/types/fields.d.ts +15 -0
  67. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  68. package/dist/Model/filter/types/fields.js +2 -0
  69. package/dist/Model/filter/types/path/common.d.ts +316 -0
  70. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  71. package/dist/Model/filter/types/path/common.js +2 -0
  72. package/dist/Model/filter/types/path/eager.d.ts +94 -0
  73. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  74. package/dist/Model/filter/types/path/eager.js +36 -0
  75. package/dist/Model/filter/types/path/index.d.ts +4 -0
  76. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  77. package/dist/Model/filter/types/path/index.js +3 -0
  78. package/dist/Model/filter/types/utils.d.ts +79 -0
  79. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  80. package/dist/Model/filter/types/utils.js +2 -0
  81. package/dist/Model/filter/types/validator.d.ts +30 -0
  82. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  83. package/dist/Model/filter/types/validator.js +2 -0
  84. package/dist/Model/filter/types.d.ts +5 -0
  85. package/dist/Model/filter/types.d.ts.map +1 -0
  86. package/dist/Model/filter/types.js +7 -0
  87. package/dist/Model/query/dsl.d.ts +506 -0
  88. package/dist/Model/query/dsl.d.ts.map +1 -0
  89. package/dist/Model/query/dsl.js +376 -0
  90. package/dist/Model/query/new-kid-interpreter.d.ts +136 -0
  91. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  92. package/dist/Model/query/new-kid-interpreter.js +336 -0
  93. package/dist/Model/query.d.ts +15 -0
  94. package/dist/Model/query.d.ts.map +1 -0
  95. package/dist/Model/query.js +3 -0
  96. package/dist/Model.d.ts +5 -0
  97. package/dist/Model.d.ts.map +1 -0
  98. package/dist/Model.js +5 -0
  99. package/dist/NonEmptySet.d.ts +3 -1
  100. package/dist/NonEmptySet.d.ts.map +1 -1
  101. package/dist/NonEmptySet.js +2 -2
  102. package/dist/Option.d.ts +1 -0
  103. package/dist/Option.d.ts.map +1 -1
  104. package/dist/Option.js +3 -1
  105. package/dist/Pure.d.ts +7 -5
  106. package/dist/Pure.d.ts.map +1 -1
  107. package/dist/Pure.js +7 -4
  108. package/dist/QueueMaker.d.ts +11 -0
  109. package/dist/QueueMaker.d.ts.map +1 -0
  110. package/dist/QueueMaker.js +11 -0
  111. package/dist/RequestContext.d.ts +87 -0
  112. package/dist/RequestContext.d.ts.map +1 -0
  113. package/dist/RequestContext.js +45 -0
  114. package/dist/RequestScopedDependencies.d.ts +21 -0
  115. package/dist/RequestScopedDependencies.d.ts.map +1 -0
  116. package/dist/RequestScopedDependencies.js +16 -0
  117. package/dist/Schema/Class.d.ts +188 -19
  118. package/dist/Schema/Class.d.ts.map +1 -1
  119. package/dist/Schema/Class.js +260 -17
  120. package/dist/Schema/FastCheck.d.ts.map +1 -1
  121. package/dist/Schema/SchemaParser.d.ts +5 -0
  122. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  123. package/dist/Schema/SchemaParser.js +6 -0
  124. package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
  125. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  126. package/dist/Schema/SpecialJsonSchema.js +118 -0
  127. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  128. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  129. package/dist/Schema/SpecialOpenApi.js +123 -0
  130. package/dist/Schema/brand.d.ts +4 -2
  131. package/dist/Schema/brand.d.ts.map +1 -1
  132. package/dist/Schema/brand.js +3 -1
  133. package/dist/Schema/email.d.ts.map +1 -1
  134. package/dist/Schema/email.js +7 -4
  135. package/dist/Schema/ext.d.ts +338 -55
  136. package/dist/Schema/ext.d.ts.map +1 -1
  137. package/dist/Schema/ext.js +358 -53
  138. package/dist/Schema/moreStrings.d.ts +82 -36
  139. package/dist/Schema/moreStrings.d.ts.map +1 -1
  140. package/dist/Schema/moreStrings.js +49 -42
  141. package/dist/Schema/numbers.d.ts +34 -21
  142. package/dist/Schema/numbers.d.ts.map +1 -1
  143. package/dist/Schema/numbers.js +55 -12
  144. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  145. package/dist/Schema/phoneNumber.js +6 -3
  146. package/dist/Schema/schema.d.ts +1 -1
  147. package/dist/Schema/schema.d.ts.map +1 -1
  148. package/dist/Schema/schema.js +2 -2
  149. package/dist/Schema/strings.d.ts +18 -4
  150. package/dist/Schema/strings.d.ts.map +1 -1
  151. package/dist/Schema/strings.js +1 -5
  152. package/dist/Schema.d.ts +222 -8
  153. package/dist/Schema.d.ts.map +1 -1
  154. package/dist/Schema.js +191 -12
  155. package/dist/SchemaAST.d.ts +2 -0
  156. package/dist/SchemaAST.d.ts.map +1 -0
  157. package/dist/SchemaAST.js +2 -0
  158. package/dist/Set.d.ts +4 -1
  159. package/dist/Set.d.ts.map +1 -1
  160. package/dist/Set.js +3 -2
  161. package/dist/Store.d.ts +163 -0
  162. package/dist/Store.d.ts.map +1 -0
  163. package/dist/Store.js +113 -0
  164. package/dist/_ext/Array.d.ts +1 -1
  165. package/dist/_ext/Array.d.ts.map +1 -1
  166. package/dist/_ext/Array.js +4 -2
  167. package/dist/_ext/misc.d.ts +4 -1
  168. package/dist/_ext/misc.d.ts.map +1 -1
  169. package/dist/_ext/misc.js +4 -2
  170. package/dist/_ext/ord.ext.d.ts +2 -1
  171. package/dist/_ext/ord.ext.d.ts.map +1 -1
  172. package/dist/_ext/ord.ext.js +2 -2
  173. package/dist/builtin.d.ts +2 -14
  174. package/dist/builtin.d.ts.map +1 -1
  175. package/dist/builtin.js +1 -1
  176. package/dist/client/InvalidationKeys.d.ts +29 -0
  177. package/dist/client/InvalidationKeys.d.ts.map +1 -0
  178. package/dist/client/InvalidationKeys.js +33 -0
  179. package/dist/client/apiClientFactory.d.ts +19 -31
  180. package/dist/client/apiClientFactory.d.ts.map +1 -1
  181. package/dist/client/apiClientFactory.js +155 -35
  182. package/dist/client/clientFor.d.ts +54 -18
  183. package/dist/client/clientFor.d.ts.map +1 -1
  184. package/dist/client/clientFor.js +9 -1
  185. package/dist/client/errors.d.ts +82 -27
  186. package/dist/client/errors.d.ts.map +1 -1
  187. package/dist/client/errors.js +75 -19
  188. package/dist/client/makeClient.d.ts +492 -32
  189. package/dist/client/makeClient.d.ts.map +1 -1
  190. package/dist/client/makeClient.js +62 -28
  191. package/dist/client.d.ts +2 -0
  192. package/dist/client.d.ts.map +1 -1
  193. package/dist/client.js +3 -1
  194. package/dist/faker.d.ts.map +1 -1
  195. package/dist/http/Request.d.ts +1 -1
  196. package/dist/http/Request.d.ts.map +1 -1
  197. package/dist/http/Request.js +2 -2
  198. package/dist/ids.d.ts +42 -14
  199. package/dist/ids.d.ts.map +1 -1
  200. package/dist/ids.js +30 -5
  201. package/dist/index.d.ts +6 -7
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +8 -8
  204. package/dist/middleware.d.ts +13 -7
  205. package/dist/middleware.d.ts.map +1 -1
  206. package/dist/middleware.js +14 -8
  207. package/dist/rpc/Invalidation.d.ts +3140 -0
  208. package/dist/rpc/Invalidation.d.ts.map +1 -0
  209. package/dist/rpc/Invalidation.js +178 -0
  210. package/dist/rpc/MiddlewareMaker.d.ts +11 -7
  211. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  212. package/dist/rpc/MiddlewareMaker.js +59 -38
  213. package/dist/rpc/RpcContextMap.d.ts +3 -3
  214. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  215. package/dist/rpc/RpcContextMap.js +4 -4
  216. package/dist/rpc/RpcMiddleware.d.ts +14 -10
  217. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  218. package/dist/rpc/RpcMiddleware.js +1 -1
  219. package/dist/rpc.d.ts +1 -1
  220. package/dist/rpc.d.ts.map +1 -1
  221. package/dist/rpc.js +2 -2
  222. package/dist/runtime.d.ts +19 -0
  223. package/dist/runtime.d.ts.map +1 -0
  224. package/dist/runtime.js +40 -0
  225. package/dist/setupRequest.d.ts +20 -0
  226. package/dist/setupRequest.d.ts.map +1 -0
  227. package/dist/setupRequest.js +72 -0
  228. package/dist/toast.d.ts +51 -0
  229. package/dist/toast.d.ts.map +1 -0
  230. package/dist/toast.js +34 -0
  231. package/dist/transform.d.ts +1 -1
  232. package/dist/transform.d.ts.map +1 -1
  233. package/dist/transform.js +4 -5
  234. package/dist/utils/effectify.d.ts +1 -1
  235. package/dist/utils/effectify.d.ts.map +1 -1
  236. package/dist/utils/effectify.js +2 -2
  237. package/dist/utils/extend.d.ts.map +1 -1
  238. package/dist/utils/gen.d.ts +4 -4
  239. package/dist/utils/gen.d.ts.map +1 -1
  240. package/dist/utils/logLevel.d.ts +2 -2
  241. package/dist/utils/logLevel.d.ts.map +1 -1
  242. package/dist/utils/logger.d.ts +4 -3
  243. package/dist/utils/logger.d.ts.map +1 -1
  244. package/dist/utils/logger.js +4 -4
  245. package/dist/utils.d.ts +34 -39
  246. package/dist/utils.d.ts.map +1 -1
  247. package/dist/utils.js +33 -37
  248. package/dist/validation/validators.d.ts.map +1 -1
  249. package/dist/validation.d.ts.map +1 -1
  250. package/dist/withToast.d.ts +30 -0
  251. package/dist/withToast.d.ts.map +1 -0
  252. package/dist/withToast.js +64 -0
  253. package/package.json +22 -251
  254. package/src/Array.ts +5 -5
  255. package/src/Chunk.ts +3 -3
  256. package/src/Config/SecretURL.ts +6 -3
  257. package/src/Config/internal/configSecretURL.ts +2 -2
  258. package/src/Config.ts +7 -0
  259. package/src/ConfigProvider.ts +5 -0
  260. package/src/{ServiceMap.ts → Context.ts} +56 -63
  261. package/src/DataDependencies.ts +114 -0
  262. package/src/Effect.ts +14 -16
  263. package/src/Emailer.ts +51 -0
  264. package/src/Inputify.type.ts +1 -1
  265. package/src/Layer.ts +11 -7
  266. package/src/Model/Repository/Registry.ts +35 -0
  267. package/src/Model/Repository/ext.ts +375 -0
  268. package/src/Model/Repository/internal/internal.ts +755 -0
  269. package/src/Model/Repository/legacy.ts +29 -0
  270. package/src/Model/Repository/makeRepo.ts +145 -0
  271. package/src/Model/Repository/service.ts +676 -0
  272. package/src/Model/Repository/validation.ts +31 -0
  273. package/src/Model/Repository.ts +6 -0
  274. package/src/Model/dsl.ts +129 -0
  275. package/src/Model/filter/filterApi.ts +60 -0
  276. package/src/Model/filter/types/errors.ts +47 -0
  277. package/src/Model/filter/types/fields.ts +50 -0
  278. package/src/Model/filter/types/path/common.ts +404 -0
  279. package/src/Model/filter/types/path/eager.ts +329 -0
  280. package/src/Model/filter/types/path/index.ts +4 -0
  281. package/src/Model/filter/types/utils.ts +128 -0
  282. package/src/Model/filter/types/validator.ts +46 -0
  283. package/src/Model/filter/types.ts +6 -0
  284. package/src/Model/query/dsl.ts +2781 -0
  285. package/src/Model/query/new-kid-interpreter.ts +484 -0
  286. package/src/Model/query.ts +13 -0
  287. package/src/Model.ts +4 -0
  288. package/src/NonEmptySet.ts +6 -4
  289. package/src/Option.ts +2 -0
  290. package/src/Pure.ts +10 -7
  291. package/src/QueueMaker.ts +11 -0
  292. package/src/RequestContext.ts +48 -0
  293. package/src/RequestScopedDependencies.ts +45 -0
  294. package/src/Schema/Class.ts +633 -59
  295. package/src/Schema/SchemaParser.ts +12 -0
  296. package/src/Schema/SpecialJsonSchema.ts +139 -0
  297. package/src/Schema/SpecialOpenApi.ts +130 -0
  298. package/src/Schema/brand.ts +22 -2
  299. package/src/Schema/email.ts +9 -4
  300. package/src/Schema/ext.ts +446 -91
  301. package/src/Schema/moreStrings.ts +147 -68
  302. package/src/Schema/numbers.ts +97 -28
  303. package/src/Schema/phoneNumber.ts +9 -5
  304. package/src/Schema/schema.ts +1 -1
  305. package/src/Schema/strings.ts +23 -14
  306. package/src/Schema.ts +397 -26
  307. package/src/SchemaAST.ts +1 -0
  308. package/src/Set.ts +6 -2
  309. package/src/Store.ts +273 -0
  310. package/src/_ext/Array.ts +4 -2
  311. package/src/_ext/misc.ts +4 -1
  312. package/src/_ext/ord.ext.ts +2 -1
  313. package/src/builtin-json.d.ts +24 -0
  314. package/src/builtin.ts +16 -21
  315. package/src/client/InvalidationKeys.ts +50 -0
  316. package/src/client/apiClientFactory.ts +299 -134
  317. package/src/client/clientFor.ts +107 -34
  318. package/src/client/errors.ts +100 -29
  319. package/src/client/makeClient.ts +586 -78
  320. package/src/client.ts +6 -4
  321. package/src/http/Request.ts +3 -3
  322. package/src/http.ts +1 -1
  323. package/src/ids.ts +33 -6
  324. package/src/index.ts +20 -23
  325. package/src/middleware.ts +13 -9
  326. package/src/rpc/Invalidation.ts +278 -0
  327. package/src/rpc/MiddlewareMaker.ts +88 -80
  328. package/src/rpc/README.md +2 -2
  329. package/src/rpc/RpcContextMap.ts +7 -6
  330. package/src/rpc/RpcMiddleware.ts +19 -13
  331. package/src/rpc.ts +4 -4
  332. package/src/runtime.ts +56 -0
  333. package/src/setupRequest.ts +138 -0
  334. package/src/toast.ts +54 -0
  335. package/src/transform.ts +4 -4
  336. package/src/utils/effectify.ts +1 -1
  337. package/src/utils/gen.ts +8 -8
  338. package/src/utils/logLevel.ts +1 -1
  339. package/src/utils/logger.ts +4 -3
  340. package/src/utils.ts +85 -158
  341. package/src/validation.ts +2 -2
  342. package/src/withToast.ts +133 -0
  343. package/test/dist/rpc.test.d.ts.map +1 -1
  344. package/test/dist/secretURL.test.d.ts.map +1 -0
  345. package/test/dist/special.test.d.ts.map +1 -0
  346. package/test/moreStrings.test.ts +1 -1
  347. package/test/rpc.test.ts +45 -6
  348. package/test/schema.test.ts +459 -30
  349. package/test/secretURL.test.ts +160 -0
  350. package/test/special.test.ts +1258 -0
  351. package/test/utils.test.ts +7 -7
  352. package/tsconfig.base.json +6 -5
  353. package/tsconfig.json +3 -1
  354. package/tsconfig.src.json +29 -29
  355. package/tsconfig.test.json +2 -2
  356. package/dist/Operations.d.ts +0 -123
  357. package/dist/Operations.d.ts.map +0 -1
  358. package/dist/Operations.js +0 -29
  359. package/dist/ServiceMap.d.ts.map +0 -1
  360. package/dist/ServiceMap.js +0 -91
  361. package/eslint.config.mjs +0 -26
  362. package/src/Operations.ts +0 -55
  363. package/tsconfig.json.bak +0 -12
@@ -0,0 +1,2781 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ import * as Data from "effect/Data"
5
+ import { flow } from "effect/Function"
6
+ import * as Pipeable from "effect/Pipeable"
7
+ import type { Covariant } from "effect/Types"
8
+ import type * as Option from "../../Option.ts"
9
+ import type * as S from "../../Schema.ts"
10
+ import type { NonNegativeInt } from "../../Schema.ts"
11
+ import type { Ops } from "../filter/filterApi.ts"
12
+ import type { FieldValues } from "../filter/types.ts"
13
+ import type { FieldPath, FieldPathValue, RefineFieldPathValue } from "../filter/types/path/eager.ts"
14
+
15
+ export type QAll<
16
+ TFieldValues extends FieldValues,
17
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
18
+ A = TFieldValues,
19
+ R = never,
20
+ TType extends "one" | "many" = "many",
21
+ Exclusive extends boolean = false
22
+ > =
23
+ | Query<TFieldValues>
24
+ | QueryWhere<TFieldValues, TFieldValuesRefined, Exclusive>
25
+ | QueryEnd<TFieldValues, TType, Exclusive>
26
+ | QueryProjection<TFieldValues, A, R, TType, Exclusive>
27
+
28
+ export const QId = Symbol()
29
+ export type QId = typeof QId
30
+
31
+ export interface QueryTogether<
32
+ out TFieldValues extends FieldValues,
33
+ out TFieldValuesRefined extends TFieldValues = TFieldValues,
34
+ out Exclusive extends boolean = false,
35
+ out T extends "initial" | "where" | "end" | "projection" = "initial",
36
+ out A = TFieldValues,
37
+ out R = never,
38
+ out TType extends "many" | "one" | "count" = "many"
39
+ > extends Pipeable.Pipeable {
40
+ readonly [QId]: {
41
+ readonly _TFieldValues: Covariant<TFieldValues>
42
+ readonly _T: Covariant<T>
43
+ readonly _TFieldValuesRefined: Covariant<TFieldValuesRefined>
44
+ readonly _A: Covariant<A>
45
+ readonly _R: Covariant<R>
46
+ readonly _TT: Covariant<TType>
47
+ readonly _Exclusive: Covariant<Exclusive>
48
+ }
49
+ }
50
+
51
+ type ExtractTType<T> = T extends QueryTogether<any, any, any, any, any, any, infer TType> ? TType : never
52
+ type ExtractExclusiveness<T> = T extends QueryTogether<any, any, infer Exclusive extends boolean, any, any, any, any>
53
+ ? Exclusive
54
+ : never
55
+ type ExtractFieldValuesRefined<T> = T extends QueryTogether<any, infer TFieldValuesRefined, any, any, any, any, any>
56
+ ? TFieldValuesRefined
57
+ : never
58
+ type ProjectableEncoded<I, From> = I extends FieldValues ? {
59
+ [K in keyof I]: K extends keyof (
60
+ I extends { readonly _tag: infer Tag } ? Extract<From, { readonly _tag: Tag }> : From
61
+ ) ? I[K]
62
+ : never
63
+ }
64
+ : never
65
+
66
+ export type RelationDirection = "some" | "every"
67
+ export type Relation = { relation: RelationDirection }
68
+ export type Query<TFieldValues extends FieldValues> = QueryTogether<TFieldValues, TFieldValues>
69
+ export type QueryWhere<
70
+ TFieldValues extends FieldValues,
71
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
72
+ Exclusive extends boolean = false
73
+ > =
74
+ & QueryTogether<
75
+ TFieldValues,
76
+ TFieldValuesRefined,
77
+ Exclusive,
78
+ "where"
79
+ >
80
+ & Relation
81
+
82
+ export type QueryEnd<
83
+ TFieldValues extends FieldValues,
84
+ TType extends "many" | "one" | "count" = "many",
85
+ Exclusive extends boolean = false
86
+ > = QueryTogether<
87
+ TFieldValues,
88
+ TFieldValues,
89
+ Exclusive,
90
+ "end",
91
+ TFieldValues,
92
+ never,
93
+ TType
94
+ >
95
+
96
+ export type QueryProjection<
97
+ TFieldValues extends FieldValues,
98
+ A = TFieldValues,
99
+ R = never,
100
+ TType extends "many" | "one" | "count" = "many",
101
+ Exclusive extends boolean = false
102
+ > = QueryTogether<
103
+ TFieldValues,
104
+ TFieldValues,
105
+ Exclusive,
106
+ "projection",
107
+ A,
108
+ R,
109
+ TType
110
+ >
111
+
112
+ export type ComputedProjectionOperation = (q: Query<any>) => QueryWhere<any, any, any>
113
+
114
+ export type ComputedProjectionMathExpression =
115
+ | {
116
+ readonly _tag: "field"
117
+ readonly field: string
118
+ }
119
+ | {
120
+ readonly _tag: "mul"
121
+ readonly left: ComputedProjectionMathExpression
122
+ readonly right: ComputedProjectionMathExpression
123
+ }
124
+
125
+ export type ComputedProjectionExpression =
126
+ | {
127
+ readonly _tag: "relation-count"
128
+ readonly path: string
129
+ readonly operation?: ComputedProjectionOperation
130
+ }
131
+ | {
132
+ readonly _tag: "relation-any"
133
+ readonly path: string
134
+ readonly operation?: ComputedProjectionOperation
135
+ }
136
+ | {
137
+ readonly _tag: "relation-every"
138
+ readonly path: string
139
+ readonly operation: ComputedProjectionOperation
140
+ }
141
+ | {
142
+ readonly _tag: "relation-distinct-count"
143
+ readonly path: string
144
+ readonly field: string
145
+ readonly operation?: ComputedProjectionOperation
146
+ }
147
+ | {
148
+ readonly _tag: "relation-sum"
149
+ readonly path: string
150
+ readonly field: string
151
+ readonly operation?: ComputedProjectionOperation
152
+ }
153
+ | {
154
+ readonly _tag: "relation-sum-expr"
155
+ readonly path: string
156
+ readonly expression: ComputedProjectionMathExpression
157
+ readonly operation?: ComputedProjectionOperation
158
+ }
159
+ | {
160
+ readonly _tag: "relation-sum-expr-by"
161
+ readonly path: string
162
+ readonly expression: ComputedProjectionMathExpression
163
+ readonly unit: string
164
+ readonly operation?: ComputedProjectionOperation
165
+ }
166
+ | {
167
+ readonly _tag: "relation-sum-expr-normalized"
168
+ readonly path: string
169
+ readonly expression: ComputedProjectionMathExpression
170
+ readonly unit: string
171
+ readonly toBase: string
172
+ readonly factors: Readonly<Record<string, number>>
173
+ readonly operation?: ComputedProjectionOperation
174
+ }
175
+ | {
176
+ readonly _tag: "relation-collect"
177
+ readonly path: string
178
+ readonly field: string
179
+ readonly distinct: boolean
180
+ readonly operation?: ComputedProjectionOperation
181
+ }
182
+ | {
183
+ readonly _tag: "relation-collect-fields"
184
+ readonly path: string
185
+ readonly fields: readonly string[]
186
+ readonly distinct: boolean
187
+ readonly operation?: ComputedProjectionOperation
188
+ }
189
+ | {
190
+ readonly _tag: "relation-length"
191
+ readonly path: string
192
+ }
193
+
194
+ /**
195
+ * An expression that aggregates values across documents (for use with {@link aggregate}).
196
+ * `agg-field` references a document field to group by; other tags are aggregate functions.
197
+ */
198
+ export type AggregateExpression =
199
+ | {
200
+ readonly _tag: "agg-field"
201
+ readonly path: string
202
+ }
203
+ | {
204
+ readonly _tag: "agg-count"
205
+ }
206
+ | {
207
+ readonly _tag: "agg-count-when"
208
+ readonly operation: ComputedProjectionOperation
209
+ }
210
+ | {
211
+ readonly _tag: "agg-sum"
212
+ readonly field: string
213
+ }
214
+ | {
215
+ readonly _tag: "agg-min"
216
+ readonly field: string
217
+ }
218
+ | {
219
+ readonly _tag: "agg-max"
220
+ readonly field: string
221
+ }
222
+
223
+ export type AggregateMap = Readonly<Record<string, AggregateExpression>>
224
+
225
+ export type ComputedProjectionMap = Readonly<Record<string, ComputedProjectionExpression>>
226
+ export type Q<TFieldValues extends FieldValues> =
227
+ | Initial<TFieldValues>
228
+ | Where<TFieldValues>
229
+ | And<TFieldValues>
230
+ | Or<TFieldValues>
231
+ | Order<TFieldValues, any>
232
+ | Page<TFieldValues>
233
+ | Project<any, TFieldValues, any>
234
+ | One<TFieldValues>
235
+ | Count<TFieldValues>
236
+
237
+ export class Initial<TFieldValues extends FieldValues> extends Data.TaggedClass("value")<{ value: "initial" }>
238
+ implements Query<TFieldValues>
239
+ {
240
+ readonly [QId]!: any
241
+ constructor() {
242
+ super({ value: "initial" as const })
243
+ }
244
+ override pipe() {
245
+ // eslint-disable-next-line prefer-rest-params
246
+ return Pipeable.pipeArguments(this, arguments)
247
+ }
248
+ }
249
+
250
+ export class Where<TFieldValues extends FieldValues> extends Data.TaggedClass("where")<{
251
+ current: Query<TFieldValues>
252
+ operation: [string, Ops, any] | [string, any] | ((q: Query<TFieldValues>) => QueryWhere<TFieldValues>)
253
+ relation: RelationDirection
254
+ subPath?: string
255
+ }> implements QueryWhere<TFieldValues> {
256
+ readonly [QId]!: any
257
+
258
+ override pipe() {
259
+ // eslint-disable-next-line prefer-rest-params
260
+ return Pipeable.pipeArguments(this, arguments)
261
+ }
262
+ }
263
+
264
+ export class And<TFieldValues extends FieldValues> extends Data.TaggedClass("and")<{
265
+ current: Query<TFieldValues>
266
+ operation: [string, Ops, any] | [string, any] | ((q: Query<TFieldValues>) => QueryWhere<TFieldValues>)
267
+ relation: RelationDirection
268
+ }> implements QueryWhere<TFieldValues> {
269
+ readonly [QId]!: any
270
+ override pipe() {
271
+ // eslint-disable-next-line prefer-rest-params
272
+ return Pipeable.pipeArguments(this, arguments)
273
+ }
274
+ }
275
+
276
+ export class Or<TFieldValues extends FieldValues> extends Data.TaggedClass("or")<{
277
+ current: Query<TFieldValues>
278
+ operation: [string, Ops, any] | [string, any] | ((q: Query<TFieldValues>) => QueryWhere<TFieldValues>)
279
+ relation: RelationDirection
280
+ }> implements QueryWhere<TFieldValues> {
281
+ readonly [QId]!: any
282
+ override pipe() {
283
+ // eslint-disable-next-line prefer-rest-params
284
+ return Pipeable.pipeArguments(this, arguments)
285
+ }
286
+ }
287
+
288
+ export class Page<TFieldValues extends FieldValues> extends Data.TaggedClass("page")<{
289
+ current: Query<TFieldValues> | QueryWhere<any, TFieldValues> | QueryEnd<TFieldValues>
290
+ take?: number | undefined
291
+ skip?: number | undefined
292
+ }> implements QueryEnd<TFieldValues> {
293
+ readonly [QId]!: any
294
+ override pipe() {
295
+ // eslint-disable-next-line prefer-rest-params
296
+ return Pipeable.pipeArguments(this, arguments)
297
+ }
298
+ }
299
+
300
+ export class One<TFieldValues extends FieldValues> extends Data.TaggedClass("one")<{
301
+ current: Query<TFieldValues> | QueryWhere<any, TFieldValues> | QueryEnd<TFieldValues>
302
+ }> implements QueryEnd<TFieldValues, "one"> {
303
+ readonly [QId]!: any
304
+ override pipe() {
305
+ // eslint-disable-next-line prefer-rest-params
306
+ return Pipeable.pipeArguments(this, arguments)
307
+ }
308
+ }
309
+
310
+ export class Count<TFieldValues extends FieldValues> extends Data.TaggedClass("count")<{
311
+ current: Query<TFieldValues> | QueryWhere<any, TFieldValues> | QueryEnd<TFieldValues>
312
+ }> implements QueryEnd<TFieldValues, "count"> {
313
+ readonly [QId]!: any
314
+ override pipe() {
315
+ // eslint-disable-next-line prefer-rest-params
316
+ return Pipeable.pipeArguments(this, arguments)
317
+ }
318
+ }
319
+
320
+ export class Order<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>>
321
+ extends Data.TaggedClass("order")<{
322
+ current: Query<TFieldValues> | QueryWhere<any, TFieldValues> | QueryEnd<TFieldValues>
323
+ field: TFieldName
324
+ direction: "ASC" | "DESC"
325
+ }>
326
+ implements QueryEnd<TFieldValues>
327
+ {
328
+ readonly [QId]!: any
329
+ override pipe() {
330
+ // eslint-disable-next-line prefer-rest-params
331
+ return Pipeable.pipeArguments(this, arguments)
332
+ }
333
+ }
334
+
335
+ export class Project<A, TFieldValues extends FieldValues, R, TType extends "one" | "many" = "many">
336
+ extends Data.TaggedClass("project")<{
337
+ current: Query<TFieldValues> | QueryWhere<any, TFieldValues> | QueryEnd<TFieldValues, TType>
338
+ schema: S.Codec<A, TFieldValues, R>
339
+ mode: "collect" | "project" | "transform" | "aggregate"
340
+ computed?: ComputedProjectionMap
341
+ aggregateMap?: AggregateMap
342
+ }>
343
+ implements QueryProjection<TFieldValues, A, R>
344
+ {
345
+ readonly [QId]!: any
346
+ override pipe() {
347
+ // eslint-disable-next-line prefer-rest-params
348
+ return Pipeable.pipeArguments(this, arguments)
349
+ }
350
+ }
351
+
352
+ export const make: <TFieldValues extends FieldValues>() => Query<TFieldValues> = () => new Initial()
353
+
354
+ export const where: FilterWhere = (...operation: any[]) => (current: any) =>
355
+ new Where({ current, operation: typeof operation[0] === "function" ? flow(...operation as [any]) : operation } as any)
356
+
357
+ export const and: FilterContinuationAnd = (...operation: any[]) => (current: any) =>
358
+ new And({ current, operation: typeof operation[0] === "function" ? flow(...operation as [any]) : operation } as any)
359
+
360
+ export const or: FilterContinuationOr = (...operation: any[]) => (current: any) =>
361
+ new Or({ current, operation: typeof operation[0] === "function" ? flow(...operation as [any]) : operation } as any)
362
+
363
+ export const whereEvery: WhereEveryOrSome =
364
+ ((subPath: string, ...[first, ...rest]: any[]) => (current: any) =>
365
+ new Where(
366
+ {
367
+ current,
368
+ operation: typeof first === "function"
369
+ ? flow(...[first, ...rest] as [any])
370
+ : [`${subPath}.-1.${first}`, ...rest],
371
+ relation: "every",
372
+ subPath
373
+ } as any
374
+ )) as unknown as WhereEveryOrSome
375
+ export const whereSome: WhereEveryOrSome =
376
+ ((subPath: string, ...[first, ...rest]: any[]) => (current: any) =>
377
+ new Where(
378
+ {
379
+ current,
380
+ operation: typeof first === "function"
381
+ ? flow(...[first, ...rest] as [any])
382
+ : [`${subPath}.-1.${first}`, ...rest],
383
+ relation: "some",
384
+ subPath
385
+ } as any
386
+ )) as unknown as WhereEveryOrSome
387
+
388
+ export const order: {
389
+ <
390
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "many", any>
391
+ >(
392
+ field: FieldPath<ExtractFieldValuesRefined<Q>>,
393
+ direction?: "ASC" | "DESC"
394
+ ): (
395
+ current: Q
396
+ ) => QueryEnd<ExtractFieldValuesRefined<Q>, "many", ExtractExclusiveness<Q>>
397
+ } = (field, direction = "ASC") => (current) => new Order({ current, field: field as any, direction })
398
+
399
+ export const page: {
400
+ (
401
+ page: { skip?: number; take?: number }
402
+ ): <Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "many", any>>(
403
+ current: Q
404
+ ) => QueryEnd<ExtractFieldValuesRefined<Q>, "many", ExtractExclusiveness<Q>>
405
+ } = ({ skip, take }) => (current) =>
406
+ new Page({
407
+ current,
408
+ take,
409
+ skip
410
+ })
411
+
412
+ export const one: {
413
+ <Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "many", any>>(
414
+ current: Q
415
+ ): QueryEnd<ExtractFieldValuesRefined<Q>, "one", ExtractExclusiveness<Q>>
416
+ } = (current) =>
417
+ new One({
418
+ current
419
+ })
420
+
421
+ // it's better to implement a distinct count so that the implementation can be optimised per adapter
422
+ export const count: {
423
+ <
424
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "many", any>
425
+ >(
426
+ current: Q
427
+ ): QueryProjection<ExtractFieldValuesRefined<Q>, NonNegativeInt, never, "count", ExtractExclusiveness<Q>>
428
+ } = (current) => new Count({ current })
429
+
430
+ /**
431
+ * Attach a projection schema to a query.
432
+ *
433
+ * The `select` clause sent to the store is derived from the schema's encoded
434
+ * AST property names (top-level + per-array sub-keys), so a projection always
435
+ * narrows what is read from the store. The repository augments that select
436
+ * with `id` and `_etag` for change tracking. See {@link toFilter} and the
437
+ * dispatch in `Repository/internal/internal.ts`.
438
+ *
439
+ * Modes — pick based on shape of the decoded value and on whether the
440
+ * persistence-model (PM) reverse-mapping is needed:
441
+ *
442
+ * - `"transform"` (default when `mode` omitted): goes through the repo's
443
+ * `parseMany` pipeline. The raw row is reverse-mapped via the
444
+ * etag/PM cache (re-injecting `_etag` and any PM-shape state) before
445
+ * decoding. Decode failures `orDie` (error channel = `never`). Use when
446
+ * the schema operates on the full PM shape (e.g. full-entity reads that
447
+ * must preserve etag tracking).
448
+ *
449
+ * - `"project"`: decodes the raw encoded row directly with the supplied
450
+ * schema. No PM reverse-mapping, no etag cache merge. Decode failures
451
+ * surface as `S.SchemaError`. Use for slim DTOs / aggregations that do not
452
+ * need etag tracking and whose schema input is a plain subset of `Encoded`.
453
+ *
454
+ * - `"collect"`: like `"project"`, but the schema yields `Option<A>` and
455
+ * `None` values are dropped post-decode (`Array.getSomes`). Use to filter
456
+ * rows during decode (e.g. discriminated-union narrowing where some rows
457
+ * should not appear in the result).
458
+ */
459
+ export const project: {
460
+ <
461
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
462
+ I extends ExtractFieldValuesRefined<Q>,
463
+ A = ExtractFieldValuesRefined<Q>,
464
+ R = never,
465
+ E extends boolean = ExtractExclusiveness<Q>
466
+ >(
467
+ schema: S.Codec<Option.Option<A>, I, R>,
468
+ mode: "collect"
469
+ ): (
470
+ current: Q
471
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
472
+
473
+ <
474
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
475
+ I extends ExtractFieldValuesRefined<Q>,
476
+ A = ExtractFieldValuesRefined<Q>,
477
+ R = never,
478
+ E extends boolean = ExtractExclusiveness<Q>
479
+ >(
480
+ schema: S.Codec<A, I, R>,
481
+ mode: "project"
482
+ ): (
483
+ current: Q
484
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
485
+ <
486
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
487
+ I extends ExtractFieldValuesRefined<Q>,
488
+ A = ExtractFieldValuesRefined<Q>,
489
+ R = never,
490
+ E extends boolean = ExtractExclusiveness<Q>
491
+ >(
492
+ schema: S.Codec<A, I, R>
493
+ ): (
494
+ current: Q
495
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
496
+
497
+ <
498
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
499
+ I extends FieldValues,
500
+ A,
501
+ R = never,
502
+ E extends boolean = ExtractExclusiveness<Q>
503
+ >(
504
+ schema:
505
+ & S.Codec<Option.Option<A>, I, R>
506
+ & S.Codec<Option.Option<A>, ProjectableEncoded<I, ExtractFieldValuesRefined<Q>>, R>,
507
+ mode: "collect"
508
+ ): (
509
+ current: Q
510
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
511
+
512
+ <
513
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
514
+ I extends FieldValues,
515
+ A,
516
+ R = never,
517
+ E extends boolean = ExtractExclusiveness<Q>
518
+ >(
519
+ schema:
520
+ & S.Codec<A, I, R>
521
+ & S.Codec<A, ProjectableEncoded<I, ExtractFieldValuesRefined<Q>>, R>,
522
+ mode: "project"
523
+ ): (
524
+ current: Q
525
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
526
+ <
527
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
528
+ I extends FieldValues,
529
+ A,
530
+ R = never,
531
+ E extends boolean = ExtractExclusiveness<Q>
532
+ >(
533
+ schema:
534
+ & S.Codec<A, I, R>
535
+ & S.Codec<A, ProjectableEncoded<I, ExtractFieldValuesRefined<Q>>, R>
536
+ ): (
537
+ current: Q
538
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
539
+
540
+ <
541
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
542
+ I,
543
+ A = ExtractFieldValuesRefined<Q>,
544
+ R = never,
545
+ E extends boolean = ExtractExclusiveness<Q>
546
+ >(
547
+ schema: S.Codec<
548
+ Option.Option<A>,
549
+ {
550
+ [K in keyof I]: K extends keyof ExtractFieldValuesRefined<Q> ? I[K] : never
551
+ },
552
+ R
553
+ >,
554
+ mode: "collect"
555
+ ): (
556
+ current: Q
557
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
558
+
559
+ <
560
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
561
+ I,
562
+ A = ExtractFieldValuesRefined<Q>,
563
+ R = never,
564
+ E extends boolean = ExtractExclusiveness<Q>
565
+ >(
566
+ schema: S.Codec<
567
+ A,
568
+ {
569
+ [K in keyof I]: K extends keyof ExtractFieldValuesRefined<Q> ? I[K] : never
570
+ },
571
+ R
572
+ >,
573
+ mode: "project"
574
+ ): (
575
+ current: Q
576
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
577
+ <
578
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
579
+ I,
580
+ A = ExtractFieldValuesRefined<Q>,
581
+ R = never,
582
+ E extends boolean = ExtractExclusiveness<Q>
583
+ >(
584
+ schema: S.Codec<
585
+ A,
586
+ {
587
+ [K in keyof I]: K extends keyof ExtractFieldValuesRefined<Q> ? I[K] : never
588
+ },
589
+ R
590
+ >
591
+ ): (
592
+ current: Q
593
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
594
+ } = (schema: any, mode = "transform") => (current: any) => new Project({ current, schema, mode } as any)
595
+
596
+ /**
597
+ * Element type of an array-valued field path on `TFieldValues`. Falls back to
598
+ * `FieldValues` when the path does not resolve to an array of structs so that
599
+ * `FieldPath<...>` stays defined (it just degrades to `string`).
600
+ *
601
+ * Uses `Extract` so that when `P` defaults to the full `FieldPath<TFieldValues>`
602
+ * union, only the array-valued branches contribute to the element type.
603
+ */
604
+ export type RelationElement<
605
+ TFieldValues extends FieldValues,
606
+ P extends FieldPath<TFieldValues>
607
+ > = Extract<FieldPathValue<TFieldValues, P>, ReadonlyArray<unknown>> extends ReadonlyArray<infer E>
608
+ ? (E extends FieldValues ? E : FieldValues)
609
+ : FieldValues
610
+
611
+ export const relation = <
612
+ TFieldValues extends FieldValues,
613
+ const P extends FieldPath<TFieldValues> = FieldPath<TFieldValues>
614
+ >(
615
+ path: P
616
+ ) => ({
617
+ /**
618
+ * Typed math-expression builder bound to the relation's element scope:
619
+ * `relation("items").expr.field("weight")` constrains the field path to
620
+ * `FieldPath<RelationElement<TFieldValues, P>>`.
621
+ */
622
+ expr: {
623
+ field: (field: FieldPath<RelationElement<TFieldValues, P>>): ComputedProjectionMathExpression => ({
624
+ _tag: "field",
625
+ field: field as string
626
+ }),
627
+ mul: (
628
+ left: ComputedProjectionMathExpression,
629
+ right: ComputedProjectionMathExpression
630
+ ): ComputedProjectionMathExpression => ({ _tag: "mul", left, right })
631
+ },
632
+ length: (): ComputedProjectionExpression => ({
633
+ _tag: "relation-length",
634
+ path: path as string
635
+ }),
636
+ count: (operation?: ComputedProjectionOperation): ComputedProjectionExpression =>
637
+ operation
638
+ ? {
639
+ _tag: "relation-count",
640
+ path: path as string,
641
+ operation
642
+ }
643
+ : {
644
+ _tag: "relation-count",
645
+ path: path as string
646
+ },
647
+ any: (operation?: ComputedProjectionOperation): ComputedProjectionExpression =>
648
+ operation
649
+ ? {
650
+ _tag: "relation-any",
651
+ path: path as string,
652
+ operation
653
+ }
654
+ : {
655
+ _tag: "relation-any",
656
+ path: path as string
657
+ },
658
+ every: (operation: ComputedProjectionOperation): ComputedProjectionExpression => ({
659
+ _tag: "relation-every",
660
+ path: path as string,
661
+ operation
662
+ }),
663
+ distinctCount: (
664
+ field: FieldPath<RelationElement<TFieldValues, P>>,
665
+ operation?: ComputedProjectionOperation
666
+ ): ComputedProjectionExpression =>
667
+ operation
668
+ ? {
669
+ _tag: "relation-distinct-count",
670
+ path: path as string,
671
+ field: field as string,
672
+ operation
673
+ }
674
+ : {
675
+ _tag: "relation-distinct-count",
676
+ path: path as string,
677
+ field: field as string
678
+ },
679
+ sum: (
680
+ field: FieldPath<RelationElement<TFieldValues, P>>,
681
+ operation?: ComputedProjectionOperation
682
+ ): ComputedProjectionExpression =>
683
+ operation
684
+ ? {
685
+ _tag: "relation-sum",
686
+ path: path as string,
687
+ field: field as string,
688
+ operation
689
+ }
690
+ : {
691
+ _tag: "relation-sum",
692
+ path: path as string,
693
+ field: field as string
694
+ },
695
+ sumExpr: (
696
+ expression: ComputedProjectionMathExpression,
697
+ operation?: ComputedProjectionOperation
698
+ ): ComputedProjectionExpression =>
699
+ operation
700
+ ? {
701
+ _tag: "relation-sum-expr",
702
+ path: path as string,
703
+ expression,
704
+ operation
705
+ }
706
+ : {
707
+ _tag: "relation-sum-expr",
708
+ path: path as string,
709
+ expression
710
+ },
711
+ sumExprBy: (
712
+ expression: ComputedProjectionMathExpression,
713
+ options: { unit: FieldPath<RelationElement<TFieldValues, P>> },
714
+ operation?: ComputedProjectionOperation
715
+ ): ComputedProjectionExpression =>
716
+ operation
717
+ ? {
718
+ _tag: "relation-sum-expr-by",
719
+ path: path as string,
720
+ expression,
721
+ unit: options.unit as string,
722
+ operation
723
+ }
724
+ : {
725
+ _tag: "relation-sum-expr-by",
726
+ path: path as string,
727
+ expression,
728
+ unit: options.unit as string
729
+ },
730
+ sumExprNormalized: (
731
+ expression: ComputedProjectionMathExpression,
732
+ options: {
733
+ unit: FieldPath<RelationElement<TFieldValues, P>>
734
+ toBase: string
735
+ factors: Readonly<Record<string, number>>
736
+ },
737
+ operation?: ComputedProjectionOperation
738
+ ): ComputedProjectionExpression =>
739
+ operation
740
+ ? {
741
+ _tag: "relation-sum-expr-normalized",
742
+ path: path as string,
743
+ expression,
744
+ unit: options.unit as string,
745
+ toBase: options.toBase,
746
+ factors: options.factors,
747
+ operation
748
+ }
749
+ : {
750
+ _tag: "relation-sum-expr-normalized",
751
+ path: path as string,
752
+ expression,
753
+ unit: options.unit as string,
754
+ toBase: options.toBase,
755
+ factors: options.factors
756
+ },
757
+ collect: (
758
+ field: FieldPath<RelationElement<TFieldValues, P>>,
759
+ operation?: ComputedProjectionOperation
760
+ ): ComputedProjectionExpression =>
761
+ operation
762
+ ? {
763
+ _tag: "relation-collect",
764
+ path: path as string,
765
+ field: field as string,
766
+ distinct: false,
767
+ operation
768
+ }
769
+ : {
770
+ _tag: "relation-collect",
771
+ path: path as string,
772
+ field: field as string,
773
+ distinct: false
774
+ },
775
+ collectDistinct: (
776
+ field: FieldPath<RelationElement<TFieldValues, P>>,
777
+ operation?: ComputedProjectionOperation
778
+ ): ComputedProjectionExpression =>
779
+ operation
780
+ ? {
781
+ _tag: "relation-collect",
782
+ path: path as string,
783
+ field: field as string,
784
+ distinct: true,
785
+ operation
786
+ }
787
+ : {
788
+ _tag: "relation-collect",
789
+ path: path as string,
790
+ field: field as string,
791
+ distinct: true
792
+ },
793
+ collectFields: (
794
+ fields: readonly FieldPath<RelationElement<TFieldValues, P>>[],
795
+ operation?: ComputedProjectionOperation
796
+ ): ComputedProjectionExpression =>
797
+ operation
798
+ ? {
799
+ _tag: "relation-collect-fields",
800
+ path: path as string,
801
+ fields: fields as readonly string[],
802
+ distinct: false,
803
+ operation
804
+ }
805
+ : {
806
+ _tag: "relation-collect-fields",
807
+ path: path as string,
808
+ fields: fields as readonly string[],
809
+ distinct: false
810
+ },
811
+ collectDistinctFields: (
812
+ fields: readonly FieldPath<RelationElement<TFieldValues, P>>[],
813
+ operation?: ComputedProjectionOperation
814
+ ): ComputedProjectionExpression =>
815
+ operation
816
+ ? {
817
+ _tag: "relation-collect-fields",
818
+ path: path as string,
819
+ fields: fields as readonly string[],
820
+ distinct: true,
821
+ operation
822
+ }
823
+ : {
824
+ _tag: "relation-collect-fields",
825
+ path: path as string,
826
+ fields: fields as readonly string[],
827
+ distinct: true
828
+ }
829
+ })
830
+
831
+ /**
832
+ * Untyped math-expression builder. Field paths are not statically validated —
833
+ * prefer the scope-bound `relation(path).expr` builder when the element type
834
+ * is known, since it constrains the field argument to `FieldPath<E>`.
835
+ *
836
+ * The generic parameter is accepted for symmetry with the scoped builder so
837
+ * callers may opt into a tighter check via `expr.field<E>("x")`.
838
+ */
839
+ export const expr = {
840
+ field: <T extends FieldValues = FieldValues>(
841
+ field: FieldPath<T>
842
+ ): ComputedProjectionMathExpression => ({ _tag: "field", field: field as string }),
843
+ mul: (
844
+ left: ComputedProjectionMathExpression,
845
+ right: ComputedProjectionMathExpression
846
+ ): ComputedProjectionMathExpression => ({ _tag: "mul", left, right })
847
+ } as const
848
+
849
+ export const computed = <T extends ComputedProjectionMap>(value: T): T => value
850
+
851
+ /**
852
+ * Helpers passed to the inline-builder form of {@link projectComputed}. The
853
+ * `relation` factory is bound to the source row shape so paths/fields inside
854
+ * the projection are validated against the document shape inferred from the
855
+ * pipe.
856
+ */
857
+ export interface ComputedHelpers<TFieldValues extends FieldValues> {
858
+ relation: <const P extends FieldPath<TFieldValues>>(path: P) => ReturnType<typeof relation<TFieldValues, P>>
859
+ }
860
+
861
+ const makeComputedHelpers = <TFieldValues extends FieldValues>(): ComputedHelpers<TFieldValues> => ({
862
+ relation: (path) => relation<TFieldValues, typeof path>(path)
863
+ })
864
+
865
+ export const projectComputed: {
866
+ <
867
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
868
+ I extends Record<string, unknown>,
869
+ A = ExtractFieldValuesRefined<Q>,
870
+ R = never,
871
+ E extends boolean = ExtractExclusiveness<Q>
872
+ >(
873
+ schema: S.Codec<Option.Option<A>, I, R>,
874
+ build: (helpers: ComputedHelpers<ExtractFieldValuesRefined<Q>>) => ComputedProjectionMap,
875
+ mode: "collect"
876
+ ): (
877
+ current: Q
878
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
879
+
880
+ <
881
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
882
+ I extends Record<string, unknown>,
883
+ A = ExtractFieldValuesRefined<Q>,
884
+ R = never,
885
+ E extends boolean = ExtractExclusiveness<Q>
886
+ >(
887
+ schema: S.Codec<A, I, R>,
888
+ build: (helpers: ComputedHelpers<ExtractFieldValuesRefined<Q>>) => ComputedProjectionMap,
889
+ mode?: "project"
890
+ ): (
891
+ current: Q
892
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
893
+
894
+ <
895
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
896
+ I extends Record<string, unknown>,
897
+ A = ExtractFieldValuesRefined<Q>,
898
+ R = never,
899
+ E extends boolean = ExtractExclusiveness<Q>
900
+ >(
901
+ schema: S.Codec<Option.Option<A>, I, R>,
902
+ computedProjection: ComputedProjectionMap,
903
+ mode: "collect"
904
+ ): (
905
+ current: Q
906
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
907
+
908
+ <
909
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
910
+ I extends Record<string, unknown>,
911
+ A = ExtractFieldValuesRefined<Q>,
912
+ R = never,
913
+ E extends boolean = ExtractExclusiveness<Q>
914
+ >(
915
+ schema: S.Codec<A, I, R>,
916
+ computedProjection: ComputedProjectionMap,
917
+ mode?: "project"
918
+ ): (
919
+ current: Q
920
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
921
+ } = (
922
+ schema: any,
923
+ mapOrBuild:
924
+ | ComputedProjectionMap
925
+ | ((helpers: ComputedHelpers<FieldValues>) => ComputedProjectionMap),
926
+ mode = "project"
927
+ ) =>
928
+ (current: any) => {
929
+ const computedProjection = typeof mapOrBuild === "function"
930
+ ? mapOrBuild(makeComputedHelpers())
931
+ : mapOrBuild
932
+ return new Project({ current, schema, mode, computed: computedProjection } as any)
933
+ }
934
+
935
+ /**
936
+ * Builder shape returned by {@link agg}. Field-taking methods are constrained
937
+ * to `FieldPath<TFieldValues>` so paths are validated against the document
938
+ * shape.
939
+ */
940
+ export interface AggBuilder<TFieldValues extends FieldValues> {
941
+ field: (path: FieldPath<TFieldValues>) => AggregateExpression
942
+ count: () => AggregateExpression
943
+ countWhen: (operation: ComputedProjectionOperation) => AggregateExpression
944
+ sum: (field: FieldPath<TFieldValues>) => AggregateExpression
945
+ min: (field: FieldPath<TFieldValues>) => AggregateExpression
946
+ max: (field: FieldPath<TFieldValues>) => AggregateExpression
947
+ }
948
+
949
+ const makeAggBuilder = <TFieldValues extends FieldValues>(): AggBuilder<TFieldValues> => ({
950
+ field: (path) => ({ _tag: "agg-field", path: path as string }),
951
+ count: () => ({ _tag: "agg-count" }),
952
+ countWhen: (operation) => ({ _tag: "agg-count-when", operation }),
953
+ sum: (field) => ({ _tag: "agg-sum", field: field as string }),
954
+ min: (field) => ({ _tag: "agg-min", field: field as string }),
955
+ max: (field) => ({ _tag: "agg-max", field: field as string })
956
+ })
957
+
958
+ /**
959
+ * Scope-bound aggregate-expression builder factory. Invoke with the source
960
+ * document field-value shape to get a builder whose `field`/`sum`/`min`/`max`
961
+ * arguments are constrained to `FieldPath<TFieldValues>`.
962
+ *
963
+ * Prefer the inline callback form of {@link aggregate} (`aggregate(schema,
964
+ * ($) => ({...}))`) — there the source shape is inferred from the pipe so no
965
+ * explicit type argument is needed. This factory is the escape hatch when
966
+ * the builder is constructed outside the pipe.
967
+ */
968
+ export const agg = <TFieldValues extends FieldValues = FieldValues>(): AggBuilder<TFieldValues> =>
969
+ makeAggBuilder<TFieldValues>()
970
+
971
+ /**
972
+ * Attach an aggregate projection to a query, performing GROUP BY + aggregate functions at the
973
+ * database level instead of fetching all rows and grouping in memory.
974
+ *
975
+ * Pass a builder callback to get a typed `agg` bound to the source row shape
976
+ * (inferred from the pipe — no explicit generic needed):
977
+ *
978
+ * @example
979
+ * ```ts
980
+ * repo.query(
981
+ * where("status", "active"),
982
+ * aggregate(
983
+ * S.Struct({ city: S.String, count: S.Number }),
984
+ * ($) => ({
985
+ * city: $.field("address.city"),
986
+ * count: $.countWhen((q) => q.pipe(where("active", true)))
987
+ * })
988
+ * )
989
+ * )
990
+ * ```
991
+ *
992
+ * A plain {@link AggregateMap} is also accepted for the rare case where the
993
+ * map is built outside the pipe (loses path inference).
994
+ *
995
+ * The output is decoded directly with `schema` (no PM reverse-mapping, no etag tracking).
996
+ * Decode failures surface as `S.SchemaError`.
997
+ */
998
+ export const aggregate: {
999
+ <
1000
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
1001
+ I extends Record<string, unknown>,
1002
+ A = ExtractFieldValuesRefined<Q>,
1003
+ R = never,
1004
+ E extends boolean = ExtractExclusiveness<Q>
1005
+ >(
1006
+ schema: S.Codec<A, I, R>,
1007
+ build: (agg: AggBuilder<ExtractFieldValuesRefined<Q>>) => AggregateMap
1008
+ ): (
1009
+ current: Q
1010
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
1011
+ <
1012
+ Q extends Query<any> | QueryWhere<any, any, any> | QueryEnd<any, "one" | "many", any>,
1013
+ I extends Record<string, unknown>,
1014
+ A = ExtractFieldValuesRefined<Q>,
1015
+ R = never,
1016
+ E extends boolean = ExtractExclusiveness<Q>
1017
+ >(
1018
+ schema: S.Codec<A, I, R>,
1019
+ aggregateMap: AggregateMap
1020
+ ): (
1021
+ current: Q
1022
+ ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>, E>
1023
+ } = (schema: any, mapOrBuild: AggregateMap | ((agg: AggBuilder<FieldValues>) => AggregateMap)) => (current: any) => {
1024
+ const aggregateMap = typeof mapOrBuild === "function"
1025
+ ? mapOrBuild(makeAggBuilder())
1026
+ : mapOrBuild
1027
+ return new Project({ current, schema, mode: "aggregate", aggregateMap } as any)
1028
+ }
1029
+
1030
+ type GetArV<T> = T extends readonly (infer R)[] ? R : never
1031
+
1032
+ export type FilterContinuations<IsCurrentInitial extends boolean = false> = {
1033
+ <
1034
+ TFieldValues extends FieldValues,
1035
+ TFieldName extends FieldPath<TFieldValues>,
1036
+ V extends FieldPathValue<TFieldValues, TFieldName>,
1037
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1038
+ E extends boolean = false
1039
+ >(
1040
+ path: TFieldName,
1041
+ value: V
1042
+ ): (
1043
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1044
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1045
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
1046
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1047
+
1048
+ <
1049
+ TFieldValues extends FieldValues,
1050
+ TFieldName extends FieldPath<TFieldValues>,
1051
+ V extends FieldPathValue<TFieldValues, TFieldName>,
1052
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1053
+ E extends boolean = false
1054
+ >(
1055
+ path: TFieldName,
1056
+ op: "gt" | "gte" | "lt" | "lte" | "neq",
1057
+ value: V // only numbers?
1058
+ ): (
1059
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1060
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1061
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
1062
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1063
+ <
1064
+ TFieldValues extends FieldValues,
1065
+ TFieldName extends FieldPath<TFieldValues>,
1066
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1067
+ E extends boolean = false
1068
+ >(
1069
+ path: TFieldName,
1070
+ op: "startsWith" | "endsWith" | "contains" | "notContains" | "notStartsWith" | "notEndsWith",
1071
+ value: FieldPathValue<TFieldValues, TFieldName> extends string ? string : never
1072
+ ): (
1073
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1074
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1075
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
1076
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1077
+ <
1078
+ TFieldValues extends FieldValues,
1079
+ TFieldName extends FieldPath<TFieldValues>,
1080
+ const V extends readonly FieldPathValue<TFieldValues, TFieldName>[],
1081
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1082
+ E extends boolean = false
1083
+ >(
1084
+ path: TFieldName,
1085
+ op: "in" | "notIn",
1086
+ value: V
1087
+ ): (
1088
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1089
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1090
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
1091
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1092
+ <
1093
+ TFieldValues extends FieldValues,
1094
+ TFieldName extends FieldPath<TFieldValues>,
1095
+ V extends FieldPathValue<TFieldValues, TFieldName>,
1096
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1097
+ E extends boolean = false
1098
+ >(
1099
+ path: TFieldName,
1100
+ op:
1101
+ | "includes"
1102
+ | "notIncludes",
1103
+ value: GetArV<V>
1104
+ ): (
1105
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1106
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1107
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
1108
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1109
+ <
1110
+ TFieldValues extends FieldValues,
1111
+ TFieldName extends FieldPath<TFieldValues>,
1112
+ V extends FieldPathValue<TFieldValues, TFieldName>,
1113
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1114
+ E extends boolean = false
1115
+ >(
1116
+ path: TFieldName,
1117
+ op:
1118
+ | "includes-any"
1119
+ | "notIncludes-any"
1120
+ | "includes-all"
1121
+ | "notIncludes-all",
1122
+ value: readonly GetArV<V>[]
1123
+ ): (
1124
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1125
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1126
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
1127
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1128
+ <
1129
+ TFieldValues extends FieldValues,
1130
+ TFieldName extends FieldPath<TFieldValues>,
1131
+ V extends FieldPathValue<TFieldValues, TFieldName>,
1132
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1133
+ E extends boolean = false
1134
+ >(f: {
1135
+ path: TFieldName
1136
+ op: "eq"
1137
+ value: V
1138
+ }): (
1139
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1140
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1141
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
1142
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1143
+ }
1144
+
1145
+ export type FilterContinuationsWithSubpath = {
1146
+ <
1147
+ TFieldValues extends FieldValues,
1148
+ TFieldName extends FieldPath<TFieldValues>,
1149
+ TFieldValuesSub extends TFieldValues[TFieldName][number],
1150
+ TFieldNameSub extends FieldPath<TFieldValuesSub>,
1151
+ V extends FieldPathValue<TFieldValuesSub, TFieldNameSub>
1152
+ >(
1153
+ subPath: TFieldName,
1154
+ restPath: TFieldNameSub,
1155
+ value: V
1156
+ ): (
1157
+ current: Query<TFieldValues>
1158
+ ) => QueryWhere<TFieldValues>
1159
+ <
1160
+ TFieldValues extends FieldValues,
1161
+ TFieldName extends FieldPath<TFieldValues>,
1162
+ TFieldValuesSub extends TFieldValues[TFieldName][number],
1163
+ TFieldNameSub extends FieldPath<TFieldValuesSub>,
1164
+ V extends FieldPathValue<TFieldValuesSub, TFieldNameSub>
1165
+ >(
1166
+ subPath: TFieldName,
1167
+ restPath: TFieldNameSub,
1168
+ op: "gt" | "gte" | "lt" | "lte" | "neq",
1169
+ value: V // only numbers?
1170
+ ): (
1171
+ current: Query<TFieldValues>
1172
+ ) => QueryWhere<TFieldValues>
1173
+ <
1174
+ TFieldValues extends FieldValues,
1175
+ TFieldName extends FieldPath<TFieldValues>,
1176
+ TFieldValuesSub extends TFieldValues[TFieldName][number],
1177
+ TFieldNameSub extends FieldPath<TFieldValuesSub>
1178
+ >(
1179
+ subPath: TFieldName,
1180
+ restPath: TFieldNameSub,
1181
+ op: "startsWith" | "endsWith" | "contains" | "notContains" | "notStartsWith" | "notEndsWith",
1182
+ value: FieldPathValue<TFieldValuesSub, TFieldNameSub> extends string ? string : never
1183
+ ): (
1184
+ current: Query<TFieldValues>
1185
+ ) => QueryWhere<TFieldValues>
1186
+ <
1187
+ TFieldValues extends FieldValues,
1188
+ TFieldName extends FieldPath<TFieldValues>,
1189
+ TFieldValuesSub extends TFieldValues[TFieldName][number],
1190
+ TFieldNameSub extends FieldPath<TFieldValuesSub>,
1191
+ const V extends readonly FieldPathValue<TFieldValuesSub, TFieldNameSub>[]
1192
+ >(
1193
+ subPath: TFieldName,
1194
+ restPath: TFieldNameSub,
1195
+ op: "in" | "notIn",
1196
+ value: V
1197
+ ): (
1198
+ current: Query<TFieldValues>
1199
+ ) => QueryWhere<TFieldValues>
1200
+ <
1201
+ TFieldValues extends FieldValues,
1202
+ TFieldName extends FieldPath<TFieldValues>,
1203
+ TFieldValuesSub extends TFieldValues[TFieldName][number],
1204
+ TFieldNameSub extends FieldPath<TFieldValuesSub>,
1205
+ V extends FieldPathValue<TFieldValuesSub, TFieldNameSub>
1206
+ >(
1207
+ subPath: TFieldName,
1208
+ restPath: TFieldNameSub,
1209
+ op:
1210
+ | "includes"
1211
+ | "notIncludes",
1212
+ value: GetArV<V>
1213
+ ): (
1214
+ current: Query<TFieldValues>
1215
+ ) => QueryWhere<TFieldValues>
1216
+ <
1217
+ TFieldValues extends FieldValues,
1218
+ TFieldName extends FieldPath<TFieldValues>,
1219
+ TFieldValuesSub extends TFieldValues[TFieldName][number],
1220
+ TFieldNameSub extends FieldPath<TFieldValuesSub>,
1221
+ V extends FieldPathValue<TFieldValuesSub, TFieldNameSub>
1222
+ >(
1223
+ subPath: TFieldName,
1224
+ restPath: TFieldNameSub,
1225
+ op:
1226
+ | "includes-any"
1227
+ | "notIncludes-any"
1228
+ | "includes-all"
1229
+ | "notIncludes-all",
1230
+ value: readonly GetArV<V>[]
1231
+ ): (
1232
+ current: Query<TFieldValues>
1233
+ ) => QueryWhere<TFieldValues>
1234
+ <
1235
+ TFieldValues extends FieldValues,
1236
+ TFieldName extends FieldPath<TFieldValues>,
1237
+ TFieldValuesSub extends TFieldValues[TFieldName][number],
1238
+ TFieldNameSub extends FieldPath<TFieldValuesSub>,
1239
+ V extends FieldPathValue<TFieldValuesSub, TFieldNameSub>
1240
+ >(f: {
1241
+ subPath: TFieldName
1242
+ restPath: TFieldNameSub
1243
+ op: "eq"
1244
+ value: V
1245
+ }): (
1246
+ current: Query<TFieldValues>
1247
+ ) => QueryWhere<TFieldValues>
1248
+ }
1249
+
1250
+ /* dprint-ignore-start */
1251
+ export type RefineWithLiteral<
1252
+ TFieldValues extends FieldValues,
1253
+ TFieldName extends FieldPath<TFieldValues>,
1254
+ V,
1255
+ Exclde extends boolean = false
1256
+ > =
1257
+ // refine only if the value is a primitive
1258
+ [V] extends [string | number | boolean | null | bigint]
1259
+ ? RefineFieldPathValue<TFieldValues, TFieldName, V, Exclde>
1260
+ : TFieldValues
1261
+ /* dprint-ignore-end */
1262
+
1263
+ export type FilteringRefinements<IsCurrentInitial extends boolean = false> = {
1264
+ <
1265
+ TFieldValues extends FieldValues,
1266
+ const TFieldName extends FieldPath<TFieldValues>,
1267
+ const V extends FieldPathValue<TFieldValues, TFieldName>,
1268
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1269
+ E extends boolean = false
1270
+ >(
1271
+ path: TFieldName,
1272
+ value: V
1273
+ ): (
1274
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1275
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1276
+ ) => QueryWhere<
1277
+ TFieldValues,
1278
+ // @ts-expect-error it's TS
1279
+ RefineWithLiteral<TFieldValuesRefined, TFieldName, V>,
1280
+ TFieldName extends "_tag" ? true : false // consider only _tag as an exclusive field and only in the positive case
1281
+ >
1282
+ <
1283
+ TFieldValues extends FieldValues,
1284
+ const TFieldName extends FieldPath<TFieldValues>,
1285
+ const V extends FieldPathValue<TFieldValues, TFieldName>,
1286
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1287
+ E extends boolean = false
1288
+ >(
1289
+ path: TFieldName,
1290
+ op: "neq",
1291
+ value: V
1292
+ ): (
1293
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1294
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1295
+ ) => QueryWhere<
1296
+ TFieldValues,
1297
+ // @ts-expect-error it's TS
1298
+ RefineWithLiteral<TFieldValuesRefined, TFieldName, V, true>,
1299
+ E
1300
+ >
1301
+ <
1302
+ TFieldValues extends FieldValues,
1303
+ TFieldName extends FieldPath<TFieldValues>,
1304
+ const V extends readonly FieldPathValue<TFieldValues, TFieldName>[],
1305
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1306
+ E extends boolean = false
1307
+ >(
1308
+ path: TFieldName,
1309
+ op: "in",
1310
+ value: V
1311
+ ): (
1312
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
1313
+ : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1314
+ ) => QueryWhere<
1315
+ TFieldValues,
1316
+ // @ts-expect-error it's TS
1317
+ RefineWithLiteral<TFieldValuesRefined, TFieldName, NonNullable<V[number]>>,
1318
+ E
1319
+ >
1320
+ }
1321
+
1322
+ export type NestedQueriesFixedRefinement<IsCurrentInitial extends boolean = false> = {
1323
+ <
1324
+ TFieldValues extends FieldValues,
1325
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1326
+ E extends boolean = false,
1327
+ E2 extends boolean = false
1328
+ >(
1329
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>
1330
+ ): (
1331
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1332
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>
1333
+
1334
+ <
1335
+ TFieldValues extends FieldValues,
1336
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1337
+ E extends boolean = false,
1338
+ E2 extends boolean = false,
1339
+ E3 extends boolean = false
1340
+ >(
1341
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1342
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>
1343
+ ): (
1344
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1345
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>
1346
+
1347
+ <
1348
+ TFieldValues extends FieldValues,
1349
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1350
+ E extends boolean = false,
1351
+ E2 extends boolean = false,
1352
+ E3 extends boolean = false,
1353
+ E4 extends boolean = false
1354
+ >(
1355
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1356
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1357
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>
1358
+ ): (
1359
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1360
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>
1361
+
1362
+ <
1363
+ TFieldValues extends FieldValues,
1364
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1365
+ E extends boolean = false,
1366
+ E2 extends boolean = false,
1367
+ E3 extends boolean = false,
1368
+ E4 extends boolean = false,
1369
+ E5 extends boolean = false
1370
+ >(
1371
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1372
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1373
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1374
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>
1375
+ ): (
1376
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1377
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>
1378
+
1379
+ <
1380
+ TFieldValues extends FieldValues,
1381
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1382
+ E extends boolean = false,
1383
+ E2 extends boolean = false,
1384
+ E3 extends boolean = false,
1385
+ E4 extends boolean = false,
1386
+ E5 extends boolean = false,
1387
+ E6 extends boolean = false
1388
+ >(
1389
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1390
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1391
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1392
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1393
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>
1394
+ ): (
1395
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1396
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>
1397
+
1398
+ <
1399
+ TFieldValues extends FieldValues,
1400
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1401
+ E extends boolean = false,
1402
+ E2 extends boolean = false,
1403
+ E3 extends boolean = false,
1404
+ E4 extends boolean = false,
1405
+ E5 extends boolean = false,
1406
+ E6 extends boolean = false,
1407
+ E7 extends boolean = false
1408
+ >(
1409
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1410
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1411
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1412
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1413
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1414
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>
1415
+ ): (
1416
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1417
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>
1418
+
1419
+ <
1420
+ TFieldValues extends FieldValues,
1421
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1422
+ E extends boolean = false,
1423
+ E2 extends boolean = false,
1424
+ E3 extends boolean = false,
1425
+ E4 extends boolean = false,
1426
+ E5 extends boolean = false,
1427
+ E6 extends boolean = false,
1428
+ E7 extends boolean = false,
1429
+ E8 extends boolean = false
1430
+ >(
1431
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1432
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1433
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1434
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1435
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1436
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>,
1437
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E7>) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>
1438
+ ): (
1439
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1440
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>
1441
+
1442
+ <
1443
+ TFieldValues extends FieldValues,
1444
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1445
+ E extends boolean = false,
1446
+ E2 extends boolean = false,
1447
+ E3 extends boolean = false,
1448
+ E4 extends boolean = false,
1449
+ E5 extends boolean = false,
1450
+ E6 extends boolean = false,
1451
+ E7 extends boolean = false,
1452
+ E8 extends boolean = false,
1453
+ E9 extends boolean = false
1454
+ >(
1455
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1456
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1457
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1458
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1459
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1460
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>,
1461
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E7>) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>,
1462
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E8>) => QueryWhere<TFieldValues, TFieldValuesRefined, E9>
1463
+ ): (
1464
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1465
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E9>
1466
+
1467
+ <
1468
+ TFieldValues extends FieldValues,
1469
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1470
+ E extends boolean = false,
1471
+ E2 extends boolean = false,
1472
+ E3 extends boolean = false,
1473
+ E4 extends boolean = false,
1474
+ E5 extends boolean = false,
1475
+ E6 extends boolean = false,
1476
+ E7 extends boolean = false,
1477
+ E8 extends boolean = false,
1478
+ E9 extends boolean = false,
1479
+ E10 extends boolean = false
1480
+ >(
1481
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1482
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1483
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1484
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1485
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1486
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>,
1487
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E7>) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>,
1488
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E8>) => QueryWhere<TFieldValues, TFieldValuesRefined, E9>,
1489
+ fj: (
1490
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E9>
1491
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E10>
1492
+ ): (
1493
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1494
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E10>
1495
+
1496
+ <
1497
+ TFieldValues extends FieldValues,
1498
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1499
+ E extends boolean = false,
1500
+ E2 extends boolean = false,
1501
+ E3 extends boolean = false,
1502
+ E4 extends boolean = false,
1503
+ E5 extends boolean = false,
1504
+ E6 extends boolean = false,
1505
+ E7 extends boolean = false,
1506
+ E8 extends boolean = false,
1507
+ E9 extends boolean = false,
1508
+ E10 extends boolean = false,
1509
+ E11 extends boolean = false
1510
+ >(
1511
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1512
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1513
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1514
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1515
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1516
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>,
1517
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E7>) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>,
1518
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E8>) => QueryWhere<TFieldValues, TFieldValuesRefined, E9>,
1519
+ fj: (
1520
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E9>
1521
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E10>,
1522
+ fk: (
1523
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E10>
1524
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E11>
1525
+ ): (
1526
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1527
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E11>
1528
+
1529
+ <
1530
+ TFieldValues extends FieldValues,
1531
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1532
+ E extends boolean = false,
1533
+ E2 extends boolean = false,
1534
+ E3 extends boolean = false,
1535
+ E4 extends boolean = false,
1536
+ E5 extends boolean = false,
1537
+ E6 extends boolean = false,
1538
+ E7 extends boolean = false,
1539
+ E8 extends boolean = false,
1540
+ E9 extends boolean = false,
1541
+ E10 extends boolean = false,
1542
+ E11 extends boolean = false,
1543
+ E12 extends boolean = false
1544
+ >(
1545
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1546
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1547
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1548
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1549
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1550
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>,
1551
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E7>) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>,
1552
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E8>) => QueryWhere<TFieldValues, TFieldValuesRefined, E9>,
1553
+ fj: (
1554
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E9>
1555
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E10>,
1556
+ fk: (
1557
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E10>
1558
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E11>,
1559
+ fl: (
1560
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E11>
1561
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E12>
1562
+ ): (
1563
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1564
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E12>
1565
+
1566
+ <
1567
+ TFieldValues extends FieldValues,
1568
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1569
+ E extends boolean = false,
1570
+ E2 extends boolean = false,
1571
+ E3 extends boolean = false,
1572
+ E4 extends boolean = false,
1573
+ E5 extends boolean = false,
1574
+ E6 extends boolean = false,
1575
+ E7 extends boolean = false,
1576
+ E8 extends boolean = false,
1577
+ E9 extends boolean = false,
1578
+ E10 extends boolean = false,
1579
+ E11 extends boolean = false,
1580
+ E12 extends boolean = false,
1581
+ E13 extends boolean = false
1582
+ >(
1583
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1584
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1585
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1586
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1587
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1588
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>,
1589
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E7>) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>,
1590
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E8>) => QueryWhere<TFieldValues, TFieldValuesRefined, E9>,
1591
+ fj: (
1592
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E9>
1593
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E10>,
1594
+ fk: (
1595
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E10>
1596
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E11>,
1597
+ fl: (
1598
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E11>
1599
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E12>,
1600
+ fm: (
1601
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E12>
1602
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E13>
1603
+ ): (
1604
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1605
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E13>
1606
+
1607
+ <
1608
+ TFieldValues extends FieldValues,
1609
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1610
+ E extends boolean = false,
1611
+ E2 extends boolean = false,
1612
+ E3 extends boolean = false,
1613
+ E4 extends boolean = false,
1614
+ E5 extends boolean = false,
1615
+ E6 extends boolean = false,
1616
+ E7 extends boolean = false,
1617
+ E8 extends boolean = false,
1618
+ E9 extends boolean = false,
1619
+ E10 extends boolean = false,
1620
+ E11 extends boolean = false,
1621
+ E12 extends boolean = false,
1622
+ E13 extends boolean = false,
1623
+ E14 extends boolean = false
1624
+ >(
1625
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined, E2>,
1626
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E2>) => QueryWhere<TFieldValues, TFieldValuesRefined, E3>,
1627
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E3>) => QueryWhere<TFieldValues, TFieldValuesRefined, E4>,
1628
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E4>) => QueryWhere<TFieldValues, TFieldValuesRefined, E5>,
1629
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E5>) => QueryWhere<TFieldValues, TFieldValuesRefined, E6>,
1630
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E6>) => QueryWhere<TFieldValues, TFieldValuesRefined, E7>,
1631
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E7>) => QueryWhere<TFieldValues, TFieldValuesRefined, E8>,
1632
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined, E8>) => QueryWhere<TFieldValues, TFieldValuesRefined, E9>,
1633
+ fj: (
1634
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E9>
1635
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E10>,
1636
+ fk: (
1637
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E10>
1638
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E11>,
1639
+ fl: (
1640
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E11>
1641
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E12>,
1642
+ fm: (
1643
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E12>
1644
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E13>,
1645
+ fn: (
1646
+ query: QueryWhere<TFieldValues, TFieldValuesRefined, E13>
1647
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E14>
1648
+ ): (
1649
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined, E>
1650
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined, E14>
1651
+ }
1652
+
1653
+ export type NestedQueriesFreeIntersectionRefinement = {
1654
+ <
1655
+ TFieldValues extends FieldValues,
1656
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1657
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1658
+ E extends boolean = false,
1659
+ E2 extends boolean = false
1660
+ >(
1661
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1662
+ ): (
1663
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1664
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined2, E2>
1665
+
1666
+ <
1667
+ TFieldValues extends FieldValues,
1668
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1669
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1670
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1671
+ E extends boolean = false,
1672
+ E2 extends boolean = false,
1673
+ E3 extends boolean = false
1674
+ >(
1675
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1676
+ fc: (
1677
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1678
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1679
+ ): (
1680
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1681
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined3, E3>
1682
+
1683
+ <
1684
+ TFieldValues extends FieldValues,
1685
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1686
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1687
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1688
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1689
+ E extends boolean = false,
1690
+ E2 extends boolean = false,
1691
+ E3 extends boolean = false,
1692
+ E4 extends boolean = false
1693
+ >(
1694
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1695
+ fc: (
1696
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1697
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1698
+ fd: (
1699
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1700
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1701
+ ): (
1702
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1703
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined4, E4>
1704
+
1705
+ <
1706
+ TFieldValues extends FieldValues,
1707
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1708
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1709
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1710
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1711
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
1712
+ E extends boolean = false,
1713
+ E2 extends boolean = false,
1714
+ E3 extends boolean = false,
1715
+ E4 extends boolean = false,
1716
+ E5 extends boolean = false
1717
+ >(
1718
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1719
+ fc: (
1720
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1721
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1722
+ fd: (
1723
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1724
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
1725
+ fe: (
1726
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1727
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
1728
+ ): (
1729
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1730
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined5, E5>
1731
+
1732
+ <
1733
+ TFieldValues extends FieldValues,
1734
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1735
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1736
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1737
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1738
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
1739
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
1740
+ E extends boolean = false,
1741
+ E2 extends boolean = false,
1742
+ E3 extends boolean = false,
1743
+ E4 extends boolean = false,
1744
+ E5 extends boolean = false,
1745
+ E6 extends boolean = false
1746
+ >(
1747
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1748
+ fc: (
1749
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1750
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1751
+ fd: (
1752
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1753
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
1754
+ fe: (
1755
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1756
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
1757
+ ff: (
1758
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
1759
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
1760
+ ): (
1761
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1762
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined6, E6>
1763
+
1764
+ <
1765
+ TFieldValues extends FieldValues,
1766
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1767
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1768
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1769
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1770
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
1771
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
1772
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
1773
+ E extends boolean = false,
1774
+ E2 extends boolean = false,
1775
+ E3 extends boolean = false,
1776
+ E4 extends boolean = false,
1777
+ E5 extends boolean = false,
1778
+ E6 extends boolean = false,
1779
+ E7 extends boolean = false
1780
+ >(
1781
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1782
+ fc: (
1783
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1784
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1785
+ fd: (
1786
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1787
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
1788
+ fe: (
1789
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1790
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
1791
+ ff: (
1792
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
1793
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
1794
+ fg: (
1795
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
1796
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
1797
+ ): (
1798
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1799
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined7, E7>
1800
+ <
1801
+ TFieldValues extends FieldValues,
1802
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1803
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1804
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1805
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1806
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
1807
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
1808
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
1809
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
1810
+ E extends boolean = false,
1811
+ E2 extends boolean = false,
1812
+ E3 extends boolean = false,
1813
+ E4 extends boolean = false,
1814
+ E5 extends boolean = false,
1815
+ E6 extends boolean = false,
1816
+ E7 extends boolean = false,
1817
+ E8 extends boolean = false
1818
+ >(
1819
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1820
+ fc: (
1821
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1822
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1823
+ fd: (
1824
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1825
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
1826
+ fe: (
1827
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1828
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
1829
+ ff: (
1830
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
1831
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
1832
+ fg: (
1833
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
1834
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
1835
+ fh: (
1836
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
1837
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
1838
+ ): (
1839
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1840
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined8, E8>
1841
+
1842
+ <
1843
+ TFieldValues extends FieldValues,
1844
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1845
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1846
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1847
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1848
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
1849
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
1850
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
1851
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
1852
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
1853
+ E extends boolean = false,
1854
+ E2 extends boolean = false,
1855
+ E3 extends boolean = false,
1856
+ E4 extends boolean = false,
1857
+ E5 extends boolean = false,
1858
+ E6 extends boolean = false,
1859
+ E7 extends boolean = false,
1860
+ E8 extends boolean = false,
1861
+ E9 extends boolean = false
1862
+ >(
1863
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1864
+ fc: (
1865
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1866
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1867
+ fd: (
1868
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1869
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
1870
+ fe: (
1871
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1872
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
1873
+ ff: (
1874
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
1875
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
1876
+ fg: (
1877
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
1878
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
1879
+ fh: (
1880
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
1881
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
1882
+ fi: (
1883
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
1884
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
1885
+ ): (
1886
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1887
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined9, E9>
1888
+
1889
+ <
1890
+ TFieldValues extends FieldValues,
1891
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1892
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1893
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1894
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1895
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
1896
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
1897
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
1898
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
1899
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
1900
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
1901
+ E extends boolean = false,
1902
+ E2 extends boolean = false,
1903
+ E3 extends boolean = false,
1904
+ E4 extends boolean = false,
1905
+ E5 extends boolean = false,
1906
+ E6 extends boolean = false,
1907
+ E7 extends boolean = false,
1908
+ E8 extends boolean = false,
1909
+ E9 extends boolean = false,
1910
+ E10 extends boolean = false
1911
+ >(
1912
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1913
+ fc: (
1914
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1915
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1916
+ fd: (
1917
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1918
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
1919
+ fe: (
1920
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1921
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
1922
+ ff: (
1923
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
1924
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
1925
+ fg: (
1926
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
1927
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
1928
+ fh: (
1929
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
1930
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
1931
+ fi: (
1932
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
1933
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
1934
+ fj: (
1935
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
1936
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
1937
+ ): (
1938
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1939
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined10, E10>
1940
+
1941
+ <
1942
+ TFieldValues extends FieldValues,
1943
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
1944
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
1945
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
1946
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
1947
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
1948
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
1949
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
1950
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
1951
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
1952
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
1953
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
1954
+ E extends boolean = false,
1955
+ E2 extends boolean = false,
1956
+ E3 extends boolean = false,
1957
+ E4 extends boolean = false,
1958
+ E5 extends boolean = false,
1959
+ E6 extends boolean = false,
1960
+ E7 extends boolean = false,
1961
+ E8 extends boolean = false,
1962
+ E9 extends boolean = false,
1963
+ E10 extends boolean = false,
1964
+ E11 extends boolean = false
1965
+ >(
1966
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
1967
+ fc: (
1968
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
1969
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
1970
+ fd: (
1971
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
1972
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
1973
+ fe: (
1974
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
1975
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
1976
+ ff: (
1977
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
1978
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
1979
+ fg: (
1980
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
1981
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
1982
+ fh: (
1983
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
1984
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
1985
+ fi: (
1986
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
1987
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
1988
+ fj: (
1989
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
1990
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
1991
+ fk: (
1992
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
1993
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
1994
+ ): (
1995
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
1996
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined11, E11>
1997
+
1998
+ <
1999
+ TFieldValues extends FieldValues,
2000
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2001
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2002
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2003
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2004
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2005
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2006
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2007
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2008
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2009
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2010
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
2011
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
2012
+ E extends boolean = false,
2013
+ E2 extends boolean = false,
2014
+ E3 extends boolean = false,
2015
+ E4 extends boolean = false,
2016
+ E5 extends boolean = false,
2017
+ E6 extends boolean = false,
2018
+ E7 extends boolean = false,
2019
+ E8 extends boolean = false,
2020
+ E9 extends boolean = false,
2021
+ E10 extends boolean = false,
2022
+ E11 extends boolean = false,
2023
+ E12 extends boolean = false
2024
+ >(
2025
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
2026
+ fc: (
2027
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2028
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2029
+ fd: (
2030
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2031
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2032
+ fe: (
2033
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2034
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2035
+ ff: (
2036
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2037
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2038
+ fg: (
2039
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2040
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2041
+ fh: (
2042
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2043
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2044
+ fi: (
2045
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2046
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2047
+ fj: (
2048
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2049
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
2050
+ fk: (
2051
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2052
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>,
2053
+ fl: (
2054
+ query: QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
2055
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined12, E12>
2056
+ ): (
2057
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2058
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined12, E12>
2059
+
2060
+ <
2061
+ TFieldValues extends FieldValues,
2062
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2063
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2064
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2065
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2066
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2067
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2068
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2069
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2070
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2071
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2072
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
2073
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
2074
+ TFieldValuesRefined13 extends TFieldValues = TFieldValues,
2075
+ E extends boolean = false,
2076
+ E2 extends boolean = false,
2077
+ E3 extends boolean = false,
2078
+ E4 extends boolean = false,
2079
+ E5 extends boolean = false,
2080
+ E6 extends boolean = false,
2081
+ E7 extends boolean = false,
2082
+ E8 extends boolean = false,
2083
+ E9 extends boolean = false,
2084
+ E10 extends boolean = false,
2085
+ E11 extends boolean = false,
2086
+ E12 extends boolean = false,
2087
+ E13 extends boolean = false
2088
+ >(
2089
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
2090
+ fc: (
2091
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2092
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2093
+ fd: (
2094
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2095
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2096
+ fe: (
2097
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2098
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2099
+ ff: (
2100
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2101
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2102
+ fg: (
2103
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2104
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2105
+ fh: (
2106
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2107
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2108
+ fi: (
2109
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2110
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2111
+ fj: (
2112
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2113
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
2114
+ fk: (
2115
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2116
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>,
2117
+ fl: (
2118
+ query: QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
2119
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined12, E12>,
2120
+ fm: (
2121
+ query: QueryWhere<TFieldValues, TFieldValuesRefined12, E12>
2122
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined13, E13>
2123
+ ): (
2124
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2125
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined13, E13>
2126
+
2127
+ <
2128
+ TFieldValues extends FieldValues,
2129
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2130
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2131
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2132
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2133
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2134
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2135
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2136
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2137
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2138
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2139
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
2140
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
2141
+ TFieldValuesRefined13 extends TFieldValues = TFieldValues,
2142
+ TFieldValuesRefined14 extends TFieldValues = TFieldValues,
2143
+ E extends boolean = false,
2144
+ E2 extends boolean = false,
2145
+ E3 extends boolean = false,
2146
+ E4 extends boolean = false,
2147
+ E5 extends boolean = false,
2148
+ E6 extends boolean = false,
2149
+ E7 extends boolean = false,
2150
+ E8 extends boolean = false,
2151
+ E9 extends boolean = false,
2152
+ E10 extends boolean = false,
2153
+ E11 extends boolean = false,
2154
+ E12 extends boolean = false,
2155
+ E13 extends boolean = false,
2156
+ E14 extends boolean = false
2157
+ >(
2158
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E>,
2159
+ fc: (
2160
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2161
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2162
+ fd: (
2163
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2164
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2165
+ fe: (
2166
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2167
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2168
+ ff: (
2169
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2170
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2171
+ fg: (
2172
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2173
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2174
+ fh: (
2175
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2176
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2177
+ fi: (
2178
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2179
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2180
+ fj: (
2181
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2182
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
2183
+ fk: (
2184
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2185
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>,
2186
+ fl: (
2187
+ query: QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
2188
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined12, E12>,
2189
+ fm: (
2190
+ query: QueryWhere<TFieldValues, TFieldValuesRefined12, E12>
2191
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined13, E13>,
2192
+ fn: (
2193
+ query: QueryWhere<TFieldValues, TFieldValuesRefined13, E13>
2194
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined14, E14>
2195
+ ): (
2196
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2197
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined14, E14>
2198
+ }
2199
+
2200
+ // to be safe, or forces the output to be exclusive because you can always or _tag filters
2201
+ export type NestedQueriesFreeDisjointRefinement = {
2202
+ <
2203
+ TFieldValues extends FieldValues,
2204
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2205
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2206
+ E extends boolean = false,
2207
+ E2 extends boolean = false
2208
+ >(
2209
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2210
+ ): (
2211
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2212
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined2>
2213
+
2214
+ <
2215
+ TFieldValues extends FieldValues,
2216
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2217
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2218
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2219
+ E extends boolean = false,
2220
+ E2 extends boolean = false,
2221
+ E3 extends boolean = false
2222
+ >(
2223
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2224
+ fc: (
2225
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2226
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2227
+ ): (
2228
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2229
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined3>
2230
+
2231
+ <
2232
+ TFieldValues extends FieldValues,
2233
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2234
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2235
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2236
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2237
+ E extends boolean = false,
2238
+ E2 extends boolean = false,
2239
+ E3 extends boolean = false,
2240
+ E4 extends boolean = false
2241
+ >(
2242
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2243
+ fc: (
2244
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2245
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2246
+ fd: (
2247
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2248
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2249
+ ): (
2250
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2251
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined4>
2252
+
2253
+ <
2254
+ TFieldValues extends FieldValues,
2255
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2256
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2257
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2258
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2259
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2260
+ E extends boolean = false,
2261
+ E2 extends boolean = false,
2262
+ E3 extends boolean = false,
2263
+ E4 extends boolean = false,
2264
+ E5 extends boolean = false
2265
+ >(
2266
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2267
+ fc: (
2268
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2269
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2270
+ fd: (
2271
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2272
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2273
+ fe: (
2274
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2275
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2276
+ ): (
2277
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2278
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined5>
2279
+
2280
+ <
2281
+ TFieldValues extends FieldValues,
2282
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2283
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2284
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2285
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2286
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2287
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2288
+ E extends boolean = false,
2289
+ E2 extends boolean = false,
2290
+ E3 extends boolean = false,
2291
+ E4 extends boolean = false,
2292
+ E5 extends boolean = false,
2293
+ E6 extends boolean = false
2294
+ >(
2295
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2296
+ fc: (
2297
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2298
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2299
+ fd: (
2300
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2301
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2302
+ fe: (
2303
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2304
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2305
+ ff: (
2306
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2307
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2308
+ ): (
2309
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2310
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined6>
2311
+
2312
+ <
2313
+ TFieldValues extends FieldValues,
2314
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2315
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2316
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2317
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2318
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2319
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2320
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2321
+ E extends boolean = false,
2322
+ E2 extends boolean = false,
2323
+ E3 extends boolean = false,
2324
+ E4 extends boolean = false,
2325
+ E5 extends boolean = false,
2326
+ E6 extends boolean = false,
2327
+ E7 extends boolean = false
2328
+ >(
2329
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2330
+ fc: (
2331
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2332
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2333
+ fd: (
2334
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2335
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2336
+ fe: (
2337
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2338
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2339
+ ff: (
2340
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2341
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2342
+ fg: (
2343
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2344
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2345
+ ): (
2346
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2347
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined7>
2348
+
2349
+ <
2350
+ TFieldValues extends FieldValues,
2351
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2352
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2353
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2354
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2355
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2356
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2357
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2358
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2359
+ E extends boolean = false,
2360
+ E2 extends boolean = false,
2361
+ E3 extends boolean = false,
2362
+ E4 extends boolean = false,
2363
+ E5 extends boolean = false,
2364
+ E6 extends boolean = false,
2365
+ E7 extends boolean = false,
2366
+ E8 extends boolean = false
2367
+ >(
2368
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2369
+ fc: (
2370
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2371
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2372
+ fd: (
2373
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2374
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2375
+ fe: (
2376
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2377
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2378
+ ff: (
2379
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2380
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2381
+ fg: (
2382
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2383
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2384
+ fh: (
2385
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2386
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2387
+ ): (
2388
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2389
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined2>
2390
+
2391
+ <
2392
+ TFieldValues extends FieldValues,
2393
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2394
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2395
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2396
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2397
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2398
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2399
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2400
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2401
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2402
+ E extends boolean = false,
2403
+ E2 extends boolean = false,
2404
+ E3 extends boolean = false,
2405
+ E4 extends boolean = false,
2406
+ E5 extends boolean = false,
2407
+ E6 extends boolean = false,
2408
+ E7 extends boolean = false,
2409
+ E8 extends boolean = false,
2410
+ E9 extends boolean = false
2411
+ >(
2412
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2413
+ fc: (
2414
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2415
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2416
+ fd: (
2417
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2418
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2419
+ fe: (
2420
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2421
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2422
+ ff: (
2423
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2424
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2425
+ fg: (
2426
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2427
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2428
+ fh: (
2429
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2430
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2431
+ fi: (
2432
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2433
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2434
+ ): (
2435
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2436
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined9>
2437
+
2438
+ <
2439
+ TFieldValues extends FieldValues,
2440
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2441
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2442
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2443
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2444
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2445
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2446
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2447
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2448
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2449
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2450
+ E extends boolean = false,
2451
+ E2 extends boolean = false,
2452
+ E3 extends boolean = false,
2453
+ E4 extends boolean = false,
2454
+ E5 extends boolean = false,
2455
+ E6 extends boolean = false,
2456
+ E7 extends boolean = false,
2457
+ E8 extends boolean = false,
2458
+ E9 extends boolean = false,
2459
+ E10 extends boolean = false
2460
+ >(
2461
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2462
+ fc: (
2463
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2464
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2465
+ fd: (
2466
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2467
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2468
+ fe: (
2469
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2470
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2471
+ ff: (
2472
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2473
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2474
+ fg: (
2475
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2476
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2477
+ fh: (
2478
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2479
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2480
+ fi: (
2481
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2482
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2483
+ fj: (
2484
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2485
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2486
+ ): (
2487
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2488
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined10>
2489
+
2490
+ <
2491
+ TFieldValues extends FieldValues,
2492
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2493
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2494
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2495
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2496
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2497
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2498
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2499
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2500
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2501
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2502
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
2503
+ E extends boolean = false,
2504
+ E2 extends boolean = false,
2505
+ E3 extends boolean = false,
2506
+ E4 extends boolean = false,
2507
+ E5 extends boolean = false,
2508
+ E6 extends boolean = false,
2509
+ E7 extends boolean = false,
2510
+ E8 extends boolean = false,
2511
+ E9 extends boolean = false,
2512
+ E10 extends boolean = false,
2513
+ E11 extends boolean = false
2514
+ >(
2515
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2516
+ fc: (
2517
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2518
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2519
+ fd: (
2520
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2521
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2522
+ fe: (
2523
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2524
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2525
+ ff: (
2526
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2527
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2528
+ fg: (
2529
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2530
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2531
+ fh: (
2532
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2533
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2534
+ fi: (
2535
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2536
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2537
+ fj: (
2538
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2539
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
2540
+ fk: (
2541
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2542
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
2543
+ ): (
2544
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2545
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined11>
2546
+
2547
+ <
2548
+ TFieldValues extends FieldValues,
2549
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2550
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2551
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2552
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2553
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2554
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2555
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2556
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2557
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2558
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2559
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
2560
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
2561
+ E extends boolean = false,
2562
+ E2 extends boolean = false,
2563
+ E3 extends boolean = false,
2564
+ E4 extends boolean = false,
2565
+ E5 extends boolean = false,
2566
+ E6 extends boolean = false,
2567
+ E7 extends boolean = false,
2568
+ E8 extends boolean = false,
2569
+ E9 extends boolean = false,
2570
+ E10 extends boolean = false,
2571
+ E11 extends boolean = false,
2572
+ E12 extends boolean = false
2573
+ >(
2574
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2575
+ fc: (
2576
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2577
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2578
+ fd: (
2579
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2580
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2581
+ fe: (
2582
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2583
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2584
+ ff: (
2585
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2586
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2587
+ fg: (
2588
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2589
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2590
+ fh: (
2591
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2592
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2593
+ fi: (
2594
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2595
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2596
+ fj: (
2597
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2598
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
2599
+ fk: (
2600
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2601
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>,
2602
+ fl: (
2603
+ query: QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
2604
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined12, E12>
2605
+ ): (
2606
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2607
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined12>
2608
+
2609
+ <
2610
+ TFieldValues extends FieldValues,
2611
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2612
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2613
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2614
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2615
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2616
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2617
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2618
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2619
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2620
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2621
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
2622
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
2623
+ TFieldValuesRefined13 extends TFieldValues = TFieldValues,
2624
+ E extends boolean = false,
2625
+ E2 extends boolean = false,
2626
+ E3 extends boolean = false,
2627
+ E4 extends boolean = false,
2628
+ E5 extends boolean = false,
2629
+ E6 extends boolean = false,
2630
+ E7 extends boolean = false,
2631
+ E8 extends boolean = false,
2632
+ E9 extends boolean = false,
2633
+ E10 extends boolean = false,
2634
+ E11 extends boolean = false,
2635
+ E12 extends boolean = false,
2636
+ E13 extends boolean = false
2637
+ >(
2638
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2639
+ fc: (
2640
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2641
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2642
+ fd: (
2643
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2644
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2645
+ fe: (
2646
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2647
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2648
+ ff: (
2649
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2650
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2651
+ fg: (
2652
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2653
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2654
+ fh: (
2655
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2656
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2657
+ fi: (
2658
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2659
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2660
+ fj: (
2661
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2662
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
2663
+ fk: (
2664
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2665
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>,
2666
+ fl: (
2667
+ query: QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
2668
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined12, E12>,
2669
+ fm: (
2670
+ query: QueryWhere<TFieldValues, TFieldValuesRefined12, E12>
2671
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined13, E13>
2672
+ ): (
2673
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2674
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined13>
2675
+
2676
+ <
2677
+ TFieldValues extends FieldValues,
2678
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
2679
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
2680
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
2681
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
2682
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
2683
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
2684
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
2685
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
2686
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
2687
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
2688
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
2689
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
2690
+ TFieldValuesRefined13 extends TFieldValues = TFieldValues,
2691
+ TFieldValuesRefined14 extends TFieldValues = TFieldValues,
2692
+ E extends boolean = false,
2693
+ E2 extends boolean = false,
2694
+ E3 extends boolean = false,
2695
+ E4 extends boolean = false,
2696
+ E5 extends boolean = false,
2697
+ E6 extends boolean = false,
2698
+ E7 extends boolean = false,
2699
+ E8 extends boolean = false,
2700
+ E9 extends boolean = false,
2701
+ E10 extends boolean = false,
2702
+ E11 extends boolean = false,
2703
+ E12 extends boolean = false,
2704
+ E13 extends boolean = false,
2705
+ E14 extends boolean = false
2706
+ >(
2707
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2, E2>,
2708
+ fc: (
2709
+ query: QueryWhere<TFieldValues, TFieldValuesRefined2, E2>
2710
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined3, E3>,
2711
+ fd: (
2712
+ query: QueryWhere<TFieldValues, TFieldValuesRefined3, E3>
2713
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined4, E4>,
2714
+ fe: (
2715
+ query: QueryWhere<TFieldValues, TFieldValuesRefined4, E4>
2716
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined5, E5>,
2717
+ ff: (
2718
+ query: QueryWhere<TFieldValues, TFieldValuesRefined5, E5>
2719
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined6, E6>,
2720
+ fg: (
2721
+ query: QueryWhere<TFieldValues, TFieldValuesRefined6, E6>
2722
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined7, E7>,
2723
+ fh: (
2724
+ query: QueryWhere<TFieldValues, TFieldValuesRefined7, E7>
2725
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined8, E8>,
2726
+ fi: (
2727
+ query: QueryWhere<TFieldValues, TFieldValuesRefined8, E8>
2728
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined9, E9>,
2729
+ fj: (
2730
+ query: QueryWhere<TFieldValues, TFieldValuesRefined9, E9>
2731
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined10, E10>,
2732
+ fk: (
2733
+ query: QueryWhere<TFieldValues, TFieldValuesRefined10, E10>
2734
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined11, E11>,
2735
+ fl: (
2736
+ query: QueryWhere<TFieldValues, TFieldValuesRefined11, E11>
2737
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined12, E12>,
2738
+ fm: (
2739
+ query: QueryWhere<TFieldValues, TFieldValuesRefined12, E12>
2740
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined13, E13>,
2741
+ fn: (
2742
+ query: QueryWhere<TFieldValues, TFieldValuesRefined13, E13>
2743
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined14, E14>
2744
+ ): (
2745
+ current: QueryWhere<TFieldValues, TFieldValuesRefined, E>
2746
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined14>
2747
+ }
2748
+
2749
+ export type FilterWhere =
2750
+ & NestedQueriesFixedRefinement<true>
2751
+ & FilteringRefinements<true>
2752
+ & FilterContinuations<true>
2753
+
2754
+ export type FilterContinuationAnd =
2755
+ & NestedQueriesFreeIntersectionRefinement
2756
+ & FilteringRefinements
2757
+ & FilterContinuations
2758
+
2759
+ export type FilterContinuationOr =
2760
+ & NestedQueriesFreeDisjointRefinement
2761
+ & FilterContinuations
2762
+
2763
+ // it does not support refinements by choice (for now)
2764
+ export type WhereEveryOrSome =
2765
+ & {
2766
+ <
2767
+ TFieldValues extends FieldValues,
2768
+ TFieldName extends FieldPath<TFieldValues>
2769
+ >(
2770
+ subPath: TFieldName,
2771
+ dude: (
2772
+ current: Query<TFieldValues[TFieldName][number]>
2773
+ ) => QueryWhere<TFieldValues[TFieldName][number], TFieldValues[TFieldName][number]>,
2774
+ ...dudes: ((
2775
+ current: QueryWhere<TFieldValues[TFieldName][number], TFieldValues[TFieldName][number]>
2776
+ ) => QueryWhere<TFieldValues[TFieldName][number], TFieldValues[TFieldName][number]>)[]
2777
+ ): (
2778
+ current: Query<TFieldValues>
2779
+ ) => QueryWhere<TFieldValues, TFieldValues>
2780
+ }
2781
+ & FilterContinuationsWithSubpath