@graphql-codegen/typescript-react-query 5.1.0-alpha-20231024141603-98360b670 → 6.0.0

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.
@@ -1,21 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CustomMapperFetcher = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const auto_bind_1 = tslib_1.__importDefault(require("auto-bind"));
4
6
  const visitor_plugin_common_1 = require("@graphql-codegen/visitor-plugin-common");
5
- const variables_generator_js_1 = require("./variables-generator.js");
6
- class CustomMapperFetcher {
7
+ const fetcher_js_1 = require("./fetcher.js");
8
+ class CustomMapperFetcher extends fetcher_js_1.FetcherRenderer {
7
9
  constructor(visitor, customFetcher) {
10
+ super(visitor);
8
11
  this.visitor = visitor;
9
12
  if (typeof customFetcher === 'string') {
10
13
  customFetcher = { func: customFetcher };
11
14
  }
12
15
  this._mapper = (0, visitor_plugin_common_1.parseMapper)(customFetcher.func);
13
16
  this._isReactHook = customFetcher.isReactHook;
17
+ (0, auto_bind_1.default)(this);
14
18
  }
15
19
  getFetcherFnName(operationResultType, operationVariablesTypes) {
16
20
  return `${this._mapper.type}<${operationResultType}, ${operationVariablesTypes}>`;
17
21
  }
18
- generateFetcherImplementaion() {
22
+ generateFetcherImplementation() {
19
23
  if (this._mapper.isExternal) {
20
24
  return (0, visitor_plugin_common_1.buildMapperImport)(this._mapper.source, [
21
25
  {
@@ -26,77 +30,45 @@ class CustomMapperFetcher {
26
30
  }
27
31
  return null;
28
32
  }
29
- generateInfiniteQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
30
- const variables = `variables${hasRequiredVariables ? '' : '?'}: ${operationVariablesTypes}`;
31
- const hookConfig = this.visitor.queryMethodMap;
32
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.infiniteQuery.hook);
33
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.infiniteQuery.options);
34
- const options = `options?: ${hookConfig.infiniteQuery.options}<${operationResultType}, TError, TData>`;
33
+ generateInfiniteQueryHook(config, isSuspense = false) {
34
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
35
35
  const typedFetcher = this.getFetcherFnName(operationResultType, operationVariablesTypes);
36
36
  const implHookOuter = this._isReactHook
37
37
  ? `const query = ${typedFetcher}(${documentVariableName})`
38
38
  : '';
39
- const impl = this._isReactHook
39
+ const implFetcher = this._isReactHook
40
40
  ? `(metaData) => query({...variables, ...(metaData.pageParam ?? {})})`
41
41
  : `(metaData) => ${typedFetcher}(${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})})()`;
42
- return `export const useInfinite${operationName} = <
43
- TData = ${operationResultType},
44
- TError = ${this.visitor.config.errorType}
45
- >(
46
- ${variables},
47
- ${options}
48
- ) =>{
49
- ${implHookOuter}
50
- return ${hookConfig.infiniteQuery.hook}<${operationResultType}, TError, TData>(
51
- ${(0, variables_generator_js_1.generateInfiniteQueryKey)(node, hasRequiredVariables)},
52
- ${impl},
53
- options
54
- )};`;
42
+ const { generateBaseInfiniteQueryHook } = this.generateInfiniteQueryHelper(config, isSuspense);
43
+ return generateBaseInfiniteQueryHook({
44
+ implHookOuter,
45
+ implFetcher,
46
+ });
55
47
  }
56
- generateQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
57
- const variables = `variables${hasRequiredVariables ? '' : '?'}: ${operationVariablesTypes}`;
58
- const hookConfig = this.visitor.queryMethodMap;
59
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.query.hook);
60
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.query.options);
61
- const options = `options?: ${hookConfig.query.options}<${operationResultType}, TError, TData>`;
48
+ generateQueryHook(config, isSuspense = false) {
49
+ const { generateBaseQueryHook } = this.generateQueryHelper(config, isSuspense);
50
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
62
51
  const typedFetcher = this.getFetcherFnName(operationResultType, operationVariablesTypes);
63
- const impl = this._isReactHook
52
+ const implFetcher = this._isReactHook
64
53
  ? `${typedFetcher}(${documentVariableName}).bind(null, variables)`
65
54
  : `${typedFetcher}(${documentVariableName}, variables)`;
66
- return `export const use${operationName} = <
67
- TData = ${operationResultType},
68
- TError = ${this.visitor.config.errorType}
69
- >(
70
- ${variables},
71
- ${options}
72
- ) =>
73
- ${hookConfig.query.hook}<${operationResultType}, TError, TData>(
74
- ${(0, variables_generator_js_1.generateQueryKey)(node, hasRequiredVariables)},
75
- ${impl},
76
- options
77
- );`;
55
+ return generateBaseQueryHook({
56
+ implFetcher,
57
+ });
78
58
  }
79
- generateMutationHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
80
- const variables = `variables?: ${operationVariablesTypes}`;
81
- const hookConfig = this.visitor.queryMethodMap;
82
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.mutation.hook);
83
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.mutation.options);
84
- const options = `options?: ${hookConfig.mutation.options}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>`;
59
+ generateMutationHook(config) {
60
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
61
+ const { generateBaseMutationHook, variables } = this.generateMutationHelper(config);
85
62
  const typedFetcher = this.getFetcherFnName(operationResultType, operationVariablesTypes);
86
- const impl = this._isReactHook
63
+ const implFetcher = this._isReactHook
87
64
  ? `${typedFetcher}(${documentVariableName})`
88
65
  : `(${variables}) => ${typedFetcher}(${documentVariableName}, variables)()`;
89
- return `export const use${operationName} = <
90
- TError = ${this.visitor.config.errorType},
91
- TContext = unknown
92
- >(${options}) =>
93
- ${hookConfig.mutation.hook}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>(
94
- ${(0, variables_generator_js_1.generateMutationKey)(node)},
95
- ${impl},
96
- options
97
- );`;
66
+ return generateBaseMutationHook({
67
+ implFetcher,
68
+ });
98
69
  }
99
- generateFetcherFetch(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
70
+ generateFetcherFetch(config) {
71
+ const { documentVariableName, operationResultType, operationVariablesTypes, hasRequiredVariables, operationName, } = config;
100
72
  // We can't generate a fetcher field since we can't call react hooks outside of a React Fucntion Component
101
73
  // Related: https://reactjs.org/docs/hooks-rules.html
102
74
  if (this._isReactHook)
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HardcodedFetchFetcher = void 0;
4
- const variables_generator_js_1 = require("./variables-generator.js");
5
- class HardcodedFetchFetcher {
4
+ const tslib_1 = require("tslib");
5
+ const auto_bind_1 = tslib_1.__importDefault(require("auto-bind"));
6
+ const fetcher_js_1 = require("./fetcher.js");
7
+ class HardcodedFetchFetcher extends fetcher_js_1.FetcherRenderer {
6
8
  constructor(visitor, config) {
9
+ super(visitor);
7
10
  this.visitor = visitor;
8
11
  this.config = config;
12
+ (0, auto_bind_1.default)(this);
9
13
  }
10
14
  getEndpoint() {
11
15
  try {
@@ -26,7 +30,7 @@ class HardcodedFetchFetcher {
26
30
  }
27
31
  return ` method: "POST",${fetchParamsPartial}`;
28
32
  }
29
- generateFetcherImplementaion() {
33
+ generateFetcherImplementation() {
30
34
  return `
31
35
  function fetcher<TData, TVariables>(query: string, variables?: TVariables) {
32
36
  return async (): Promise<TData> => {
@@ -47,62 +51,30 @@ ${this.getFetchParams()}
47
51
  }
48
52
  }`;
49
53
  }
50
- generateInfiniteQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
51
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
52
- const hookConfig = this.visitor.queryMethodMap;
53
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.infiniteQuery.hook);
54
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.infiniteQuery.options);
55
- const options = `options?: ${hookConfig.infiniteQuery.options}<${operationResultType}, TError, TData>`;
56
- return `export const useInfinite${operationName} = <
57
- TData = ${operationResultType},
58
- TError = ${this.visitor.config.errorType}
59
- >(
60
- ${variables},
61
- ${options}
62
- ) =>
63
- ${hookConfig.infiniteQuery.hook}<${operationResultType}, TError, TData>(
64
- ${(0, variables_generator_js_1.generateInfiniteQueryKey)(node, hasRequiredVariables)},
65
- (metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})})(),
66
- options
67
- );`;
54
+ generateInfiniteQueryHook(config, isSuspense = false) {
55
+ const { generateBaseInfiniteQueryHook } = this.generateInfiniteQueryHelper(config, isSuspense);
56
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
57
+ return generateBaseInfiniteQueryHook({
58
+ implFetcher: `(metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})})()`,
59
+ });
68
60
  }
69
- generateQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
70
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
71
- const hookConfig = this.visitor.queryMethodMap;
72
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.query.hook);
73
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.query.options);
74
- const options = `options?: ${hookConfig.query.options}<${operationResultType}, TError, TData>`;
75
- return `export const use${operationName} = <
76
- TData = ${operationResultType},
77
- TError = ${this.visitor.config.errorType}
78
- >(
79
- ${variables},
80
- ${options}
81
- ) =>
82
- ${hookConfig.query.hook}<${operationResultType}, TError, TData>(
83
- ${(0, variables_generator_js_1.generateQueryKey)(node, hasRequiredVariables)},
84
- fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables),
85
- options
86
- );`;
61
+ generateQueryHook(config, isSuspense = false) {
62
+ const { generateBaseQueryHook } = this.generateQueryHelper(config, isSuspense);
63
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
64
+ return generateBaseQueryHook({
65
+ implFetcher: `fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables)`,
66
+ });
87
67
  }
88
- generateMutationHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
89
- const variables = `variables?: ${operationVariablesTypes}`;
90
- const hookConfig = this.visitor.queryMethodMap;
91
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.mutation.hook);
92
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.mutation.options);
93
- const options = `options?: ${hookConfig.mutation.options}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>`;
94
- return `export const use${operationName} = <
95
- TError = ${this.visitor.config.errorType},
96
- TContext = unknown
97
- >(${options}) =>
98
- ${hookConfig.mutation.hook}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>(
99
- ${(0, variables_generator_js_1.generateMutationKey)(node)},
100
- (${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables)(),
101
- options
102
- );`;
68
+ generateMutationHook(config) {
69
+ const { generateBaseMutationHook, variables } = this.generateMutationHelper(config);
70
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
71
+ return generateBaseMutationHook({
72
+ implFetcher: `(${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables)()`,
73
+ });
103
74
  }
104
- generateFetcherFetch(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
105
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
75
+ generateFetcherFetch(config) {
76
+ const { documentVariableName, operationResultType, operationVariablesTypes, operationName } = config;
77
+ const variables = this.generateQueryVariablesSignature(config);
106
78
  return `\nuse${operationName}.fetcher = (${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables);`;
107
79
  }
108
80
  }
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FetchFetcher = void 0;
4
- const variables_generator_js_1 = require("./variables-generator.js");
5
- class FetchFetcher {
4
+ const tslib_1 = require("tslib");
5
+ const auto_bind_1 = tslib_1.__importDefault(require("auto-bind"));
6
+ const fetcher_js_1 = require("./fetcher.js");
7
+ class FetchFetcher extends fetcher_js_1.FetcherRenderer {
6
8
  constructor(visitor) {
9
+ super(visitor);
7
10
  this.visitor = visitor;
11
+ (0, auto_bind_1.default)(this);
8
12
  }
9
- generateFetcherImplementaion() {
13
+ generateFetcherImplementation() {
10
14
  return `
11
15
  function fetcher<TData, TVariables>(endpoint: string, requestInit: RequestInit, query: string, variables?: TVariables) {
12
16
  return async (): Promise<TData> => {
@@ -28,67 +32,44 @@ function fetcher<TData, TVariables>(endpoint: string, requestInit: RequestInit,
28
32
  }
29
33
  }`;
30
34
  }
31
- generateInfiniteQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
32
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
33
- const hookConfig = this.visitor.queryMethodMap;
34
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.infiniteQuery.hook);
35
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.infiniteQuery.options);
36
- const options = `options?: ${hookConfig.infiniteQuery.options}<${operationResultType}, TError, TData>`;
37
- return `export const useInfinite${operationName} = <
38
- TData = ${operationResultType},
39
- TError = ${this.visitor.config.errorType}
40
- >(
35
+ generateInfiniteQueryHook(config, isSuspense = false) {
36
+ const { generateBaseInfiniteQueryHook, variables, options } = this.generateInfiniteQueryHelper(config, isSuspense);
37
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
38
+ return generateBaseInfiniteQueryHook({
39
+ implArguments: `
41
40
  dataSource: { endpoint: string, fetchParams?: RequestInit },
42
41
  ${variables},
43
42
  ${options}
44
- ) =>
45
- ${hookConfig.infiniteQuery.hook}<${operationResultType}, TError, TData>(
46
- ${(0, variables_generator_js_1.generateInfiniteQueryKey)(node, hasRequiredVariables)},
47
- (metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(dataSource.endpoint, dataSource.fetchParams || {}, ${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})})(),
48
- options
49
- );`;
43
+ `,
44
+ implFetcher: `(metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(dataSource.endpoint, dataSource.fetchParams || {}, ${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})})()`,
45
+ });
50
46
  }
