@luvio/graphql-parser 0.126.0 → 0.126.2

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 (54) hide show
  1. package/dist/argument-node.d.ts +4 -0
  2. package/dist/ast.d.ts +95 -0
  3. package/dist/constants.d.ts +12 -0
  4. package/dist/directive-node.d.ts +5 -0
  5. package/dist/document.d.ts +3 -0
  6. package/dist/field-node.d.ts +4 -0
  7. package/dist/fragment-spread-node.d.ts +4 -0
  8. package/dist/fragment.d.ts +3 -0
  9. package/dist/gql.d.ts +51 -0
  10. package/dist/inline-fragment-node.d.ts +4 -0
  11. package/dist/luvioGraphqlParser.js +12945 -0
  12. package/dist/luvioGraphqlParser.mjs +12923 -0
  13. package/dist/main.d.ts +18 -0
  14. package/dist/metaschema.d.ts +10 -0
  15. package/dist/operation/index.d.ts +3 -0
  16. package/dist/operation/query/index.d.ts +6 -0
  17. package/dist/type-node.d.ts +3 -0
  18. package/dist/util/language.d.ts +9 -0
  19. package/dist/value-node.d.ts +4 -0
  20. package/dist/variable-definition.d.ts +4 -0
  21. package/dist/visitor.d.ts +4 -0
  22. package/package.json +4 -1
  23. package/babel.config.js +0 -1
  24. package/jest.config.js +0 -8
  25. package/project.json +0 -7
  26. package/rollup.config.js +0 -24
  27. package/scripts/cli.mjs +0 -18
  28. package/src/__tests__/ast.json +0 -403
  29. package/src/__tests__/ast.spec.ts +0 -109
  30. package/src/__tests__/astNoLoc.json +0 -147
  31. package/src/__tests__/gql.spec.ts +0 -665
  32. package/src/__tests__/main.spec.ts +0 -651
  33. package/src/__tests__/metaschema.spec.ts +0 -230
  34. package/src/__tests__/type-node.spec.ts +0 -82
  35. package/src/argument-node.ts +0 -18
  36. package/src/ast.ts +0 -200
  37. package/src/constants.ts +0 -14
  38. package/src/directive-node.ts +0 -36
  39. package/src/document.ts +0 -29
  40. package/src/field-node.ts +0 -72
  41. package/src/fragment-spread-node.ts +0 -28
  42. package/src/fragment.ts +0 -46
  43. package/src/gql.ts +0 -222
  44. package/src/inline-fragment-node.ts +0 -31
  45. package/src/main.ts +0 -134
  46. package/src/metaschema.ts +0 -162
  47. package/src/operation/index.ts +0 -12
  48. package/src/operation/query/index.ts +0 -78
  49. package/src/type-node.ts +0 -40
  50. package/src/util/language.ts +0 -10
  51. package/src/value-node.ts +0 -71
  52. package/src/variable-definition.ts +0 -37
  53. package/src/visitor.ts +0 -63
  54. package/tsconfig.json +0 -9
