@@ -70,13 +70,51 @@ const SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [
70
70
dependency : '@sveltestack/svelte-query' ,
71
71
} ,
72
72
] ;
73
+ const SVELTE_QUERY_V4_DEPENDENCIES : GeneratorDependency [ ] = [
74
+ {
75
+ exports : [
76
+ { name : 'createQuery' , values : true } ,
77
+ { name : 'createInfiniteQuery' , values : true } ,
78
+ { name : 'createMutation' , values : true } ,
79
+ { name : 'CreateQueryOptions' } ,
80
+ {
81
+ name : 'CreateInfiniteQueryOptions' ,
82
+ } ,
83
+ { name : 'CreateMutationOptions' } ,
84
+ { name : 'QueryFunction' } ,
85
+ { name : 'MutationFunction' } ,
86
+ { name : 'CreateQueryResult' } ,
87
+ { name : 'CreateInfiniteQueryResult' } ,
88
+ { name : 'QueryKey' } ,
89
+ ] ,
90
+ dependency : '@tanstack/svelte-query' ,
91
+ } ,
92
+ ] ;
93
+
94
+ const isSvelteQueryV3 = ( packageJson : PackageJson | undefined ) => {
95
+ const hasVueQuery =
96
+ packageJson ?. dependencies ?. [ '@sveltestack/svelte-query' ] ??
97
+ packageJson ?. devDependencies ?. [ '@sveltestack/svelte-query' ] ;
98
+ const hasVueQueryV4 =
99
+ packageJson ?. dependencies ?. [ '@tanstack/svelte-query' ] ??
100
+ packageJson ?. devDependencies ?. [ '@tanstack/svelte-query' ] ;
101
+
102
+ return ! ! hasVueQuery && ! hasVueQueryV4 ;
103
+ } ;
73
104
74
105
export const getSvelteQueryDependencies : ClientDependenciesBuilder = (
75
- hasGlobalMutator : boolean ,
76
- ) => [
77
- ...( ! hasGlobalMutator ? AXIOS_DEPENDENCIES : [ ] ) ,
78
- ...SVELTE_QUERY_DEPENDENCIES ,
79
- ] ;
106
+ hasGlobalMutator ,
107
+ packageJson ,
108
+ ) => {
109
+ const hasSvelteQueryV3 = isSvelteQueryV3 ( packageJson ) ;
110
+
111
+ return [
112
+ ...( ! hasGlobalMutator ? AXIOS_DEPENDENCIES : [ ] ) ,
113
+ ...( hasSvelteQueryV3
114
+ ? SVELTE_QUERY_DEPENDENCIES
115
+ : SVELTE_QUERY_V4_DEPENDENCIES ) ,
116
+ ] ;
117
+ } ;
80
118
81
119
const REACT_QUERY_DEPENDENCIES : GeneratorDependency [ ] = [
82
120
{
@@ -425,21 +463,24 @@ const generateQueryArguments = ({
425
463
mutator,
426
464
isRequestOptions,
427
465
type,
466
+ hasSvelteQueryV4,
428
467
} : {
429
468
operationName : string ;
430
469
definitions : string ;
431
470
mutator ?: GeneratorMutator ;
432
471
isRequestOptions : boolean ;
433
472
type ?: QueryType ;
473
+ hasSvelteQueryV4 : boolean ;
434
474
} ) => {
435
475
const isMutatorHook = mutator ?. isHook ;
476
+ const prefix = ! hasSvelteQueryV4 ? 'Use' : 'Create' ;
436
477
const definition = type
437
- ? `Use ${ pascal ( type ) } Options<Awaited<ReturnType<${
478
+ ? `${ prefix } ${ pascal ( type ) } Options<Awaited<ReturnType<${
438
479
isMutatorHook
439
480
? `ReturnType<typeof use${ pascal ( operationName ) } Hook>`
440
481
: `typeof ${ operationName } `
441
482
} >>, TError, TData>`
442
- : `UseMutationOptions <Awaited<ReturnType<${
483
+ : `${ prefix } MutationOptions <Awaited<ReturnType<${
443
484
isMutatorHook
444
485
? `ReturnType<typeof use${ pascal ( operationName ) } Hook>`
445
486
: `typeof ${ operationName } `
@@ -463,24 +504,32 @@ const generateQueryReturnType = ({
463
504
type,
464
505
isMutatorHook,
465
506
operationName,
466
- packageJson,
507
+ hasVueQueryV4,
508
+ hasSvelteQueryV4,
467
509
} : {
468
510
outputClient : OutputClient | OutputClientFunc ;
469
511
type : QueryType ;
470
512
isMutatorHook ?: boolean ;
471
513
operationName : string ;
472
- packageJson ?: PackageJson ;
514
+ hasVueQueryV4 : boolean ;
515
+ hasSvelteQueryV4 : boolean ;
473
516
} ) => {
474
517
switch ( outputClient ) {
475
- case OutputClient . SVELTE_QUERY :
476
- return `Use${ pascal ( type ) } StoreResult<Awaited<ReturnType<${
477
- isMutatorHook
478
- ? `ReturnType<typeof use${ pascal ( operationName ) } Hook>`
479
- : `typeof ${ operationName } `
480
- } >>, TError, TData, QueryKey> & { queryKey: QueryKey }`;
518
+ case OutputClient . SVELTE_QUERY : {
519
+ if ( ! hasSvelteQueryV4 ) {
520
+ return `Use${ pascal ( type ) } StoreResult<Awaited<ReturnType<${
521
+ isMutatorHook
522
+ ? `ReturnType<typeof use${ pascal ( operationName ) } Hook>`
523
+ : `typeof ${ operationName } `
524
+ } >>, TError, TData, QueryKey> & { queryKey: QueryKey }`;
525
+ }
526
+
527
+ return `Create${ pascal (
528
+ type ,
529
+ ) } Result<TData, TError> & { queryKey: QueryKey }`;
530
+ }
481
531
case OutputClient . VUE_QUERY : {
482
- const hasVueQueryV3 = isVueQueryV3 ( packageJson ) ;
483
- if ( hasVueQueryV3 ) {
532
+ if ( ! hasVueQueryV4 ) {
484
533
return ` UseQueryReturnType<TData, TError, Use${ pascal (
485
534
type ,
486
535
) } Result<TData, TError>> & { queryKey: QueryKey }`;
@@ -600,7 +649,8 @@ const generateQueryImplementation = ({
600
649
isExactOptionalPropertyTypes,
601
650
hasSignal,
602
651
route,
603
- packageJson,
652
+ hasVueQueryV4,
653
+ hasSvelteQueryV4,
604
654
} : {
605
655
queryOption : {
606
656
name : string ;
@@ -623,7 +673,8 @@ const generateQueryImplementation = ({
623
673
isExactOptionalPropertyTypes : boolean ;
624
674
hasSignal : boolean ;
625
675
route : string ;
626
- packageJson ?: PackageJson ;
676
+ hasVueQueryV4 : boolean ;
677
+ hasSvelteQueryV4 : boolean ;
627
678
} ) => {
628
679
const queryProps = toObjectString ( props , 'implementation' ) ;
629
680
const httpFunctionProps = queryParam
@@ -634,14 +685,13 @@ const generateQueryImplementation = ({
634
685
. join ( ',' )
635
686
: queryProperties ;
636
687
637
- const hasVueQueryV4 =
638
- OutputClient . VUE_QUERY === outputClient && ! isVueQueryV3 ( packageJson ) ;
639
688
const returnType = generateQueryReturnType ( {
640
689
outputClient,
641
690
type,
642
691
isMutatorHook : mutator ?. isHook ,
643
692
operationName,
644
- packageJson,
693
+ hasVueQueryV4,
694
+ hasSvelteQueryV4,
645
695
} ) ;
646
696
647
697
let errorType = `AxiosError<${ response . definition . errors || 'unknown' } >` ;
@@ -664,6 +714,7 @@ const generateQueryImplementation = ({
664
714
mutator,
665
715
isRequestOptions,
666
716
type,
717
+ hasSvelteQueryV4,
667
718
} ) ;
668
719
669
720
const queryOptions = getQueryOptions ( {
@@ -684,14 +735,16 @@ const generateQueryImplementation = ({
684
735
hasSignal,
685
736
} ) ;
686
737
738
+ const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use' ;
739
+
687
740
return `
688
741
export type ${ pascal (
689
742
name ,
690
743
) } QueryResult = NonNullable<Awaited<ReturnType<${ dataType } >>>
691
744
export type ${ pascal ( name ) } QueryError = ${ errorType }
692
745
693
746
export const ${ camel (
694
- `use -${ name } ` ,
747
+ `${ operationPrefix } -${ name } ` ,
695
748
) } = <TData = Awaited<ReturnType<${ dataType } >>, TError = ${ errorType } >(\n ${ queryProps } ${ queryArguments } \n ): ${ returnType } => {
696
749
697
750
${ hookOptions }
@@ -734,7 +787,7 @@ export const ${camel(
734
787
: ''
735
788
}
736
789
737
- const query = ${ camel ( `use -${ type } ` ) } <Awaited<ReturnType<${
790
+ const query = ${ camel ( `${ operationPrefix } -${ type } ` ) } <Awaited<ReturnType<${
738
791
mutator ?. isHook
739
792
? `ReturnType<typeof use${ pascal ( operationName ) } Hook>`
740
793
: `typeof ${ operationName } `
@@ -778,6 +831,13 @@ const generateQueryHook = async (
778
831
const isExactOptionalPropertyTypes =
779
832
! ! context . tsconfig ?. compilerOptions ?. exactOptionalPropertyTypes ;
780
833
834
+ const hasVueQueryV4 =
835
+ OutputClient . VUE_QUERY === outputClient &&
836
+ ! isVueQueryV3 ( context . packageJson ) ;
837
+ const hasSvelteQueryV4 =
838
+ OutputClient . SVELTE_QUERY === outputClient &&
839
+ ! isSvelteQueryV3 ( context . packageJson ) ;
840
+
781
841
if (
782
842
verb === Verbs . GET ||
783
843
operationQueryOptions ?. useInfinite ||
@@ -870,7 +930,8 @@ const generateQueryHook = async (
870
930
queryOptionsMutator,
871
931
queryKeyMutator,
872
932
route,
873
- packageJson : context . packageJson ,
933
+ hasVueQueryV4,
934
+ hasSvelteQueryV4,
874
935
} ) ,
875
936
'' ,
876
937
) }
@@ -926,6 +987,8 @@ const generateQueryHook = async (
926
987
? `ReturnType<typeof use${ pascal ( operationName ) } Hook>`
927
988
: `typeof ${ operationName } ` ;
928
989
990
+ const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use' ;
991
+
929
992
const implementation = `
930
993
export type ${ pascal (
931
994
operationName ,
@@ -941,13 +1004,16 @@ const generateQueryHook = async (
941
1004
}
942
1005
export type ${ pascal ( operationName ) } MutationError = ${ errorType }
943
1006
944
- export const ${ camel ( `use-${ operationName } ` ) } = <TError = ${ errorType } ,
1007
+ export const ${ camel (
1008
+ `${ operationPrefix } -${ operationName } ` ,
1009
+ ) } = <TError = ${ errorType } ,
945
1010
${ ! definitions ? `TVariables = void,` : '' }
946
1011
TContext = unknown>(${ generateQueryArguments ( {
947
1012
operationName,
948
1013
definitions,
949
1014
mutator,
950
1015
isRequestOptions,
1016
+ hasSvelteQueryV4,
951
1017
} ) } ) => {
952
1018
${
953
1019
isRequestOptions
@@ -996,7 +1062,7 @@ const generateQueryHook = async (
996
1062
: ''
997
1063
}
998
1064
999
- return useMutation <Awaited<ReturnType<typeof ${ operationName } >>, TError, ${
1065
+ return ${ operationPrefix } Mutation <Awaited<ReturnType<typeof ${ operationName } >>, TError, ${
1000
1066
definitions ? `{${ definitions } }` : 'TVariables'
1001
1067
} , TContext>(${
1002
1068
! mutationOptionsMutator ? 'mutationFn, mutationOptions' : 'customOptions'
1 commit comments
vercel[bot] commentedon Feb 19, 2023
Successfully deployed to the following URLs:
orval – ./
orval.vercel.app
orval-git-master-anymaniax.vercel.app
orval-anymaniax.vercel.app
www.orval.dev
orval.dev