51
- generateQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
52
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
53
- const hookConfig = this.visitor.queryMethodMap;
54
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.query.hook);
55
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.query.options);
56
- const options = `options?: ${hookConfig.query.options}<${operationResultType}, TError, TData>`;
57
- return `export const use${operationName} = <
58
- TData = ${operationResultType},
59
- TError = ${this.visitor.config.errorType}
60
- >(
47
+ generateQueryHook(config, isSuspense = false) {
48
+ const { generateBaseQueryHook, variables, options } = this.generateQueryHelper(config, isSuspense);
49
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
50
+ return generateBaseQueryHook({
51
+ implArguments: `
61
52
  dataSource: { endpoint: string, fetchParams?: RequestInit },
62
53
  ${variables},
63
54
  ${options}
64
- ) =>
65
- ${hookConfig.query.hook}<${operationResultType}, TError, TData>(
66
- ${(0, variables_generator_js_1.generateQueryKey)(node, hasRequiredVariables)},
67
- fetcher<${operationResultType}, ${operationVariablesTypes}>(dataSource.endpoint, dataSource.fetchParams || {}, ${documentVariableName}, variables),
68
- options
69
- );`;
55
+ `,
56
+ implFetcher: `fetcher<${operationResultType}, ${operationVariablesTypes}>(dataSource.endpoint, dataSource.fetchParams || {}, ${documentVariableName}, variables)`,
57
+ });
70
58
  }
