From 9cd098ad226bf541c12cfb1c25da241d05053b1b Mon Sep 17 00:00:00 2001 From: Martin Albert Date: Mon, 4 Jan 2021 09:08:51 +0100 Subject: [PATCH 1/2] fix: remove duplicate of util for MapProfileIdNode --- src/interfaces/ast/map-ast.utils.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/interfaces/ast/map-ast.utils.ts b/src/interfaces/ast/map-ast.utils.ts index 4b88a4e..4f24715 100644 --- a/src/interfaces/ast/map-ast.utils.ts +++ b/src/interfaces/ast/map-ast.utils.ts @@ -32,10 +32,6 @@ export function isOperationDefinitionNode( return node.kind === 'OperationDefinition'; } -export function isProfileIdNode(node: MapASTNode): node is MapProfileIdNode { - return node.kind === 'ProfileId'; -} - export function isProviderNode(node: MapASTNode): node is ProviderNode { return node.kind === 'Provider'; } From 76b1b7ad8ab6fde7b028c44b939f283643aacadb Mon Sep 17 00:00:00 2001 From: Martin Albert Date: Mon, 4 Jan 2021 09:09:16 +0100 Subject: [PATCH 2/2] feat: add Profile AST utils --- src/interfaces/ast/index.ts | 1 + src/interfaces/ast/profile-ast.utils.ts | 141 ++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 src/interfaces/ast/profile-ast.utils.ts diff --git a/src/interfaces/ast/index.ts b/src/interfaces/ast/index.ts index 9199480..502f5cf 100644 --- a/src/interfaces/ast/index.ts +++ b/src/interfaces/ast/index.ts @@ -1,3 +1,4 @@ export * from './map-ast'; export * from './map-ast.utils'; export * from './profile-ast'; +export * from './profile-ast.utils'; \ No newline at end of file diff --git a/src/interfaces/ast/profile-ast.utils.ts b/src/interfaces/ast/profile-ast.utils.ts new file mode 100644 index 0000000..4118b32 --- /dev/null +++ b/src/interfaces/ast/profile-ast.utils.ts @@ -0,0 +1,141 @@ +import { + DocumentDefinition, + EnumDefinitionNode, + EnumValueNode, + FieldDefinitionNode, + ListDefinitionNode, + ModelTypeNameNode, + NamedFieldDefinitionNode, + NamedModelDefinitionNode, + NonNullDefinitionNode, + ObjectDefinitionNode, + PrimitiveTypeNameNode, + ProfileASTNode, + ProfileDocumentNode, + ProfileIdNode, + ProfileNode, + Type, + TypeDefinition, + TypeName, + UnionDefinitionNode, + UseCaseDefinitionNode, + UseCaseSlotDefinitionNode, +} from './profile-ast'; + +export function isPrimitiveTypeNameNode( + node: ProfileASTNode +): node is PrimitiveTypeNameNode { + return node.kind === 'PrimitiveTypeName'; +} + +export function isModelTypeNameNode( + node: ProfileASTNode +): node is ModelTypeNameNode { + return node.kind === 'ModelTypeName'; +} + +export function isTypeName(node: ProfileASTNode): node is TypeName { + return isPrimitiveTypeNameNode(node) || isModelTypeNameNode(node); +} + +export function isEnumDefinitionNode( + node: ProfileASTNode +): node is EnumDefinitionNode { + return node.kind === 'EnumDefinition'; +} + +export function isObjectDefinitionNode( + node: ProfileASTNode +): node is ObjectDefinitionNode { + return node.kind === 'ObjectDefinition'; +} + +export function isListDefinitionNode( + node: ProfileASTNode +): node is ListDefinitionNode { + return node.kind === 'ListDefinition'; +} + +export function isNonNullDefinitionNode( + node: ProfileASTNode +): node is NonNullDefinitionNode { + return node.kind === 'NonNullDefinition'; +} + +export function isUnionDefinitionNode( + node: ProfileASTNode +): node is UnionDefinitionNode { + return node.kind === 'UnionDefinition'; +} + +export function isTypeDefinition(node: ProfileASTNode): node is TypeDefinition { + return ( + isObjectDefinitionNode(node) || + isEnumDefinitionNode(node) || + isUnionDefinitionNode(node) || + isListDefinitionNode(node) || + isNonNullDefinitionNode(node) + ); +} + +export function isType(node: ProfileASTNode): node is Type { + return isTypeName(node) || isTypeDefinition(node); +} + +export function isEnumValueNode(node: ProfileASTNode): node is EnumValueNode { + return node.kind === 'EnumValue'; +} + +export function isFieldDefinitionNode( + node: ProfileASTNode +): node is FieldDefinitionNode { + return node.kind === 'FieldDefinition'; +} + +export function isNamedFieldDefinitionNode( + node: ProfileASTNode +): node is NamedFieldDefinitionNode { + return node.kind === 'NamedFieldDefinition'; +} + +export function isNamedModelDefinitionNode( + node: ProfileASTNode +): node is NamedModelDefinitionNode { + return node.kind === 'NamedModelDefinition'; +} + +export function isUseCaseSlotDefinitionNode( + node: ProfileASTNode +): node is UseCaseSlotDefinitionNode { + return node.kind === 'UseCaseSlotDefinition'; +} + +export function isUseCaseDefinitionNode( + node: ProfileASTNode +): node is UseCaseDefinitionNode { + return node.kind === 'UseCaseDefinition'; +} + +export function isProfileIdNode(node: ProfileASTNode): node is ProfileIdNode { + return node.kind === 'ProfileId'; +} + +export function isProfileNode(node: ProfileASTNode): node is ProfileNode { + return node.kind === 'Profile'; +} + +export function isProfileDocumentNode( + node: ProfileASTNode +): node is ProfileDocumentNode { + return node.kind === 'ProfileDocument'; +} + +export function isDocumentDefinition( + node: ProfileASTNode +): node is DocumentDefinition { + return ( + isUseCaseDefinitionNode(node) || + isNamedFieldDefinitionNode(node) || + isNamedModelDefinitionNode(node) + ); +}