@vladimirdev635/gql-codegen 0.0.108 → 0.0.110

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.
Files changed (81) hide show
  1. package/actors/ts/gql-client/actor.d.ts +7 -1
  2. package/actors/ts/gql-client/actor.js +1 -1
  3. package/actors/ts/gql-client/generators/help-nodes/build-subscription-callback-function.d.ts +4 -0
  4. package/actors/ts/gql-client/generators/help-nodes/build-subscription-callback-function.js +35 -0
  5. package/actors/ts/gql-client/generators/help-nodes/build-sync-callback-function.d.ts +4 -0
  6. package/actors/ts/gql-client/generators/help-nodes/build-sync-callback-function.js +35 -0
  7. package/actors/ts/gql-client/generators/help-nodes/callback-arrow-func.d.ts +3 -0
  8. package/actors/ts/gql-client/generators/help-nodes/callback-arrow-func.js +15 -0
  9. package/actors/ts/gql-client/generators/help-nodes/index.d.ts +9 -0
  10. package/actors/ts/gql-client/generators/help-nodes/index.js +71 -0
  11. package/actors/ts/gql-client/generators/help-nodes/sdk-operations-type-node.d.ts +4 -0
  12. package/actors/ts/gql-client/generators/help-nodes/sdk-operations-type-node.js +17 -0
  13. package/actors/ts/gql-client/generators/help-nodes/sdk-type.d.ts +7 -0
  14. package/actors/ts/gql-client/generators/help-nodes/sdk-type.js +21 -0
  15. package/actors/ts/gql-client/generators/help-nodes/subscription-method-func-alias.d.ts +3 -0
  16. package/actors/ts/gql-client/generators/help-nodes/subscription-method-func-alias.js +14 -0
  17. package/actors/ts/gql-client/generators/help-nodes/sync-method-func-alias.d.ts +3 -0
  18. package/actors/ts/gql-client/generators/help-nodes/sync-method-func-alias.js +13 -0
  19. package/actors/ts/gql-client/generators/main.d.ts +1 -1
  20. package/actors/ts/gql-client/generators/main.js +41 -71
  21. package/actors/ts/gql-client/generators/operation-function-block.d.ts +3 -0
  22. package/actors/ts/gql-client/generators/operation-function-block.js +21 -0
  23. package/actors/ts/gql-client/generators/operation-return-type.d.ts +4 -0
  24. package/actors/ts/gql-client/generators/operation-return-type.js +16 -0
  25. package/actors/ts/gql-client-framework/actor.d.ts +42 -0
  26. package/actors/ts/gql-client-framework/actor.js +11 -0
  27. package/actors/ts/gql-client-framework/generators/help-nodes/index.d.ts +8 -0
  28. package/actors/ts/gql-client-framework/generators/help-nodes/index.js +55 -0
  29. package/actors/ts/gql-client-framework/generators/help-nodes/lazy-hook-builder.d.ts +4 -0
  30. package/actors/ts/gql-client-framework/generators/help-nodes/lazy-hook-builder.js +44 -0
  31. package/actors/ts/gql-client-framework/generators/help-nodes/sdk-operations-type-node.d.ts +4 -0
  32. package/actors/ts/gql-client-framework/generators/help-nodes/sdk-operations-type-node.js +45 -0
  33. package/actors/ts/gql-client-framework/generators/help-nodes/sdk-type.d.ts +7 -0
  34. package/actors/ts/gql-client-framework/generators/help-nodes/sdk-type.js +21 -0
  35. package/actors/ts/gql-client-framework/generators/help-nodes/subscription-hook-builders.d.ts +4 -0
  36. package/actors/ts/gql-client-framework/generators/help-nodes/subscription-hook-builders.js +52 -0
  37. package/actors/ts/gql-client-framework/generators/help-nodes/sync-hook-builders.d.ts +4 -0
  38. package/actors/ts/gql-client-framework/generators/help-nodes/sync-hook-builders.js +52 -0
  39. package/actors/ts/gql-client-framework/generators/main.js +88 -0
  40. package/actors/ts/gql-client-framework/index.d.ts +1 -0
  41. package/actors/ts/gql-client-framework/index.js +1 -0
  42. package/actors/ts/gql-client-react/actor.d.ts +5 -12
  43. package/actors/ts/gql-client-react/actor.js +10 -9
  44. package/actors/ts/gql-client-react/index.d.ts +1 -1
  45. package/actors/ts/gql-client-vue/actor.d.ts +5 -12
  46. package/actors/ts/gql-client-vue/actor.js +27 -9
  47. package/actors/ts/gql-client-vue/index.d.ts +1 -1
  48. package/actors/ts/graphql/actor.d.ts +6 -5
  49. package/actors/ts/graphql/actor.js +4 -4
  50. package/actors/ts/graphql/generators/client/fragments.d.ts +3 -3
  51. package/actors/ts/graphql/generators/client/fragments.js +24 -21
  52. package/actors/ts/graphql/generators/client/main.d.ts +3 -3
  53. package/actors/ts/graphql/generators/client/main.js +1 -18
  54. package/actors/ts/graphql/generators/client/operations.d.ts +4 -3
  55. package/actors/ts/graphql/generators/client/operations.js +22 -24
  56. package/actors/ts/graphql/generators/main.d.ts +2 -2
  57. package/actors/ts/graphql/generators/main.js +1 -1
  58. package/actors/ts/graphql/generators/server/inputs.d.ts +1 -1
  59. package/actors/ts/graphql/generators/server/inputs.js +6 -6
  60. package/actors/ts/graphql/generators/server/main.d.ts +2 -2
  61. package/actors/ts/graphql/generators/server/objects.js +2 -2
  62. package/actors/ts/graphql/generators/server/scalars/additional.d.ts +1 -0
  63. package/actors/ts/graphql/generators/server/scalars/additional.js +2 -1
  64. package/actors/ts/graphql/generators/server/shared.d.ts +3 -2
  65. package/actors/ts/graphql/generators/server/shared.js +10 -1
  66. package/actors/ts/graphql/generators/server/unions.js +2 -2
  67. package/actors/ts/graphql/index.d.ts +1 -1
  68. package/actors/ts/graphql/index.js +1 -1
  69. package/actors/ts/index.d.ts +2 -1
  70. package/actors/ts/index.js +1 -0
  71. package/actors/ts/shared.d.ts +5 -0
  72. package/actors/ts/utils.d.ts +2 -4
  73. package/actors/ts/utils.js +4 -3
  74. package/package.json +1 -1
  75. package/schema/client/operation.d.ts +3 -0
  76. package/schema/utils.d.ts +6 -6
  77. package/schema/utils.js +8 -6
  78. package/actors/ts/gql-client-react/generators/main.d.ts +0 -4
  79. package/actors/ts/gql-client-react/generators/main.js +0 -121
  80. package/actors/ts/gql-client-vue/generators/main.js +0 -135
  81. /package/actors/ts/{gql-client-vue → gql-client-framework}/generators/main.d.ts +0 -0
