@kubb/plugin-react-query
Version:
React Query hooks generator plugin for Kubb, creating type-safe API client hooks from OpenAPI specifications for React applications.
1,038 lines (1,017 loc) • 38 kB
JavaScript
//#region rolldown:runtime
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
key = keys[i];
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: ((k) => from[k]).bind(null, key),
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
//#endregion
let __kubb_oas = require("@kubb/oas");
__kubb_oas = __toESM(__kubb_oas);
let __kubb_plugin_oas_utils = require("@kubb/plugin-oas/utils");
__kubb_plugin_oas_utils = __toESM(__kubb_plugin_oas_utils);
let __kubb_react = require("@kubb/react");
__kubb_react = __toESM(__kubb_react);
let __kubb_core_utils = require("@kubb/core/utils");
__kubb_core_utils = __toESM(__kubb_core_utils);
let __kubb_react_jsx_runtime = require("@kubb/react/jsx-runtime");
__kubb_react_jsx_runtime = __toESM(__kubb_react_jsx_runtime);
let __kubb_plugin_client_components = require("@kubb/plugin-client/components");
__kubb_plugin_client_components = __toESM(__kubb_plugin_client_components);
//#region src/components/QueryKey.tsx
function getParams$8({ pathParamsType, paramsCasing, typeSchemas }) {
return __kubb_react.FunctionParams.factory({
pathParams: {
mode: pathParamsType === "object" ? "object" : "inlineSpread",
children: (0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
})
},
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0
});
}
const getTransformer$1 = ({ operation, schemas, casing }) => {
return [
new __kubb_core_utils.URLPath(operation.path, { casing }).toObject({
type: "path",
stringify: true
}),
schemas.queryParams?.name ? "...(params ? [params] : [])" : void 0,
schemas.request?.name ? "...(data ? [data] : [])" : void 0
].filter(Boolean);
};
function QueryKey({ name, typeSchemas, paramsCasing, pathParamsType, operation, typeName, transformer = getTransformer$1 }) {
const params = getParams$8({
pathParamsType,
typeSchemas,
paramsCasing
});
const keys = transformer({
operation,
schemas: typeSchemas,
casing: paramsCasing
});
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsxs)(__kubb_react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function.Arrow, {
name,
export: true,
params: params.toConstructor(),
singleLine: true,
children: `[${keys.join(", ")}] as const`
})
}), /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name: typeName,
isExportable: true,
isIndexable: true,
isTypeOnly: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Type, {
name: typeName,
export: true,
children: `ReturnType<typeof ${name}>`
})
})] });
}
QueryKey.getParams = getParams$8;
QueryKey.getTransformer = getTransformer$1;
//#endregion
//#region src/components/QueryOptions.tsx
function getParams$7({ paramsType, paramsCasing, pathParamsType, typeSchemas }) {
if (paramsType === "object") return __kubb_react.FunctionParams.factory({
data: {
mode: "object",
children: {
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
}
},
config: {
type: typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }",
default: "{}"
}
});
return __kubb_react.FunctionParams.factory({
pathParams: typeSchemas.pathParams?.name ? {
mode: pathParamsType === "object" ? "object" : "inlineSpread",
children: (0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
optional: (0, __kubb_oas.isOptional)(typeSchemas.pathParams?.schema)
} : void 0,
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0,
config: {
type: typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }",
default: "{}"
}
});
}
function QueryOptions({ name, clientName, dataReturnType, typeSchemas, paramsCasing, paramsType, pathParamsType, queryKeyName }) {
const params = getParams$7({
paramsType,
paramsCasing,
pathParamsType,
typeSchemas
});
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const TError = typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error";
const clientParams = __kubb_plugin_client_components.Client.getParams({
typeSchemas,
paramsCasing,
paramsType,
pathParamsType,
isConfigurable: true
});
const queryKeyParams = QueryKey.getParams({
pathParamsType,
typeSchemas,
paramsCasing
});
const enabled = Object.entries(queryKeyParams.flatParams).map(([key, item]) => item && !item.optional ? key : void 0).filter(Boolean).join("&& ");
const enabledText = enabled ? `enabled: !!(${enabled}),` : "";
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
params: params.toConstructor(),
children: `
const queryKey = ${queryKeyName}(${queryKeyParams.toCall()})
return queryOptions<${TData}, ResponseErrorConfig<${TError}>, ${TData}, typeof queryKey>({
${enabledText}
queryKey,
queryFn: async ({ signal }) => {
config.signal = signal
return ${clientName}(${clientParams.toCall({})})
},
})
`
})
});
}
QueryOptions.getParams = getParams$7;
//#endregion
//#region src/components/InfiniteQuery.tsx
function getParams$6({ paramsType, paramsCasing, pathParamsType, typeSchemas, pageParamGeneric }) {
if (paramsType === "object") return __kubb_react.FunctionParams.factory({
data: {
mode: "object",
children: {
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
}
},
options: {
type: `
{
query?: Partial<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, ${pageParamGeneric}>> & { client?: QueryClient },
client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }"}
}
`,
default: "{}"
}
});
return __kubb_react.FunctionParams.factory({
pathParams: typeSchemas.pathParams?.name ? {
mode: pathParamsType === "object" ? "object" : "inlineSpread",
children: (0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
optional: (0, __kubb_oas.isOptional)(typeSchemas.pathParams?.schema)
} : void 0,
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0,
options: {
type: `
{
query?: Partial<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, ${pageParamGeneric}>> & { client?: QueryClient },
client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }"}
}
`,
default: "{}"
}
});
}
function InfiniteQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName, paramsType, paramsCasing, pathParamsType, dataReturnType, typeSchemas, operation, queryParam }) {
const responseType = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const errorType = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`;
const pageParamType = (queryParam && typeSchemas.queryParams?.name ? `NonNullable<${typeSchemas.queryParams?.name}['${queryParam}']>` : void 0) ?? "number";
const returnType = "UseInfiniteQueryResult<TData, TError> & { queryKey: TQueryKey }";
const generics = [
`TQueryFnData = ${responseType}`,
`TError = ${errorType}`,
"TData = InfiniteData<TQueryFnData>",
`TQueryKey extends QueryKey = ${queryKeyTypeName}`,
`TPageParam = ${pageParamType}`
];
const queryKeyParams = QueryKey.getParams({
pathParamsType,
typeSchemas,
paramsCasing
});
const queryOptionsParams = QueryOptions.getParams({
paramsType,
pathParamsType,
typeSchemas,
paramsCasing
});
const params = getParams$6({
paramsCasing,
paramsType,
pathParamsType,
typeSchemas,
pageParamGeneric: "TPageParam"
});
const queryOptions = `${queryOptionsName}(${queryOptionsParams.toCall()})`;
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
generics: generics.join(", "),
params: params.toConstructor(),
JSDoc: { comments: (0, __kubb_plugin_oas_utils.getComments)(operation) },
children: `
const { query: queryConfig = {}, client: config = {} } = options ?? {}
const { client: queryClient, ...queryOptions } = queryConfig
const queryKey = queryOptions?.queryKey ?? ${queryKeyName}(${queryKeyParams.toCall()})
const query = useInfiniteQuery({
...${queryOptions},
queryKey,
...queryOptions
} as unknown as InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient) as ${returnType}
query.queryKey = queryKey as TQueryKey
return query
`
})
});
}
InfiniteQuery.getParams = getParams$6;
//#endregion
//#region src/components/InfiniteQueryOptions.tsx
function getParams$5({ paramsType, paramsCasing, pathParamsType, typeSchemas }) {
if (paramsType === "object") return __kubb_react.FunctionParams.factory({
data: {
mode: "object",
children: {
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
}
},
config: {
type: typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }",
default: "{}"
}
});
return __kubb_react.FunctionParams.factory({
pathParams: typeSchemas.pathParams?.name ? {
mode: pathParamsType === "object" ? "object" : "inlineSpread",
children: (0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
optional: (0, __kubb_oas.isOptional)(typeSchemas.pathParams?.schema)
} : void 0,
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0,
config: {
type: typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }",
default: "{}"
}
});
}
function InfiniteQueryOptions({ name, clientName, initialPageParam, cursorParam, typeSchemas, paramsCasing, paramsType, dataReturnType, pathParamsType, queryParam, queryKeyName }) {
const queryFnDataType = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const errorType = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`;
const pageParamType = queryParam && typeSchemas.queryParams?.name ? `NonNullable<${typeSchemas.queryParams?.name}['${queryParam}']>` : "number";
const params = getParams$5({
paramsType,
paramsCasing,
pathParamsType,
typeSchemas
});
const clientParams = __kubb_plugin_client_components.Client.getParams({
paramsCasing,
typeSchemas,
paramsType,
pathParamsType,
isConfigurable: true
});
const queryKeyParams = QueryKey.getParams({
pathParamsType,
typeSchemas,
paramsCasing
});
const queryOptions = [
`initialPageParam: ${typeof initialPageParam === "string" ? JSON.stringify(initialPageParam) : initialPageParam}`,
cursorParam ? `getNextPageParam: (lastPage) => lastPage['${cursorParam}']` : void 0,
cursorParam ? `getPreviousPageParam: (firstPage) => firstPage['${cursorParam}']` : void 0,
!cursorParam && dataReturnType === "full" ? "getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage.data) && lastPage.data.length === 0 ? undefined : lastPageParam + 1" : void 0,
!cursorParam && dataReturnType === "data" ? "getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage) && lastPage.length === 0 ? undefined : lastPageParam + 1" : void 0,
!cursorParam ? "getPreviousPageParam: (_firstPage, _allPages, firstPageParam) => firstPageParam <= 1 ? undefined : firstPageParam - 1" : void 0
].filter(Boolean);
const infiniteOverrideParams = queryParam && typeSchemas.queryParams?.name ? `
if (!params) {
params = { }
}
params['${queryParam}'] = pageParam as unknown as ${typeSchemas.queryParams?.name}['${queryParam}']` : "";
const enabled = Object.entries(queryKeyParams.flatParams).map(([key, item]) => item && !item.optional ? key : void 0).filter(Boolean).join("&& ");
const enabledText = enabled ? `enabled: !!(${enabled}),` : "";
if (infiniteOverrideParams) return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
params: params.toConstructor(),
children: `
const queryKey = ${queryKeyName}(${queryKeyParams.toCall()})
return infiniteQueryOptions<${queryFnDataType}, ${errorType}, InfiniteData<${queryFnDataType}>, typeof queryKey, ${pageParamType}>({
${enabledText}
queryKey,
queryFn: async ({ signal, pageParam }) => {
config.signal = signal
${infiniteOverrideParams}
return ${clientName}(${clientParams.toCall()})
},
${queryOptions.join(",\n")}
})
`
})
});
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
params: params.toConstructor(),
children: `
const queryKey = ${queryKeyName}(${queryKeyParams.toCall()})
return infiniteQueryOptions<${queryFnDataType}, ${errorType}, InfiniteData<${queryFnDataType}>, typeof queryKey, ${pageParamType}>({
${enabledText}
queryKey,
queryFn: async ({ signal }) => {
config.signal = signal
return ${clientName}(${clientParams.toCall()})
},
${queryOptions.join(",\n")}
})
`
})
});
}
InfiniteQueryOptions.getParams = getParams$5;
//#endregion
//#region src/components/MutationKey.tsx
function getParams$4({}) {
return __kubb_react.FunctionParams.factory({});
}
const getTransformer = ({ operation, casing }) => {
return [`{ url: '${new __kubb_core_utils.URLPath(operation.path, { casing }).toURLPath()}' }`];
};
function MutationKey({ name, typeSchemas, pathParamsType, paramsCasing, operation, typeName, transformer = getTransformer }) {
const params = getParams$4({
pathParamsType,
typeSchemas
});
const keys = transformer({
operation,
schemas: typeSchemas,
casing: paramsCasing
});
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsxs)(__kubb_react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function.Arrow, {
name,
export: true,
params: params.toConstructor(),
singleLine: true,
children: `[${keys.join(", ")}] as const`
})
}), /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name: typeName,
isExportable: true,
isIndexable: true,
isTypeOnly: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Type, {
name: typeName,
export: true,
children: `ReturnType<typeof ${name}>`
})
})] });
}
MutationKey.getParams = getParams$4;
MutationKey.getTransformer = getTransformer;
//#endregion
//#region src/components/MutationOptions.tsx
function getParams$3({ typeSchemas }) {
return __kubb_react.FunctionParams.factory({ config: {
type: typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }",
default: "{}"
} });
}
function MutationOptions({ name, clientName, dataReturnType, typeSchemas, paramsCasing, paramsType, pathParamsType, mutationKeyName }) {
const params = getParams$3({ typeSchemas });
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const TError = typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error";
const clientParams = __kubb_plugin_client_components.Client.getParams({
typeSchemas,
paramsCasing,
paramsType,
pathParamsType,
isConfigurable: true
});
const mutationKeyParams = MutationKey.getParams({
pathParamsType,
typeSchemas
});
const mutationParams = __kubb_react.FunctionParams.factory({
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
});
const dataParams = __kubb_react.FunctionParams.factory({ data: {
mode: "object",
children: Object.entries(mutationParams.params).reduce((acc, [key, value]) => {
if (value) acc[key] = {
...value,
type: void 0
};
return acc;
}, {})
} });
const TRequest = mutationParams.toConstructor();
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
params: params.toConstructor(),
children: `
const mutationKey = ${mutationKeyName}(${mutationKeyParams.toCall()})
return mutationOptions<${TData}, ResponseErrorConfig<${TError}>, ${TRequest ? `{${TRequest}}` : "void"}, typeof mutationKey>({
mutationKey,
mutationFn: async(${dataParams.toConstructor()}) => {
return ${clientName}(${clientParams.toCall()})
},
})
`
})
});
}
MutationOptions.getParams = getParams$3;
//#endregion
//#region src/components/Mutation.tsx
function getParams$2({ paramsCasing, dataReturnType, typeSchemas }) {
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const TRequest = __kubb_react.FunctionParams.factory({
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
}).toConstructor();
const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`;
const generics = [
TData,
TError,
TRequest ? `{${TRequest}}` : "void",
"TContext"
].join(", ");
return __kubb_react.FunctionParams.factory({ options: {
type: `
{
mutation?: UseMutationOptions<${generics}> & { client?: QueryClient },
client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }"},
}
`,
default: "{}"
} });
}
function Mutation({ name, mutationOptionsName, paramsCasing, pathParamsType, dataReturnType, typeSchemas, operation, mutationKeyName }) {
const mutationKeyParams = MutationKey.getParams({
pathParamsType,
typeSchemas
});
const params = getParams$2({
paramsCasing,
pathParamsType,
dataReturnType,
typeSchemas
});
const mutationParams = __kubb_react.FunctionParams.factory({
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
});
const mutationOptionsParams = MutationOptions.getParams({ typeSchemas });
const TRequest = mutationParams.toConstructor();
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`;
const returnType = `UseMutationOptions<${[
TData,
TError,
TRequest ? `{${TRequest}}` : "void",
"TContext"
].join(", ")}>`;
const mutationOptions = `${mutationOptionsName}(${mutationOptionsParams.toCall()})`;
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
params: params.toConstructor(),
JSDoc: { comments: (0, __kubb_plugin_oas_utils.getComments)(operation) },
generics: ["TContext"],
children: `
const { mutation = {}, client: config = {} } = options ?? {}
const { client: queryClient, ...mutationOptions } = mutation;
const mutationKey = mutationOptions.mutationKey ?? ${mutationKeyName}(${mutationKeyParams.toCall()})
return useMutation({
...${mutationOptions},
mutationKey,
...mutationOptions
} as unknown as UseMutationOptions, queryClient) as ${returnType}
`
})
});
}
//#endregion
//#region src/components/Query.tsx
function getParams$1({ paramsType, paramsCasing, pathParamsType, dataReturnType, typeSchemas }) {
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`;
if (paramsType === "object") return __kubb_react.FunctionParams.factory({
data: {
mode: "object",
children: {
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
}
},
options: {
type: `
{
query?: Partial<QueryObserverOptions<${[
TData,
TError,
"TData",
"TQueryData",
"TQueryKey"
].join(", ")}>> & { client?: QueryClient },
client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }"}
}
`,
default: "{}"
}
});
return __kubb_react.FunctionParams.factory({
pathParams: typeSchemas.pathParams?.name ? {
mode: pathParamsType === "object" ? "object" : "inlineSpread",
children: (0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
optional: (0, __kubb_oas.isOptional)(typeSchemas.pathParams?.schema)
} : void 0,
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0,
options: {
type: `
{
query?: Partial<QueryObserverOptions<${[
TData,
TError,
"TData",
"TQueryData",
"TQueryKey"
].join(", ")}>> & { client?: QueryClient },
client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }"}
}
`,
default: "{}"
}
});
}
function Query({ name, queryKeyTypeName, queryOptionsName, queryKeyName, paramsType, paramsCasing, pathParamsType, dataReturnType, typeSchemas, operation }) {
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const returnType = `UseQueryResult<${["TData", `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`].join(", ")}> & { queryKey: TQueryKey }`;
const generics = [
`TData = ${TData}`,
`TQueryData = ${TData}`,
`TQueryKey extends QueryKey = ${queryKeyTypeName}`
];
const queryKeyParams = QueryKey.getParams({
pathParamsType,
typeSchemas,
paramsCasing
});
const queryOptionsParams = QueryOptions.getParams({
paramsType,
pathParamsType,
typeSchemas,
paramsCasing
});
const params = getParams$1({
paramsCasing,
paramsType,
pathParamsType,
dataReturnType,
typeSchemas
});
const queryOptions = `${queryOptionsName}(${queryOptionsParams.toCall()})`;
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
generics: generics.join(", "),
params: params.toConstructor(),
JSDoc: { comments: (0, __kubb_plugin_oas_utils.getComments)(operation) },
children: `
const { query: queryConfig = {}, client: config = {} } = options ?? {}
const { client: queryClient, ...queryOptions } = queryConfig
const queryKey = queryOptions?.queryKey ?? ${queryKeyName}(${queryKeyParams.toCall()})
const query = useQuery({
...${queryOptions},
queryKey,
...queryOptions
} as unknown as QueryObserverOptions, queryClient) as ${returnType}
query.queryKey = queryKey as TQueryKey
return query
`
})
});
}
Query.getParams = getParams$1;
//#endregion
//#region src/components/SuspenseQuery.tsx
function getParams({ paramsType, paramsCasing, pathParamsType, dataReturnType, typeSchemas }) {
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`;
if (paramsType === "object") return __kubb_react.FunctionParams.factory({
data: {
mode: "object",
children: {
...(0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0
}
},
options: {
type: `
{
query?: Partial<UseSuspenseQueryOptions<${[
TData,
TError,
"TData",
"TQueryKey"
].join(", ")}>> & { client?: QueryClient },
client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }"}
}
`,
default: "{}"
}
});
return __kubb_react.FunctionParams.factory({
pathParams: typeSchemas.pathParams?.name ? {
mode: pathParamsType === "object" ? "object" : "inlineSpread",
children: (0, __kubb_plugin_oas_utils.getPathParams)(typeSchemas.pathParams, {
typed: true,
casing: paramsCasing
}),
optional: (0, __kubb_oas.isOptional)(typeSchemas.pathParams?.schema)
} : void 0,
data: typeSchemas.request?.name ? {
type: typeSchemas.request?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.request?.schema)
} : void 0,
params: typeSchemas.queryParams?.name ? {
type: typeSchemas.queryParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.queryParams?.schema)
} : void 0,
headers: typeSchemas.headerParams?.name ? {
type: typeSchemas.headerParams?.name,
optional: (0, __kubb_oas.isOptional)(typeSchemas.headerParams?.schema)
} : void 0,
options: {
type: `
{
query?: Partial<UseSuspenseQueryOptions<${[
TData,
TError,
"TData",
"TQueryKey"
].join(", ")}>> & { client?: QueryClient },
client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: typeof fetch }` : "Partial<RequestConfig> & { client?: typeof fetch }"}
}
`,
default: "{}"
}
});
}
/**
* Generates a strongly-typed React Query Suspense hook function for an OpenAPI operation.
*
* The generated function wraps `useSuspenseQuery`, providing type-safe parameters and return types based on the supplied OpenAPI schemas and configuration.
*
* @returns A React component source node containing the generated query function.
*/
function SuspenseQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName, paramsType, paramsCasing, pathParamsType, dataReturnType, typeSchemas, operation }) {
const TData = dataReturnType === "data" ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`;
const returnType = `UseSuspenseQueryResult<${["TData", `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(" | ") || "Error"}>`].join(", ")}> & { queryKey: TQueryKey }`;
const generics = [`TData = ${TData}`, `TQueryKey extends QueryKey = ${queryKeyTypeName}`];
const queryKeyParams = QueryKey.getParams({
pathParamsType,
typeSchemas,
paramsCasing
});
const queryOptionsParams = QueryOptions.getParams({
paramsCasing,
paramsType,
pathParamsType,
typeSchemas
});
const params = getParams({
paramsCasing,
paramsType,
pathParamsType,
dataReturnType,
typeSchemas
});
const queryOptions = `${queryOptionsName}(${queryOptionsParams.toCall()})`;
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isExportable: true,
isIndexable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
generics: generics.join(", "),
params: params.toConstructor(),
JSDoc: { comments: (0, __kubb_plugin_oas_utils.getComments)(operation) },
children: `
const { query: queryConfig = {}, client: config = {} } = options ?? {}
const { client: queryClient, ...queryOptions } = queryConfig
const queryKey = queryOptions?.queryKey ?? ${queryKeyName}(${queryKeyParams.toCall()})
const query = useSuspenseQuery({
...${queryOptions},
queryKey,
...queryOptions
} as unknown as UseSuspenseQueryOptions, queryClient) as ${returnType}
query.queryKey = queryKey as TQueryKey
return query
`
})
});
}
SuspenseQuery.getParams = getParams;
//#endregion
Object.defineProperty(exports, 'InfiniteQuery', {
enumerable: true,
get: function () {
return InfiniteQuery;
}
});
Object.defineProperty(exports, 'InfiniteQueryOptions', {
enumerable: true,
get: function () {
return InfiniteQueryOptions;
}
});
Object.defineProperty(exports, 'Mutation', {
enumerable: true,
get: function () {
return Mutation;
}
});
Object.defineProperty(exports, 'MutationKey', {
enumerable: true,
get: function () {
return MutationKey;
}
});
Object.defineProperty(exports, 'MutationOptions', {
enumerable: true,
get: function () {
return MutationOptions;
}
});
Object.defineProperty(exports, 'Query', {
enumerable: true,
get: function () {
return Query;
}
});
Object.defineProperty(exports, 'QueryKey', {
enumerable: true,
get: function () {
return QueryKey;
}
});
Object.defineProperty(exports, 'QueryOptions', {
enumerable: true,
get: function () {
return QueryOptions;
}
});
Object.defineProperty(exports, 'SuspenseQuery', {
enumerable: true,
get: function () {
return SuspenseQuery;
}
});
Object.defineProperty(exports, '__toESM', {
enumerable: true,
get: function () {
return __toESM;
}
});
//# sourceMappingURL=components-DkiO4xNZ.cjs.map