@vladimirdev635/gql-codegen 0.0.44 → 0.0.46

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.
@@ -17,8 +17,11 @@ function generateFunctionBlock(operationName, returnType) {
17
17
  ts.factory.createReturnStatement(ts.factory.createPropertyAccessChain(ts.factory.createIdentifier('executorResult'), undefined, 'result'))
18
18
  ], true);
19
19
  }
20
- function createReturnTypeNode(resultName, returnType) {
21
- const rType = ts.factory.createTypeReferenceNode(resultName);
20
+ function createReturnTypeNode(resultName, returnType, operationType) {
21
+ const rOpType = ts.factory.createTypeReferenceNode(resultName);
22
+ const rType = operationType === 'SUBSCRIPTION' ?
23
+ ts.factory.createTypeReferenceNode('SubOpAsyncIterable', [rOpType]) :
24
+ rOpType;
22
25
  if (returnType === 'ExecuteResult.result')
23
26
  return rType;
24
27
  return ts.factory.createTypeReferenceNode('ExecuteResult', [rType]);
@@ -30,8 +33,12 @@ function getReturnTypeFromConfig(config, operationName) {
30
33
  export function generateNodes(config, context) {
31
34
  const graphqlImports = [];
32
35
  let shouldIncludeExecuteResultType = false;
36
+ let shouldIncludeSubOpAsyncIterable = false;
33
37
  const nodes = Object.values(context.schema.client.operations)
34
38
  .map(operation => {
39
+ if (operation.type === 'SUBSCRIPTION') {
40
+ shouldIncludeSubOpAsyncIterable = true;
41
+ }
35
42
  const operationName = operation.name + 'Operation';
36
43
  const variablesName = operation.name + 'Variables';
37
44
  const resultName = operation.name + 'Result';
@@ -43,13 +50,16 @@ export function generateNodes(config, context) {
43
50
  ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, ts.factory.createTypeReferenceNode(variablesName)),
44
51
  ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, ts.factory.createTypeReferenceNode('TRequestContext')),
45
52
  ], ts.factory.createTypeReferenceNode('Promise', [
46
- createReturnTypeNode(resultName, returnType)
53
+ createReturnTypeNode(resultName, returnType, operation.type)
47
54
  ]), ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), generateFunctionBlock(operationName, returnType)));
48
55
  });
49
56
  const gqlClientImports = [
50
57
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('Executor')),
51
58
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('RequestContext'))
52
59
  ];
60
+ if (shouldIncludeSubOpAsyncIterable) {
61
+ gqlClientImports.push(ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier('SubOpAsyncIterable')));
62
+ }
53
63
  if (shouldIncludeExecuteResultType) {
54
64
  gqlClientImports.push(ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier('ExecuteResult')));
55
65
  }
@@ -1,32 +1,51 @@
1
1
  import ts from 'typescript';
