effect-app 4.0.0-beta.32 → 4.0.0-beta.321

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