effect-app 4.0.0-beta.30 → 4.0.0-beta.301

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