71
- generateMutationHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
72
- const variables = `variables?: ${operationVariablesTypes}`;
73
- const hookConfig = this.visitor.queryMethodMap;
74
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.mutation.hook);
75
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.mutation.options);
76
- const options = `options?: ${hookConfig.mutation.options}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>`;
77
- return `export const use${operationName} = <
78
- TError = ${this.visitor.config.errorType},
79
- TContext = unknown
80
- >(
59
+ generateMutationHook(config) {
60
+ const { generateBaseMutationHook, variables, options } = this.generateMutationHelper(config);
61
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
62
+ return generateBaseMutationHook({
63
+ implArguments: `
81
64
  dataSource: { endpoint: string, fetchParams?: RequestInit },
82
65
  ${options}
83
- ) =>
84
- ${hookConfig.mutation.hook}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>(
85
- ${(0, variables_generator_js_1.generateMutationKey)(node)},
86
- (${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(dataSource.endpoint, dataSource.fetchParams || {}, ${documentVariableName}, variables)(),
87
- options
88
- );`;
66
+ `,
67
+ implFetcher: `(${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(dataSource.endpoint, dataSource.fetchParams || {}, ${documentVariableName}, variables)()`,
68
+ });
89
69
  }
90
- generateFetcherFetch(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
91
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
70
+ generateFetcherFetch(config) {
71
+ const { documentVariableName, operationResultType, operationVariablesTypes, operationName } = config;
72
+ const variables = this.generateQueryVariablesSignature(config);
92
73
  return `\nuse${operationName}.fetcher = (dataSource: { endpoint: string, fetchParams?: RequestInit }, ${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(dataSource.endpoint, dataSource.fetchParams || {}, ${documentVariableName}, variables);`;
93
74
  }
94
75
  }
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GraphQLRequestClientFetcher = void 0;
4
- const variables_generator_js_1 = require("./variables-generator.js");
5
- class GraphQLRequestClientFetcher {
4
+ const tslib_1 = require("tslib");
5
+ const auto_bind_1 = tslib_1.__importDefault(require("auto-bind"));
6
+ const fetcher_js_1 = require("./fetcher.js");
7
+ class GraphQLRequestClientFetcher extends fetcher_js_1.FetcherRenderer {
6
8
  constructor(visitor, config) {
9
+ super(visitor);
7
10
  this.visitor = visitor;
8
11
  this.clientPath = typeof config === 'object' ? config.clientImportPath : null;
12
+ (0, auto_bind_1.default)(this);
9
13
  }
10
- generateFetcherImplementaion() {
14
+ generateFetcherImplementation() {
11
15
  return this.clientPath
12
16
  ? `
13
17
  function fetcher<TData, TVariables extends { [key: string]: any }>(query: string, variables?: TVariables, requestHeaders?: RequestInit['headers']) {
@@ -26,125 +30,87 @@ function fetcher<TData, TVariables extends { [key: string]: any }>(client: Graph
26
30
  });
27
31
  }`;
28
32
  }
29
- generateInfiniteQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
30
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
33
+ generateInfiniteQueryHook(config, isSuspense = false) {
31
34
  const typeImport = this.visitor.config.useTypeImports ? 'import type' : 'import';
32
35
  if (this.clientPath)
33
36
  this.visitor.imports.add(this.clientPath);
34
37
  this.visitor.imports.add(`${typeImport} { GraphQLClient } from 'graphql-request';`);
35
- const hookConfig = this.visitor.queryMethodMap;
36
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.infiniteQuery.hook);
37
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.infiniteQuery.options);
38
- const options = `options?: ${hookConfig.infiniteQuery.options}<${operationResultType}, TError, TData>`;
38
+ const { generateBaseInfiniteQueryHook, variables, options } = this.generateInfiniteQueryHelper(config, isSuspense);
39
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
39
40
  return this.clientPath
40
- ? `export const useInfinite${operationName} = <
41
- TData = ${operationResultType},
42
- TError = ${this.visitor.config.errorType}
43
- >(
41
+ ? generateBaseInfiniteQueryHook({
42
+ implArguments: `
44
43
  pageParamKey: keyof ${operationVariablesTypes},
45
44
  ${variables},
46
45
  ${options},
47
46
  headers?: RequestInit['headers']
48
- ) =>
49
- ${hookConfig.infiniteQuery.hook}<${operationResultType}, TError, TData>(
50
- ${(0, variables_generator_js_1.generateInfiniteQueryKey)(node, hasRequiredVariables)},
51
- (metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})}, headers)(),
52
- options
53
- );`
54
- : `export const useInfinite${operationName} = <
55
- TData = ${operationResultType},
56
- TError = ${this.visitor.config.errorType}
57
- >(
47
+ `,
48
+ implFetcher: `(metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, {...variables, [pageParamKey]: metaData.pageParam}, headers)()`,
49
+ })
50
+ : generateBaseInfiniteQueryHook({
51
+ implArguments: `
58
52
  client: GraphQLClient,
59
53
  ${variables},
60
54
  ${options},
61
55
  headers?: RequestInit['headers']
62
- ) =>
63
- ${hookConfig.infiniteQuery.hook}<${operationResultType}, TError, TData>(
64
- ${(0, variables_generator_js_1.generateInfiniteQueryKey)(node, hasRequiredVariables)},
65
- (metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(client, ${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})}, headers)(),
66
- options
67
- );`;
56
+ `,
57
+ implFetcher: `(metaData) => fetcher<${operationResultType}, ${operationVariablesTypes}>(client, ${documentVariableName}, {...variables, ...(metaData.pageParam ?? {})}, headers)()`,
58
+ });
68
59
  }
