effect-app 4.0.0-beta.26 → 4.0.0-beta.260

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