@kubb/plugin-react-query 3.0.0-alpha.1 → 3.0.0-alpha.11

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/dist/chunk-7ZODZVKP.cjs +1427 -0
  2. package/dist/chunk-7ZODZVKP.cjs.map +1 -0
  3. package/dist/{chunk-5IL6M74X.js → chunk-ZYTZV43V.js} +295 -382
  4. package/dist/chunk-ZYTZV43V.js.map +1 -0
  5. package/dist/components.cjs +23 -14
  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 +2 -14
  10. package/dist/components.js.map +1 -1
  11. package/dist/{index-C9fwRDH7.d.cts → index-5kpkk-7M.d.cts} +7 -41
  12. package/dist/{index-C9fwRDH7.d.ts → index-5kpkk-7M.d.ts} +7 -41
  13. package/dist/index.cjs +67 -107
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.cts +1 -2
  16. package/dist/index.d.ts +1 -2
  17. package/dist/index.js +30 -77
  18. package/dist/index.js.map +1 -1
  19. package/package.json +15 -15
  20. package/src/OperationGenerator.tsx +0 -29
  21. package/src/__snapshots__/mutateAsQuery/updatePetWithForm.ts +14 -9
  22. package/src/__snapshots__/pathParamsTypeInline/getPetById.ts +14 -9
  23. package/src/__snapshots__/pathParamsTypeObject/getPetById.ts +14 -9
  24. package/src/__snapshots__/queryOptions/getPetById.ts +9 -5
  25. package/src/__snapshots__/queryWithoutQueryOptions/getPetById.ts +11 -7
  26. package/src/__snapshots__/variablesTypeMutate/deletePet.ts +6 -3
  27. package/src/components/Mutation.tsx +30 -30
  28. package/src/components/Query.tsx +74 -78
  29. package/src/components/QueryKey.tsx +13 -9
  30. package/src/components/QueryOptions.tsx +21 -13
  31. package/src/components/SchemaType.tsx +9 -5
  32. package/src/components/__snapshots__/gen/showPetById.ts +58 -48
  33. package/src/components/__snapshots__/gen/useCreatePets.ts +36 -36
  34. package/src/components/__snapshots__/gen/useCreatePetsMutate.ts +36 -37
  35. package/src/components/index.ts +0 -1
  36. package/src/plugin.ts +16 -34
  37. package/src/types.ts +0 -3
  38. package/dist/chunk-5IL6M74X.js.map +0 -1
  39. package/dist/chunk-JFX7DCS7.cjs +0 -1504
  40. package/dist/chunk-JFX7DCS7.cjs.map +0 -1
  41. package/src/__snapshots__/upload/UploadFile.ts +0 -67
  42. package/src/__snapshots__/uploadMutation/UploadFile.ts +0 -44
  43. package/src/components/Operations.tsx +0 -74
@@ -3,7 +3,6 @@ import { Oas } from '@kubb/plugin-oas/components'
3
3
  import { App, createRoot } from '@kubb/react'
4
4
 
5
5
  import { Mutation } from './components/Mutation.tsx'
6
- import { Operations } from './components/Operations.tsx'
7
6
  import { Query } from './components/Query.tsx'
8
7
  import { QueryKey } from './components/QueryKey.tsx'
9
8
  import { QueryOptions } from './components/QueryOptions.tsx'
@@ -14,34 +13,6 @@ import { QueryImports } from './components/QueryImports.tsx'
14
13
  import type { FileMeta, PluginReactQuery } from './types.ts'
15
14
 
