@@ -33,12 +33,14 @@ import {
33
33
} from '@/TreeOperations/shared' ;
34
34
35
35
export const mutate = ( tree : ParserTree , allNodes : ParserField [ ] ) => {
36
- const mutateParentIfField = ( node : ParserField ) => {
36
+ const mutateParentIfField = ( node : ParserField , parentNode ?: string ) => {
37
37
if ( node . data . type === TypeSystemDefinition . FieldDefinition ) {
38
- const parentNode = allNodes . find ( ( an ) => an . args . some ( ( a ) => a . id === node . id ) ) ;
39
- if ( ! parentNode ) throw new Error ( 'Invalid field definition' ) ;
40
- const fieldIndex = parentNode . args . findIndex ( ( a ) => a . id == node . id ) ;
41
- updateFieldOnNode ( parentNode , fieldIndex , node ) ;
38
+ const findParentNode = parentNode
39
+ ? allNodes . find ( ( n ) => n . id === parentNode )
40
+ : allNodes . find ( ( an ) => an . args . some ( ( a ) => a . id === node . id ) ) ;
41
+ if ( ! findParentNode ) throw new Error ( 'Invalid field definition' ) ;
42
+ const fieldIndex = findParentNode . args . findIndex ( ( a ) => a . id == node . id ) ;
43
+ updateFieldOnNode ( findParentNode , fieldIndex , node ) ;
42
44
return ;
43
45
}
44
46
} ;
@@ -65,7 +67,7 @@ export const mutate = (tree: ParserTree, allNodes: ParserField[]) => {
65
67
mutateParentIfField ( n ) ;
66
68
} ;
67
69
68
- const updateFieldOnNode = ( node : ParserField , i : number , updatedField : ParserField ) => {
70
+ const updateFieldOnNode = ( node : ParserField , i : number , updatedField : ParserField , parentNode ?: string ) => {
69
71
regenerateId ( updatedField ) ;
70
72
if ( node . data . type === TypeSystemDefinition . DirectiveDefinition ) {
71
73
const oldField : ParserField = JSON . parse ( JSON . stringify ( node . args [ i ] ) ) ;
@@ -77,7 +79,7 @@ export const mutate = (tree: ParserTree, allNodes: ParserField[]) => {
77
79
}
78
80
node . args [ i ] = updatedField ;
79
81
regenerateId ( node ) ;
80
- mutateParentIfField ( node ) ;
82
+ mutateParentIfField ( node , parentNode ) ;
81
83
} ;
82
84
83
85
const addFieldToNode = ( node : ParserField , f : ParserField ) => {
0 commit comments