@effect-app/infra 2.16.6 → 2.16.8

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 (43) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/Model/filter/types/path/eager.cjs +31 -0
  3. package/_cjs/Model/filter/types/path/eager.cjs.map +1 -1
  4. package/_cjs/Model/query/dsl.cjs.map +1 -1
  5. package/_cjs/api/routing copy.cjs +196 -0
  6. package/_cjs/api/routing copy.cjs.map +1 -0
  7. package/_cjs/api/routing.cjs +2 -1
  8. package/_cjs/api/routing.cjs.map +1 -1
  9. package/dist/Model/Repository/ext.d.ts +3 -3
  10. package/dist/Model/Repository/service.d.ts +28 -14
  11. package/dist/Model/Repository/service.d.ts.map +1 -1
  12. package/dist/Model/filter/types/path/eager.d.ts +26 -29
  13. package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
  14. package/dist/Model/filter/types/path/eager.js +30 -2
  15. package/dist/Model/filter/types/path/index.d.ts +1 -1
  16. package/dist/Model/filter/types/path/index.d.ts.map +1 -1
  17. package/dist/Model/filter/types/utils.d.ts +11 -0
  18. package/dist/Model/filter/types/utils.d.ts.map +1 -1
  19. package/dist/Model/query/dsl.d.ts +23 -16
  20. package/dist/Model/query/dsl.d.ts.map +1 -1
  21. package/dist/Model/query/dsl.js +1 -1
  22. package/dist/Model/query/new-kid-interpreter.d.ts +1 -1
  23. package/dist/QueueMaker/sbqueue.d.ts +2 -2
  24. package/dist/Store/service.d.ts +1 -1
  25. package/dist/api/routing copy.d.ts +160 -0
  26. package/dist/api/routing copy.d.ts.map +1 -0
  27. package/dist/api/routing copy.js +210 -0
  28. package/dist/api/routing.d.ts +12 -2
  29. package/dist/api/routing.d.ts.map +1 -1
  30. package/dist/api/routing.js +4 -3
  31. package/examples/query.ts +35 -3
  32. package/package.json +1 -1
  33. package/src/Model/Repository/service.ts +33 -13
  34. package/src/Model/filter/types/path/eager.ts +182 -50
  35. package/src/Model/filter/types/path/index.ts +1 -11
  36. package/src/Model/filter/types/utils.ts +22 -0
  37. package/src/Model/query/dsl.ts +314 -30
  38. package/src/api/routing.ts +159 -77
  39. package/test/controller.test.ts +151 -0
  40. package/test/dist/controller.test copy.js +129 -0
  41. package/test/dist/controller.test.d.ts.map +1 -0
  42. package/test/dist/controller5.test.d.ts.map +1 -0
  43. package/test/query.test.ts +385 -36
@@ -4,11 +4,10 @@
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"
8
7
  import type { Covariant } from "effect/Types"
9
8
  import type { Ops } from "../filter/filterApi.js"
10
9
  import type { FieldValues } from "../filter/types.js"
11
- import type { FieldPath, FieldPathValue } from "../filter/types/path/eager.js"
10
+ import type { FieldPath, FieldPathValue, RefineFieldPathValue } from "../filter/types/path/eager.js"
12
11
 
13
12
  export type QAll<
14
13
  TFieldValues extends FieldValues,