@@ -0,0 +1,55 @@
1
+ import ts from 'typescript';
2
+ import { generateSdkTypeNode } from './sdk-operations-type-node.js';
3
+ import { generateSdkType } from './sdk-type.js';
4
+ import { generateSyncHookBuilder, generateSyncHookType, } from './sync-hook-builders.js';
5
+ import { generateLazyHookBuilder, generateLazyHookType, } from './lazy-hook-builder.js';
6
+ import { generateSubscriptionHookBuilder, generateSubscriptionHookType, } from './subscription-hook-builders.js';
7
+ function generateSdkTypeNodes(config, context, state) {
8
+ return [
9
+ ...(state.hasQueries
10
+ ? [
11
+ generateSdkTypeNode(config, 'QUERY', context.schema.client.operations),
12
+ ts.factory.createIdentifier('\n'),
13
+ ]
14
+ : []),
15
+ ...(state.hasMutations
16
+ ? [
17
+ generateSdkTypeNode(config, 'MUTATION', context.schema.client.operations),
18
+ ts.factory.createIdentifier('\n'),
19
+ ]
20
+ : []),
21
+ ...(state.hasSubscriptions
22
+ ? [
23
+ generateSdkTypeNode(config, 'SUBSCRIPTION', context.schema.client.operations),
24
+ ts.factory.createIdentifier('\n'),
25
+ ]
26
+ : []),
27
+ ];
28
+ }
29
+ export function generateHelpNodes(config, context, state) {
30
+ return [
31
+ ...(state.hasQueries
32
+ ? [
33
+ generateSyncHookType(config),
34
+ ts.factory.createIdentifier('\n'),
35
+ generateSyncHookBuilder(config),
36
+ ]
37
+ : []),
38
+ ...(state.hasQueries || state.hasMutations
39
+ ? [
40
+ generateLazyHookType(config),
41
+ ts.factory.createIdentifier('\n'),
42
+ generateLazyHookBuilder(config),
43
+ ]
44
+ : []),
45
+ ...(state.hasSubscriptions
46
+ ? [
47
+ generateSubscriptionHookType(config),
48
+ ts.factory.createIdentifier('\n'),
49
+ generateSubscriptionHookBuilder(config),
50
+ ]
51
+ : []),
52
+ ...generateSdkTypeNodes(config, context, state),
53
+ generateSdkType(config, state),
54
+ ];
55
+ }
@@ -0,0 +1,4 @@
1
+ import ts from 'typescript';
2
+ import { Config } from '../../actor.js';
3
+ export declare function generateLazyHookType(config: Config): ts.TypeAliasDeclaration;
4
+ export declare function generateLazyHookBuilder(config: Config): ts.FunctionDeclaration;
@@ -0,0 +1,44 @@
1
+ /* oxlint-disable max-lines */
2
+ import ts from 'typescript';
3
+ function generateLazyHookReturnType(variablesTypeNode, resultTypeNode) {
4
+ return ts.factory.createTypeReferenceNode('UseLazyOperationHookReturnType', [
5
+ ts.factory.createTypeReferenceNode('TRequestContext'),
6
+ variablesTypeNode,
7
+ resultTypeNode,
8
+ ]);
9
+ }
10
+ export function generateLazyHookType(config) {
11
+ return ts.factory.createTypeAliasDeclaration([], config.sdk.lazyHookTypeName, [
12
+ ts.factory.createTypeParameterDeclaration(undefined, 'TRequestContext', ts.factory.createTypeReferenceNode('types.RequestContext')),
13
+ ts.factory.createTypeParameterDeclaration(undefined, 'TVariables'),
14
+ ts.factory.createTypeParameterDeclaration(undefined, 'TResult'),
15
+ ], ts.factory.createFunctionTypeNode(undefined, [], generateLazyHookReturnType(ts.factory.createTypeReferenceNode('TVariables'), ts.factory.createTypeReferenceNode('TResult'))));
16
+ }
17
+ export function generateLazyHookBuilder(config) {
18
+ return ts.factory.createFunctionDeclaration(undefined, undefined, config.sdk.lazyHookBuilderName, [
19
+ ts.factory.createTypeParameterDeclaration(undefined, 'TExecutor', ts.factory.createTypeReferenceNode('types.IExecutor', [
20
+ ts.factory.createTypeReferenceNode('TRequestContext'),
21
+ ])),
22
+ ts.factory.createTypeParameterDeclaration(undefined, 'TRequestContext', ts.factory.createTypeReferenceNode('types.RequestContext')),
23
+ ts.factory.createTypeParameterDeclaration(undefined, 'TOperation', ts.factory.createTypeReferenceNode('types.SyncOperation', [
24
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),
25
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),
26
+ ])),
27
+ ], [
28
+ ts.factory.createParameterDeclaration(undefined, undefined, 'executor', undefined, ts.factory.createTypeReferenceNode('TExecutor')),
29
+ ts.factory.createParameterDeclaration(undefined, undefined, 'operation', undefined, ts.factory.createTypeReferenceNode('TOperation')),
30
+ ], ts.factory.createTypeReferenceNode(config.sdk.lazyHookTypeName, [
31
+ ts.factory.createTypeReferenceNode('TRequestContext'),
32
+ ts.factory.createTypeReferenceNode('types.OperationVariables', [
33
+ ts.factory.createTypeReferenceNode('TOperation'),
34
+ ]),
35
+ ts.factory.createTypeReferenceNode('types.OperationResult', [
36
+ ts.factory.createTypeReferenceNode('TOperation'),
37
+ ]),
38
+ ]), ts.factory.createBlock([
39
+ ts.factory.createReturnStatement(ts.factory.createArrowFunction(undefined, undefined, [], generateLazyHookReturnType(ts.factory.createTypeReferenceNode('types.OperationVariables', [ts.factory.createTypeReferenceNode('TOperation')]), ts.factory.createTypeReferenceNode('types.OperationResult', [ts.factory.createTypeReferenceNode('TOperation')])), ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), ts.factory.createCallExpression(ts.factory.createIdentifier('useLazyOperation'), [], [
40
+ ts.factory.createIdentifier('executor'),
41
+ ts.factory.createIdentifier('operation'),
42
+ ]))),
43
+ ]));
44
+ }
@@ -0,0 +1,4 @@
1
+ import { Operation, OperationType } from '../../../../../schema/client/operation.js';
2
+ import ts from 'typescript';
3
+ import { Config } from '../../actor.js';
4
+ export declare function generateSdkTypeNode(config: Config, type: OperationType, operations: Record<string, Operation>): ts.InterfaceDeclaration;
@@ -0,0 +1,45 @@
1
+ import ts from 'typescript';
2
+ import { assertUnreachable } from '../../../../../utils.js';
3
+ function getHookTypeName(config, type) {
4
+ switch (type) {
5
+ case 'SYNC':
6
+ return config.sdk.syncHookTypeName;
7
+ case 'LAZY':
8
+ return config.sdk.lazyHookTypeName;
9
+ case 'SUBSCRIPTION':
10
+ return config.sdk.subscriptionHookTypeName;
11
+ }
12
+ }
13
+ function generateOperationPropertySignature(config, hookName, type, operation) {
14
+ return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(hookName), undefined, ts.factory.createTypeReferenceNode(getHookTypeName(config, type), [
15
+ ts.factory.createTypeReferenceNode('TRequestContext'),
16
+ ts.factory.createTypeReferenceNode(config.sdk.clientTypeNameBuilders.variablesTypeName(operation.name)),
17
+ ts.factory.createTypeReferenceNode(config.sdk.clientTypeNameBuilders.resultTypeName(operation.name)),
18
+ ]));
19
+ }
20
+ export function generateSdkTypeNode(config, type, operations) {
21
+ return ts.factory.createInterfaceDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(config.sdk.operationHooksTypeNameBuilder(type)), [
22
+ ts.factory.createTypeParameterDeclaration(undefined, ts.factory.createIdentifier('TRequestContext'), ts.factory.createTypeReferenceNode('types.RequestContext'), undefined),
23
+ ], undefined, Object.values(operations)
24
+ .filter((op) => op.type == type)
25
+ .map((op) => {
26
+ switch (op.type) {
27
+ case 'QUERY':
28
+ return [
29
+ generateOperationPropertySignature(config, config.sdk.hookNameBuilders.query.immediate(op.name), 'SYNC', op),
30
+ generateOperationPropertySignature(config, config.sdk.hookNameBuilders.query.lazy(op.name), 'LAZY', op),
31
+ ];
32
+ case 'MUTATION':
33
+ return [
34
+ generateOperationPropertySignature(config, config.sdk.hookNameBuilders.mutation.lazy(op.name), 'LAZY', op),
35
+ ];
36
+ case 'SUBSCRIPTION':
37
+ return [
38
+ generateOperationPropertySignature(config, config.sdk.hookNameBuilders.subscription.immediate(op.name), 'SUBSCRIPTION', op),
39
+ ];
40
+ default:
41
+ return assertUnreachable(op.type);
42
+ }
43
+ })
44
+ .flat());
45
+ }
@@ -0,0 +1,7 @@
1
+ import ts from 'typescript';
2
+ import { Config } from '../../actor.js';
3
+ export declare function generateSdkType(config: Config, state: {
4
+ hasQueries: boolean;
5
+ hasMutations: boolean;
6
+ hasSubscriptions: boolean;
7
+ }): ts.InterfaceDeclaration;
@@ -0,0 +1,21 @@
1
+ import ts from 'typescript';
2
+ function generateSdkPropertySignature(key, typeName) {
3
+ return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(key), undefined, ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(typeName), [
4
+ ts.factory.createTypeReferenceNode(ts.factory.createIdentifier('TRequestContext')),
5
+ ]));
6
+ }
7
+ export function generateSdkType(config, state) {
8
+ const properties = [];
9
+ if (state.hasQueries) {
10
+ properties.push(generateSdkPropertySignature(config.sdk.queriesKey, config.sdk.operationHooksTypeNameBuilder('QUERY')));
11
+ }
12
+ if (state.hasMutations) {
13
+ properties.push(generateSdkPropertySignature(config.sdk.mutationsKey, config.sdk.operationHooksTypeNameBuilder('MUTATION')));
14
+ }
15
+ if (state.hasSubscriptions) {
16
+ properties.push(generateSdkPropertySignature(config.sdk.subscriptionsKey, config.sdk.operationHooksTypeNameBuilder('SUBSCRIPTION')));
17
+ }
18
+ return ts.factory.createInterfaceDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(config.sdk.typeName), [
19
+ ts.factory.createTypeParameterDeclaration(undefined, ts.factory.createIdentifier('TRequestContext'), ts.factory.createTypeReferenceNode('types.RequestContext'), undefined),
20
+ ], undefined, properties);
21
+ }
@@ -0,0 +1,4 @@
1
+ import ts from 'typescript';
2
+ import { Config } from '../../actor.js';
3
+ export declare function generateSubscriptionHookType(config: Config): ts.TypeAliasDeclaration;
4
+ export declare function generateSubscriptionHookBuilder(config: Config): ts.FunctionDeclaration;
@@ -0,0 +1,52 @@
1
+ /* oxlint-disable max-lines */
2
+ import ts from 'typescript';
3
+ function generateSubscriptionHookReturnType(resultTypeNode) {
4
+ return ts.factory.createTypeReferenceNode('UseSubscriptionHookReturnType', [
5
+ resultTypeNode,
6
+ ]);
7
+ }
8
+ export function generateSubscriptionHookType(config) {
9
+ return ts.factory.createTypeAliasDeclaration([], config.sdk.subscriptionHookTypeName, [
10
+ ts.factory.createTypeParameterDeclaration(undefined, 'TRequestContext', ts.factory.createTypeReferenceNode('types.RequestContext')),
11
+ ts.factory.createTypeParameterDeclaration(undefined, 'TVariables'),
12
+ ts.factory.createTypeParameterDeclaration(undefined, 'TResult'),
13
+ ], ts.factory.createFunctionTypeNode(undefined, [
14
+ ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, config.sdk.buildVariablesType(ts.factory.createTypeReferenceNode('TVariables'))),
15
+ ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, ts.factory.createTypeReferenceNode('TRequestContext')),
16
+ ], generateSubscriptionHookReturnType(ts.factory.createTypeReferenceNode('TResult'))));
17
+ }
18
+ export function generateSubscriptionHookBuilder(config) {
19
+ return ts.factory.createFunctionDeclaration(undefined, undefined, config.sdk.syncHookBuilderName, [
20
+ ts.factory.createTypeParameterDeclaration(undefined, 'TExecutor', ts.factory.createTypeReferenceNode('types.IExecutor', [
21
+ ts.factory.createTypeReferenceNode('TRequestContext'),
22
+ ])),
23
+ ts.factory.createTypeParameterDeclaration(undefined, 'TRequestContext', ts.factory.createTypeReferenceNode('types.RequestContext')),
24
+ ts.factory.createTypeParameterDeclaration(undefined, 'TOperation', ts.factory.createTypeReferenceNode('types.SubscriptionOperation', [
25
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),
26
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),
27
+ ])),
28
+ ], [
29
+ ts.factory.createParameterDeclaration(undefined, undefined, 'executor', undefined, ts.factory.createTypeReferenceNode('TExecutor')),
30
+ ts.factory.createParameterDeclaration(undefined, undefined, 'operation', undefined, ts.factory.createTypeReferenceNode('TOperation')),
31
+ ], ts.factory.createTypeReferenceNode(config.sdk.subscriptionHookTypeName, [
32
+ ts.factory.createTypeReferenceNode('TRequestContext'),
33
+ ts.factory.createTypeReferenceNode('types.OperationVariables', [
34
+ ts.factory.createTypeReferenceNode('TOperation'),
35
+ ]),
36
+ ts.factory.createTypeReferenceNode('types.OperationResult', [
37
+ ts.factory.createTypeReferenceNode('TOperation'),
38
+ ]),
39
+ ]), ts.factory.createBlock([
40
+ ts.factory.createReturnStatement(ts.factory.createArrowFunction(undefined, undefined, [
41
+ ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, config.sdk.buildVariablesType(ts.factory.createTypeReferenceNode('types.OperationVariables', [
42
+ ts.factory.createTypeReferenceNode('TOperation'),
43
+ ]))),
44
+ ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, config.sdk.buildRequestContextType(ts.factory.createTypeReferenceNode('TRequestContext'))),
45
+ ], generateSubscriptionHookReturnType(ts.factory.createTypeReferenceNode('types.OperationResult', [ts.factory.createTypeReferenceNode('TOperation')])), ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), ts.factory.createCallExpression(ts.factory.createIdentifier('useSubscription'), [], [
46
+ ts.factory.createIdentifier('executor'),
47
+ ts.factory.createIdentifier('operation'),
48
+ ts.factory.createIdentifier('variables'),
49
+ ts.factory.createIdentifier('requestContext'),
50
+ ]))),
51
+ ]));
52
+ }
@@ -0,0 +1,4 @@
1
+ import ts from 'typescript';
2
+ import { Config } from '../../actor.js';
3
+ export declare function generateSyncHookType(config: Config): ts.TypeAliasDeclaration;
4
+ export declare function generateSyncHookBuilder(config: Config): ts.FunctionDeclaration;
@@ -0,0 +1,52 @@
1
+ /* oxlint-disable max-lines */
2
+ import ts from 'typescript';
3
+ function generateSyncHookReturnType(resultTypeNode) {
4
+ return ts.factory.createTypeReferenceNode('UseOperationHookReturnType', [
5
+ resultTypeNode,
6
+ ]);
7
+ }
8
+ export function generateSyncHookType(config) {
9
+ return ts.factory.createTypeAliasDeclaration([], config.sdk.syncHookTypeName, [
10
+ ts.factory.createTypeParameterDeclaration(undefined, 'TRequestContext', ts.factory.createTypeReferenceNode('types.RequestContext')),
11
+ ts.factory.createTypeParameterDeclaration(undefined, 'TVariables'),
12
+ ts.factory.createTypeParameterDeclaration(undefined, 'TResult'),
13
+ ], ts.factory.createFunctionTypeNode(undefined, [
14
+ ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, config.sdk.buildVariablesType(ts.factory.createTypeReferenceNode('TVariables'))),
15
+ ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, config.sdk.buildRequestContextType(ts.factory.createTypeReferenceNode('TRequestContext'))),
16
+ ], generateSyncHookReturnType(ts.factory.createTypeReferenceNode('TResult'))));
17
+ }
18
+ export function generateSyncHookBuilder(config) {
19
+ return ts.factory.createFunctionDeclaration(undefined, undefined, config.sdk.syncHookBuilderName, [
20
+ ts.factory.createTypeParameterDeclaration(undefined, 'TExecutor', ts.factory.createTypeReferenceNode('types.IExecutor', [
21
+ ts.factory.createTypeReferenceNode('TRequestContext'),
22
+ ])),
23
+ ts.factory.createTypeParameterDeclaration(undefined, 'TRequestContext', ts.factory.createTypeReferenceNode('types.RequestContext')),
24
+ ts.factory.createTypeParameterDeclaration(undefined, 'TOperation', ts.factory.createTypeReferenceNode('types.SyncOperation', [
25
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),
26
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),
27
+ ])),
28
+ ], [
29
+ ts.factory.createParameterDeclaration(undefined, undefined, 'executor', undefined, ts.factory.createTypeReferenceNode('TExecutor')),
30
+ ts.factory.createParameterDeclaration(undefined, undefined, 'operation', undefined, ts.factory.createTypeReferenceNode('TOperation')),
31
+ ], ts.factory.createTypeReferenceNode(config.sdk.syncHookTypeName, [
32
+ ts.factory.createTypeReferenceNode('TRequestContext'),
33
+ ts.factory.createTypeReferenceNode('types.OperationVariables', [
34
+ ts.factory.createTypeReferenceNode('TOperation'),
35
+ ]),
36
+ ts.factory.createTypeReferenceNode('types.OperationResult', [
37
+ ts.factory.createTypeReferenceNode('TOperation'),
38
+ ]),
39
+ ]), ts.factory.createBlock([
40
+ ts.factory.createReturnStatement(ts.factory.createArrowFunction(undefined, undefined, [
41
+ ts.factory.createParameterDeclaration(undefined, undefined, 'variables', undefined, config.sdk.buildVariablesType(ts.factory.createTypeReferenceNode('types.OperationVariables', [
42
+ ts.factory.createTypeReferenceNode('TOperation'),
43
+ ]))),
44
+ ts.factory.createParameterDeclaration(undefined, undefined, 'requestContext', undefined, config.sdk.buildRequestContextType(ts.factory.createTypeReferenceNode('TRequestContext'))),
45
+ ], generateSyncHookReturnType(ts.factory.createTypeReferenceNode('types.OperationResult', [ts.factory.createTypeReferenceNode('TOperation')])), ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), ts.factory.createCallExpression(ts.factory.createIdentifier('useOperation'), [], [
46
+ ts.factory.createIdentifier('executor'),
47
+ ts.factory.createIdentifier('operation'),
48
+ ts.factory.createIdentifier('variables'),
49
+ ts.factory.createIdentifier('requestContext'),
50
+ ]))),
51
+ ]));
52
+ }
@@ -0,0 +1,88 @@
1
+ import ts from 'typescript';
2
+ import { generateHelpNodes } from './help-nodes/index.js';
3
+ function getHookBuilderName(config, type) {
4
+ switch (type) {
5
+ case 'SYNC':
6
+ return config.sdk.syncHookBuilderName;
7
+ case 'LAZY':
8
+ return config.sdk.lazyHookBuilderName;
9
+ case 'SUBSCRIPTION':
10
+ return config.sdk.subscriptionHookBuilderName;
11
+ }
12
+ }
13
+ function generateHookValueExpression(config, operationName, type) {
14
+ return ts.factory.createCallExpression(ts.factory.createIdentifier(getHookBuilderName(config, type)), undefined, [
15
+ ts.factory.createIdentifier('executor'),
16
+ ts.factory.createIdentifier(operationName),
17
+ ]);
18
+ }
19
+ export function generateNodes(config, context) {
20
+ const graphqlImports = [];
21
+ const queryNodes = [];
22
+ const mutationNodes = [];
23
+ const subscriptionNodes = [];
24
+ for (const operation of Object.values(context.schema.client.operations)) {
25
+ const operationName = config.sdk.clientTypeNameBuilders.operationTypeName(operation.name);
26
+ const variablesName = config.sdk.clientTypeNameBuilders.variablesTypeName(operation.name);
27
+ const resultName = config.sdk.clientTypeNameBuilders.resultTypeName(operation.name);
28
+ graphqlImports.push(ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(operationName)), ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier(variablesName)), ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier(resultName)));
29
+ switch (operation.type) {
30
+ case 'SUBSCRIPTION': {
31
+ subscriptionNodes.push(ts.factory.createPropertyAssignment(config.sdk.hookNameBuilders.subscription.immediate(operation.name), generateHookValueExpression(config, operationName, 'SUBSCRIPTION')));
32
+ break;
33
+ }
34
+ case 'MUTATION': {
35
+ mutationNodes.push(ts.factory.createPropertyAssignment(config.sdk.hookNameBuilders.mutation.lazy(operation.name), generateHookValueExpression(config, operationName, 'LAZY')));
36
+ break;
37
+ }
38
+ case 'QUERY': {
39
+ queryNodes.push(ts.factory.createPropertyAssignment(config.sdk.hookNameBuilders.query.immediate(operation.name), generateHookValueExpression(config, operationName, 'SYNC')), ts.factory.createPropertyAssignment(config.sdk.hookNameBuilders.query.lazy(operation.name), generateHookValueExpression(config, operationName, 'LAZY')));
40
+ break;
41
+ }
42
+ }
43
+ }
44
+ const gqlClientReactImports = [];
45
+ const state = {
46
+ hasQueries: queryNodes.length !== 0,
47
+ hasMutations: mutationNodes.length !== 0,
48
+ hasSubscriptions: subscriptionNodes.length !== 0,
49
+ };
50
+ const returnObjectNodes = [];
51
+ if (state.hasQueries) {
52
+ gqlClientReactImports.push(ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('useOperation')));
53
+ gqlClientReactImports.push(ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier('UseOperationHookReturnType')));
54
+ gqlClientReactImports.push(ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier('types')));
55
+ returnObjectNodes.push(ts.factory.createPropertyAssignment(config.sdk.queriesKey, ts.factory.createObjectLiteralExpression(queryNodes, true)));
56
+ }
57
+ if (state.hasMutations) {
58
+ returnObjectNodes.push(ts.factory.createPropertyAssignment(config.sdk.mutationsKey, ts.factory.createObjectLiteralExpression(mutationNodes, true)));
59
+ }
60
+ if (state.hasQueries || state.hasMutations) {
61
+ gqlClientReactImports.push(ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('useLazyOperation')));
62
+ gqlClientReactImports.push(ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier('UseLazyOperationHookReturnType')));
63
+ }
64
+ if (state.hasSubscriptions) {
65
+ gqlClientReactImports.push(ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('useSubscription')), ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier('UseSubscriptionHookReturnType')));
66
+ returnObjectNodes.push(ts.factory.createPropertyAssignment(config.sdk.subscriptionsKey, ts.factory.createObjectLiteralExpression(subscriptionNodes, true)));
67
+ }
68
+ return [
69
+ ...config.importDeclarations,
70
+ ts.factory.createImportDeclaration([], ts.factory.createImportClause(undefined, undefined, ts.factory.createNamedImports(gqlClientReactImports)), ts.factory.createStringLiteral(config.frameworkImportName)),
71
+ ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(undefined, undefined, ts.factory.createNamedImports(graphqlImports)), ts.factory.createStringLiteral(config.graphqlModulePath)),
72
+ ts.factory.createIdentifier('\n'),
73
+ ...generateHelpNodes(config, context, state),
74
+ ts.factory.createIdentifier('\n'),
75
+ ts.factory.createFunctionDeclaration(ts.factory.createModifiersFromModifierFlags(ts.ModifierFlags.Export), undefined, 'createSdk', [
76
+ ts.factory.createTypeParameterDeclaration(undefined, 'TExecutor', ts.factory.createTypeReferenceNode('types.IExecutor', [
77
+ ts.factory.createTypeReferenceNode('TRequestContext'),
78
+ ])),
79
+ ts.factory.createTypeParameterDeclaration(undefined, 'TRequestContext', ts.factory.createTypeReferenceNode('types.RequestContext')),
80
+ ], [
81
+ ts.factory.createParameterDeclaration(undefined, undefined, 'executor', undefined, ts.factory.createTypeReferenceNode('TExecutor')),
82
+ ], ts.factory.createTypeReferenceNode(config.sdk.typeName, [
83
+ ts.factory.createTypeReferenceNode('TRequestContext'),
84
+ ]), ts.factory.createBlock([
85
+ ts.factory.createReturnStatement(ts.factory.createObjectLiteralExpression(returnObjectNodes, true)),
86
+ ], true)),
87
+ ];
88
+ }
@@ -0,0 +1 @@
1
+ export { type Config, type SDKConfig, build } from './actor.js';
@@ -0,0 +1 @@
1
+ export { build } from './actor.js';
@@ -1,15 +1,8 @@
1
- import { PathOrFileDescriptor } from 'fs';
2
1
  import { Actor, ActorContext } from '../../../config.js';
