Skip to content

Commit 9416576

Browse files
committed
Simplify nested conditions
1 parent 15b957a commit 9416576

File tree

4 files changed

+70
-79
lines changed

4 files changed

+70
-79
lines changed

packages/patch/src/index.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,7 @@ import {
5252
directiveRepeatableAdded,
5353
directiveRepeatableRemoved,
5454
} from './patches/directives.js';
55-
import {
56-
enumValueAdded,
57-
enumValueDescriptionChanged,
58-
enumValueRemoved,
59-
} from './patches/enum.js';
55+
import { enumValueAdded, enumValueDescriptionChanged, enumValueRemoved } from './patches/enum.js';
6056
import {
6157
fieldAdded,
6258
fieldArgumentAdded,

packages/patch/src/patches/enum.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import {
2-
ASTNode,
3-
EnumValueDefinitionNode,
4-
Kind,
5-
StringValueNode,
6-
} from 'graphql';
1+
import { ASTNode, EnumValueDefinitionNode, Kind, StringValueNode } from 'graphql';
72
import { Change, ChangeType } from '@graphql-inspector/core';
83
import {
94
AddedAttributeAlreadyExistsError,

packages/patch/src/patches/interfaces.ts

Lines changed: 67 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -25,45 +25,48 @@ export function objectTypeInterfaceAdded(
2525
}
2626

2727
const typeNode = nodeByPath.get(change.path);
28-
if (typeNode) {
29-
if (
30-
typeNode.kind === Kind.OBJECT_TYPE_DEFINITION ||
31-
typeNode.kind === Kind.INTERFACE_TYPE_DEFINITION
32-
) {
33-
const existing = findNamedNode(typeNode.interfaces, change.meta.addedInterfaceName);
34-
if (existing) {
35-
handleError(
36-
change,
37-
new AddedAttributeAlreadyExistsError(
38-
typeNode.kind,
39-
'interfaces',
40-
change.meta.addedInterfaceName,
41-
),
42-
config,
43-
);
44-
} else {
45-
(typeNode.interfaces as NamedTypeNode[] | undefined) = [
46-
...(typeNode.interfaces ?? []),
47-
namedTypeNode(change.meta.addedInterfaceName),
48-
];
49-
}
50-
} else {
51-
handleError(
52-
change,
53-
new ChangedCoordinateKindMismatchError(
54-
Kind.OBJECT_TYPE_DEFINITION, // or Kind.INTERFACE_TYPE_DEFINITION
55-
typeNode.kind,
56-
),
57-
config,
58-
);
59-
}
60-
} else {
28+
if (!typeNode) {
6129
handleError(
6230
change,
6331
new ChangedAncestorCoordinateNotFoundError(Kind.OBJECT_TYPE_DEFINITION, 'interfaces'),
6432
config,
6533
);
34+
return;
35+
}
36+
37+
if (
38+
typeNode.kind !== Kind.OBJECT_TYPE_DEFINITION &&
39+
typeNode.kind !== Kind.INTERFACE_TYPE_DEFINITION
40+
) {
41+
handleError(
42+
change,
43+
new ChangedCoordinateKindMismatchError(
44+
Kind.OBJECT_TYPE_DEFINITION, // or Kind.INTERFACE_TYPE_DEFINITION
45+
typeNode.kind,
46+
),
47+
config,
48+
);
49+
return;
6650
}
51+
52+
const existing = findNamedNode(typeNode.interfaces, change.meta.addedInterfaceName);
53+
if (existing) {
54+
handleError(
55+
change,
56+
new AddedAttributeAlreadyExistsError(
57+
typeNode.kind,
58+
'interfaces',
59+
change.meta.addedInterfaceName,
60+
),
61+
config,
62+
);
63+
return;
64+
}
65+
66+
(typeNode.interfaces as NamedTypeNode[] | undefined) = [
67+
...(typeNode.interfaces ?? []),
68+
namedTypeNode(change.meta.addedInterfaceName),
69+
];
6770
}
6871

6972
export function objectTypeInterfaceRemoved(
@@ -78,35 +81,7 @@ export function objectTypeInterfaceRemoved(
7881
}
7982

8083
const typeNode = nodeByPath.get(change.path);
81-
if (typeNode) {
82-
if (
83-
typeNode.kind === Kind.OBJECT_TYPE_DEFINITION ||
84-
typeNode.kind === Kind.INTERFACE_TYPE_DEFINITION
85-
) {
86-
const existing = findNamedNode(typeNode.interfaces, change.meta.removedInterfaceName);
87-
if (existing) {
88-
(typeNode.interfaces as NamedTypeNode[] | undefined) = typeNode.interfaces?.filter(
89-
i => i.name.value !== change.meta.removedInterfaceName,
90-
);
91-
} else {
92-
// @note this error isnt the best designed for this application
93-
handleError(
94-
change,
95-
new DeletedCoordinateNotFound(
96-
Kind.INTERFACE_TYPE_DEFINITION,
97-
change.meta.removedInterfaceName,
98-
),
99-
config,
100-
);
101-
}
102-
} else {
103-
handleError(
104-
change,
105-
new ChangedCoordinateKindMismatchError(Kind.OBJECT_TYPE_DEFINITION, typeNode.kind),
106-
config,
107-
);
108-
}
109-
} else {
84+
if (!typeNode) {
11085
handleError(
11186
change,
11287
new DeletedAncestorCoordinateNotFoundError(
@@ -116,5 +91,35 @@ export function objectTypeInterfaceRemoved(
11691
),
11792
config,
11893
);
94+
return;
95+
}
96+
97+
if (
98+
typeNode.kind !== Kind.OBJECT_TYPE_DEFINITION &&
99+
typeNode.kind !== Kind.INTERFACE_TYPE_DEFINITION
100+
) {
101+
handleError(
102+
change,
103+
new ChangedCoordinateKindMismatchError(Kind.OBJECT_TYPE_DEFINITION, typeNode.kind),
104+
config,
105+
);
106+
return;
107+
}
108+
109+
const existing = findNamedNode(typeNode.interfaces, change.meta.removedInterfaceName);
110+
if (!existing) {
111+
handleError(
112+
change,
113+
new DeletedCoordinateNotFound(
114+
Kind.INTERFACE_TYPE_DEFINITION,
115+
change.meta.removedInterfaceName,
116+
),
117+
config,
118+
);
119+
return;
119120
}
121+
122+
(typeNode.interfaces as NamedTypeNode[] | undefined) = typeNode.interfaces?.filter(
123+
i => i.name.value !== change.meta.removedInterfaceName,
124+
);
120125
}

packages/patch/src/utils.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import {
2-
ASTKindToNode,
3-
ASTNode,
4-
Kind,
5-
NameNode,
6-
} from 'graphql';
1+
import { ASTKindToNode, ASTNode, Kind, NameNode } from 'graphql';
72
import { Maybe } from 'graphql/jsutils/Maybe';
83
import { Change, ChangeType } from '@graphql-inspector/core';
94
import {

0 commit comments

Comments
 (0)