SWR
Officialv5.7.0@kubb/plugin-swr
Options
Pass these options to pluginSwr(), all of them optional. Shared options link to Shared plugin options for details.
Options overview
| Option | Purpose | Default |
|---|---|---|
output | Where files are written: path, mode, barrel, banner, footer. | { path: 'hooks', barrel: { type: 'named' } } |
group | Split output by tag or path: type, name. | None |
client | Which registered client plugin the hooks call. | Auto-detected |
query | Configure the useSWR hooks, or turn them off. | { methods: ['GET', 'QUERY'], importPath: 'swr' } |
queryKey | Build the SWR key for each query hook. | Exported queryKeyTransformer |
mutation | Configure the useSWRMutation hooks, or turn them off. | { methods: ['POST', 'PUT', 'PATCH', 'DELETE'], importPath: 'swr/mutation' } |
mutationKey | Build the SWR key for each mutation hook. | Exported mutationKeyTransformer |
include | Keep only operations that match. | None |
exclude | Skip operations that match. | [] |
override | Apply different options per pattern. | [] |
resolver | Customize generated names and file paths. | resolverSwr |
macros | Rewrite AST nodes before printing. | [] |
Option details
client
Selects which registered client plugin the hooks call. A single registered client is auto-detected. Set client when several are registered.
| Type | 'fetch' | 'axios' | 'client' |
| Required | false |
@kubb/plugin-fetch.@kubb/plugin-axios.@kubb/plugin-client. Your client module must also export the RequestConfig and ResponseErrorConfig types.query
Configures the generated useSWR hooks. Pass an object to change the HTTP methods or import path, or false to skip query hook generation.
| Type | Partial<Query> | false |
| Required | false |
| Default | { methods: ['GET', 'QUERY'], importPath: 'swr' } |
query.methods
HTTP methods treated as queries. An operation whose method is in this list generates a useSWR hook instead of a mutation.
| Type | Array<string> |
| Required | false |
| Default | ['GET', 'QUERY'] |
Operations whose method is in neither query.methods nor mutation.methods get no hook. Keep 'QUERY' here when overriding the list, or QUERY operations are skipped.
query.importPath
Module that useSWR is imported from, emitted as import useSWR from '${importPath}'. Relative and absolute paths are used as written, with relative paths resolved against the generated file.
| Type | string |
| Required | false |
| Default | 'swr' |
queryKey
Builds the SWR key for each query hook. The callback receives the operation node, the active casing and variant: 'query' and returns the key array. Strings are copied into the generated code as written, so wrap a string literal in JSON.stringify(...).
| Type | (props: { node, casing, variant }) => Array<unknown> |
| Required | false |
| Default | Exported queryKeyTransformer |
queryKey: ({ node, variant }) => [JSON.stringify({ variant, operationId: node.operationId })]To extend the default key instead of replacing it, import queryKeyTransformer and spread its result. The default segments can change between releases, so spread them instead of reading single entries.
import { queryKeyTransformer } from '@kubb/plugin-swr'
queryKey: (props) => [JSON.stringify(props.node.operationId), ...queryKeyTransformer(props)]mutation
Configures the generated useSWRMutation hooks. Pass an object to change the HTTP methods or import path, or false to skip mutation hook generation.
| Type | Partial<Mutation> | false |
| Required | false |
| Default | { methods: ['POST', 'PUT', 'PATCH', 'DELETE'], importPath: 'swr/mutation' } |
mutation.methods
HTTP methods treated as mutations. An operation whose method is in this list generates a useSWRMutation hook instead of a query.
| Type | Array<string> |
| Required | false |
| Default | ['POST', 'PUT', 'PATCH', 'DELETE'] |
mutation.importPath
Module that useSWRMutation is imported from, emitted as import useSWRMutation from '${importPath}'. Relative and absolute paths are used as written, with relative paths resolved against the generated file.
| Type | string |
| Required | false |
| Default | 'swr/mutation' |
mutationKey
Builds the SWR key for each mutation hook. Like queryKey, the callback receives the operation node, the active casing and variant: 'mutation' and returns the key array. Strings are copied into the generated code as written, so wrap a string literal in JSON.stringify(...).
| Type | (props: { node, casing, variant }) => Array<unknown> |
| Required | false |
| Default | Exported mutationKeyTransformer |
Extend the default the same way with mutationKeyTransformer:
import { mutationKeyTransformer } from '@kubb/plugin-swr'
mutationKey: (props) => [JSON.stringify(props.node.operationId), ...mutationKeyTransformer(props)]resolver
Overrides generated file and symbol names. Omitted members keep resolverSwr. The shared members (name, file, imports) and the this context are described under resolver.
| Type | ResolverPatch<ResolverSwr> |
| Required | false |
type ResolverSwrPatch = {
name?(name: string): string
file?: {
baseName?(params: { name: string; extname: string }): string
path?(params: { baseName: string; output: Output }): string
}
imports?(options: ResolveImportsOptions): Array<ImportNode>
query?: {
name?(node: OperationNode): string // → 'useGetPetById'
optionsName?(node: OperationNode): string // → 'getPetByIdQueryOptions'
keyName?(node: OperationNode): string // → 'getPetByIdQueryKey'
keyTypeName?(node: OperationNode): string // → 'GetPetByIdQueryKey'
}
mutation?: {
name?(node: OperationNode): string // → 'useUpdatePet'
keyName?(node: OperationNode): string // → 'updatePetMutationKey'
keyTypeName?(node: OperationNode): string // → 'UpdatePetMutationKey'
argTypeName?(node: OperationNode): string // → 'UpdatePetMutationArg'
}
}