3
- import { TSActorConfig } from '../shared.js';
4
- import ts from 'typescript';
5
- export interface Config extends TSActorConfig {
6
- outPath: PathOrFileDescriptor;
7
- importDeclarations: ts.ImportDeclaration[];
8
- graphqlModulePath: string;
9
- sdk: {
10
- queriesKey: string;
11
- mutationsKey: string;
12
- subscriptionsKey: string;
13
- };
2
+ import { Config as FrameworkConfig, SDKConfig as FrameworkSDKConfig } from '../gql-client-framework/index.js';
3
+ export interface SDKConfig extends Omit<FrameworkSDKConfig, 'buildVariablesType'> {
4
+ }
5
+ export interface Config extends Omit<FrameworkConfig, 'frameworkImportName' | 'sdk'> {
6
+ sdk: SDKConfig;
14
7
  }
15
8
  export declare function build(config: Config): Actor<ActorContext>;
@@ -1,11 +1,12 @@
1
- import { writeFileSync } from 'fs';
2
- import { renderNodes } from '../shared.js';
3
- import { generateNodes } from './generators/main.js';
4
- async function actor(config, context) {
5
- const nodes = generateNodes(config, context);
6
- const code = await renderNodes(config, nodes);
7
- writeFileSync(config.outPath, code);
8
- }
1
+ import { build as frameworkBuild, } from '../gql-client-framework/index.js';
9
2
  export function build(config) {
10
- return (context) => actor(config, context);
3
+ return frameworkBuild({
4
+ ...config,
5
+ frameworkImportName: '@vladimirdev635/gql-client-react',
6
+ sdk: {
7
+ ...config.sdk,
8
+ buildVariablesType: (variablesTypeNode) => variablesTypeNode,
9
+ buildRequestContextType: (requestContextTypeNode) => requestContextTypeNode,
10
+ },
11
+ });
11
12
  }
@@ -1 +1 @@
1
- export { type Config, build } from './actor.js';
1
+ export { type Config, type SDKConfig, build } from './actor.js';
@@ -1,15 +1,8 @@
1
1
  import { Actor, ActorContext } from '../../../config.js';
2
- import { PathOrFileDescriptor } from 'fs';
3
- import ts from 'typescript';
4
- import { TSActorConfig } from '../shared.js';
5
- export interface Config extends TSActorConfig {
6
- outPath: PathOrFileDescriptor;
7
- importDeclarations: ts.ImportDeclaration[];
8
- graphqlModulePath: string;
9
- sdk: {
10
- queriesKey: string;
11
- mutationsKey: string;
12
- subscriptionsKey: string;
13
- };
2
+ import { Config as FrameworkConfig, SDKConfig as FrameworkSDKConfig } from '../gql-client-framework/index.js';
3
+ export interface SDKConfig extends Omit<FrameworkSDKConfig, 'buildVariablesType'> {
4
+ }
5
+ export interface Config extends Omit<FrameworkConfig, 'frameworkImportName' | 'sdk'> {
6
+ sdk: SDKConfig;
14
7
  }
15
8
  export declare function build(config: Config): Actor<ActorContext>;
@@ -1,11 +1,29 @@
1
- import { writeFileSync } from 'fs';
2
- import { renderNodes } from '../shared.js';
3
- import { generateNodes } from './generators/main.js';
4
- async function actor(config, context) {
5
- const nodes = generateNodes(config, context);
6
- const code = await renderNodes(config, nodes);
7
- writeFileSync(config.outPath, code);
8
- }
1
+ import { build as frameworkBuild, } from '../gql-client-framework/index.js';
2
+ import ts from 'typescript';
9
3
  export function build(config) {
10
- return (context) => actor(config, context);
4
+ return frameworkBuild({
5
+ ...config,
6
+ importDeclarations: [
7
+ ...config.importDeclarations,
8
+ ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(ts.SyntaxKind.TypeKeyword, undefined, ts.factory.createNamedImports([
9
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('Ref')),
10
+ ])), ts.factory.createStringLiteral('vue')),
11
+ ],
12
+ frameworkImportName: '@vladimirdev635/gql-client-vue',
13
+ sdk: {
14
+ ...config.sdk,
15
+ buildVariablesType: (variablesTypeNode) => ts.factory.createUnionTypeNode([
16
+ variablesTypeNode,
17
+ ts.factory.createTypeReferenceNode('Ref', [
18
+ variablesTypeNode,
19
+ ]),
20
+ ]),
21
+ buildRequestContextType: (requestContextTypeNode) => ts.factory.createUnionTypeNode([
22
+ requestContextTypeNode,
23
+ ts.factory.createTypeReferenceNode('Ref', [
24
+ requestContextTypeNode,
25
+ ]),
26
+ ]),
27
+ },
28
+ });
11
29
  }