@@ -255,7 +254,7 @@ export const count: {
255
254
  export const project: {
256
255
  <
257
256
  Q extends Query<any> | QueryWhere<any, any> | QueryEnd<any, "one" | "many">,
258
- I extends Partial<ExtractFieldValuesRefined<Q>> = ExtractFieldValuesRefined<Q>,
257
+ I,
259
258
  A = ExtractFieldValuesRefined<Q>,
260
259
  R = never
261
260
  >(
@@ -273,7 +272,7 @@ export const project: {
273
272
 
274
273
  <
275
274
  Q extends Query<any> | QueryWhere<any, any> | QueryEnd<any, "one" | "many">,
276
- I extends Partial<ExtractFieldValuesRefined<Q>> = ExtractFieldValuesRefined<Q>,
275
+ I,
277
276
  A = ExtractFieldValuesRefined<Q>,
278
277
  R = never
279
278
  >(
@@ -290,7 +289,7 @@ export const project: {
290
289
  ) => QueryProjection<ExtractFieldValuesRefined<Q>, A, R, ExtractTType<Q>>
291
290
  <
292
291
  Q extends Query<any> | QueryWhere<any, any> | QueryEnd<any, "one" | "many">,
293
- I extends Partial<ExtractFieldValuesRefined<Q>> = ExtractFieldValuesRefined<Q>,
292
+ I,
294
293
  A = ExtractFieldValuesRefined<Q>,
295
294
  R = never
296
295
  >(
@@ -417,6 +416,19 @@ export type FilterContinuations<IsCurrentInitial extends boolean = false> = {
417
416
  : QueryWhere<TFieldValues, TFieldValuesRefined>
418
417
  }
419
418
 
419
+ /* dprint-ignore-start */
420
+ export type RefineWithLiteral<
421
+ TFieldValues extends FieldValues,
422
+ TFieldName extends FieldPath<TFieldValues>,
423
+ V,
424
+ Exclde extends boolean = false
425
+ > =
426
+ // refine only if the value is a primitive
427
+ V extends string | number | boolean | null | bigint
428
+ ? RefineFieldPathValue<TFieldValues, TFieldName, V, Exclde>
429
+ : TFieldValues
430
+ /* dprint-ignore-end */
431
+
420
432
  export type FilteringRefinements<IsCurrentInitial extends boolean = false> = {
421
433
  <
422
434
  TFieldValues extends FieldValues,
@@ -431,21 +443,13 @@ export type FilteringRefinements<IsCurrentInitial extends boolean = false> = {
431
443
  : QueryWhere<TFieldValues, TFieldValuesRefined>
432
444
  ) => IsCurrentInitial extends true ? QueryWhere<
433
445
  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
446
+ // @ts-expect-error it's TS
447
+ RefineWithLiteral<TFieldValues, TFieldName, V>
440
448
  >
441
449
  : QueryWhere<
442
450
  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
451
+ // @ts-expect-error it's TS
452
+ RefineWithLiteral<TFieldValuesRefined, TFieldName, V>
449
453
  >
450
454
  <
451
455
  TFieldValues extends FieldValues,
@@ -461,21 +465,13 @@ export type FilteringRefinements<IsCurrentInitial extends boolean = false> = {
461
465
  : QueryWhere<TFieldValues, TFieldValuesRefined>
462
466
  ) => IsCurrentInitial extends true ? QueryWhere<
463
467
  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
468
+ // @ts-expect-error it's TS
469
+ RefineWithLiteral<TFieldValues, TFieldName, V, true>
470
470
  >
471
471
  : QueryWhere<
472
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
473
+ // @ts-expect-error it's TS
474
+ RefineWithLiteral<TFieldValuesRefined, TFieldName, V, true>
479
475
  >
480
476
  }
481
477
 
@@ -621,6 +617,294 @@ export type NestedQueriesFixedRefinement<IsCurrentInitial extends boolean = fals
621
617
  ) => QueryWhere<TFieldValues, TFieldValuesRefined>
622
618
  }
623
619
 
620
+ export type NestedQueriesFreeIntersectionRefinement = {
621
+ <
622
+ TFieldValues extends FieldValues,
623
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
624
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues
625
+ >(
626
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>
627
+ ): (
628
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
629
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined2>
630
+
631
+ <
632
+ TFieldValues extends FieldValues,
633
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
634
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
635
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues
636
+ >(
637
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
638
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>
639
+ ): (
640
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
641
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined3>
642
+
643
+ <
644
+ TFieldValues extends FieldValues,
645
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
646
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
647
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
648
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues
649
+ >(
650
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
651
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
652
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>
653
+ ): (
654
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
655
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined4>
656
+
657
+ <
658
+ TFieldValues extends FieldValues,
659
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
660
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
661
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
662
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
663
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues
664
+ >(
665
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
666
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
667
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
668
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>
669
+ ): (
670
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
671
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined5>
672
+
673
+ <
674
+ TFieldValues extends FieldValues,
675
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
676
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
677
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
678
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
679
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
680
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues
681
+ >(
682
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
683
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
684
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
685
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
686
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>
687
+ ): (
688
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
689
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined6>
690
+
691
+ <
692
+ TFieldValues extends FieldValues,
693
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
694
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
695
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
696
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
697
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
698
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
699
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues
700
+ >(
701
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
702
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
703
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
704
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
705
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
706
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>
707
+ ): (
708
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
709
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined7>
710
+
711
+ <
712
+ TFieldValues extends FieldValues,
713
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
714
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
715
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
716
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
717
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
718
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
719
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
720
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues
721
+ >(
722
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
723
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
724
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
725
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
726
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
727
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>,
728
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined7>) => QueryWhere<TFieldValues, TFieldValuesRefined8>
729
+ ): (
730
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
731
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined2>
732
+
733
+ <
734
+ TFieldValues extends FieldValues,
735
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
736
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
737
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
738
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
739
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
740
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
741
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
742
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
743
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues
744
+ >(
745
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
746
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
747
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
748
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
749
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
750
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>,
751
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined7>) => QueryWhere<TFieldValues, TFieldValuesRefined8>,
752
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined8>) => QueryWhere<TFieldValues, TFieldValuesRefined9>
753
+ ): (
754
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
755
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined9>
756
+
757
+ <
758
+ TFieldValues extends FieldValues,
759
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
760
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
761
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
762
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
763
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
764
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
765
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
766
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
767
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
768
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues
769
+ >(
770
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
771
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
772
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
773
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
774
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
775
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>,
776
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined7>) => QueryWhere<TFieldValues, TFieldValuesRefined8>,
777
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined8>) => QueryWhere<TFieldValues, TFieldValuesRefined9>,
778
+ fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined9>) => QueryWhere<TFieldValues, TFieldValuesRefined10>
779
+ ): (
780
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
781
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined10>
782
+
783
+ <
784
+ TFieldValues extends FieldValues,
785
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
786
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
787
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
788
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
789
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
790
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
791
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
792
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
793
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
794
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
795
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues
796
+ >(
797
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
798
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
799
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
800
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
801
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
802
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>,
803
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined7>) => QueryWhere<TFieldValues, TFieldValuesRefined8>,
804
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined8>) => QueryWhere<TFieldValues, TFieldValuesRefined9>,
805
+ fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined9>) => QueryWhere<TFieldValues, TFieldValuesRefined10>,
806
+ fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined10>) => QueryWhere<TFieldValues, TFieldValuesRefined11>
807
+ ): (
808
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
809
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined11>
810
+
811
+ <
812
+ TFieldValues extends FieldValues,
813
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
814
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
815
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
816
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
817
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
818
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
819
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
820
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
821
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
822
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
823
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
824
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues
825
+ >(
826
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
827
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
828
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
829
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
830
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
831
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>,
832
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined7>) => QueryWhere<TFieldValues, TFieldValuesRefined8>,
833
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined8>) => QueryWhere<TFieldValues, TFieldValuesRefined9>,
834
+ fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined9>) => QueryWhere<TFieldValues, TFieldValuesRefined10>,
835
+ fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined10>) => QueryWhere<TFieldValues, TFieldValuesRefined11>,
836
+ fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined11>) => QueryWhere<TFieldValues, TFieldValuesRefined12>
837
+ ): (
838
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
839
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined12>
840
+
841
+ <
842
+ TFieldValues extends FieldValues,
843
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
844
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
845
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
846
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
847
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
848
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
849
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
850
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
851
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
852
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
853
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
854
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
855
+ TFieldValuesRefined13 extends TFieldValues = TFieldValues
856
+ >(
857
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
858
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
859
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
860
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
861
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
862
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>,
863
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined7>) => QueryWhere<TFieldValues, TFieldValuesRefined8>,
864
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined8>) => QueryWhere<TFieldValues, TFieldValuesRefined9>,
865
+ fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined9>) => QueryWhere<TFieldValues, TFieldValuesRefined10>,
866
+ fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined10>) => QueryWhere<TFieldValues, TFieldValuesRefined11>,
867
+ fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined11>) => QueryWhere<TFieldValues, TFieldValuesRefined12>,
868
+ fm: (query: QueryWhere<TFieldValues, TFieldValuesRefined12>) => QueryWhere<TFieldValues, TFieldValuesRefined13>
869
+ ): (
870
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
871
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined13>
872
+
873
+ <
874
+ TFieldValues extends FieldValues,
875
+ TFieldValuesRefined extends TFieldValues = TFieldValues,
876
+ TFieldValuesRefined2 extends TFieldValues = TFieldValues,
877
+ TFieldValuesRefined3 extends TFieldValues = TFieldValues,
878
+ TFieldValuesRefined4 extends TFieldValues = TFieldValues,
879
+ TFieldValuesRefined5 extends TFieldValues = TFieldValues,
880
+ TFieldValuesRefined6 extends TFieldValues = TFieldValues,
881
+ TFieldValuesRefined7 extends TFieldValues = TFieldValues,
882
+ TFieldValuesRefined8 extends TFieldValues = TFieldValues,
883
+ TFieldValuesRefined9 extends TFieldValues = TFieldValues,
884
+ TFieldValuesRefined10 extends TFieldValues = TFieldValues,
885
+ TFieldValuesRefined11 extends TFieldValues = TFieldValues,
886
+ TFieldValuesRefined12 extends TFieldValues = TFieldValues,
887
+ TFieldValuesRefined13 extends TFieldValues = TFieldValues,
888
+ TFieldValuesRefined14 extends TFieldValues = TFieldValues
889
+ >(
890
+ fb: (current: Query<TFieldValues>) => QueryWhere<TFieldValues, TFieldValuesRefined2>,
891
+ fc: (query: QueryWhere<TFieldValues, TFieldValuesRefined2>) => QueryWhere<TFieldValues, TFieldValuesRefined3>,
892
+ fd: (query: QueryWhere<TFieldValues, TFieldValuesRefined3>) => QueryWhere<TFieldValues, TFieldValuesRefined4>,
893
+ fe: (query: QueryWhere<TFieldValues, TFieldValuesRefined4>) => QueryWhere<TFieldValues, TFieldValuesRefined5>,
894
+ ff: (query: QueryWhere<TFieldValues, TFieldValuesRefined5>) => QueryWhere<TFieldValues, TFieldValuesRefined6>,
895
+ fg: (query: QueryWhere<TFieldValues, TFieldValuesRefined6>) => QueryWhere<TFieldValues, TFieldValuesRefined7>,
896
+ fh: (query: QueryWhere<TFieldValues, TFieldValuesRefined7>) => QueryWhere<TFieldValues, TFieldValuesRefined8>,
897
+ fi: (query: QueryWhere<TFieldValues, TFieldValuesRefined8>) => QueryWhere<TFieldValues, TFieldValuesRefined9>,
898
+ fj: (query: QueryWhere<TFieldValues, TFieldValuesRefined9>) => QueryWhere<TFieldValues, TFieldValuesRefined10>,
899
+ fk: (query: QueryWhere<TFieldValues, TFieldValuesRefined10>) => QueryWhere<TFieldValues, TFieldValuesRefined11>,
900
+ fl: (query: QueryWhere<TFieldValues, TFieldValuesRefined11>) => QueryWhere<TFieldValues, TFieldValuesRefined12>,
901
+ fm: (query: QueryWhere<TFieldValues, TFieldValuesRefined12>) => QueryWhere<TFieldValues, TFieldValuesRefined13>,
902
+ fn: (query: QueryWhere<TFieldValues, TFieldValuesRefined13>) => QueryWhere<TFieldValues, TFieldValuesRefined14>
903
+ ): (
904
+ current: QueryWhere<TFieldValues, TFieldValuesRefined>
905
+ ) => QueryWhere<TFieldValues, TFieldValuesRefined & TFieldValuesRefined14>
906
+ }
907
+
624
908
  export type NestedQueriesFreeDisjointRefinement = {
625
909
  <
626
910
  TFieldValues extends FieldValues,
@@ -915,7 +1199,7 @@ export type FilterWhere =
915
1199
  & FilterContinuations<true>
916
1200
 
917
1201
  export type FilterContinuationAnd =
918
- & NestedQueriesFixedRefinement
1202
+ & NestedQueriesFreeIntersectionRefinement
919
1203
  & FilteringRefinements
920
1204
  & FilterContinuations
921
1205
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
1
2
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
3
  /* eslint-disable @typescript-eslint/no-empty-object-type */
3
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -303,82 +304,7 @@ export const makeRouter = <
303
304
  ? { [k in keyof Layers]: Layer.Layer.Error<Layers[k]> }[number]
304
305
  : never
305
306
 
306
- const effect: {
307
- <
308
- E,
309
- R,
310
- Make extends (
311
- requests: RouteMatcher<CTXMap, Rsc, Context>
312
- ) => Effect<
313
- { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
314
- any,
315
- Strict extends true ? GetSuccess<TLayers> : any
316
- >,
317
- THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
318
- TLayers extends NonEmptyReadonlyArray<Layer.Layer.Any> | never[],
319
- Strict extends boolean = true
320
- >(
321
- layers: TLayers,
322
- make: Make & ((requests: RouteMatcher<CTXMap, Rsc, Context>) => Effect<THandlers, E, R>),
323
- strict?: Strict
324
- ): {
325
- moduleName: ModuleName
326
- Router: HttpRouter.HttpRouter.TagClass<
327
- RouterShape<Rsc>,
328
- `${ModuleName}Router`,
329
- never,
330
- | Exclude<Context, HttpRouter.HttpRouter.Provided>
331
- | Exclude<
332
- RPCRouteR<
333
- { [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>> }[keyof Filter<Rsc>]
334
- >,
335
- HttpRouter.HttpRouter.Provided
336
- >
337
- >
338
- routes: Layer.Layer<
339
- RouterShape<Rsc>,
340
- E | GetError<TLayers>,
341
- | GetContext<TLayers>
342
- // | GetContext<Layers> // elsewhere provided
343
- | Exclude<R | RMW, GetSuccess<TLayers> | GetSuccess<Layers>>
344
- >
345
- }
346
- <
347
- E,
348
- R,
349
- THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
350
- TLayers extends NonEmptyReadonlyArray<Layer.Layer.Any> | never[],
351
- Strict extends boolean = true
352
- >(
353
- layers: [
354
- ...TLayers,
355
- Layer.Layer<Exclude<R, GetSuccess<TLayers>>, never, never>
356
- ],
357
- make: (requests: RouteMatcher<CTXMap, Rsc, Context>) => Effect<THandlers, E, R>,
358
- strict?: Strict
359
- ): {
360
- moduleName: ModuleName
361
- Router: HttpRouter.HttpRouter.TagClass<
362
- RouterShape<Rsc>,
363
- `${ModuleName}Router`,
364
- never,
365
- | Exclude<Context, HttpRouter.HttpRouter.Provided>
366
- | Exclude<
367
- RPCRouteR<
368
- { [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>> }[keyof Filter<Rsc>]
369
- >,
370
- HttpRouter.HttpRouter.Provided
371
- >
372
- >
373
- routes: Layer.Layer<
374
- RouterShape<Rsc>,
375
- E | GetError<TLayers>,
376
- // | GetContext<Layers> // elsewhere provided
377
- | GetContext<TLayers>
378
- | Exclude<R | RMW, GetSuccess<TLayers> | GetSuccess<Layers>>
379
- >
380
- }
381
- } = (<
307
+ const f = <
382
308
  E,
383
309
  R,
384
310
  THandlers extends {
@@ -540,7 +466,163 @@ export const makeRouter = <
540
466
  Router: r,
541
467
  routes
542
468
  }
543
- }) as any
469
+ }
470
+
471
+ const effect: {
472
+ // Multiple times duplicated the "good" overload, so that errors will only mention the last overload when failing
473
+ <
474
+ E,
475
+ R,
476
+ Make extends (
477
+ requests: RouteMatcher<CTXMap, Rsc, Context>
478
+ ) => Effect<
479
+ { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
480
+ any,
481
+ Strict extends true ? GetSuccess<TLayers> : any
482
+ >,
483
+ THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
484
+ TLayers extends NonEmptyReadonlyArray<Layer.Layer.Any> | never[],
485
+ Strict extends boolean = true
486
+ >(
487
+ layers: TLayers,
488
+ make: Make & ((requests: RouteMatcher<CTXMap, Rsc, Context>) => Effect<THandlers, E, R>),
489
+ strict?: Strict
490
+ ): {
491
+ moduleName: ModuleName
492
+ Router: HttpRouter.HttpRouter.TagClass<
493
+ RouterShape<Rsc>,
494
+ `${ModuleName}Router`,
495
+ never,
496
+ | Exclude<Context, HttpRouter.HttpRouter.Provided>
497
+ | Exclude<
498
+ RPCRouteR<
499
+ { [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>> }[keyof Filter<Rsc>]
500
+ >,
501
+ HttpRouter.HttpRouter.Provided
502
+ >
503
+ >
504
+ routes: Layer.Layer<
505
+ RouterShape<Rsc>,
506
+ E | GetError<TLayers>,
507
+ | GetContext<TLayers>
508
+ // | GetContext<Layers> // elsewhere provided
509
+ | Exclude<R | RMW, GetSuccess<TLayers> | GetSuccess<Layers>>
510
+ >
511
+ }
512
+ <
513
+ E,
514
+ R,
515
+ Make extends (
516
+ requests: RouteMatcher<CTXMap, Rsc, Context>
517
+ ) => Effect<
518
+ { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
519
+ any,
520
+ Strict extends true ? GetSuccess<TLayers> : any
521
+ >,
522
+ THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
523
+ TLayers extends NonEmptyReadonlyArray<Layer.Layer.Any> | never[],
524
+ Strict extends boolean = true
525
+ >(
526
+ layers: TLayers,
527
+ make: Make & ((requests: RouteMatcher<CTXMap, Rsc, Context>) => Effect<THandlers, E, R>),
528
+ strict?: Strict
529
+ ): {
530
+ moduleName: ModuleName
531
+ Router: HttpRouter.HttpRouter.TagClass<
532
+ RouterShape<Rsc>,
533
+ `${ModuleName}Router`,
534
+ never,
535
+ | Exclude<Context, HttpRouter.HttpRouter.Provided>
536
+ | Exclude<
537
+ RPCRouteR<
538
+ { [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>> }[keyof Filter<Rsc>]
539
+ >,
540
+ HttpRouter.HttpRouter.Provided
541
+ >
542
+ >
543
+ routes: Layer.Layer<
544
+ RouterShape<Rsc>,
545
+ E | GetError<TLayers>,
546
+ | GetContext<TLayers>
547
+ // | GetContext<Layers> // elsewhere provided
548
+ | Exclude<R | RMW, GetSuccess<TLayers> | GetSuccess<Layers>>
549
+ >
550
+ }
551
+ <
552
+ E,
553
+ R,
554
+ Make extends (
555
+ requests: RouteMatcher<CTXMap, Rsc, Context>
556
+ ) => Effect<
557
+ { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
558
+ any,
559
+ Strict extends true ? GetSuccess<TLayers> : any
560
+ >,
561
+ THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
562
+ TLayers extends NonEmptyReadonlyArray<Layer.Layer.Any> | never[],
563
+ Strict extends boolean = true
564
+ >(
565
+ layers: TLayers,
566
+ make: Make & ((requests: RouteMatcher<CTXMap, Rsc, Context>) => Effect<THandlers, E, R>),
567
+ strict?: Strict
568
+ ): {
569
+ moduleName: ModuleName
570
+ Router: HttpRouter.HttpRouter.TagClass<
571
+ RouterShape<Rsc>,
572
+ `${ModuleName}Router`,
573
+ never,
574
+ | Exclude<Context, HttpRouter.HttpRouter.Provided>
575
+ | Exclude<
576
+ RPCRouteR<
577
+ { [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>> }[keyof Filter<Rsc>]
578
+ >,
579
+ HttpRouter.HttpRouter.Provided
580
+ >
581
+ >
582
+ routes: Layer.Layer<
583
+ RouterShape<Rsc>,
584
+ E | GetError<TLayers>,
585
+ | GetContext<TLayers>
586
+ // | GetContext<Layers> // elsewhere provided
587
+ | Exclude<R | RMW, GetSuccess<TLayers> | GetSuccess<Layers>>
588
+ >
589
+ }
590
+ <
591
+ E,
592
+ R,
593
+ THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]> },
594
+ TLayers extends NonEmptyReadonlyArray<Layer.Layer.Any> | never[],
595
+ Strict extends boolean = true
596
+ >(
597
+ layers: [
598
+ ...TLayers,
599
+ Layer.Layer<Exclude<R, GetSuccess<TLayers>>, never, never>
600
+ ],
601
+ make: (requests: RouteMatcher<CTXMap, Rsc, Context>) => Effect<THandlers, E, R>,
602
+ strict?: Strict
603
+ ): {
604
+ moduleName: ModuleName
605
+ Router: HttpRouter.HttpRouter.TagClass<
606
+ RouterShape<Rsc>,
607
+ `${ModuleName}Router`,
608
+ never,
609
+ | Exclude<Context, HttpRouter.HttpRouter.Provided>
610
+ | Exclude<
611
+ RPCRouteR<
612
+ { [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>> }[keyof Filter<Rsc>]
613
+ >,
614
+ HttpRouter.HttpRouter.Provided
615
+ >
616
+ >
617
+ routes: Layer.Layer<
618
+ RouterShape<Rsc>,
619
+ E | GetError<TLayers>,
620
+ // | GetContext<Layers> // elsewhere provided
621
+ | GetContext<TLayers>
622
+ | Exclude<R | RMW, GetSuccess<TLayers> | GetSuccess<Layers>>
623
+ >
624
+ }
625
+ } = f as any
544
626
 
545
627
  return effect
546
628
  }