@effect-app/infra 2.15.0 → 2.15.2

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.
@@ -4,6 +4,7 @@
4
4
  import type { Option, S } from "effect-app"
5
5
  import { Data, flow, Pipeable } from "effect-app"
6
6
  import type { NonNegativeInt } from "effect-app/Schema"
7
+ import type { IsUnion } from "effect-app/utils"
7
8
  import type { Covariant } from "effect/Types"
8
9
  import type { Ops } from "../filter/filterApi.js"
9
10
  import type { FieldValues } from "../filter/types.js"
@@ -242,25 +243,14 @@ export const one: {
242
243
  current
243
244
  })
244
245
 
245
- // TODO: implement count like one instead? or should we change schema projection to work with arrays, so we can count the elements?
246
- // no it's better to implement a distinct count so that the implementation can be optimised per adapter.
246
+ // it's better to implement a distinct count so that the implementation can be optimised per adapter
247
247
  export const count: {
248
248
  <
249
249
  Q extends Query<any> | QueryWhere<any, any> | QueryEnd<any>
250
250
  >(
251
251
  current: Q
252
252
  ): QueryProjection<ExtractFieldValuesRefined<Q>, NonNegativeInt, never, "count">
253
- } = (current) =>
254
- // new Project({ current: current as any, /* TODO: why */ schema: S.Struct({ id: S.unknown }) })
255
- new Count({ current })
256
-
257
- /*
258
- .andThen(flow(
259
- toNonEmptyArray,
260
- Effect.mapError(() => new NotFoundError<"User">({ id: auth0Id, type: "User" })),
261
- Effect.map((_) => _[0])
262
- ))
263
- */
253
+ } = (current) => new Count({ current })
264
254
 
265
255
  export const project: {
266
256
  <
@@ -314,67 +304,58 @@ export const project: {
314
304
  ): (
315
305
  current: Q
316
306
  ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>>
317
- } = (schema: any, mode = "transform") => (current: any) => new Project({ current, /* TODO: why */ schema, mode } as any)
307
+ } = (schema: any, mode = "transform") => (current: any) => new Project({ current, schema, mode } as any)
318
308
 