16
15
  export class OperationGenerator extends Generator<PluginReactQuery['resolvedOptions'], PluginReactQuery, FileMeta> {
17
- async all(operations: Operation[]): OperationMethodResult<FileMeta> {
18
- const { pluginManager, oas, plugin, mode } = this.context
19
-
20
- const root = createRoot({
21
- logger: pluginManager.logger,
22
- })
23
-
24
- const templates = {
25
- mutation: Mutation.templates,
26
- query: Query.templates,
27
- queryOptions: QueryOptions.templates,
28
- queryKey: QueryKey.templates,
29
- queryImports: QueryImports.templates,
30
- operations: Operations.templates,
31
- ...this.options.templates,
32
- }
33
-
34
- root.render(
35
- <App pluginManager={pluginManager} plugin={plugin} mode={mode}>
36
- <Oas oas={oas} operations={operations} generator={this}>
37
- {templates.operations && <Operations.File templates={templates.operations} />}
38
- </Oas>
39
- </App>,
40
- )
41
-
42
- return root.files
43
- }
44
-
45
16
  async operation(operation: Operation, options: PluginReactQuery['resolvedOptions']): OperationMethodResult<FileMeta> {
46
17
  const { oas, pluginManager, plugin, mode } = this.context
47
18
 
@@ -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 UpdatePetWithFormClient = typeof client<UpdatePetWithFormMutationResponse, UpdatePetWithForm405, UpdatePetWithFormMutationRequest>;
6
- type UpdatePetWithForm = {
6
+
7
+ type UpdatePetWithForm = {
7
8
  data: UpdatePetWithFormMutationResponse;
8
9
  error: UpdatePetWithForm405;
9
10
  request: UpdatePetWithFormMutationRequest;
@@ -16,14 +17,17 @@ type UpdatePetWithForm = {
16
17
  return: Awaited<ReturnType<UpdatePetWithFormClient>>;
17
18
  };
18
19
  };
19
- export const UpdatePetWithFormQueryKey = ({ petId }: {
20
+
21
+ export const updatePetWithFormQueryKey = ({ petId }: {
20
22
  petId: UpdatePetWithFormPathParams["petId"];
21
23
  }, params?: UpdatePetWithForm["queryParams"], data?: UpdatePetWithForm["request"]) => [{ url: "/pet/:petId", params: { petId: petId } }, ...(params ? [params] : []), ...(data ? [data] : [])] as const;
22
- export type UpdatePetWithFormQueryKey = ReturnType<typeof UpdatePetWithFormQueryKey>;
23
- export function UpdatePetWithFormQueryOptions<TData = UpdatePetWithForm["response"], TQueryData = UpdatePetWithForm["response"]>({ petId }: {
24
+
25
+ export type UpdatePetWithFormQueryKey = ReturnType<typeof updatePetWithFormQueryKey>;
26
+
27
+ export function updatePetWithFormQueryOptions<TData = UpdatePetWithForm["response"], TQueryData = UpdatePetWithForm["response"]>({ petId }: {
24
28
  petId: UpdatePetWithFormPathParams["petId"];
25
29
  }, params?: UpdatePetWithForm["queryParams"], data?: UpdatePetWithForm["request"], options: UpdatePetWithForm["client"]["parameters"] = {}): WithRequired<UseBaseQueryOptions<UpdatePetWithForm["response"], UpdatePetWithForm["error"], TData, TQueryData>, "queryKey"> {
26
- const queryKey = UpdatePetWithFormQueryKey({ petId }, params, data);
30
+ const queryKey = updatePetWithFormQueryKey({ petId }, params, data);
27
31
  return {
28
32
  queryKey,
29
33
  queryFn: async () => {
@@ -38,7 +42,8 @@ export function UpdatePetWithFormQueryOptions<TData = UpdatePetWithForm["respons
38
42
  },
39
43
  };
40
44
  }
41
- /**
45
+
46
+ /**
42
47
  * @summary Updates a pet in the store with form data
43
48
  * @link /pet/:petId
44
49
  */
@@ -51,9 +56,9 @@ export function updatePetWithForm<TData = UpdatePetWithForm["response"], TQueryD
51
56
  queryKey: TQueryKey;
52
57
  } {
53
58
  const { query: queryOptions, client: clientOptions = {} } = options ?? {};
54
- const queryKey = queryOptions?.queryKey ?? UpdatePetWithFormQueryKey({ petId }, params, data);
59
+ const queryKey = queryOptions?.queryKey ?? updatePetWithFormQueryKey({ petId }, params, data);
55
60
  const query = useQuery<UpdatePetWithForm["data"], UpdatePetWithForm["error"], TData, any>({
56
- ...UpdatePetWithFormQueryOptions<TData, TQueryData>({ petId }, params, data, clientOptions),
61
+ ...updatePetWithFormQueryOptions<TData, TQueryData>({ petId }, params, data, clientOptions),
57
62
  queryKey,
58
63
  ...queryOptions
59
64
  }) as UseQueryResult<TData, UpdatePetWithForm["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,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
  }