Skip to content

Commit

Permalink
fix/#1447
Browse files Browse the repository at this point in the history
has signal added or condition verb equals post
  • Loading branch information
andrej kastritsa committed Sep 10, 2024
1 parent 9b778ca commit d3e97bd
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 8 deletions.
3 changes: 1 addition & 2 deletions packages/core/src/generators/options.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { VERBS_WITH_BODY } from '../constants';
import {
GeneratorMutator,
GeneratorSchema,
Expand Down Expand Up @@ -283,7 +282,7 @@ export const generateMutatorConfig = ({
: '';

return `{url: \`${route}\`, method: '${verb.toUpperCase()}'${headerOptions}${bodyOptions}${queryParamsOptions}${
!getIsBodyVerb(verb) && hasSignal
hasSignal
? `, ${
isExactOptionalPropertyTypes
? '...(signal ? { signal }: {})'
Expand Down
13 changes: 8 additions & 5 deletions packages/query/src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@ import {
generateFormDataAndUrlEncodedFunction,
generateMutatorConfig,
generateMutatorRequestOptions,
Verbs,
getIsBodyVerb,
} from '@orval/core';

import { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';

import {
getHasSignal,
isVue,
makeRouteSafe,
vueUnRefParams,
Expand Down Expand Up @@ -86,7 +88,10 @@ export const generateAxiosRequestFunction = (
const isRequestOptions = override.requestOptions !== false;
const isFormData = override.formData !== false;
const isFormUrlEncoded = override.formUrlEncoded !== false;
const hasSignal = !!override.query.signal;
const hasSignal = getHasSignal({
overrideQuerySignal: override.query.signal,
verb,
});

const isExactOptionalPropertyTypes =
!!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;
Expand Down Expand Up @@ -142,9 +147,7 @@ export const generateAxiosRequestFunction = (
isRequestOptions && mutator.hasSecondArg
? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`
: ''
}${
!getIsBodyVerb(verb) && hasSignal ? 'signal?: AbortSignal\n' : ''
}) => {${bodyForm}
}${hasSignal ? 'signal?: AbortSignal\n' : ''}) => {${bodyForm}
return ${operationName}(
${mutatorConfig},
${requestOptions});
Expand All @@ -157,7 +160,7 @@ export const generateAxiosRequestFunction = (
isRequestOptions && mutator.hasSecondArg
? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`
: ''
}${!getIsBodyVerb(verb) && hasSignal ? 'signal?: AbortSignal\n' : ''}) => {
}${hasSignal ? 'signal?: AbortSignal\n' : ''}) => {
${isVue ? vueUnRefParams(props) : ''}
${bodyForm}
return ${mutator.name}<${response.definition.success || 'unknown'}>(
Expand Down
6 changes: 5 additions & 1 deletion packages/query/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import {
getQueryOptions,
} from './client';
import {
getHasSignal,
isVue,
normalizeQueryOptions,
vueUnRefParams,
Expand Down Expand Up @@ -1216,7 +1217,10 @@ const generateQueryHook = async (
outputClient,
httpClient,
isExactOptionalPropertyTypes,
hasSignal: !!query.signal,
hasSignal: getHasSignal({
overrideQuerySignal: override.query.signal,
verb,
}),
queryOptionsMutator,
queryKeyMutator,
route,
Expand Down
10 changes: 10 additions & 0 deletions packages/query/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import {
GetterProps,
GetterPropType,
TEMPLATE_TAG_REGEX,
getIsBodyVerb,
Verbs,
} from '@orval/core';
import chalk from 'chalk';

Expand Down Expand Up @@ -130,3 +132,11 @@ export const makeRouteSafe = (route: string): string =>

export const isVue = (client: OutputClient | OutputClientFunc) =>
OutputClient.VUE_QUERY === client;

export const getHasSignal = ({
overrideQuerySignal = false,
verb,
}: {
verb: Verbs;
overrideQuerySignal?: boolean;
}) => overrideQuerySignal && (!getIsBodyVerb(verb) || verb === Verbs.POST);

0 comments on commit d3e97bd

Please sign in to comment.