319
- export type FilterWheres = {
320
- <
321
- TFieldValues extends FieldValues,
322
- TFieldName extends FieldPath<TFieldValues>,
323
- V extends FieldPathValue<TFieldValues, TFieldName>
324
- >(
325
- path: TFieldName,
326
- value: V
327
- ): (
328
- current: Query<TFieldValues>
329
- ) => QueryWhere<TFieldValues>
330
- <
331
- TFieldValues extends FieldValues,
332
- TFieldName extends FieldPath<TFieldValues>,
333
- const V extends FieldPathValue<TFieldValues, TFieldName>
334
- >(
335
- path: TFieldName,
336
- op: "neq",
337
- value: V
338
- ): (
339
- current: Query<TFieldValues>
340
- ) => QueryWhere<TFieldValues, TFieldName extends "_tag" ? Exclude<TFieldValues, { _tag: V }> : TFieldValues>
309
+ type GetArV<T> = T extends readonly (infer R)[] ? R : never
310
+
311
+ export type FilterContinuations<IsCurrentInitial extends boolean = false> = {
341
312
  <
342
313
  TFieldValues extends FieldValues,
343
314
  TFieldName extends FieldPath<TFieldValues>,
344
- V extends FieldPathValue<TFieldValues, TFieldName>
315
+ V extends FieldPathValue<TFieldValues, TFieldName>,
316
+ TFieldValuesRefined extends TFieldValues = TFieldValues
345
317
  >(
346
318
  path: TFieldName,
347
- op: "neq",
348
319
  value: V
349
320
  ): (
350
- current: Query<TFieldValues>
351
- ) => QueryWhere<TFieldValues>
321
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
322
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
323
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
324
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
325
+
352
326
  <
353
327
  TFieldValues extends FieldValues,
354
328
  TFieldName extends FieldPath<TFieldValues>,
355
- V extends FieldPathValue<TFieldValues, TFieldName>
329
+ V extends FieldPathValue<TFieldValues, TFieldName>,
330
+ TFieldValuesRefined extends TFieldValues = TFieldValues
356
331
  >(
357
332
  path: TFieldName,
358
- op: "gt" | "gte" | "lt" | "lte",
333
+ op: "gt" | "gte" | "lt" | "lte" | "neq",
359
334
  value: V // only numbers?
360
335
  ): (
361
- current: Query<TFieldValues>
362
- ) => QueryWhere<TFieldValues>
336
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
337
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
338
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
339
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
363
340
  <
364
341
  TFieldValues extends FieldValues,
365
342
  TFieldName extends FieldPath<TFieldValues>,
366
- V extends string
343
+ V extends string,
344
+ TFieldValuesRefined extends TFieldValues = TFieldValues
367
345
  >(
368
346
  path: TFieldName,
369
347
  op: "startsWith" | "endsWith" | "contains" | "notContains" | "notStartsWith" | "notEndsWith",
370
348
  value: V
371
349
  ): (
372
- current: Query<TFieldValues>
373
- ) => QueryWhere<TFieldValues>
350
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
351
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
352
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
353
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
374
354
  <
375
355
  TFieldValues extends FieldValues,
376
356
  TFieldName extends FieldPath<TFieldValues>,
377
- V extends FieldPathValue<TFieldValues, TFieldName>
357
+ V extends FieldPathValue<TFieldValues, TFieldName>,
358
+ TFieldValuesRefined extends TFieldValues = TFieldValues
378
359
  >(
379
360
  path: TFieldName,
380
361
  op:
@@ -382,12 +363,15 @@ export type FilterWheres = {
382
363
  | "notIn",
383
364
  value: readonly V[]
384
365
  ): (
385
- current: Query<TFieldValues>
386
- ) => QueryWhere<TFieldValues>
366
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
367
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
368
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
369
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
387
370
  <
388
371
  TFieldValues extends FieldValues,
389
372
  TFieldName extends FieldPath<TFieldValues>,
390
- V extends FieldPathValue<TFieldValues, TFieldName>
373
+ V extends FieldPathValue<TFieldValues, TFieldName>,
374
+ TFieldValuesRefined extends TFieldValues = TFieldValues
391
375
  >(
392
376
  path: TFieldName,
393
377
  op:
@@ -395,12 +379,15 @@ export type FilterWheres = {
395
379
  | "notIncludes",
396
380
  value: GetArV<V>
397
381
  ): (
398
- current: Query<TFieldValues>
399
- ) => QueryWhere<TFieldValues>
382
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
383
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
384
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
385
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
400
386
  <
401
387
  TFieldValues extends FieldValues,
402
388
  TFieldName extends FieldPath<TFieldValues>,
403
- V extends FieldPathValue<TFieldValues, TFieldName>
389
+ V extends FieldPathValue<TFieldValues, TFieldName>,
390
+ TFieldValuesRefined extends TFieldValues = TFieldValues
404
391
  >(
405
392
  path: TFieldName,
406
393
  op:
@@ -410,377 +397,118 @@ export type FilterWheres = {
410
397
  | "notIncludes-all",
411
398
  value: readonly GetArV<V>[]
412
399
  ): (
413
- current: Query<TFieldValues>
414
- ) => QueryWhere<TFieldValues>
415
- }
416
-
417
- export type FilterWhere =
418
- // the one below should take care of this case as well
419
- // & {
420
- // <
421
- // TFieldValues extends FieldValues,
422
- // TFieldName extends FieldPath<TFieldValues>,
423
- // const V extends FieldPathValue<TFieldValues, TFieldName>
424
- // >(
425
- // path: TFieldName,
426
- // value: V
427
- // ): (
428
- // current: Query<TFieldValues>
429
- // ) => QueryWhere<TFieldValues, TFieldName extends "_tag" ? Extract<TFieldValues, { _tag: V }> : TFieldValues>
430
- // }
431
- & {
432
- <
433
- TFieldValues extends FieldValues,
434
- const TFieldName extends FieldPath<TFieldValues>,
435
- const V extends FieldPathValue<TFieldValues, TFieldName>
436
- >(
437
- path: TFieldName,
438
- value: V
439
- ): (
440
- current: Query<TFieldValues>
441
- ) => QueryWhere<
442
- TFieldValues,
443
- // TFieldValues[TFieldName] must be a union of string literals to let the refinement work
444
- string extends TFieldValues[TFieldName] ? TFieldValues
445
- : TFieldValues[TFieldName] extends string ? Extract<TFieldValues, { [K in TFieldName]: V }>
446
- : TFieldValues
447
- >
448
- }
449
- & {
450
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
451
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
452
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
453
-
454
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
455
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
456
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
457
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
458
-
459
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
460
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
461
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
462
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
463
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
464
-
465
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
466
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
467
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
468
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
469
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
470
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
471
-
472
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
473
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
474
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
475
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
476
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
477
- ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
478
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
479
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
480
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
481
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
482
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
483
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
484
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
485
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
486
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
487
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
488
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
489
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
490
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
491
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
492
- fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
493
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
494
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
495
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
496
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
497
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
498
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
499
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
500
- fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
501
- fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
502
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
503
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
504
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
505
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
506
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
507
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
508
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
509
- fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
510
- fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
511
- fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
512
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
513
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
514
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
515
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
516
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
517
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
518
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
519
- fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
520
- fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
521
- fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
522
- fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
523
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
524
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
525
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
526
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
527
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
528
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
529
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
530
- fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
531
- fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
532
- fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
533
- fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
534
- fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
535
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
536
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
537
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
538
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
539
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
540
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
541
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
542
- fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
543
- fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
544
- fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
545
- fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
546
- fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
547
- fm: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
548
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
549
- <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
550
- fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
551
- fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
552
- fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
553
- fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
554
- fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
555
- fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
556
- fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
557
- fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
558
- fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
559
- fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
560
- fm: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
561
- fn: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
562
- ): (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
563
- }
564
- & {
565
- <
566
- TFieldValues extends FieldValues,
567
- TFieldName extends FieldPath<TFieldValues>,
568
- V extends FieldPathValue<TFieldValues, TFieldName>
569
- >(f: {
570
- path: TFieldName
571
- op: Ops
572
- value: V
573
- }): (
574
- current: Query<TFieldValues>
575
- ) => QueryWhere<TFieldValues>
576
- }
577
- & FilterWheres
578
- & {
579
- <
580
- TFieldValues extends FieldValues,
581
- TFieldName extends FieldPath<TFieldValues>,
582
- V extends FieldPathValue<TFieldValues, TFieldName>
583
- >(
584
- path: TFieldName,
585
- value: V
586
- ): (
587
- current: Query<TFieldValues>
588
- ) => QueryWhere<TFieldValues>
589
- // breaks flow pipe type inference
590
- // <
591
- // TFieldValues extends FieldValues,
592
- // TFieldName extends FieldPath<TFieldValues>,
593
- // V extends FieldPathValue<TFieldValues, TFieldName>
594
- // >(
595
- // path: TFieldName,
596
- // op: "neq",
597
- // value: V
598
- // ): (
599
- // current: Query<TFieldValues>
600
- // ) => QueryWhere<TFieldValues>
601
- <
602
- TFieldValues extends FieldValues,
603
- TFieldName extends FieldPath<TFieldValues>,
604
- V extends FieldPathValue<TFieldValues, TFieldName>
605
- >(
606
- path: TFieldName,
607
- op: "gt" | "gte" | "lt" | "lte" | "neq",
608
- value: V // only numbers?
609
- ): (
610
- current: Query<TFieldValues>
611
- ) => QueryWhere<TFieldValues>
612
- <
613
- TFieldValues extends FieldValues,
614
- TFieldName extends FieldPath<TFieldValues>,
615
- V extends string
616
- >(
617
- path: TFieldName,
618
- op: "startsWith" | "endsWith" | "contains" | "notContains" | "notStartsWith" | "notEndsWith",
619
- value: V
620
- ): (
621
- current: Query<TFieldValues>
622
- ) => QueryWhere<TFieldValues>
623
- <
624
- TFieldValues extends FieldValues,
625
- TFieldName extends FieldPath<TFieldValues>,
626
- V extends FieldPathValue<TFieldValues, TFieldName>
627
- >(
628
- path: TFieldName,
629
- op:
630
- | "in"
631
- | "notIn",
632
- value: readonly V[]
633
- ): (
634
- current: Query<TFieldValues>
635
- ) => QueryWhere<TFieldValues>
636
- <
637
- TFieldValues extends FieldValues,
638
- TFieldName extends FieldPath<TFieldValues>,
639
- V extends FieldPathValue<TFieldValues, TFieldName>
640
- >(
641
- path: TFieldName,
642
- op:
643
- | "includes"
644
- | "notIncludes",
645
- value: GetArV<V>
646
- ): (
647
- current: Query<TFieldValues>
648
- ) => QueryWhere<TFieldValues>
649
- <
650
- TFieldValues extends FieldValues,
651
- TFieldName extends FieldPath<TFieldValues>,
652
- V extends FieldPathValue<TFieldValues, TFieldName>
653
- >(
654
- path: TFieldName,
655
- op:
656
- | "includes-any"
657
- | "notIncludes-any"
658
- | "includes-all"
659
- | "notIncludes-all",
660
- value: readonly GetArV<V>[]
661
- ): (
662
- current: Query<TFieldValues>
663
- ) => QueryWhere<TFieldValues>
664
- }
665
-
666
- export type FilterContinuations = {
400
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
401
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
402
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
403
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
667
404
  <
668
405
  TFieldValues extends FieldValues,
669
406
  TFieldName extends FieldPath<TFieldValues>,
670
407
  V extends FieldPathValue<TFieldValues, TFieldName>,
671
408
  TFieldValuesRefined extends TFieldValues = TFieldValues
672
- >(
673
- path: TFieldName,
409
+ >(f: {
410
+ path: TFieldName
411
+ op: Ops
674
412
  value: V
675
- ): (
676
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
677
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
678
- // breaks flow pipe type inference
679
- // <
680
- // TFieldValues extends FieldValues,
681
- // TFieldName extends FieldPath<TFieldValues>,
682
- // V extends FieldPathValue<TFieldValues, TFieldName>
683
- // >(
684
- // path: TFieldName,
685
- // op: "neq",
686
- // value: V
687
- // ): (
688
- // current: QueryWhere<TFieldValues>
689
- // ) => QueryWhere<TFieldValues>
690
- <
691
- TFieldValues extends FieldValues,
692
- TFieldName extends FieldPath<TFieldValues>,
693
- V extends FieldPathValue<TFieldValues, TFieldName>,
694
- TFieldValuesRefined extends TFieldValues = TFieldValues
695
- >(
696
- path: TFieldName,
697
- op: "gt" | "gte" | "lt" | "lte" | "neq",
698
- value: V // only numbers?
699
- ): (
700
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
701
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
413
+ }): (
414
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
415
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
416
+ ) => IsCurrentInitial extends true ? QueryWhere<TFieldValues>
417
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
418
+ }
419
+
420
+ export type FilteringRefinements<IsCurrentInitial extends boolean = false> = {
702
421
  <
703
422
  TFieldValues extends FieldValues,
704
- TFieldName extends FieldPath<TFieldValues>,
705
- V extends string,
423
+ const TFieldName extends FieldPath<TFieldValues>,
424
+ const V extends FieldPathValue<TFieldValues, TFieldName>,
706
425
  TFieldValuesRefined extends TFieldValues = TFieldValues
707
426
  >(
708
427
  path: TFieldName,
709
- op: "startsWith" | "endsWith" | "contains" | "notContains" | "notStartsWith" | "notEndsWith",
710
428
  value: V
711
429
  ): (
712
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
713
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
714
- <
715
- TFieldValues extends FieldValues,
716
- TFieldName extends FieldPath<TFieldValues>,
717
- V extends FieldPathValue<TFieldValues, TFieldName>,
718
- TFieldValuesRefined extends TFieldValues = TFieldValues
719
- >(
720
- path: TFieldName,
721
- op:
722
- | "in"
723
- | "notIn",
724
- value: readonly V[]
725
- ): (
726
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
727
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
728
- <
729
- TFieldValues extends FieldValues,
730
- TFieldName extends FieldPath<TFieldValues>,
731
- V extends FieldPathValue<TFieldValues, TFieldName>,
732
- TFieldValuesRefined extends TFieldValues = TFieldValues
733
- >(
734
- path: TFieldName,
735
- op:
736
- | "includes"
737
- | "notIncludes",
738
- value: GetArV<V>
739
- ): (
740
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
741
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
430
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
431
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
432
+ ) => IsCurrentInitial extends true ? QueryWhere<
433
+ TFieldValues,
434
+ // TFieldValues[TFieldName] must be a union of string literals to let the refinement work
435
+ // and TFieldValues must not be a union
436
+ IsUnion<TFieldValues> extends false ? TFieldValues
437
+ : string extends TFieldValues[TFieldName] ? TFieldValues
438
+ : TFieldValues[TFieldName] extends string ? Extract<TFieldValues, { [K in TFieldName]: V }>
439
+ : TFieldValues
440
+ >
441
+ : QueryWhere<
442
+ TFieldValues,
443
+ // TFieldValues[TFieldName] must be a union of string literals to let the refinement work
444
+ // and TFieldValuesRefined must not be a union
445
+ IsUnion<TFieldValuesRefined> extends false ? TFieldValues
446
+ : string extends TFieldValuesRefined[TFieldName] ? TFieldValuesRefined
447
+ : TFieldValuesRefined[TFieldName] extends string ? Extract<TFieldValuesRefined, { [K in TFieldName]: V }>
448
+ : TFieldValuesRefined
449
+ >
742
450
  <
743
451
  TFieldValues extends FieldValues,
744
- TFieldName extends FieldPath<TFieldValues>,
745
- V extends FieldPathValue<TFieldValues, TFieldName>,
452
+ const TFieldName extends FieldPath<TFieldValues>,
453
+ const V extends FieldPathValue<TFieldValues, TFieldName>,
746
454
  TFieldValuesRefined extends TFieldValues = TFieldValues
747
455
  >(
748
456
  path: TFieldName,
749
- op:
750
- | "includes-any"
751
- | "notIncludes-any"
752
- | "includes-all"
753
- | "notIncludes-all",
754
- value: readonly GetArV<V>[]
457
+ op: "neq",
458
+ value: V
755
459
  ): (
756
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
757
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
460
+ current: IsCurrentInitial extends true ? Query<TFieldValues>
461
+ : QueryWhere<TFieldValues, TFieldValuesRefined>
462
+ ) => IsCurrentInitial extends true ? QueryWhere<
463
+ TFieldValues,
464
+ // TFieldValues[TFieldName] must be a union of string literals to let the refinement work
465
+ // and TFieldValues must not be a union
466
+ IsUnion<TFieldValues> extends false ? TFieldValues
467
+ : string extends TFieldValues[TFieldName] ? TFieldValues
468
+ : TFieldValues[TFieldName] extends string ? Exclude<TFieldValues, { [K in TFieldName]: V }>
469
+ : TFieldValues
470
+ >
471
+ : QueryWhere<
472
+ TFieldValues,
473
+ // TFieldValues[TFieldName] must be a union of string literals to let the refinement work
474
+ // and TFieldValuesRefined must not be a union
475
+ IsUnion<TFieldValuesRefined> extends false ? TFieldValuesRefined
476
+ : string extends TFieldValuesRefined[TFieldName] ? TFieldValuesRefined
477
+ : TFieldValuesRefined[TFieldName] extends string ? Exclude<TFieldValuesRefined, { [K in TFieldName]: V }>
478
+ : TFieldValuesRefined
479
+ >
758
480
  }
759
481
 
760
- type GetArV<T> = T extends readonly (infer R)[] ? R : never
761
-
762
- export type FilterContinuationClosure = {
482
+ export type NestedQueriesFixedRefinement<IsCurrentInitial extends boolean = false> = {
763
483
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
764
484
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>
765
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
485
+ ): (
486
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
487
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
766
488
 
767
489
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
768
490
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
769
491
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
770
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
492
+ ): (
493
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
494
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
771
495
 
772
496
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
773
497
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
774
498
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
775
499
  fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
776
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
500
+ ): (
501
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
502
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
777
503
 
778
504
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
779
505
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
780
506
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
781
507
  fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
782
508
  fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
783
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
509
+ ): (
510
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
511
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
784
512
 
785
513
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
786
514
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -788,14 +516,18 @@ export type FilterContinuationClosure = {
788
516
  fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
789
517
  fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
790
518
  ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
791
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
519
+ ): (
520
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
521
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
792
522
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
793
523
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
794
524
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
795
525
  fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
796
526
  fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
797
527
  fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
798
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
528
+ ): (
529
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
530
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
799
531
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
800
532
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
801
533
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -803,7 +535,9 @@ export type FilterContinuationClosure = {
803
535
  fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
804
536
  fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
805
537
  fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
806
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
538
+ ): (
539
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
540
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
807
541
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
808
542
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
809
543
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -812,7 +546,9 @@ export type FilterContinuationClosure = {
812
546
  fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
813
547
  fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
814
548
  fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
815
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
549
+ ): (
550
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
551
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
816
552
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
817
553
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
818
554
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -822,7 +558,9 @@ export type FilterContinuationClosure = {
822
558
  fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
823
559
  fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
824
560
  fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
825
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
561
+ ): (
562
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
563
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
826
564
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
827
565
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
828
566
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -833,7 +571,9 @@ export type FilterContinuationClosure = {
833
571
  fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
834
572
  fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
835
573
  fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
836
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
574
+ ): (
575
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
576
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
837
577
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
838
578
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
839
579
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -845,7 +585,9 @@ export type FilterContinuationClosure = {
845
585
  fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
846
586
  fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
847
587
  fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
848
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
588
+ ): (
589
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
590
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
849
591
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
850
592
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
851
593
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -858,7 +600,9 @@ export type FilterContinuationClosure = {
858
600
  fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
859
601
  fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
860
602
  fm: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
861
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
603
+ ): (
604
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
605
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
862
606
  <TFieldValues extends FieldValues, TFieldValuesRefined extends TFieldValues = TFieldValues>(
863
607
  fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
864
608
  fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
@@ -872,10 +616,12 @@ export type FilterContinuationClosure = {
872
616
  fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
873
617
  fm: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>,
874
618
  fn: (query: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
875
- ): (current: QueryWhere<TFieldValues, TFieldValuesRefined>) => QueryWhere<TFieldValues, TFieldValuesRefined>
619
+ ): (
620
+ current: IsCurrentInitial extends true ? Query<TFieldValues> : QueryWhere<TFieldValues, TFieldValuesRefined>
621
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined>
876
622
  }
877
623
 
878
- export type FilterContinuationClosureOr = {
624
+ export type NestedQueriesFreeDisjointRefinement = {
879
625
  <
880
626
  TFieldValues extends FieldValues,
881
627
  TFieldValuesRefined extends TFieldValues = TFieldValues,
@@ -1163,78 +909,16 @@ export type FilterContinuationClosureOr = {
1163
909
  ) => QueryWhere<TFieldValues, TFieldValuesRefined | TFieldValuesRefined14>
1164
910
  }
1165
911
 
1166
- export type FilterContinuation =
1167
- & FilterContinuationClosure
1168
- & {
1169
- <
1170
- TFieldValues extends FieldValues,
1171
- TFieldName extends FieldPath<TFieldValues>,
1172
- V extends FieldPathValue<TFieldValues, TFieldName>,
1173
- TFieldValuesRefined extends TFieldValues = TFieldValues
1174
- >(f: {
1175
- path: TFieldName
1176
- op: Ops
1177
- value: V
1178
- }): (
1179
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
1180
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
1181
- }
1182
- & FilterContinuations
912
+ export type FilterWhere =
913
+ & NestedQueriesFixedRefinement<true>
914
+ & FilteringRefinements<true>
915
+ & FilterContinuations<true>
1183
916
 
1184
917
  export type FilterContinuationAnd =
1185
- & {
1186
- <
1187
- TFieldValues extends FieldValues,
1188
- TFieldName extends FieldPath<TFieldValues>,
1189
- const V extends FieldPathValue<TFieldValues, TFieldName>
1190
- >(
1191
- path: TFieldName,
1192
- value: V
1193
- ): (
1194
- current: QueryWhere<TFieldValues>
1195
- ) => QueryWhere<TFieldValues, TFieldName extends "_tag" ? Extract<TFieldValues, { _tag: V }> : TFieldValues>
1196
- <
1197
- TFieldValues extends FieldValues,
1198
- TFieldName extends FieldPath<TFieldValues>,
1199
- const V extends FieldPathValue<TFieldValues, TFieldName>
1200
- >(
1201
- path: TFieldName,
1202
- op: "neq",
1203
- value: V
1204
- ): (
1205
- current: QueryWhere<TFieldValues>
1206
- ) => QueryWhere<TFieldValues, TFieldName extends "_tag" ? Exclude<TFieldValues, { _tag: V }> : TFieldValues>
1207
- <
1208
- TFieldValues extends FieldValues,
1209
- TFieldName extends FieldPath<TFieldValues>,
1210
- const V extends FieldPathValue<TFieldValues, TFieldName>,
1211
- TFieldValuesRefined extends TFieldValues = TFieldValues
1212
- >(
1213
- path: TFieldName,
1214
- value: V
1215
- ): (
1216
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
1217
- ) => QueryWhere<
1218
- TFieldValues,
1219
- TFieldName extends "_tag" ? Extract<TFieldValuesRefined, { _tag: V }> : TFieldValuesRefined
1220
- >
1221
- }
1222
- & FilterContinuation
918
+ & NestedQueriesFixedRefinement
919
+ & FilteringRefinements
920
+ & FilterContinuations
1223
921
 
1224
922
  export type FilterContinuationOr =
1225
- & FilterContinuationClosureOr
1226
- & {
1227
- <
1228
- TFieldValues extends FieldValues,
1229
- TFieldName extends FieldPath<TFieldValues>,
1230
- V extends FieldPathValue<TFieldValues, TFieldName>,
1231
- TFieldValuesRefined extends TFieldValues = TFieldValues
1232
- >(f: {
1233
- path: TFieldName
1234
- op: Ops
1235
- value: V
1236
- }): (
1237
- current: QueryWhere<TFieldValues, TFieldValuesRefined>
1238
- ) => QueryWhere<TFieldValues, TFieldValuesRefined>
1239
- }
923
+ & NestedQueriesFreeDisjointRefinement
1240
924
  & FilterContinuations