@kubb/plugin-react-query 3.0.0-alpha.0 → 3.0.0-alpha.10

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 (41) hide show
  1. package/dist/{chunk-JFX7DCS7.cjs → chunk-7ZODZVKP.cjs} +116 -150
  2. package/dist/chunk-7ZODZVKP.cjs.map +1 -0
  3. package/dist/{chunk-5IL6M74X.js → chunk-ZYTZV43V.js} +168 -202
  4. package/dist/chunk-ZYTZV43V.js.map +1 -0
  5. package/dist/components.cjs +2 -4
  6. package/dist/components.cjs.map +1 -1
  7. package/dist/components.d.cts +1 -2
  8. package/dist/components.d.ts +1 -2
  9. package/dist/components.js +1 -3
  10. package/dist/{index-yXskx3Td.d.cts → index-5kpkk-7M.d.cts} +7 -46
  11. package/dist/{index-yXskx3Td.d.ts → index-5kpkk-7M.d.ts} +7 -46
  12. package/dist/index.cjs +28 -64
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +1 -2
  15. package/dist/index.d.ts +1 -2
  16. package/dist/index.js +17 -53
  17. package/dist/index.js.map +1 -1
  18. package/package.json +15 -15
  19. package/src/OperationGenerator.tsx +0 -29
  20. package/src/__snapshots__/mutateAsQuery/updatePetWithForm.ts +14 -9
  21. package/src/__snapshots__/pathParamsTypeInline/getPetById.ts +14 -9
  22. package/src/__snapshots__/pathParamsTypeObject/getPetById.ts +14 -9
  23. package/src/__snapshots__/queryOptions/getPetById.ts +9 -5
  24. package/src/__snapshots__/queryWithoutQueryOptions/getPetById.ts +11 -7
  25. package/src/__snapshots__/variablesTypeMutate/deletePet.ts +6 -3
  26. package/src/components/Mutation.tsx +30 -30
  27. package/src/components/Query.tsx +74 -78
  28. package/src/components/QueryKey.tsx +13 -9
  29. package/src/components/QueryOptions.tsx +21 -13
  30. package/src/components/SchemaType.tsx +9 -5
  31. package/src/components/__snapshots__/gen/showPetById.ts +58 -48
  32. package/src/components/__snapshots__/gen/useCreatePets.ts +36 -36
  33. package/src/components/__snapshots__/gen/useCreatePetsMutate.ts +36 -37
  34. package/src/components/index.ts +0 -1
  35. package/src/plugin.ts +16 -34
  36. package/src/types.ts +0 -9
  37. package/dist/chunk-5IL6M74X.js.map +0 -1
  38. package/dist/chunk-JFX7DCS7.cjs.map +0 -1
  39. package/src/__snapshots__/upload/UploadFile.ts +0 -67
  40. package/src/__snapshots__/uploadMutation/UploadFile.ts +0 -44
  41. package/src/components/Operations.tsx +0 -74
@@ -1,9 +1,10 @@
1
1
  import client from "@kubb/plugin-client/client";
2
- import { useQuery } from "@tanstack/react-query";
3
2
  import type { UseBaseQueryOptions, UseQueryResult, QueryKey, WithRequired } from "@tanstack/react-query";
3
+ import { useQuery } from "@tanstack/react-query";
4
4
 
5
5
  type GetPetByIdClient = typeof client<GetPetByIdQueryResponse, GetPetById400 | GetPetById404, never>;
