Skip to content

Commit

Permalink
Merge pull request #23 from superfaceai/feature/visitor-interface
Browse files Browse the repository at this point in the history
wip: Feature/visitor interface
  • Loading branch information
lukas-valenta authored Feb 4, 2021
2 parents 31717d7 + f18f4c6 commit 25b0d6f
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Added `IterationAtomNode`
* Added `IterationAtomNode` to `CallStatementNode` and `InlineCallNode`
* Added `ConditionAtomNode` to `InlineCallNode`
* Moved `ProfileAstVisitor` and `MapAstVisitor` from sdk package

### Changed
* Renamed `StatementConditionNode` to `ConditionAtomNode`
Expand Down
21 changes: 21 additions & 0 deletions src/interfaces/ast/map-ast.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,24 @@ export function isHttpCallStatementNode(
export function isInlineCallNode(node: MapASTNode): node is InlineCallNode {
return node.kind === 'InlineCall';
}

export interface MapAstVisitor<R = unknown> {
visit(node: MapASTNode): R;

visitPrimitiveLiteralNode(node: PrimitiveLiteralNode): R;
visitObjectLiteralNode(node: ObjectLiteralNode): R;
visitJessieExpressionNode(node: JessieExpressionNode): R;
visitAssignmentNode(node: AssignmentNode): R;
visitConditionAtomNode(node: ConditionAtomNode): R;
visitIterationAtomNode(node: IterationAtomNode): R;
visitSetStatementNode(node: SetStatementNode): R;
visitCallStatementNode(node: CallStatementNode): R;
visitHttpResponseHandlerNode(node: HttpResponseHandlerNode): R;
visitHttpCallStatementNode(node: HttpCallStatementNode): R;
visitMapDefinitionNode(node: MapDefinitionNode): R;
visitMapHeaderNode(node: MapHeaderNode): R;
visitOperationDefinitionNode(node: OperationDefinitionNode): R;
visitOutcomeStatementNode(node: OutcomeStatementNode): R;
visitInlineCallNode(node: InlineCallNode): R;
visitMapDocumentNode(node: MapDocumentNode): R;
}
51 changes: 51 additions & 0 deletions src/interfaces/ast/profile-ast.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,54 @@ export function isDocumentDefinition(
isNamedModelDefinitionNode(node)
);
}

export interface ProfileAstVisitor<R = unknown> {
visit(node: ProfileASTNode, ...parameters: unknown[]): R;
visitEnumDefinitionNode(
node: EnumDefinitionNode,
...parameters: unknown[]
): R;
visitEnumValueNode(node: EnumValueNode, ...parameters: unknown[]): R;
visitFieldDefinitionNode(
node: FieldDefinitionNode,
...parameters: unknown[]
): R;
visitListDefinitionNode(
node: ListDefinitionNode,
...parameters: unknown[]
): R;
visitModelTypeNameNode(node: ModelTypeNameNode, ...parameters: unknown[]): R;
visitNamedFieldDefinitionNode(
node: NamedFieldDefinitionNode,
...parameters: unknown[]
): R;
visitNamedModelDefinitionNode(
node: NamedModelDefinitionNode,
...parameters: unknown[]
): R;
visitNonNullDefinitionNode(
node: NonNullDefinitionNode,
...parameters: unknown[]
): R;
visitObjectDefinitionNode(
node: ObjectDefinitionNode,
...parameters: unknown[]
): R;
visitPrimitiveTypeNameNode(
node: PrimitiveTypeNameNode,
...parameters: unknown[]
): R;
visitProfileDocumentNode(
node: ProfileDocumentNode,
...parameters: unknown[]
): R;
visitProfileHeaderNode(node: ProfileHeaderNode, ...parameters: unknown[]): R;
visitUnionDefinitionNode(
node: UnionDefinitionNode,
...parameters: unknown[]
): R;
visitUseCaseDefinitionNode(
node: UseCaseDefinitionNode,
...parameters: unknown[]
): R;
}

0 comments on commit 25b0d6f

Please sign in to comment.