@@ -1,230 +0,0 @@
1
- import { gql, referenceMap } from '../gql';
2
- import { metaschemaMapper } from '../metaschema';
3
-
4
- describe('metaschema mapper', () => {
5
- it('should produce a equivalent metaschema AST when called with the legacy AST', () => {
6
- const ref1 = gql`
7
- query {
8
- uiapi {
9
- query {
10
- Account(where: { Name: { like: "Account1" } }) @connection {
11
- edges {
12
- node @resource(type: "Record") {
13
- Name {
14
- value
15
- displayValue
16
- }
17
- }
18
- }
19
- ...conFragment
20
- }
21
- }
22
- }
23
- }
24
-
25
- fragment conFragment on AccountConnection {
26
- edges {
27
- node @resource(type: "Record") {
28
- CreatedBy @resource(type: "Record") {
29
- Id
30
- Name {
31
- value
32
- displayValue
33
- }
34
- }
35
- }
36
- }
37
- }
38
- `;
39
-
40
- const doc1 = referenceMap.get(ref1);
41
-
42
- const ref2 = gql`
43
- query {
44
- uiapi {
45
- query {
46
- Account(where: { Name: { like: "Account1" } })
47
- @category(name: "recordQuery") {
48
- edges {
49
- node {
50
- Name {
51
- value
52
- displayValue
53
- }
54
- }
55
- }
56
- ...conFragment
57
- }
58
- }
59
- }
60
- }
61
-
62
- fragment conFragment on AccountConnection {
63
- edges {
64
- node {
65
- CreatedBy @category(name: "parentRelationship") {
66
- Id
67
- Name {
68
- value
69
- displayValue
70
- }
71
- }
72
- }
73
- }
74
- }
75
- `;
76
- const doc2 = referenceMap.get(ref2);
77
-
78
- metaschemaMapper(doc1);
79
-
80
- expect(doc1).toStrictEqual(doc2);
81
- });
82
-
83
- it('should produce a equivalent metaschema AST when query has multiple entities', () => {
84
- const ref1 = gql`
85
- query {
86
- uiapi {
87
- query {
88
- TimeSheet @connection {
89
- edges {
90
- node @resource(type: "Record") {
91
- CreatedBy @resource(type: "Record") {
92
- Email {
93
- value
94
- displayValue
95
- }
96
- }
97
- }
98
- }
99
- }
100
- User @connection {
101
- edges {
102
- node @resource(type: "Record") {
103
- CreatedBy @resource(type: "Record") {
104
- Email {
105
- value
106
- displayValue
107
- }
108
- }
109
- }
110
- }
111
- }
112
- }
113
- }
114
- }
115
- `;
116
- const doc1 = referenceMap.get(ref1);
117
-
118
- const ref2 = gql`
119
- query {
120
- uiapi {
121
- query {
122
- TimeSheet @category(name: "recordQuery") {
123
- edges {
124
- node {
125
- CreatedBy @category(name: "parentRelationship") {
126
- Email {
127
- value
128
- displayValue
129
- }
130
- }
131
- }
132
- }
133
- }
134
- User @category(name: "recordQuery") {
135
- edges {
136
- node {
137
- CreatedBy @category(name: "parentRelationship") {
138
- Email {
139
- value
140
- displayValue
141
- }
142
- }
143
- }
144
- }
145
- }
146
- }
147
- }
148
- }
149
- `;
150
- const doc2 = referenceMap.get(ref2);
151
-
152
- metaschemaMapper(doc1);
153
-
154
- expect(doc1).toStrictEqual(doc2);
155
- });
156
-
157
- it('should leave any non - legacy directives intact', () => {
158
- const ref1 = gql`
159
- query myQuery($var1: Boolean!, $var2: Boolean!) {
160
- uiapi {
161
- query {
162
- TimeSheet @include(if: $var1) @connection {
163
- edges {
164
- node @resource(type: "Record") {
165
- CreatedBy @resource(type: "Record") {
166
- Email {
167
- value
168
- displayValue
169
- }
170
- }
171
- }
172
- }
173
- }
174
- User @connection @skip(if: $var2) {
175
- edges {
176
- node @resource(type: "Record") {
177
- CreatedBy @resource(type: "Record") {
178
- Email {
179
- value
180
- displayValue
181
- }
182
- }
183
- }
184
- }
185
- }
186
- }
187
- }
188
- }
189
- `;
190
- const doc1 = referenceMap.get(ref1);
191
-
192
- const ref2 = gql`
193
- query myQuery($var1: Boolean!, $var2: Boolean!) {
194
- uiapi {
195
- query {
196
- TimeSheet @include(if: $var1) @category(name: "recordQuery") {
197
- edges {
198
- node {
199
- CreatedBy @category(name: "parentRelationship") {
200
- Email {
201
- value
202
- displayValue
203
- }
204
- }
205
- }
206
- }
207
- }
208
- User @category(name: "recordQuery") @skip(if: $var2) {
209
- edges {
210
- node {
211
- CreatedBy @category(name: "parentRelationship") {
212
- Email {
213
- value
214
- displayValue
215
- }
216
- }
217
- }
218
- }
219
- }
220
- }
221
- }
222
- }
223
- `;
224
- const doc2 = referenceMap.get(ref2);
225
-
226
- metaschemaMapper(doc1);
227
-
228
- expect(doc1).toStrictEqual(doc2);
229
- });
230
- });
@@ -1,82 +0,0 @@
1
- import { NamedTypeNode, TypeNode } from 'graphql/language';
2
- import { transform } from '../type-node';
3
-
4
- describe('Luvio GraphQL TypeNode transform', () => {
5
- it('returns LuvioTypeNode when input is GraphQL NamedTypeNode', () => {
6
- expect(
7
- transform({
8
- kind: 'NamedType',
9
- name: {
10
- kind: 'Name',
11
- value: 'test',
12
- },
13
- })
14
- ).toStrictEqual({
15
- kind: 'NamedType',
16
- name: 'test',
17
- });
18
- });
19
-
20
- it('returns LuvioTypeNode when input is GraphQL ListTypeNode', () => {
21
- expect(
22
- transform({
23
- kind: 'ListType',
24
- type: {
25
- kind: 'NamedType',
26
- name: {
27
- kind: 'Name',
28
- value: 'test',
29
- },
30
- },
31
- })
32
- ).toStrictEqual({
33
- kind: 'ListType',
34
- type: {
35
- kind: 'NamedType',
36
- name: 'test',
37
- },
38
- });
39
- });
40
-
41
- it('returns LuvioTypeNode when input is GraphQL NonNullTypeNode', () => {
42
- expect(
43
- transform({
44
- kind: 'NonNullType',
45
- type: {
46
- kind: 'NamedType',
47
- name: {
48
- kind: 'Name',
49
- value: 'test',
50
- },
51
- },
52
- })
53
- ).toStrictEqual({
54
- kind: 'NonNullType',
55
- type: {
56
- kind: 'NamedType',
57
- name: 'test',
58
- },
59
- });
60
- });
61
-
62
- it('throws when input is unsupported TypeNode', () => {
63
- expect(() =>
64
- transform({
65
- kind: 'Unknown',
66
- name: 'test',
67
- } as unknown as TypeNode)
68
- ).toThrowError('Unsupported TypeNode');
69
- });
70
-
71
- it('throws when input is unsupported NonNullTypeNode', () => {
72
- expect(() =>
73
- transform({
74
- kind: 'NonNullType',
75
- type: {
76
- kind: 'Unknown',
77
- name: 'test',
78
- } as unknown as NamedTypeNode,
79
- })
80
- ).toThrowError('Unsupported NonNullTypeNode');
81
- });
82
- });
@@ -1,18 +0,0 @@
1
- import type { ArgumentNode } from 'graphql/language';
2
- import type { LuvioArgumentNode } from './ast';
3
- import type { TransformState } from './operation/query';
4
- import { transform as transformValueNode } from './value-node';
5
-
6
- export function transform(node: ArgumentNode, transformState: TransformState): LuvioArgumentNode {
7
- const {
8
- kind,
9
- name: { value: nodeName },
10
- value: nodeValue,
11
- } = node;
12
- const valueNode = transformValueNode(nodeValue, transformState);
13
- return {
14
- kind,
15
- name: nodeName,
16
- value: valueNode,
17
- };
18
- }
package/src/ast.ts DELETED
@@ -1,200 +0,0 @@
1
- import type {
2
- DocumentNode,
3
- OperationDefinitionNode,
4
- FieldNode,
5
- ArgumentNode,
6
- IntValueNode,
7
- ListValueNode,
8
- ObjectValueNode,
9
- FloatValueNode,
10
- StringValueNode,
11
- BooleanValueNode,
12
- NullValueNode,
13
- EnumValueNode,
14
- VariableNode,
15
- DirectiveNode,
16
- VariableDefinitionNode,
17
- NonNullTypeNode,
18
- ListTypeNode,
19
- NamedTypeNode,
20
- FragmentSpreadNode,
21
- InlineFragmentNode,
22
- FragmentDefinitionNode,
23
- DefinitionNode,
24
- TypeNode,
25
- } from 'graphql/language';
26
-
27
- /**
28
- * Luvio specific custom GraphQL AST
29
- *
30
- * - Omit Location
31
- * - flatten NameNode for easier value access
32
- * - Add luvioSelections for custom selections
33
- * - LuvioSelectionCustomFieldNode for fields with custom client side directives
34
- */
35
-
36
- /* Document */
37
- export interface LuvioDocumentNode extends Omit<DocumentNode, 'loc' | 'definitions'> {
38
- definitions: LuvioDefinitionNode[];
39
- }
40
-
41
- export type LuvioDefinitionNode = LuvioOperationDefinitionNode | LuvioFragmentDefinitionNode;
42
-
43
- export interface LuvioOperationDefinitionNode
44
- extends Omit<
45
- OperationDefinitionNode,
46
- 'loc' | 'name' | 'variableDefinitions' | 'directives' | 'selectionSet'
47
- > {
48
- name?: string;
49
- variableDefinitions?: LuvioVariableDefinitionNode[];
50
- directives?: LuvioDirectiveNode[];
51
- luvioSelections: LuvioSelectionNode[];
52
- }
53
-
54
- export interface LuvioVariableDefinitionNode
55
- extends Omit<
56
- VariableDefinitionNode,
57
- 'loc' | 'variable' | 'type' | 'defaultValue' | 'directives'
58
- > {
59
- variable: LuvioVariableNode;
60
- type: LuvioTypeNode;
61
- defaultValue?: LuvioValueNode;
62
- directives?: LuvioDirectiveNode[];
63
- }
64
-
65
- export interface LuvioVariableNode extends Omit<VariableNode, 'loc' | 'name'> {
66
- name: string;
67
- }
68
-
69
- export type LuvioSelectionNode = LuvioFieldNode | LuvioFragmentSpreadNode | LuvioInlineFragmentNode;
70
-
71
- export type LuvioFieldNode =
72
- | LuvioSelectionScalarFieldNode
73
- | LuvioSelectionObjectFieldNode
74
- | LuvioSelectionCustomFieldNode;
75
-
76
- export interface LuvioArgumentNode extends Omit<ArgumentNode, 'loc' | 'name' | 'value'> {
77
- name: string;
78
- value: LuvioValueNode;
79
- }
80
-
81
- /* Fragments */
82
- export interface LuvioFragmentSpreadNode
83
- extends Omit<FragmentSpreadNode, 'loc' | 'name' | 'directives'> {
84
- name: string;
85
- directives?: LuvioDirectiveNode[];
86
- }
87
-
88
- export interface LuvioInlineFragmentNode
89
- extends Omit<InlineFragmentNode, 'loc' | 'typeCondition' | 'directives' | 'selectionSet'> {
90
- typeCondition?: LuvioNamedTypeNode;
91
- directives?: LuvioDirectiveNode[];
92
- luvioSelections: LuvioSelectionNode[];
93
- }
94
-
95
- export interface LuvioFragmentDefinitionNode
96
- extends Omit<
97
- FragmentDefinitionNode,
98
- 'loc' | 'name' | 'variableDefinitions' | 'typeCondition' | 'directives' | 'selectionSet'
99
- > {
100
- name: string;
101
- // Note: fragment variable definitions are experimental and may be changed
102
- // or removed in the future.
103
- variableDefinitions?: LuvioVariableDefinitionNode[];
104
- typeCondition: LuvioNamedTypeNode;
105
- directives?: LuvioDirectiveNode[];
106
- luvioSelections: LuvioSelectionNode[];
107
- }
108
-
109
- /* Values */
110
- export type LuvioValueNode =
111
- | LuvioVariableNode
112
- | IntValueNode
113
- | FloatValueNode
114
- | StringValueNode
115
- | BooleanValueNode
116
- | NullValueNode
117
- | EnumValueNode
118
- | LuvioListValueNode
119
- | LuvioObjectValueNode;
120
-
121
- export interface LuvioListValueNode extends Omit<ListValueNode, 'loc' | 'values'> {
122
- values: LuvioValueNode[];
123
- }
124
-
125
- export interface LuvioObjectValueNode extends Omit<ObjectValueNode, 'loc' | 'fields'> {
126
- fields: {
127
- [name: string]: LuvioValueNode;
128
- };
129
- }
130
-
131
- /* Directives */
132
- export interface LuvioDirectiveNode extends Omit<DirectiveNode, 'loc' | 'name' | 'arguments'> {
133
- name: string;
134
- arguments?: LuvioArgumentNode[];
135
- }
136
-
137
- /* Type Reference */
138
- export type LuvioTypeNode = LuvioNamedTypeNode | LuvioListTypeNode | LuvioNonNullTypeNode;
139
-
140
- export interface LuvioNamedTypeNode extends Omit<NamedTypeNode, 'loc' | 'name'> {
141
- name: string;
142
- }
143
-
144
- export interface LuvioListTypeNode extends Omit<ListTypeNode, 'loc' | 'type'> {
145
- type: LuvioTypeNode;
146
- }
147
-
148
- export interface LuvioNonNullTypeNode extends Omit<NonNullTypeNode, 'loc' | 'type'> {
149
- type: LuvioNamedTypeNode | LuvioListTypeNode;
150
- }
151
-
152
- /* Custom Selection Fields */
153
- export interface LuvioSelectionScalarFieldNode
154
- extends Omit<
155
- FieldNode,
156
- 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'
157
- > {
158
- kind: 'ScalarFieldSelection';
159
- alias?: string;
160
- name: string;
161
- }
162
-
163
- export interface LuvioSelectionObjectFieldNode
164
- extends Omit<
165
- FieldNode,
166
- 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'
167
- > {
168
- kind: 'ObjectFieldSelection';
169
- alias?: string;
170
- name: string;
171
- arguments?: LuvioArgumentNode[];
172
- directives?: LuvioDirectiveNode[];
173
- luvioSelections?: LuvioSelectionNode[];
174
- }
175
-
176
- export interface LuvioSelectionCustomFieldNode extends Omit<LuvioSelectionObjectFieldNode, 'kind'> {
177
- kind: 'CustomFieldSelection';
178
- type: string;
179
- }
180
-
181
- /* Util Functions */
182
- export function isOperationDefinitionNode(input: DefinitionNode): input is OperationDefinitionNode {
183
- return input.kind === 'OperationDefinition';
184
- }
185
-
186
- export function isFragmentDefinitionNode(input: DefinitionNode): input is FragmentDefinitionNode {
187
- return input.kind === 'FragmentDefinition';
188
- }
189
-
190
- export function isNamedTypeNode(input: TypeNode): input is NamedTypeNode {
191
- return input.kind === 'NamedType';
192
- }
193
-
194
- export function isListTypeNode(input: TypeNode): input is ListTypeNode {
195
- return input.kind === 'ListType';
196
- }
197
-
198
- export function isNonNullTypeNode(input: TypeNode): input is NonNullTypeNode {
199
- return input.kind === 'NonNullType';
200
- }
package/src/constants.ts DELETED
@@ -1,14 +0,0 @@
1
- export const CUSTOM_DIRECTIVE_CONNECTION = 'connection';
2
- export const CUSTOM_DIRECTIVE_RESOURCE = 'resource';
3
-
4
- export const NODE_KIND_CUSTOM_FIELD_SELECTION = 'CustomFieldSelection';
5
- export const NODE_KIND_FIELD = 'Field';
6
- export const NODE_KIND_FRAGMENT_SPREAD = 'FragmentSpread';
7
- export const NODE_KIND_INLINE_FRAGMENT = 'InlineFragment';
8
- export const NODE_KIND_LIST_TYPE = 'ListType';
9
- export const NODE_KIND_NAMED_TYPE = 'NamedType';
10
- export const NODE_KIND_NON_NULL_TYPE = 'NonNullType';
11
- export const NODE_KIND_OBJECT_FIELD_SELECTION = 'ObjectFieldSelection';
12
- export const NODE_KIND_SCALAR_FIELD_SELECTION = 'ScalarFieldSelection';
13
-
14
- export const NODE_TYPE_CONNECTION = 'Connection';
@@ -1,36 +0,0 @@
1
- import type { DirectiveNode } from 'graphql/language';
2
- import type { LuvioArgumentNode, LuvioDirectiveNode } from './ast';
3
- import { transform as transformArgumentNode } from './argument-node';
4
- import { CUSTOM_DIRECTIVE_CONNECTION, CUSTOM_DIRECTIVE_RESOURCE } from './constants';
5
- import type { TransformState } from './operation/query';
6
-
7
- export function transform(node: DirectiveNode, transformState: TransformState): LuvioDirectiveNode {
8
- const {
9
- kind,
10
- name: { value: nodeName },
11
- arguments: nodeArguments,
12
- } = node;
13
- const ret: LuvioDirectiveNode = {
14
- kind,
15
- name: nodeName,
16
- };
17
-
18
- if (nodeArguments !== undefined && nodeArguments.length > 0) {
19
- let returnArguments: LuvioArgumentNode[] = [];
20
- for (var index = 0; index < nodeArguments.length; index++) {
21
- const argumentNode = nodeArguments[index];
22
- const value = transformArgumentNode(argumentNode, transformState);
23
- returnArguments.push(value);
24
- }
25
- ret.arguments = returnArguments;
26
- }
27
-
28
- return ret;
29
- }
30
-
31
- export function isCustomDirective(node: DirectiveNode): boolean {
32
- return (
33
- node.name.value === CUSTOM_DIRECTIVE_CONNECTION ||
34
- node.name.value === CUSTOM_DIRECTIVE_RESOURCE
35
- );
36
- }
package/src/document.ts DELETED
@@ -1,29 +0,0 @@
1
- import type { DocumentNode } from 'graphql/language';
2
- import type { LuvioDocumentNode, LuvioDefinitionNode } from './ast';
3
- import { isOperationDefinitionNode, isFragmentDefinitionNode } from './ast';
4
- import { transform as operationDefinitionTransform } from './operation';
5
- import { transform as fragmentDefinitionTransform } from './fragment';
6
-
7
- export function transform(root: DocumentNode): LuvioDocumentNode {
8
- const { kind, definitions } = root;
9
- const luvioDefinitions: LuvioDefinitionNode[] = [];
10
- for (let i = 0; i < definitions.length; i++) {
11
- const definition = definitions[i];
12
- if (isOperationDefinitionNode(definition)) {
13
- luvioDefinitions.push(operationDefinitionTransform(definition));
14
- } else if (isFragmentDefinitionNode(definition)) {
15
- luvioDefinitions.push(fragmentDefinitionTransform(definition));
16
- } else {
17
- if (process.env.NODE_ENV !== 'production') {
18
- throw new Error(
19
- `Unsupported ${definition.kind} definition. Only OperationDefinition and FragmentDefinition are supported in a GraphQL Document`
20
- );
21
- }
22
- }
23
- }
24
-
25
- return {
26
- kind,
27
- definitions: luvioDefinitions,
28
- };
29
- }
package/src/field-node.ts DELETED
@@ -1,72 +0,0 @@
1
- import type { FieldNode, StringValueNode } from 'graphql/language';
2
- import { transform as transformArgumentNode } from './argument-node';
3
- import type { LuvioArgumentNode, LuvioFieldNode } from './ast';
4
- import {
5
- CUSTOM_DIRECTIVE_CONNECTION,
6
- CUSTOM_DIRECTIVE_RESOURCE,
7
- NODE_KIND_CUSTOM_FIELD_SELECTION,
8
- NODE_KIND_OBJECT_FIELD_SELECTION,
9
- NODE_KIND_SCALAR_FIELD_SELECTION,
10
- NODE_TYPE_CONNECTION,
11
- } from './constants';
12
- import { isCustomDirective, transform as transformDirectiveNode } from './directive-node';
13
- import type { TransformState } from './operation/query';
14
-
15
- export function transform(node: FieldNode, transformState: TransformState): LuvioFieldNode {
16
- const { name, alias, arguments: fieldArgs, selectionSet, directives } = node;
17
-
18
- let luvioNode: LuvioFieldNode = {
19
- kind: NODE_KIND_OBJECT_FIELD_SELECTION,
20
- name: name.value,
21
- luvioSelections: [],
22
- };
23
-
24
- if (selectionSet === undefined || selectionSet.selections.length === 0) {
25
- luvioNode = {
26
- kind: NODE_KIND_SCALAR_FIELD_SELECTION,
27
- name: name.value,
28
- };
29
- } else {
30
- // object or custom field node
31
- if (directives !== undefined && directives.length > 0) {
32
- const customDirectiveNode = directives.find(isCustomDirective);
33
- if (customDirectiveNode === undefined) {
34
- // transform non client-side directives
35
- luvioNode.directives = directives.map((directive) =>
36
- transformDirectiveNode(directive, transformState)
37
- );
38
- } else {
39
- if (customDirectiveNode.name.value === CUSTOM_DIRECTIVE_CONNECTION) {
40
- luvioNode = {
41
- kind: NODE_KIND_CUSTOM_FIELD_SELECTION,
42
- name: name.value,
43
- type: NODE_TYPE_CONNECTION,
44
- luvioSelections: [],
45
- };
46
- } else if (customDirectiveNode.name.value === CUSTOM_DIRECTIVE_RESOURCE) {
47
- luvioNode = {
48
- kind: NODE_KIND_CUSTOM_FIELD_SELECTION,
49
- name: name.value,
50
- type: (customDirectiveNode!.arguments![0].value as StringValueNode).value,
51
- luvioSelections: [],
52
- };
53
- }
54
- }
55
- }
56
-
57
- if (fieldArgs !== undefined && fieldArgs.length > 0) {
58
- const returnArguments: LuvioArgumentNode[] = [];
59
- for (var index = 0; index < fieldArgs.length; index++) {
60
- const value = transformArgumentNode(fieldArgs[index], transformState);
61
- returnArguments.push(value);
62
- }
63
- luvioNode.arguments = returnArguments;
64
- }
65
- }
66
-
67
- if (alias !== undefined) {
68
- luvioNode.alias = alias.value;
69
- }
70
-
71
- return luvioNode;
72
- }