69
- generateQueryHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
70
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
60
+ generateQueryHook(config, isSuspense = false) {
71
61
  const typeImport = this.visitor.config.useTypeImports ? 'import type' : 'import';
72
62
  if (this.clientPath)
73
63
  this.visitor.imports.add(this.clientPath);
74
64
  this.visitor.imports.add(`${typeImport} { GraphQLClient } from 'graphql-request';`);
75
65
  this.visitor.imports.add(`${typeImport} { RequestInit } from 'graphql-request/dist/types.dom';`);
76
- const hookConfig = this.visitor.queryMethodMap;
77
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.query.hook);
78
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.query.options);
79
- const options = `options?: ${hookConfig.query.options}<${operationResultType}, TError, TData>`;
66
+ const { generateBaseQueryHook, variables, options } = this.generateQueryHelper(config, isSuspense);
67
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
80
68
  return this.clientPath
81
- ? `export const use${operationName} = <
82
- TData = ${operationResultType},
83
- TError = ${this.visitor.config.errorType}
84
- >(
69
+ ? generateBaseQueryHook({
70
+ implArguments: `
85
71
  ${variables},
86
72
  ${options},
87
73
  headers?: RequestInit['headers']
88
- ) =>
89
- ${hookConfig.query.hook}<${operationResultType}, TError, TData>(
90
- ${(0, variables_generator_js_1.generateQueryKey)(node, hasRequiredVariables)},
91
- fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables, headers),
92
- options
93
- );`
94
- : `export const use${operationName} = <
95
- TData = ${operationResultType},
96
- TError = ${this.visitor.config.errorType}
97
- >(
74
+ `,
75
+ implFetcher: `fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables, headers)`,
76
+ })
77
+ : generateBaseQueryHook({
78
+ implArguments: `
98
79
  client: GraphQLClient,