2
- function generateFunctionBlock(operationName, lazy) {
3
- if (!lazy) {
4
- return ts.factory.createCallExpression(ts.factory.createIdentifier('useOperation'), undefined, [
5
- ts.factory.createIdentifier('executor'),
6
- ts.factory.createIdentifier(operationName),
7
- ts.factory.createIdentifier('variables'),
8
- ts.factory.createIdentifier('requestContext')
9
- ]);
2
+ function generateFunctionBlock(operationName, type) {
3
+ switch (type) {
4
+ case 'SYNC':
5
+ return ts.factory.createCallExpression(ts.factory.createIdentifier('useOperation'), undefined, [
6
+ ts.factory.createIdentifier('executor'),
7
+ ts.factory.createIdentifier(operationName),
8
+ ts.factory.createIdentifier('variables'),
9
+ ts.factory.createIdentifier('requestContext')
10
+ ]);
11
+ case 'LAZY':
12
+ return ts.factory.createCallExpression(ts.factory.createIdentifier('useLazyOperation'), undefined, [
13
+ ts.factory.createIdentifier('executor'),
14
+ ts.factory.createIdentifier(operationName)
15
+ ]);
16
+ case 'SUBSCRIPTION':
17
+ return ts.factory.createCallExpression(ts.factory.createIdentifier('useSubscription'), undefined, [
18
+ ts.factory.createIdentifier('executor'),
19
+ ts.factory.createIdentifier(operationName),
20
+ ts.factory.createIdentifier('variables'),
21
+ ts.factory.createIdentifier('requestContext')
22
+ ]);
10
23
  }
11
- return ts.factory.createCallExpression(ts.factory.createIdentifier('useLazyOperation'), undefined, [
12
- ts.factory.createIdentifier('executor'),
13
- ts.factory.createIdentifier(operationName)
14
- ]);
15
24
  }
16
- function generateArrowFunction(operationName, variablesName, resultName, lazy) {
25
+ function generateArrowFunction(operationName, variablesName, resultName, type) {
17
26
  const parameters = [];
18
- let resultType = ts.factory.createTypeReferenceNode('UseLazyOperationReturnType', [
19
- ts.factory.createTypeReferenceNode(variablesName),
20
- ts.factory.createTypeReferenceNode(resultName),
21
- ts.factory.createTypeReferenceNode('TRequestContext')
22
- ]);
23
- if (!lazy) {
24
- resultType = ts.factory.createTypeReferenceNode('OperationState', [
25
- ts.factory.createTypeReferenceNode(resultName)
26
- ]);
27
- parameters.push(ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, ts.factory.createTypeReferenceNode(variablesName)), ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, ts.factory.createTypeReferenceNode('TRequestContext')));
27
+ let resultType;
28
+ switch (type) {
29
+ case 'LAZY':
30
+ resultType = ts.factory.createTypeReferenceNode('UseLazyOperationReturnType', [
31
+ ts.factory.createTypeReferenceNode(variablesName),
32
+ ts.factory.createTypeReferenceNode(resultName),
33
+ ts.factory.createTypeReferenceNode('TRequestContext')
34
+ ]);
35
+ case 'SYNC': {
36
+ resultType = ts.factory.createTypeReferenceNode('OperationState', [
37
+ ts.factory.createTypeReferenceNode(resultName)
38
+ ]);
39
+ parameters.push(ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, ts.factory.createTypeReferenceNode(variablesName)), ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, ts.factory.createTypeReferenceNode('TRequestContext')));
40
+ }
41
+ case 'SUBSCRIPTION': {
42
+ resultType = ts.factory.createTypeReferenceNode('OperationState', [
43
+ ts.factory.createTypeReferenceNode('SubOpAsyncIterable', [ts.factory.createTypeReferenceNode(resultName)])
44
+ ]);
45
+ parameters.push(ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, ts.factory.createTypeReferenceNode(variablesName)), ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, ts.factory.createTypeReferenceNode('TRequestContext')));
46
+ }
28
47
  }
29
- return ts.factory.createArrowFunction(undefined, undefined, parameters, resultType, ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), generateFunctionBlock(operationName, lazy));
48
+ return ts.factory.createArrowFunction(undefined, undefined, parameters, resultType, ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), generateFunctionBlock(operationName, type));
30
49
  }
31
50
  export function generateNodes(config, context) {
32
51
  const graphqlImports = [];
@@ -36,9 +55,14 @@ export function generateNodes(config, context) {
36
55
  const variablesName = operation.name + 'Variables';
37
56
  const resultName = operation.name + 'Result';
38
57
  graphqlImports.push(operationName, variablesName, resultName);
58
+ if (operation.type === 'SUBSCRIPTION') {
59
+ return [
60
+ ts.factory.createPropertyAssignment('use' + operationName, generateArrowFunction(operationName, variablesName, resultName, 'SUBSCRIPTION')),
61
+ ];
62
+ }
39
63
  return [
40
- ts.factory.createPropertyAssignment('use' + operationName, generateArrowFunction(operationName, variablesName, resultName, false)),
41
- ts.factory.createPropertyAssignment('useLazy' + operationName, generateArrowFunction(operationName, variablesName, resultName, true))
64
+ ts.factory.createPropertyAssignment('use' + operationName, generateArrowFunction(operationName, variablesName, resultName, 'SYNC')),
65
+ ts.factory.createPropertyAssignment('useLazy' + operationName, generateArrowFunction(operationName, variablesName, resultName, 'LAZY'))
42
66
  ];
43
67
  }).flat();
44
68
  return [
@@ -1,6 +1,6 @@
1
1
  import ts from 'typescript';
2
2
  import { buildSymmetricScalarSpec } from './mapping.js';
3
- import { invokeMethod } from '../../../../../../actors/ts/shared.js';
3
+ import { invokeMethod } from '../../../../shared.js';
4
4
  import { builtinScalarsMapping } from './builtin.js';
5
5
  export const additionalScalarsMapping = {
6
6
  Int64: builtinScalarsMapping.Int,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vladimirdev635/gql-codegen",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",