Skip to content

Commit aa89b8b

Browse files
committed
ts:gql-codegen:refactor
1 parent 13c8548 commit aa89b8b

2 files changed

Lines changed: 70 additions & 42 deletions

File tree

  • typescript/gql-codegen/src/actors/ts

typescript/gql-codegen/src/actors/ts/gql-client-react/generators/main.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,19 @@ export function generateNodes(
217217
)
218218
]
219219

220+
const gqlClientImports = [
221+
ts.factory.createImportSpecifier(
222+
false,
223+
undefined,
224+
ts.factory.createIdentifier('IExecutor')
225+
),
226+
ts.factory.createImportSpecifier(
227+
false,
228+
undefined,
229+
ts.factory.createIdentifier('RequestContext')
230+
)
231+
]
232+
220233
if (subscriptionNodes.length !== 0) {
221234
gqlClientReactImports.push(
222235
ts.factory.createImportSpecifier(
@@ -226,6 +239,8 @@ export function generateNodes(
226239
'useSubscription'
227240
)
228241
),
242+
)
243+
gqlClientImports.push(
229244
ts.factory.createImportSpecifier(
230245
true,
231246
undefined,
@@ -281,20 +296,9 @@ export function generateNodes(
281296
ts.factory.createImportClause(
282297
true,
283298
undefined,
284-
ts.factory.createNamedImports([
285-
ts.factory.createImportSpecifier(
286-
false,
287-
undefined,
288-
ts.factory.createIdentifier('Executor')
289-
),
290-
ts.factory.createImportSpecifier(
291-
false,
292-
undefined,
293-
ts.factory.createIdentifier('RequestContext')
294-
)
295-
])
299+
ts.factory.createNamedImports(gqlClientImports)
296300
),
297-
ts.factory.createStringLiteral('@vladimirdev635/gql-client')
301+
ts.factory.createStringLiteral('@vladimirdev635/gql-client/types')
298302
),
299303
ts.factory.createImportDeclaration(
300304
undefined,
@@ -327,7 +331,7 @@ export function generateNodes(
327331
undefined,
328332
'executor',
329333
undefined,
330-
ts.factory.createTypeReferenceNode('Executor', [
334+
ts.factory.createTypeReferenceNode('IExecutor', [
331335
ts.factory.createTypeReferenceNode('TRequestContext')
332336
])
333337
)],

typescript/gql-codegen/src/actors/ts/gql-client/generators/main.ts

Lines changed: 52 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,32 @@
22
import { ActorContext } from '@/config.js';
33
import { GQLClientActorConfig, OperationReturnType } from '../actor.js';
44
import ts from 'typescript';
5+
import { operationSchema } from '@/schema/client/operation.js';
6+
import { z } from 'zod/v4';
57

68
function generateFunctionBlock(
79
operationName: string,
10+
operationType: z.infer<typeof operationSchema>['type'],
811
returnType: OperationReturnType
912
) {
13+
const callArgs = [
14+
ts.factory.createIdentifier(operationName),
15+
ts.factory.createIdentifier('variables'),
16+
ts.factory.createIdentifier('requestContext')
17+
]
18+
if (operationType === 'SUBSCRIPTION') {
19+
callArgs.push(ts.factory.createIdentifier('controller'))
20+
}
1021
const awaitExpression = ts.factory.createAwaitExpression(
1122
ts.factory.createCallExpression(
12-
ts.factory.createIdentifier('executor'),
23+
ts.factory.createPropertyAccessExpression(
24+
ts.factory.createIdentifier('executor'),
25+
operationType === 'SUBSCRIPTION' ?
26+
'executeSubscription' :
27+
'executeSync'
28+
),
1329
undefined,
14-
[
15-
ts.factory.createIdentifier(operationName),
16-
ts.factory.createIdentifier('variables'),
17-
ts.factory.createIdentifier('requestContext')
18-
]
30+
callArgs
1931
)
2032
)
2133
if (returnType === 'ExecuteResult') {
@@ -83,31 +95,43 @@ export function generateNodes(
8395
const returnType = getReturnTypeFromConfig(config, operation.name)
8496
if (returnType === 'ExecuteResult')
8597
shouldIncludeExecuteResultType = true
98+
const funcArgs = [
99+
ts.factory.createParameterDeclaration(
100+
undefined,
101+
undefined,
102+
'variables',
103+
undefined,
104+
ts.factory.createTypeReferenceNode(variablesName)
105+
),
106+
ts.factory.createParameterDeclaration(
107+
undefined,
108+
undefined,
109+
'requestContext',
110+
undefined,
111+
ts.factory.createTypeReferenceNode(
112+
'TRequestContext'
113+
),
114+
),
115+
]
116+
if (operation.type === 'SUBSCRIPTION') {
117+
funcArgs.push(
118+
ts.factory.createParameterDeclaration(
119+
undefined,
120+
undefined,
121+
'controller',
122+
undefined,
123+
ts.factory.createTypeReferenceNode('AbortController'),
124+
),
125+
)
126+
}
86127
const propAssignment = ts.factory.createPropertyAssignment(
87128
operation.name,
88129
ts.factory.createArrowFunction(
89130
ts.factory.createModifiersFromModifierFlags(
90131
ts.ModifierFlags.Async
91132
),
92133
undefined,
93-
[
94-
ts.factory.createParameterDeclaration(
95-
undefined,
96-
undefined,
97-
'variables',
98-
undefined,
99-
ts.factory.createTypeReferenceNode(variablesName)
100-
),
101-
ts.factory.createParameterDeclaration(
102-
undefined,
103-
undefined,
104-
'requestContext',
105-
undefined,
106-
ts.factory.createTypeReferenceNode(
107-
'TRequestContext'
108-
),
109-
),
110-
],
134+
funcArgs,
111135
ts.factory.createTypeReferenceNode(
112136
'Promise',
113137
[
@@ -121,7 +145,7 @@ export function generateNodes(
121145
ts.factory.createToken(
122146
ts.SyntaxKind.EqualsGreaterThanToken
123147
),
124-
generateFunctionBlock(operationName, returnType)
148+
generateFunctionBlock(operationName, operation.type, returnType)
125149
)
126150
)
127151

@@ -145,7 +169,7 @@ export function generateNodes(
145169
ts.factory.createImportSpecifier(
146170
false,
147171
undefined,
148-
ts.factory.createIdentifier('Executor')
172+
ts.factory.createIdentifier('IExecutor')
149173
),
150174
ts.factory.createImportSpecifier(
151175
false,
@@ -209,7 +233,7 @@ export function generateNodes(
209233
undefined,
210234
ts.factory.createNamedImports(gqlClientImports)
211235
),
212-
ts.factory.createStringLiteral('@vladimirdev635/gql-client')
236+
ts.factory.createStringLiteral('@vladimirdev635/gql-client/types')
213237
),
214238
ts.factory.createImportDeclaration(
215239
undefined,
@@ -242,7 +266,7 @@ export function generateNodes(
242266
undefined,
243267
'executor',
244268
undefined,
245-
ts.factory.createTypeReferenceNode('Executor', [
269+
ts.factory.createTypeReferenceNode('IExecutor', [
246270
ts.factory.createTypeReferenceNode('TRequestContext')
247271
])
248272
)],

0 commit comments

Comments
 (0)