99
80
  ${variables},
100
81
  ${options},
101
82
  headers?: RequestInit['headers']
102
- ) =>
103
- ${hookConfig.query.hook}<${operationResultType}, TError, TData>(
104
- ${(0, variables_generator_js_1.generateQueryKey)(node, hasRequiredVariables)},
105
- fetcher<${operationResultType}, ${operationVariablesTypes}>(client, ${documentVariableName}, variables, headers),
106
- options
107
- );`;
83
+ `,
84
+ implFetcher: `fetcher<${operationResultType}, ${operationVariablesTypes}>(client, ${documentVariableName}, variables, headers)`,
85
+ });
108
86
  }
109
- generateMutationHook(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
110
- const variables = `variables?: ${operationVariablesTypes}`;
87
+ generateMutationHook(config) {
111
88
  const typeImport = this.visitor.config.useTypeImports ? 'import type' : 'import';
112
89
  if (this.clientPath)
113
90
  this.visitor.imports.add(this.clientPath);
114
91
  this.visitor.imports.add(`${typeImport} { GraphQLClient } from 'graphql-request';`);
115
- const hookConfig = this.visitor.queryMethodMap;
116
- this.visitor.reactQueryHookIdentifiersInUse.add(hookConfig.mutation.hook);
117
- this.visitor.reactQueryOptionsIdentifiersInUse.add(hookConfig.mutation.options);
118
- const options = `options?: ${hookConfig.mutation.options}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>`;
92
+ const { generateBaseMutationHook, variables, options } = this.generateMutationHelper(config);
93
+ const { documentVariableName, operationResultType, operationVariablesTypes } = config;
119
94
  return this.clientPath
120
- ? `export const use${operationName} = <
121
- TError = ${this.visitor.config.errorType},
122
- TContext = unknown
123
- >(
95
+ ? generateBaseMutationHook({
96
+ implArguments: `
124
97
  ${options},
125
98
  headers?: RequestInit['headers']
126
- ) =>
127
- ${hookConfig.mutation.hook}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>(
128
- ${(0, variables_generator_js_1.generateMutationKey)(node)},
129
- (${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables, headers)(),
130
- options
131
- );`
132
- : `export const use${operationName} = <
133
- TError = ${this.visitor.config.errorType},
134
- TContext = unknown
135
- >(
99
+ `,
100
+ implFetcher: `(${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(${documentVariableName}, variables, headers)()`,
101
+ })
102
+ : generateBaseMutationHook({
103
+ implArguments: `
136
104
  client: GraphQLClient,
137
105
  ${options},
138
106
  headers?: RequestInit['headers']
139
- ) =>
140
- ${hookConfig.mutation.hook}<${operationResultType}, TError, ${operationVariablesTypes}, TContext>(
141
- ${(0, variables_generator_js_1.generateMutationKey)(node)},
142
- (${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(client, ${documentVariableName}, variables, headers)(),
143
- options
144
- );`;
107
+ `,
108
+ implFetcher: `(${variables}) => fetcher<${operationResultType}, ${operationVariablesTypes}>(client, ${documentVariableName}, variables, headers)()`,
109
+ });
145
110
  }
146
- generateFetcherFetch(node, documentVariableName, operationName, operationResultType, operationVariablesTypes, hasRequiredVariables) {
147
- const variables = (0, variables_generator_js_1.generateQueryVariablesSignature)(hasRequiredVariables, operationVariablesTypes);
111
+ generateFetcherFetch(config) {
112
+ const { documentVariableName, operationResultType, operationVariablesTypes, operationName } = config;
113
+ const variables = this.generateQueryVariablesSignature(config);
148
114
  const typeImport = this.visitor.config.useTypeImports ? 'import type' : 'import';
149
115
  if (this.clientPath)
150
116
  this.visitor.imports.add(this.clientPath);