Skip to content

Commit

Permalink
refactor: update to TypeScript 5.5 and fix an issue it found
Browse files Browse the repository at this point in the history
getEnumTypes() actually had a wrong type signature, which TS 5.5 is able
to report as an error.
  • Loading branch information
Yogu committed Jul 31, 2024
1 parent afb89e5 commit 9583778
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 53 deletions.
14 changes: 7 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
"rimraf": "^3.0.2",
"stats-lite": "^2.2.0",
"ts-node": "^10.8.2",
"typescript": "~5.4.5"
"typescript": "~5.5.4"
},
"dependencies": {
"@graphql-tools/schema": "^8.5.0",
Expand Down
64 changes: 19 additions & 45 deletions src/schema/schema-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,82 +30,56 @@ import { CORE_SCALARS } from './graphql-base';
* @returns {ReadonlyArray<ObjectTypeDefinitionNode>}
*/
export function getObjectTypes(model: DocumentNode): ReadonlyArray<ObjectTypeDefinitionNode> {
return <ReadonlyArray<ObjectTypeDefinitionNode>>(
model.definitions.filter((def) => def.kind === Kind.OBJECT_TYPE_DEFINITION)
);
return model.definitions.filter((def) => def.kind === Kind.OBJECT_TYPE_DEFINITION);
}

export function getEnumTypes(model: DocumentNode): ReadonlyArray<ObjectTypeDefinitionNode> {
return <ReadonlyArray<ObjectTypeDefinitionNode>>(
model.definitions.filter((def) => def.kind === Kind.ENUM_TYPE_DEFINITION)
);
export function getEnumTypes(model: DocumentNode): ReadonlyArray<EnumTypeDefinitionNode> {
return model.definitions.filter((def) => def.kind === Kind.ENUM_TYPE_DEFINITION);
}

/**
* Get all @link ObjectTypeDefinitionNode annotated with @rootEntity directive of a model.
* @param {DocumentNode} model (ast)
* @returns {ReadonlyArray<ObjectTypeDefinitionNode>}
*/
export function getRootEntityTypes(model: DocumentNode): ReadonlyArray<ObjectTypeDefinitionNode> {
return <ReadonlyArray<ObjectTypeDefinitionNode>>(
model.definitions.filter(
(def) =>
def.kind === Kind.OBJECT_TYPE_DEFINITION &&
def.directives &&
def.directives.some((directive) => directive.name.value === ROOT_ENTITY_DIRECTIVE),
)
return getObjectTypes(model).filter(
(def) =>
def.directives &&
def.directives.some((directive) => directive.name.value === ROOT_ENTITY_DIRECTIVE),
);
}

/**
* Get all @link ObjectTypeDefinitionNode annotated with @childEntity directive of a model.
* @param {DocumentNode} model (ast)
* @returns {ReadonlyArray<ObjectTypeDefinitionNode>}
*/
export function getChildEntityTypes(model: DocumentNode): ReadonlyArray<ObjectTypeDefinitionNode> {
return <ReadonlyArray<ObjectTypeDefinitionNode>>(
model.definitions.filter(
(def) =>
def.kind === Kind.OBJECT_TYPE_DEFINITION &&
def.directives &&
def.directives.some((directive) => directive.name.value === CHILD_ENTITY_DIRECTIVE),
)
return getObjectTypes(model).filter(
(def) =>
def.directives &&
def.directives.some((directive) => directive.name.value === CHILD_ENTITY_DIRECTIVE),
);
}

/**
* Get all @link ObjectTypeDefinitionNode annotated with @entityExtension directive of a model.
* @param {DocumentNode} model (ast)
* @returns {ReadonlyArray<ObjectTypeDefinitionNode>}
*/
export function getEntityExtensionTypes(
model: DocumentNode,
): ReadonlyArray<ObjectTypeDefinitionNode> {
return <ReadonlyArray<ObjectTypeDefinitionNode>>(
model.definitions.filter(
(def) =>
def.kind === Kind.OBJECT_TYPE_DEFINITION &&
def.directives &&
def.directives.some(
(directive) => directive.name.value === ENTITY_EXTENSION_DIRECTIVE,
),
)
return getObjectTypes(model).filter(
(def) =>
def.directives &&
def.directives.some((directive) => directive.name.value === ENTITY_EXTENSION_DIRECTIVE),
);
}

/**
* Get all @link ObjectTypeDefinitionNode annotated with @valueObject directive of a model.
* @param {DocumentNode} model (ast)
* @returns {ReadonlyArray<ObjectTypeDefinitionNode>}
*/
export function getValueObjectTypes(model: DocumentNode): ReadonlyArray<ObjectTypeDefinitionNode> {
return <ReadonlyArray<ObjectTypeDefinitionNode>>(
model.definitions.filter(
(def) =>
def.kind === Kind.OBJECT_TYPE_DEFINITION &&
def.directives &&
def.directives.some((directive) => directive.name.value === VALUE_OBJECT_DIRECTIVE),
)
return getObjectTypes(model).filter(
(def) =>
def.directives &&
def.directives.some((directive) => directive.name.value === VALUE_OBJECT_DIRECTIVE),
);
}

Expand Down

0 comments on commit 9583778

Please sign in to comment.