@@ -1 +1 @@
1
- export { type Config, build } from './actor.js';
1
+ export { type Config, type SDKConfig, build } from './actor.js';
@@ -1,12 +1,13 @@
1
- import { ScalarsMapping } from './generators/server/scalars/index.js';
1
+ import { Actor, ActorContext } from '../../../config.js';
2
2
  import { PathOrFileDescriptor } from 'fs';
3
3
  import ts from 'typescript';
4
- import { Actor, ActorContext } from '../../../config.js';
5
- import { TSActorConfig } from '../shared.js';
6
- export interface GraphqlActorConfig extends TSActorConfig {
4
+ import { ClientTypeNameBuilders, TSActorConfig } from '../shared.js';
5
+ import { ScalarsMapping } from './generators/server/scalars/index.js';
6
+ export interface Config extends TSActorConfig {
7
7
  outPath: PathOrFileDescriptor;
8
8
  scalarsMapping: ScalarsMapping;
9
9
  importDeclarations: ts.ImportDeclaration[];
10
10
  onlyRequiredForOperations: boolean;
11
+ clientTypeNameBuilders: ClientTypeNameBuilders;
11
12
  }
12
- export declare function buildGraphqlActor(config: GraphqlActorConfig): Actor<ActorContext>;
13
+ export declare function build(config: Config): Actor<ActorContext>;
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync } from 'fs';
2
- import { renderNodes } from '../shared.js';
2
+ import { renderNodes, } from '../shared.js';
3
3
  import { generateNodes } from './generators/main.js';
