@graphql-codegen/typescript-react-query
Version:
GraphQL Code Generator plugin for generating a ready-to-use React-Query Hooks based on GraphQL operations
28 lines (27 loc) • 1.62 kB
JavaScript
export function generateQueryVariablesSignature(hasRequiredVariables, operationVariablesTypes) {
return `variables${hasRequiredVariables ? '' : '?'}: ${operationVariablesTypes}`;
}
export function generateInfiniteQueryKey(node, hasRequiredVariables) {
if (hasRequiredVariables)
return `['${node.name.value}.infinite', variables]`;
return `variables === undefined ? ['${node.name.value}.infinite'] : ['${node.name.value}.infinite', variables]`;
}
export function generateInfiniteQueryKeyMaker(node, operationName, operationVariablesTypes, hasRequiredVariables) {
const signature = generateQueryVariablesSignature(hasRequiredVariables, operationVariablesTypes);
return `\nuseInfinite${operationName}.getKey = (${signature}) => ${generateInfiniteQueryKey(node, hasRequiredVariables)};\n`;
}
export function generateQueryKey(node, hasRequiredVariables) {
if (hasRequiredVariables)
return `['${node.name.value}', variables]`;
return `variables === undefined ? ['${node.name.value}'] : ['${node.name.value}', variables]`;
}
export function generateQueryKeyMaker(node, operationName, operationVariablesTypes, hasRequiredVariables) {
const signature = generateQueryVariablesSignature(hasRequiredVariables, operationVariablesTypes);
return `\nuse${operationName}.getKey = (${signature}) => ${generateQueryKey(node, hasRequiredVariables)};\n`;
}
export function generateMutationKey(node) {
return `['${node.name.value}']`;
}
export function generateMutationKeyMaker(node, operationName) {
return `\nuse${operationName}.getKey = () => ${generateMutationKey(node)};\n`;
}