6
- type GetPetById = {
6
+
7
+ type GetPetById = {
7
8
  data: GetPetByIdQueryResponse;
8
9
  error: GetPetById400 | GetPetById404;
9
10
  request: never;
@@ -16,10 +17,13 @@ type GetPetById = {
16
17
  return: Awaited<ReturnType<GetPetByIdClient>>;
17
18
  };
18
19
  };
19
- export const GetPetByIdQueryKey = (petId: GetPetByIdPathParams["petId"]) => [{ url: "/pet/:petId", params: { petId: petId } }] as const;
20
- export type GetPetByIdQueryKey = ReturnType<typeof GetPetByIdQueryKey>;
21
- export function GetPetByIdQueryOptions<TData = GetPetById["response"], TQueryData = GetPetById["response"]>(petId: GetPetByIdPathParams["petId"], options: GetPetById["client"]["parameters"] = {}): WithRequired<UseBaseQueryOptions<GetPetById["response"], GetPetById["error"], TData, TQueryData>, "queryKey"> {
22
- const queryKey = GetPetByIdQueryKey(petId);
20
+
21
+ export const getPetByIdQueryKey = (petId: GetPetByIdPathParams["petId"]) => [{ url: "/pet/:petId", params: { petId: petId } }] as const;
22
+
23
+ export type GetPetByIdQueryKey = ReturnType<typeof getPetByIdQueryKey>;
24
+
25
+ export function getPetByIdQueryOptions<TData = GetPetById["response"], TQueryData = GetPetById["response"]>(petId: GetPetByIdPathParams["petId"], options: GetPetById["client"]["parameters"] = {}): WithRequired<UseBaseQueryOptions<GetPetById["response"], GetPetById["error"], TData, TQueryData>, "queryKey"> {
26
+ const queryKey = getPetByIdQueryKey(petId);
23
27
  return {
24
28
  queryKey,
25
29
  queryFn: async () => {
@@ -32,7 +36,8 @@ export function GetPetByIdQueryOptions<TData = GetPetById["response"], TQueryDat
32
36
  },
33
37
  };
34
38
  }
35
- /**
39
+
40
+ /**
36
41
  * @description Returns a single pet
37
42
  * @summary Find pet by ID
38
43
  * @link /pet/:petId
@@ -44,9 +49,9 @@ export function getPetById<TData = GetPetById["response"], TQueryData = GetPetBy
44
49
  queryKey: TQueryKey;
45
50
  } {
46
51
  const { query: queryOptions, client: clientOptions = {} } = options ?? {};
47
- const queryKey = queryOptions?.queryKey ?? GetPetByIdQueryKey(petId);
52
+ const queryKey = queryOptions?.queryKey ?? getPetByIdQueryKey(petId);
48
53
  const query = useQuery<GetPetById["data"], GetPetById["error"], TData, any>({
49
- ...GetPetByIdQueryOptions<TData, TQueryData>(petId, clientOptions),
54
+ ...getPetByIdQueryOptions<TData, TQueryData>(petId, clientOptions),
50
55
  queryKey,
51
56
  ...queryOptions
52
57
  }) as UseQueryResult<TData, GetPetById["error"]> & {
@@ -1,9 +1,10 @@
1
1
  import client from "@kubb/plugin-client/client";
2
- import { useQuery } from "@tanstack/react-query";
3
2
  import type { UseBaseQueryOptions, UseQueryResult, QueryKey, WithRequired } from "@tanstack/react-query";
3
+ import { useQuery } from "@tanstack/react-query";
4
4
 
5
5
  type GetPetByIdClient = typeof client<GetPetByIdQueryResponse, GetPetById400 | GetPetById404, never>;
6
- type GetPetById = {
6
+
7
+ type GetPetById = {
7
8
  data: GetPetByIdQueryResponse;
8
9
  error: GetPetById400 | GetPetById404;
9
10
  request: never;
@@ -16,14 +17,17 @@ type GetPetById = {
16
17
  return: Awaited<ReturnType<GetPetByIdClient>>;
17
18
  };
18
19
  };
19
- export const GetPetByIdQueryKey = ({ petId }: {
20
+
21
+ export const getPetByIdQueryKey = ({ petId }: {
20
22
  petId: GetPetByIdPathParams["petId"];
21
23
  }) => [{ url: "/pet/:petId", params: { petId: petId } }] as const;
22
- export type GetPetByIdQueryKey = ReturnType<typeof GetPetByIdQueryKey>;
23
- export function GetPetByIdQueryOptions<TData = GetPetById["response"], TQueryData = GetPetById["response"]>({ petId }: {
24
+
25
+ export type GetPetByIdQueryKey = ReturnType<typeof getPetByIdQueryKey>;
26
+
27
+ export function getPetByIdQueryOptions<TData = GetPetById["response"], TQueryData = GetPetById["response"]>({ petId }: {
24
28
  petId: GetPetByIdPathParams["petId"];
25
29
  }, options: GetPetById["client"]["parameters"] = {}): WithRequired<UseBaseQueryOptions<GetPetById["response"], GetPetById["error"], TData, TQueryData>, "queryKey"> {
26
- const queryKey = GetPetByIdQueryKey({ petId });
30
+ const queryKey = getPetByIdQueryKey({ petId });
27
31
  return {
28
32
  queryKey,
29
33
  queryFn: async () => {
@@ -36,7 +40,8 @@ export function GetPetByIdQueryOptions<TData = GetPetById["response"], TQueryDat
36
40
  },
37
41
  };
38
42
  }
39
- /**
43
+
44
+ /**
40
45
  * @description Returns a single pet
41
46
  * @summary Find pet by ID
42
47
  * @link /pet/:petId
@@ -50,9 +55,9 @@ export function getPetById<TData = GetPetById["response"], TQueryData = GetPetBy
50
55
  queryKey: TQueryKey;
51
56
  } {
52
57
  const { query: queryOptions, client: clientOptions = {} } = options ?? {};
53
- const queryKey = queryOptions?.queryKey ?? GetPetByIdQueryKey({ petId });
58
+ const queryKey = queryOptions?.queryKey ?? getPetByIdQueryKey({ petId });
54
59
  const query = useQuery<GetPetById["data"], GetPetById["error"], TData, any>({
55
- ...GetPetByIdQueryOptions<TData, TQueryData>({ petId }, clientOptions),
60
+ ...getPetByIdQueryOptions<TData, TQueryData>({ petId }, clientOptions),
56
61
  queryKey,
57
62
  ...queryOptions
58
63
  }) as UseQueryResult<TData, GetPetById["error"]> & {
@@ -2,7 +2,8 @@ import client from "@kubb/plugin-client/client";
2
2
  import type { UseBaseQueryOptions, QueryKey, WithRequired } from "@tanstack/react-query";
3
3
 
4
4
  type GetPetByIdClient = typeof client<GetPetByIdQueryResponse, GetPetById400 | GetPetById404, never>;
5
- type GetPetById = {
5
+
6
+ type GetPetById = {
6
7
  data: GetPetByIdQueryResponse;
7
8
  error: GetPetById400 | GetPetById404;
8
9
  request: never;
@@ -15,14 +16,17 @@ type GetPetById = {
15
16
  return: Awaited<ReturnType<GetPetByIdClient>>;
16
17
  };
17
18
  };
18
- export const GetPetByIdQueryKey = ({ petId }: {
19
+
20
+ export const getPetByIdQueryKey = ({ petId }: {
19
21
  petId: GetPetByIdPathParams["petId"];
20
22
  }) => [{ url: "/pet/:petId", params: { petId: petId } }] as const;
21
- export type GetPetByIdQueryKey = ReturnType<typeof GetPetByIdQueryKey>;
22
- export function GetPetByIdQueryOptions<TData = GetPetById["response"], TQueryData = GetPetById["response"]>({ petId }: {
23
+
24
+ export type GetPetByIdQueryKey = ReturnType<typeof getPetByIdQueryKey>;
25
+
26
+ export function getPetByIdQueryOptions<TData = GetPetById["response"], TQueryData = GetPetById["response"]>({ petId }: {
23
27
  petId: GetPetByIdPathParams["petId"];
24
28
  }, options: GetPetById["client"]["parameters"] = {}): WithRequired<UseBaseQueryOptions<GetPetById["response"], GetPetById["error"], TData, TQueryData>, "queryKey"> {
25
- const queryKey = GetPetByIdQueryKey({ petId });
29
+ const queryKey = getPetByIdQueryKey({ petId });
26
30
  return {
27
31
  queryKey,
28
32
  queryFn: async () => {
@@ -1,9 +1,10 @@
1
1
  import client from "@kubb/plugin-client/client";
2
- import { useQuery } from "@tanstack/react-query";
3
2
  import type { UseBaseQueryOptions, UseQueryResult, QueryKey } from "@tanstack/react-query";
3
+ import { useQuery } from "@tanstack/react-query";
4
4
 
5
5
  type GetPetByIdClient = typeof client<GetPetByIdQueryResponse, GetPetById400 | GetPetById404, never>;
6
- type GetPetById = {
6
+
7
+ type GetPetById = {
7
8
  data: GetPetByIdQueryResponse;
8
9
  error: GetPetById400 | GetPetById404;
9
10
  request: never;
@@ -16,11 +17,14 @@ type GetPetById = {
16
17
  return: Awaited<ReturnType<GetPetByIdClient>>;
17
18
  };
18
19
  };
19
- export const GetPetByIdQueryKey = ({ petId }: {
20
+
21
+ export const getPetByIdQueryKey = ({ petId }: {
20
22
  petId: GetPetByIdPathParams["petId"];
21
23
  }) => [{ url: "/pet/:petId", params: { petId: petId } }] as const;
22
- export type GetPetByIdQueryKey = ReturnType<typeof GetPetByIdQueryKey>;
23
- /**
24
+
25
+ export type GetPetByIdQueryKey = ReturnType<typeof getPetByIdQueryKey>;
26
+
27
+ /**
24
28
  * @description Returns a single pet
25
29
  * @summary Find pet by ID
26
30
  * @link /pet/:petId
@@ -34,9 +38,9 @@ export function getPetById<TData = GetPetById["response"], TQueryData = GetPetBy
34
38
  queryKey: TQueryKey;
35
39
  } {
36
40
  const { query: queryOptions, client: clientOptions = {} } = options ?? {};
37
- const queryKey = queryOptions?.queryKey ?? GetPetByIdQueryKey({ petId });
41
+ const queryKey = queryOptions?.queryKey ?? getPetByIdQueryKey({ petId });
38
42
  const query = useQuery<GetPetById["data"], GetPetById["error"], TData, any>({
39
- ...GetPetByIdQueryOptions<TData, TQueryData>({ petId }, clientOptions),
43
+ ...getPetByIdQueryOptions<TData, TQueryData>({ petId }, clientOptions),
40
44
  queryKey,
41
45
  ...queryOptions
42
46
  }) as UseQueryResult<TData, GetPetById["error"]> & {
@@ -2,7 +2,8 @@ import client from "@kubb/plugin-client/client";
2
2
  import type { QueryKey } from "@tanstack/react-query";
3
3
 
4
4
  type DeletePetClient = typeof client<DeletePetMutationResponse, DeletePet400, never>;
5
- type DeletePet = {
5
+
6
+ type DeletePet = {
6
7
  data: DeletePetMutationResponse;
7
8
  error: DeletePet400;
8
9
  request: never;
@@ -15,7 +16,9 @@ type DeletePet = {
15
16
  return: Awaited<ReturnType<DeletePetClient>>;
16
17
  };
17
18
  };
18
- export const DeletePetQueryKey = ({ petId }: {
19
+
20
+ export const deletePetQueryKey = ({ petId }: {
19
21
  petId: DeletePetPathParams["petId"];
20
22
  }) => [{ url: "/pet/:petId", params: { petId: petId } }] as const;
21
- export type DeletePetQueryKey = ReturnType<typeof DeletePetQueryKey>;
23
+
24
+ export type DeletePetQueryKey = ReturnType<typeof deletePetQueryKey>;
@@ -2,7 +2,7 @@ import transformers from '@kubb/core/transformers'
2
2
  import { FunctionParams, URLPath } from '@kubb/core/utils'
3
3
  import { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'
4
4
  import { getASTParams, getComments } from '@kubb/plugin-oas/utils'
5
- import { File, Function, Parser, useApp } from '@kubb/react'
5
+ import { File, Function, useApp } from '@kubb/react'
6
6
  import { pluginTsName } from '@kubb/plugin-ts'
7
7
 
8
8
  import { SchemaType } from './SchemaType.tsx'
@@ -82,8 +82,9 @@ function Template({ name, params, mutateParams, JSDoc, client, hook, dataReturnT
82
82
  : undefined
83
83
 
84
84
  return (
85
- <Function export name={name} params={params} JSDoc={JSDoc}>
86
- {`
85
+ <File.Source name={name} isExportable isIndexable>
86
+ <Function export name={name} params={params} JSDoc={JSDoc}>
87
+ {`
87
88
  const { mutation: mutationOptions, client: clientOptions = {} } = options ?? {}
88
89
 
89
90
  return ${hook.name}({
@@ -98,7 +99,8 @@ function Template({ name, params, mutateParams, JSDoc, client, hook, dataReturnT
98
99
  },
99
100
  ...mutationOptions
100
101
  })`}
101
- </Function>
102
+ </Function>
103
+ </File.Source>
102
104
  )
103
105
  }
104
106
 
@@ -124,32 +126,30 @@ function RootTemplate({ children }: RootTemplateProps) {
124
126
  const fileType = getFile(operation, { pluginKey: [pluginTsName] })
125
127
 
126
128
  return (
127
- <Parser language="typescript">
128
- <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>
129
- <File.Import name={'client'} path={importPath} />
130
- <File.Import name={['ResponseConfig']} path={importPath} isTypeOnly />
131
- <File.Import
132
- name={[
133
- schemas.request?.name,
134
- schemas.response.name,
135
- schemas.pathParams?.name,
136
- schemas.queryParams?.name,
137
- schemas.headerParams?.name,
138
- ...(schemas.errors?.map((error) => error.name) || []),
139
- ].filter(Boolean)}
140
- root={file.path}
141
- path={fileType.path}
142
- isTypeOnly
143
- />
144
- <File.Import
145
- name={['UseMutationOptions', 'UseMutationResult']}
146
- path={typeof mutate !== 'boolean' && mutate.importPath ? mutate.importPath : '@tanstack/react-query'}
147
- isTypeOnly
148
- />
149
- <File.Import name={['useMutation']} path={typeof mutate !== 'boolean' && mutate.importPath ? mutate.importPath : '@tanstack/react-query'} />
150
- <File.Source>{children}</File.Source>
151
- </File>
152
- </Parser>
129
+ <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>
130
+ <File.Import name={'client'} path={importPath} />
131
+ <File.Import name={['ResponseConfig']} path={importPath} isTypeOnly />
132
+ <File.Import
133
+ name={[
134
+ schemas.request?.name,
135
+ schemas.response.name,
136
+ schemas.pathParams?.name,
137
+ schemas.queryParams?.name,
138
+ schemas.headerParams?.name,
139
+ ...(schemas.errors?.map((error) => error.name) || []),
140
+ ].filter(Boolean)}
141
+ root={file.path}
142
+ path={fileType.path}
143
+ isTypeOnly
144
+ />
145
+ <File.Import
146
+ name={['UseMutationOptions', 'UseMutationResult']}
147
+ path={typeof mutate !== 'boolean' && mutate.importPath ? mutate.importPath : '@tanstack/react-query'}
148
+ isTypeOnly
149
+ />
150
+ <File.Import name={['useMutation']} path={typeof mutate !== 'boolean' && mutate.importPath ? mutate.importPath : '@tanstack/react-query'} />
151
+ {children}
152
+ </File>
153
153
  )
154
154
  }
155
155
 
@@ -1,7 +1,7 @@
1
1
  import { PackageManager } from '@kubb/core'
2
2
  import transformers from '@kubb/core/transformers'
3
3
  import { FunctionParams, URLPath } from '@kubb/core/utils'
4
- import { Parser, File, Function, useApp } from '@kubb/react'
4
+ import { File, Function, useApp } from '@kubb/react'
5
5
  import { pluginTsName } from '@kubb/plugin-ts'
6
6
  import { pluginZodName } from '@kubb/plugin-zod'
7
7
  import { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'
@@ -56,7 +56,7 @@ function Template({ name, generics, returnType, params, JSDoc, hook, infinite }:
56
56
 
57
57
  if (isV5) {
58
58
  return (
59
- <>
59
+ <File.Source name={name} isExportable isIndexable>
60
60
  <Function name={name} export generics={generics} returnType={resolvedReturnType} params={params} JSDoc={JSDoc}>
61
61
  {`
62
62
  const { query: queryOptions, client: clientOptions = {} } = options ?? {}
@@ -74,12 +74,12 @@ function Template({ name, generics, returnType, params, JSDoc, hook, infinite }:
74
74
 
75
75
  `}
76
76
  </Function>
77
- </>
77
+ </File.Source>
78
78
  )
79
79
  }
80
80
 
81
81
  return (
82
- <>
82
+ <File.Source name={name} isExportable isIndexable>
83
83
  <Function name={name} export generics={generics} returnType={resolvedReturnType} params={params} JSDoc={JSDoc}>
84
84
  {`
85
85
  const { query: queryOptions, client: clientOptions = {} } = options ?? {}
@@ -97,7 +97,7 @@ function Template({ name, generics, returnType, params, JSDoc, hook, infinite }:
97
97
 
98
98
  `}
99
99
  </Function>
100
- </>
100
+ </File.Source>
101
101
  )
102
102
  }
103
103
 
@@ -547,80 +547,76 @@ Query.File = function ({ templates }: FileProps): ReactNode {
547
547
  }
548
548
 
549
549
  return (
550
- <Parser language="typescript">
551
- <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>
552
- {parser === 'zod' && <File.Import name={[zodSchemas.response?.name]} root={file.path} path={fileZodSchemas.path} />}
553
- <File.Import name={'client'} path={importPath} />
554
- <File.Import name={['ResponseConfig']} path={importPath} isTypeOnly />
555
- <File.Import
556
- name={[
557
- schemas.request?.name,
558
- schemas.response.name,
559
- schemas.pathParams?.name,
560
- schemas.queryParams?.name,
561
- schemas.headerParams?.name,
562
- ...(schemas.errors?.map((error) => error.name) || []),
563
- ].filter(Boolean)}
564
- root={file.path}
565
- path={fileType.path}
566
- isTypeOnly
567
- />
550
+ <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>
551
+ {parser === 'zod' && <File.Import name={[zodSchemas.response?.name]} root={file.path} path={fileZodSchemas.path} />}
552
+ <File.Import name={'client'} path={importPath} />
553
+ <File.Import name={['ResponseConfig']} path={importPath} isTypeOnly />
554
+ <File.Import
555
+ name={[
556
+ schemas.request?.name,
557
+ schemas.response.name,
558
+ schemas.pathParams?.name,
559
+ schemas.queryParams?.name,
560
+ schemas.headerParams?.name,
561
+ ...(schemas.errors?.map((error) => error.name) || []),
562
+ ].filter(Boolean)}
563
+ root={file.path}
564
+ path={fileType.path}
565
+ isTypeOnly
566
+ />
568
567
 
569
- <QueryImports hookPath={typeof query !== 'boolean' ? query.importPath : undefined} Template={Import} isInfinite={false} isSuspense={false} />
570
- {!!infinite && (
571
- <QueryImports hookPath={typeof query !== 'boolean' ? query.importPath : undefined} Template={Import} isInfinite={true} isSuspense={false} />
572
- )}
573
- {!!suspense && isV5 && (
574
- <QueryImports hookPath={typeof query !== 'boolean' ? query.importPath : undefined} Template={Import} isInfinite={false} isSuspense={true} />
575
- )}
576
- <File.Source>
577
- <SchemaType />
578
- <Query
579
- factory={factory}
580
- Template={Template}
581
- QueryKeyTemplate={QueryKeyTemplate}
582
- QueryOptionsTemplate={QueryOptionsTemplate}
583
- infinite={false}
584
- suspense={false}
585
- query={query}
586
- queryOptions={queryOptions}
587
- hookName={importNames.query['react'].hookName}
588
- resultType={importNames.query['react'].resultType}
589
- optionsType={importNames.query['react'].optionsType}
590
- />
591
- {!!infinite && (
592
- <Query
593
- factory={factory}
594
- Template={Template}
595
- QueryKeyTemplate={QueryKeyTemplate}
596
- QueryOptionsTemplate={QueryOptionsTemplate}
597
- infinite={infinite}
598
- suspense={false}
599
- query={query}
600
- queryOptions={queryOptions}
601
- hookName={importNames.queryInfinite['react'].hookName}
602
- resultType={importNames.queryInfinite['react'].resultType}
603
- optionsType={importNames.queryInfinite['react'].optionsType}
604
- />
605
- )}
606
- {!!suspense && isV5 && (
607
- <Query
608
- factory={factory}
609
- Template={Template}
610
- QueryKeyTemplate={QueryKeyTemplate}
611
- QueryOptionsTemplate={QueryOptionsTemplate}
612
- infinite={false}
613
- suspense={suspense}
614
- query={query}
615
- queryOptions={queryOptions}
616
- hookName={importNames.querySuspense['react'].hookName}
617
- resultType={importNames.querySuspense['react'].resultType}
618
- optionsType={importNames.querySuspense['react'].optionsType}
619
- />
620
- )}
621
- </File.Source>
622
- </File>
623
- </Parser>
568
+ <QueryImports hookPath={typeof query !== 'boolean' ? query.importPath : undefined} Template={Import} isInfinite={false} isSuspense={false} />
569
+ {!!infinite && (
570
+ <QueryImports hookPath={typeof query !== 'boolean' ? query.importPath : undefined} Template={Import} isInfinite={true} isSuspense={false} />
571
+ )}
572
+ {!!suspense && isV5 && (
573
+ <QueryImports hookPath={typeof query !== 'boolean' ? query.importPath : undefined} Template={Import} isInfinite={false} isSuspense={true} />
574
+ )}
575
+ <SchemaType />
576
+ <Query
577
+ factory={factory}
578
+ Template={Template}
579
+ QueryKeyTemplate={QueryKeyTemplate}
580
+ QueryOptionsTemplate={QueryOptionsTemplate}
581
+ infinite={false}
582
+ suspense={false}
583
+ query={query}
584
+ queryOptions={queryOptions}
585
+ hookName={importNames.query['react'].hookName}
586
+ resultType={importNames.query['react'].resultType}
587
+ optionsType={importNames.query['react'].optionsType}
588
+ />
589
+ {!!infinite && (
590
+ <Query
591
+ factory={factory}
592
+ Template={Template}
593
+ QueryKeyTemplate={QueryKeyTemplate}
594
+ QueryOptionsTemplate={QueryOptionsTemplate}
595
+ infinite={infinite}
596
+ suspense={false}
597
+ query={query}
598
+ queryOptions={queryOptions}
599
+ hookName={importNames.queryInfinite['react'].hookName}
600
+ resultType={importNames.queryInfinite['react'].resultType}
601
+ optionsType={importNames.queryInfinite['react'].optionsType}
602
+ />
603
+ )}
604
+ {!!suspense && isV5 && (
605
+ <Query
606
+ factory={factory}
607
+ Template={Template}
608
+ QueryKeyTemplate={QueryKeyTemplate}
609
+ QueryOptionsTemplate={QueryOptionsTemplate}
610
+ infinite={false}
611
+ suspense={suspense}
612
+ query={query}
613
+ queryOptions={queryOptions}
614
+ hookName={importNames.querySuspense['react'].hookName}
615
+ resultType={importNames.querySuspense['react'].resultType}
616
+ optionsType={importNames.querySuspense['react'].optionsType}
617
+ />
618
+ )}
619
+ </File>
624
620
  )
625
621
  }
626
622
 
@@ -1,12 +1,12 @@
1
1
  import { FunctionParams, URLPath } from '@kubb/core/utils'
2
- import { Function, Type, useApp } from '@kubb/react'
3
2
  import { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'
4
3
  import { getASTParams } from '@kubb/plugin-oas/utils'
4
+ import { File, Function, Type, useApp } from '@kubb/react'
5
5
 
6
6
  import { isRequired } from '@kubb/oas'
7
+ import { pluginTsName } from '@kubb/plugin-ts'
7
8
  import type { ReactNode } from 'react'
8
9
  import type { PluginReactQuery } from '../types'
9
- import { pluginTsName } from '@kubb/plugin-ts'
10
10
 
11
11
  type TemplateProps = {
12
12
  /**
@@ -41,13 +41,17 @@ type TemplateProps = {
41
41
  function Template({ name, typeName, params, generics, returnType, JSDoc, keys }: TemplateProps): ReactNode {
42
42
  return (
43
43
  <>
44
- <Function.Arrow name={name} export generics={generics} params={params} returnType={returnType} singleLine JSDoc={JSDoc}>
45
- {`[${keys}] as const`}
46
- </Function.Arrow>
47
-
48
- <Type name={typeName} export>
49
- {`ReturnType<typeof ${name}>`}
50
- </Type>
44
+ <File.Source name={name} isExportable isIndexable>
45
+ <Function.Arrow name={name} export generics={generics} params={params} returnType={returnType} singleLine JSDoc={JSDoc}>
46
+ {`[${keys}] as const`}
47
+ </Function.Arrow>
48
+ </File.Source>
49
+
50
+ <File.Source name={typeName} isExportable isIndexable isTypeOnly>
51
+ <Type name={typeName} export>
52
+ {`ReturnType<typeof ${name}>`}
53
+ </Type>
54
+ </File.Source>
51
55
  </>
52
56
  )
53
57
  }
@@ -3,7 +3,7 @@ import transformers from '@kubb/core/transformers'
3
3
  import { FunctionParams, URLPath } from '@kubb/core/utils'
4
4
  import { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'
5
5
  import { getASTParams } from '@kubb/plugin-oas/utils'
6
- import { Function, useApp } from '@kubb/react'
6
+ import { Function, useApp, File } from '@kubb/react'
7
7
  import { pluginZodName } from '@kubb/plugin-zod'
8
8
 
9
9
  import { isRequired } from '@kubb/oas'
@@ -123,8 +123,9 @@ function Template({ name, params, generics, returnType, JSDoc, hook, client, inf
123
123
  if (infinite) {
124
124
  if (isV5) {
125
125
  return (
126
- <Function name={name} export params={params} JSDoc={JSDoc}>
127
- {`
126
+ <File.Source name={name} isExportable isIndexable>
127
+ <Function name={name} export params={params} JSDoc={JSDoc}>
128
+ {`
128
129
  const queryKey = ${hook.queryKey}
129
130
 
130
131
  return infiniteQueryOptions({
@@ -142,13 +143,15 @@ function Template({ name, params, generics, returnType, JSDoc, hook, client, inf
142
143
  })
143
144
 
144
145
  `}
145
- </Function>
146
+ </Function>
147
+ </File.Source>
146
148
  )
147
149
  }
148
150
 
149
151
  return (
150
- <Function name={name} export generics={generics} returnType={returnType} params={params} JSDoc={JSDoc}>
151
- {`
152
+ <File.Source name={name} isExportable isIndexable>
153
+ <Function name={name} export generics={generics} returnType={returnType} params={params} JSDoc={JSDoc}>
154
+ {`
152
155
  const queryKey = ${hook.queryKey}
153
156
 
154
157
  return {
@@ -166,14 +169,16 @@ function Template({ name, params, generics, returnType, JSDoc, hook, client, inf
166
169
  }
167
170
 
168
171
  `}
169
- </Function>
172
+ </Function>
173
+ </File.Source>
170
174
  )
171
175
  }
172
176
 
173
177
  if (isV5) {
174
178
  return (
175
- <Function name={name} export params={params} JSDoc={JSDoc}>
176
- {`
179
+ <File.Source name={name} isExportable isIndexable>
180
+ <Function name={name} export params={params} JSDoc={JSDoc}>
181
+ {`
177
182
  const queryKey = ${hook.queryKey}
178
183
 
179
184
  return queryOptions({
@@ -191,13 +196,15 @@ function Template({ name, params, generics, returnType, JSDoc, hook, client, inf
191
196
  })
192
197
 
193
198
  `}
194
- </Function>
199
+ </Function>
200
+ </File.Source>
195
201
  )
196
202
  }
197
203
 
198
204
  return (
199
- <Function name={name} export generics={generics} returnType={returnType} params={params} JSDoc={JSDoc}>
200
- {`
205
+ <File.Source name={name} isExportable isIndexable>
206
+ <Function name={name} export generics={generics} returnType={returnType} params={params} JSDoc={JSDoc}>
207
+ {`
201
208
  const queryKey = ${hook.queryKey}
202
209
 
203
210
  return {
@@ -215,7 +222,8 @@ function Template({ name, params, generics, returnType, JSDoc, hook, client, inf
215
222
  }
216
223
 
217
224
  `}
218
- </Function>
225
+ </Function>
226
+ </File.Source>
219
227
  )
220
228
  }
221
229
 
@@ -1,5 +1,5 @@
1
1
  import { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'
2
- import { Type, useApp } from '@kubb/react'
2
+ import { File, Type, useApp } from '@kubb/react'
3
3
 
4
4
  import type { ReactNode } from 'react'
5
5
  import type { PluginReactQuery } from '../types.ts'
@@ -32,9 +32,12 @@ export function SchemaType(): ReactNode {
32
32
 
33
33
  return (
34
34
  <>
35
- <Type name={clientType}>{`typeof client<${TResponse}, ${TError}, ${isFormData ? 'FormData' : TRequest}>`}</Type>
36
- <Type name={factoryName}>
37
- {`
35
+ <File.Source name={clientType} isTypeOnly>
36
+ <Type name={clientType}>{`typeof client<${TResponse}, ${TError}, ${isFormData ? 'FormData' : TRequest}>`}</Type>
37
+ </File.Source>
38
+ <File.Source name={factoryName} isTypeOnly>
39
+ <Type name={factoryName}>
40
+ {`
38
41
  {
39
42
  data: ${TData}
40
43
  error: ${TError}
@@ -49,7 +52,8 @@ export function SchemaType(): ReactNode {
49
52
  }
50
53
  }
51
54
  `}
52
- </Type>
55
+ </Type>
56
+ </File.Source>
53
57
  </>
54
58
  )
55
59
  }