4
- async function graphqlActor(config, context) {
4
+ async function actor(config, context) {
5
5
  const nodes = generateNodes(config, context);
6
6
  const code = await renderNodes(config, nodes);
7
7
  writeFileSync(config.outPath, code);
8
8
  }
9
- export function buildGraphqlActor(config) {
10
- return (context) => graphqlActor(config, context);
9
+ export function build(config) {
10
+ return (context) => actor(config, context);
11
11
  }
@@ -1,6 +1,6 @@
1
- import ts from 'typescript';
2
- import { RootSchema } from '../../../../../schema/root.js';
3
1
  import { FragmentSpecSchemaType, objectSelection } from '../../../../../schema/client/fragment.js';
2
+ import { RootSchema } from '../../../../../schema/root.js';
3
+ import ts from 'typescript';
4
4
  import { z } from 'zod/v4';
5
5
  import { ScalarsMapping } from '../server/scalars/mapping.js';
6
6
  export declare function extractFragmentNamesInSpec(schema: RootSchema, fragmentSpec: FragmentSpecSchemaType): string[];
@@ -90,6 +90,6 @@ declare function resolveSelections(specSelections: z.infer<typeof objectSelectio
90
90
  })[];
91
91
  } | null;
92
92
  })[];
93
- export declare function generateZodFragmentSpecCallExpression(scalarsMapping: ScalarsMapping, schema: RootSchema, spec: FragmentSpecSchemaType, typenameConfig?: Parameters<typeof resolveSelections>[1]): ts.CallExpression;
93
+ export declare function generateZodFragmentSpecCallExpression(scalarsMapping: ScalarsMapping, schema: RootSchema, spec: FragmentSpecSchemaType, typenameConfig?: Parameters<typeof resolveSelections>[1], insideLazy?: boolean): ts.CallExpression;
94
94
  export declare function generateFragmentTypes(scalarsMapping: ScalarsMapping, schema: RootSchema): ts.Node[];
95
95
  export {};