-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #18 from superfaceai/feature/profile-ast-utils
feat: add Profile AST utils
- Loading branch information
Showing
3 changed files
with
142 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
export * from './map-ast'; | ||
export * from './map-ast.utils'; | ||
export * from './profile-ast'; | ||
export * from './profile-ast.utils'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) | ||
); | ||
} |