@constructive-io/graphql-codegen 2.23.2 → 2.24.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.
- package/README.md +147 -2
- package/cli/codegen/babel-ast.d.ts +46 -0
- package/cli/codegen/babel-ast.js +145 -0
- package/cli/codegen/barrel.d.ts +7 -2
- package/cli/codegen/barrel.js +159 -97
- package/cli/codegen/client.js +61 -0
- package/cli/codegen/custom-mutations.d.ts +2 -12
- package/cli/codegen/custom-mutations.js +116 -124
- package/cli/codegen/custom-queries.d.ts +2 -10
- package/cli/codegen/custom-queries.js +246 -335
- package/cli/codegen/index.d.ts +3 -0
- package/cli/codegen/index.js +72 -3
- package/cli/codegen/invalidation.d.ts +20 -0
- package/cli/codegen/invalidation.js +327 -0
- package/cli/codegen/mutation-keys.d.ts +24 -0
- package/cli/codegen/mutation-keys.js +247 -0
- package/cli/codegen/mutations.d.ts +3 -19
- package/cli/codegen/mutations.js +372 -383
- package/cli/codegen/orm/barrel.d.ts +1 -1
- package/cli/codegen/orm/barrel.js +42 -10
- package/cli/codegen/orm/client-generator.d.ts +1 -19
- package/cli/codegen/orm/client-generator.js +108 -77
- package/cli/codegen/orm/custom-ops-generator.d.ts +1 -12
- package/cli/codegen/orm/custom-ops-generator.js +192 -235
- package/cli/codegen/orm/input-types-generator.d.ts +13 -1
- package/cli/codegen/orm/input-types-generator.js +403 -147
- package/cli/codegen/orm/model-generator.d.ts +1 -19
- package/cli/codegen/orm/model-generator.js +229 -234
- package/cli/codegen/queries.d.ts +3 -11
- package/cli/codegen/queries.js +582 -389
- package/cli/codegen/query-keys.d.ts +15 -0
- package/cli/codegen/query-keys.js +477 -0
- package/cli/codegen/scalars.js +1 -0
- package/cli/codegen/schema-types-generator.d.ts +15 -10
- package/cli/codegen/schema-types-generator.js +87 -175
- package/cli/codegen/type-resolver.d.ts +1 -30
- package/cli/codegen/type-resolver.js +0 -53
- package/cli/codegen/types.d.ts +1 -1
- package/cli/codegen/types.js +76 -21
- package/cli/commands/generate.js +1 -0
- package/cli/index.js +1 -0
- package/esm/cli/codegen/babel-ast.d.ts +46 -0
- package/esm/cli/codegen/babel-ast.js +97 -0
- package/esm/cli/codegen/barrel.d.ts +7 -2
- package/esm/cli/codegen/barrel.js +126 -97
- package/esm/cli/codegen/client.js +61 -0
- package/esm/cli/codegen/custom-mutations.d.ts +2 -12
- package/esm/cli/codegen/custom-mutations.js +83 -124
- package/esm/cli/codegen/custom-queries.d.ts +2 -10
- package/esm/cli/codegen/custom-queries.js +214 -336
- package/esm/cli/codegen/index.d.ts +3 -0
- package/esm/cli/codegen/index.js +68 -2
- package/esm/cli/codegen/invalidation.d.ts +20 -0
- package/esm/cli/codegen/invalidation.js +291 -0
- package/esm/cli/codegen/mutation-keys.d.ts +24 -0
- package/esm/cli/codegen/mutation-keys.js +211 -0
- package/esm/cli/codegen/mutations.d.ts +3 -19
- package/esm/cli/codegen/mutations.js +340 -384
- package/esm/cli/codegen/orm/barrel.d.ts +1 -1
- package/esm/cli/codegen/orm/barrel.js +10 -11
- package/esm/cli/codegen/orm/client-generator.d.ts +1 -19
- package/esm/cli/codegen/orm/client-generator.js +76 -78
- package/esm/cli/codegen/orm/custom-ops-generator.d.ts +1 -12
- package/esm/cli/codegen/orm/custom-ops-generator.js +160 -236
- package/esm/cli/codegen/orm/input-types-generator.d.ts +13 -1
- package/esm/cli/codegen/orm/input-types-generator.js +371 -148
- package/esm/cli/codegen/orm/model-generator.d.ts +1 -19
- package/esm/cli/codegen/orm/model-generator.js +197 -235
- package/esm/cli/codegen/queries.d.ts +3 -11
- package/esm/cli/codegen/queries.js +550 -390
- package/esm/cli/codegen/query-keys.d.ts +15 -0
- package/esm/cli/codegen/query-keys.js +441 -0
- package/esm/cli/codegen/scalars.js +1 -0
- package/esm/cli/codegen/schema-types-generator.d.ts +15 -10
- package/esm/cli/codegen/schema-types-generator.js +54 -175
- package/esm/cli/codegen/type-resolver.d.ts +1 -30
- package/esm/cli/codegen/type-resolver.js +0 -49
- package/esm/cli/codegen/types.d.ts +1 -1
- package/esm/cli/codegen/types.js +44 -22
- package/esm/cli/commands/generate.js +1 -0
- package/esm/cli/index.js +1 -0
- package/esm/types/config.d.ts +75 -0
- package/esm/types/config.js +19 -1
- package/package.json +6 -4
- package/types/config.d.ts +75 -0
- package/types/config.js +20 -2
- package/cli/codegen/ts-ast.d.ts +0 -124
- package/cli/codegen/ts-ast.js +0 -280
- package/esm/cli/codegen/ts-ast.d.ts +0 -124
- package/esm/cli/codegen/ts-ast.js +0 -260
package/cli/codegen/barrel.js
CHANGED
|
@@ -1,109 +1,171 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.generateQueriesBarrel = generateQueriesBarrel;
|
|
4
37
|
exports.generateMutationsBarrel = generateMutationsBarrel;
|
|
5
38
|
exports.generateMainBarrel = generateMainBarrel;
|
|
6
39
|
exports.generateCustomQueriesBarrel = generateCustomQueriesBarrel;
|
|
7
40
|
exports.generateCustomMutationsBarrel = generateCustomMutationsBarrel;
|
|
8
|
-
const
|
|
41
|
+
const t = __importStar(require("@babel/types"));
|
|
42
|
+
const babel_ast_1 = require("./babel-ast");
|
|
9
43
|
const utils_1 = require("./utils");
|
|
10
44
|
const type_resolver_1 = require("./type-resolver");
|
|
45
|
+
/**
|
|
46
|
+
* Helper to create export * from './module' statement
|
|
47
|
+
*/
|
|
48
|
+
function exportAllFrom(modulePath) {
|
|
49
|
+
return t.exportAllDeclaration(t.stringLiteral(modulePath));
|
|
50
|
+
}
|
|
11
51
|
/**
|
|
12
52
|
* Generate the queries/index.ts barrel file
|
|
13
53
|
*/
|
|
14
54
|
function generateQueriesBarrel(tables) {
|
|
15
|
-
const
|
|
55
|
+
const statements = [];
|
|
16
56
|
// Export all query hooks
|
|
17
57
|
for (const table of tables) {
|
|
18
58
|
const listHookName = (0, utils_1.getListQueryHookName)(table);
|
|
19
59
|
const singleHookName = (0, utils_1.getSingleQueryHookName)(table);
|
|
20
|
-
|
|
21
|
-
|
|
60
|
+
statements.push(exportAllFrom(`./${listHookName}`));
|
|
61
|
+
statements.push(exportAllFrom(`./${singleHookName}`));
|
|
62
|
+
}
|
|
63
|
+
// Add file header as leading comment on first statement
|
|
64
|
+
if (statements.length > 0) {
|
|
65
|
+
(0, babel_ast_1.addJSDocComment)(statements[0], [
|
|
66
|
+
'Query hooks barrel export',
|
|
67
|
+
'@generated by @constructive-io/graphql-codegen',
|
|
68
|
+
'DO NOT EDIT - changes will be overwritten',
|
|
69
|
+
]);
|
|
22
70
|
}
|
|
23
|
-
return
|
|
71
|
+
return (0, babel_ast_1.generateCode)(statements);
|
|
24
72
|
}
|
|
25
73
|
/**
|
|
26
74
|
* Generate the mutations/index.ts barrel file
|
|
27
75
|
*/
|
|
28
76
|
function generateMutationsBarrel(tables) {
|
|
29
|
-
const
|
|
30
|
-
(0, ts_ast_1.createFileHeader)('Mutation hooks barrel export'),
|
|
31
|
-
'',
|
|
32
|
-
];
|
|
77
|
+
const statements = [];
|
|
33
78
|
// Export all mutation hooks
|
|
34
79
|
for (const table of tables) {
|
|
35
80
|
const createHookName = (0, utils_1.getCreateMutationHookName)(table);
|
|
36
81
|
const updateHookName = (0, utils_1.getUpdateMutationHookName)(table);
|
|
37
82
|
const deleteHookName = (0, utils_1.getDeleteMutationHookName)(table);
|
|
38
|
-
|
|
83
|
+
statements.push(exportAllFrom(`./${createHookName}`));
|
|
39
84
|
// Only add update/delete if they exist
|
|
40
85
|
if (table.query?.update !== null) {
|
|
41
|
-
|
|
86
|
+
statements.push(exportAllFrom(`./${updateHookName}`));
|
|
42
87
|
}
|
|
43
88
|
if (table.query?.delete !== null) {
|
|
44
|
-
|
|
89
|
+
statements.push(exportAllFrom(`./${deleteHookName}`));
|
|
45
90
|
}
|
|
46
91
|
}
|
|
47
|
-
|
|
92
|
+
// Add file header as leading comment on first statement
|
|
93
|
+
if (statements.length > 0) {
|
|
94
|
+
(0, babel_ast_1.addJSDocComment)(statements[0], [
|
|
95
|
+
'Mutation hooks barrel export',
|
|
96
|
+
'@generated by @constructive-io/graphql-codegen',
|
|
97
|
+
'DO NOT EDIT - changes will be overwritten',
|
|
98
|
+
]);
|
|
99
|
+
}
|
|
100
|
+
return (0, babel_ast_1.generateCode)(statements);
|
|
48
101
|
}
|
|
49
102
|
function generateMainBarrel(tables, options = {}) {
|
|
50
103
|
// Support legacy signature where second arg was just hasSchemaTypes boolean
|
|
51
104
|
const opts = typeof options === 'boolean'
|
|
52
105
|
? { hasSchemaTypes: options, hasMutations: true }
|
|
53
106
|
: options;
|
|
54
|
-
const { hasSchemaTypes = false, hasMutations = true } = opts;
|
|
55
|
-
const tableNames = tables.map((
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
+
const { hasSchemaTypes = false, hasMutations = true, hasQueryKeys = false, hasMutationKeys = false, hasInvalidation = false, } = opts;
|
|
108
|
+
const tableNames = tables.map((tbl) => tbl.name).join(', ');
|
|
109
|
+
const statements = [];
|
|
110
|
+
// Client configuration
|
|
111
|
+
statements.push(exportAllFrom('./client'));
|
|
112
|
+
// Entity and filter types
|
|
113
|
+
statements.push(exportAllFrom('./types'));
|
|
114
|
+
// Schema types (input, payload, enum types)
|
|
115
|
+
if (hasSchemaTypes) {
|
|
116
|
+
statements.push(exportAllFrom('./schema-types'));
|
|
117
|
+
}
|
|
118
|
+
// Centralized query keys (for cache management)
|
|
119
|
+
if (hasQueryKeys) {
|
|
120
|
+
statements.push(exportAllFrom('./query-keys'));
|
|
121
|
+
}
|
|
122
|
+
// Centralized mutation keys (for tracking in-flight mutations)
|
|
123
|
+
if (hasMutationKeys) {
|
|
124
|
+
statements.push(exportAllFrom('./mutation-keys'));
|
|
125
|
+
}
|
|
126
|
+
// Cache invalidation helpers
|
|
127
|
+
if (hasInvalidation) {
|
|
128
|
+
statements.push(exportAllFrom('./invalidation'));
|
|
129
|
+
}
|
|
130
|
+
// Query hooks
|
|
131
|
+
statements.push(exportAllFrom('./queries'));
|
|
132
|
+
// Mutation hooks
|
|
133
|
+
if (hasMutations) {
|
|
134
|
+
statements.push(exportAllFrom('./mutations'));
|
|
135
|
+
}
|
|
136
|
+
// Add file header as leading comment on first statement
|
|
137
|
+
if (statements.length > 0) {
|
|
138
|
+
(0, babel_ast_1.addJSDocComment)(statements[0], [
|
|
139
|
+
'Auto-generated GraphQL SDK',
|
|
140
|
+
'@generated by @constructive-io/graphql-codegen',
|
|
141
|
+
'',
|
|
142
|
+
`Tables: ${tableNames}`,
|
|
143
|
+
'',
|
|
144
|
+
'Usage:',
|
|
145
|
+
'',
|
|
146
|
+
'1. Configure the client:',
|
|
147
|
+
'```ts',
|
|
148
|
+
"import { configure } from './generated';",
|
|
149
|
+
'',
|
|
150
|
+
'configure({',
|
|
151
|
+
" endpoint: 'https://api.example.com/graphql',",
|
|
152
|
+
" headers: { Authorization: 'Bearer <token>' },",
|
|
153
|
+
'});',
|
|
154
|
+
'```',
|
|
155
|
+
'',
|
|
156
|
+
'2. Use the hooks:',
|
|
157
|
+
'```tsx',
|
|
158
|
+
"import { useCarsQuery, useCreateCarMutation } from './generated';",
|
|
159
|
+
'',
|
|
160
|
+
'function MyComponent() {',
|
|
161
|
+
' const { data, isLoading } = useCarsQuery({ first: 10 });',
|
|
162
|
+
' const { mutate } = useCreateCarMutation();',
|
|
163
|
+
' // ...',
|
|
164
|
+
'}',
|
|
165
|
+
'```',
|
|
166
|
+
]);
|
|
167
|
+
}
|
|
168
|
+
return (0, babel_ast_1.generateCode)(statements);
|
|
107
169
|
}
|
|
108
170
|
// ============================================================================
|
|
109
171
|
// Custom operation barrels (includes both table and custom hooks)
|
|
@@ -112,60 +174,60 @@ ${mutationsExport}`;
|
|
|
112
174
|
* Generate queries barrel including custom query operations
|
|
113
175
|
*/
|
|
114
176
|
function generateCustomQueriesBarrel(tables, customQueryNames) {
|
|
115
|
-
const
|
|
116
|
-
(0, ts_ast_1.createFileHeader)('Query hooks barrel export'),
|
|
117
|
-
'',
|
|
118
|
-
'// Table-based query hooks',
|
|
119
|
-
];
|
|
177
|
+
const statements = [];
|
|
120
178
|
// Export all table query hooks
|
|
121
179
|
for (const table of tables) {
|
|
122
180
|
const listHookName = (0, utils_1.getListQueryHookName)(table);
|
|
123
181
|
const singleHookName = (0, utils_1.getSingleQueryHookName)(table);
|
|
124
|
-
|
|
125
|
-
|
|
182
|
+
statements.push(exportAllFrom(`./${listHookName}`));
|
|
183
|
+
statements.push(exportAllFrom(`./${singleHookName}`));
|
|
126
184
|
}
|
|
127
185
|
// Add custom query hooks
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
186
|
+
for (const name of customQueryNames) {
|
|
187
|
+
const hookName = (0, type_resolver_1.getOperationHookName)(name, 'query');
|
|
188
|
+
statements.push(exportAllFrom(`./${hookName}`));
|
|
189
|
+
}
|
|
190
|
+
// Add file header as leading comment on first statement
|
|
191
|
+
if (statements.length > 0) {
|
|
192
|
+
(0, babel_ast_1.addJSDocComment)(statements[0], [
|
|
193
|
+
'Query hooks barrel export',
|
|
194
|
+
'@generated by @constructive-io/graphql-codegen',
|
|
195
|
+
'DO NOT EDIT - changes will be overwritten',
|
|
196
|
+
]);
|
|
135
197
|
}
|
|
136
|
-
return
|
|
198
|
+
return (0, babel_ast_1.generateCode)(statements);
|
|
137
199
|
}
|
|
138
200
|
/**
|
|
139
201
|
* Generate mutations barrel including custom mutation operations
|
|
140
202
|
*/
|
|
141
203
|
function generateCustomMutationsBarrel(tables, customMutationNames) {
|
|
142
|
-
const
|
|
143
|
-
(0, ts_ast_1.createFileHeader)('Mutation hooks barrel export'),
|
|
144
|
-
'',
|
|
145
|
-
'// Table-based mutation hooks',
|
|
146
|
-
];
|
|
204
|
+
const statements = [];
|
|
147
205
|
// Export all table mutation hooks
|
|
148
206
|
for (const table of tables) {
|
|
149
207
|
const createHookName = (0, utils_1.getCreateMutationHookName)(table);
|
|
150
208
|
const updateHookName = (0, utils_1.getUpdateMutationHookName)(table);
|
|
151
209
|
const deleteHookName = (0, utils_1.getDeleteMutationHookName)(table);
|
|
152
|
-
|
|
210
|
+
statements.push(exportAllFrom(`./${createHookName}`));
|
|
153
211
|
// Only add update/delete if they exist
|
|
154
212
|
if (table.query?.update !== null) {
|
|
155
|
-
|
|
213
|
+
statements.push(exportAllFrom(`./${updateHookName}`));
|
|
156
214
|
}
|
|
157
215
|
if (table.query?.delete !== null) {
|
|
158
|
-
|
|
216
|
+
statements.push(exportAllFrom(`./${deleteHookName}`));
|
|
159
217
|
}
|
|
160
218
|
}
|
|
161
219
|
// Add custom mutation hooks
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
220
|
+
for (const name of customMutationNames) {
|
|
221
|
+
const hookName = (0, type_resolver_1.getOperationHookName)(name, 'mutation');
|
|
222
|
+
statements.push(exportAllFrom(`./${hookName}`));
|
|
223
|
+
}
|
|
224
|
+
// Add file header as leading comment on first statement
|
|
225
|
+
if (statements.length > 0) {
|
|
226
|
+
(0, babel_ast_1.addJSDocComment)(statements[0], [
|
|
227
|
+
'Mutation hooks barrel export',
|
|
228
|
+
'@generated by @constructive-io/graphql-codegen',
|
|
229
|
+
'DO NOT EDIT - changes will be overwritten',
|
|
230
|
+
]);
|
|
169
231
|
}
|
|
170
|
-
return
|
|
232
|
+
return (0, babel_ast_1.generateCode)(statements);
|
|
171
233
|
}
|
package/cli/codegen/client.js
CHANGED
|
@@ -199,5 +199,66 @@ export async function executeWithErrors<TData = unknown, TVariables = Record<str
|
|
|
199
199
|
errors: json.errors ?? null,
|
|
200
200
|
};
|
|
201
201
|
}
|
|
202
|
+
|
|
203
|
+
// ============================================================================
|
|
204
|
+
// QueryClient Factory
|
|
205
|
+
// ============================================================================
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Default QueryClient configuration optimized for GraphQL
|
|
209
|
+
*
|
|
210
|
+
* These defaults provide a good balance between freshness and performance:
|
|
211
|
+
* - staleTime: 1 minute - data considered fresh, won't refetch
|
|
212
|
+
* - gcTime: 5 minutes - unused data kept in cache
|
|
213
|
+
* - refetchOnWindowFocus: false - don't refetch when tab becomes active
|
|
214
|
+
* - retry: 1 - retry failed requests once
|
|
215
|
+
*/
|
|
216
|
+
export const defaultQueryClientOptions = {
|
|
217
|
+
defaultOptions: {
|
|
218
|
+
queries: {
|
|
219
|
+
staleTime: 1000 * 60, // 1 minute
|
|
220
|
+
gcTime: 1000 * 60 * 5, // 5 minutes
|
|
221
|
+
refetchOnWindowFocus: false,
|
|
222
|
+
retry: 1,
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* QueryClient options type for createQueryClient
|
|
229
|
+
*/
|
|
230
|
+
export interface CreateQueryClientOptions {
|
|
231
|
+
defaultOptions?: {
|
|
232
|
+
queries?: {
|
|
233
|
+
staleTime?: number;
|
|
234
|
+
gcTime?: number;
|
|
235
|
+
refetchOnWindowFocus?: boolean;
|
|
236
|
+
retry?: number | boolean;
|
|
237
|
+
retryDelay?: number | ((attemptIndex: number) => number);
|
|
238
|
+
};
|
|
239
|
+
mutations?: {
|
|
240
|
+
retry?: number | boolean;
|
|
241
|
+
retryDelay?: number | ((attemptIndex: number) => number);
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Note: createQueryClient is available when using with @tanstack/react-query
|
|
247
|
+
// Import QueryClient from '@tanstack/react-query' and use these options:
|
|
248
|
+
//
|
|
249
|
+
// import { QueryClient } from '@tanstack/react-query';
|
|
250
|
+
// const queryClient = new QueryClient(defaultQueryClientOptions);
|
|
251
|
+
//
|
|
252
|
+
// Or merge with your own options:
|
|
253
|
+
// const queryClient = new QueryClient({
|
|
254
|
+
// ...defaultQueryClientOptions,
|
|
255
|
+
// defaultOptions: {
|
|
256
|
+
// ...defaultQueryClientOptions.defaultOptions,
|
|
257
|
+
// queries: {
|
|
258
|
+
// ...defaultQueryClientOptions.defaultOptions.queries,
|
|
259
|
+
// staleTime: 30000, // Override specific options
|
|
260
|
+
// },
|
|
261
|
+
// },
|
|
262
|
+
// });
|
|
202
263
|
`;
|
|
203
264
|
}
|
|
@@ -21,28 +21,18 @@ export interface GenerateCustomMutationHookOptions {
|
|
|
21
21
|
typeRegistry: TypeRegistry;
|
|
22
22
|
maxDepth?: number;
|
|
23
23
|
skipQueryField?: boolean;
|
|
24
|
-
/** Whether to generate React Query hooks (default: true for backwards compatibility) */
|
|
25
24
|
reactQueryEnabled?: boolean;
|
|
26
|
-
/** Table entity type names (for import path resolution) */
|
|
27
25
|
tableTypeNames?: Set<string>;
|
|
26
|
+
useCentralizedKeys?: boolean;
|
|
28
27
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Generate a custom mutation hook file
|
|
31
|
-
* When reactQueryEnabled is false, returns null since mutations require React Query
|
|
32
|
-
*/
|
|
33
28
|
export declare function generateCustomMutationHook(options: GenerateCustomMutationHookOptions): GeneratedCustomMutationFile | null;
|
|
34
29
|
export interface GenerateAllCustomMutationHooksOptions {
|
|
35
30
|
operations: CleanOperation[];
|
|
36
31
|
typeRegistry: TypeRegistry;
|
|
37
32
|
maxDepth?: number;
|
|
38
33
|
skipQueryField?: boolean;
|
|
39
|
-
/** Whether to generate React Query hooks (default: true for backwards compatibility) */
|
|
40
34
|
reactQueryEnabled?: boolean;
|
|
41
|
-
/** Table entity type names (for import path resolution) */
|
|
42
35
|
tableTypeNames?: Set<string>;
|
|
36
|
+
useCentralizedKeys?: boolean;
|
|
43
37
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Generate all custom mutation hook files
|
|
46
|
-
* When reactQueryEnabled is false, returns empty array since mutations require React Query
|
|
47
|
-
*/
|
|
48
38
|
export declare function generateAllCustomMutationHooks(options: GenerateAllCustomMutationHooksOptions): GeneratedCustomMutationFile[];
|