Skip to content

Commit b22e428

Browse files
committed
Refactor EnhancedResource.interfaces to not use isResourceClass
Now I've encoded the expectations more directly. That it is a GQL interface & to avoid the intermediate intersected classes.
1 parent 5d139c8 commit b22e428

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/common/resource.dto.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,20 @@ export class EnhancedResource<T extends ResourceShape<any>> {
161161
}
162162

163163
/**
164-
* An semi-ordered set of interfaces the resource.
164+
* A semi-ordered set of interfaces the resource.
165165
*/
166166
@Once()
167167
get interfaces(): ReadonlySet<EnhancedResource<any>> {
168168
return new Set(
169-
getParentTypes(this.type)
170-
.slice(1) // not self
171-
.filter(isResourceClass)
169+
getParentTypes(this.type, [])
170+
.filter(
171+
(cls): cls is ResourceShape<any> =>
172+
// Is declared as interface. i.e. avoids DataObject.
173+
GqlClassType.get(cls) === 'interface' &&
174+
// Avoid intersected classes.
175+
// getParentTypes will give us the intersect-ees directly.
176+
!cls.name.startsWith('Intersection'),
177+
)
172178
.map(EnhancedResource.of),
173179
);
174180
}

0 commit comments

Comments
 (0)