From d913d3168e860f104a20c0e06d3d368dbd41e3ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduard=20Lavu=C5=A1?= Date: Wed, 3 Feb 2021 16:30:01 +0100 Subject: [PATCH 1/2] feat: add visitor interfaces (move from sdk repo) --- src/interfaces/ast/map-ast.utils.ts | 21 ++++++++++ src/interfaces/ast/profile-ast.utils.ts | 51 +++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/src/interfaces/ast/map-ast.utils.ts b/src/interfaces/ast/map-ast.utils.ts index cbcdca4..cff75ff 100644 --- a/src/interfaces/ast/map-ast.utils.ts +++ b/src/interfaces/ast/map-ast.utils.ts @@ -108,3 +108,24 @@ export function isHttpCallStatementNode( export function isInlineCallNode(node: MapASTNode): node is InlineCallNode { return node.kind === 'InlineCall'; } + +export interface MapVisitor { + 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; +} diff --git a/src/interfaces/ast/profile-ast.utils.ts b/src/interfaces/ast/profile-ast.utils.ts index 11bb71f..27ba31d 100644 --- a/src/interfaces/ast/profile-ast.utils.ts +++ b/src/interfaces/ast/profile-ast.utils.ts @@ -136,3 +136,54 @@ export function isDocumentDefinition( isNamedModelDefinitionNode(node) ); } + +export interface ProfileAstVisitor { + 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; +} From f18f4c605f5ec34928191b205749fae2b7c1e268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduard=20Lavu=C5=A1?= Date: Wed, 3 Feb 2021 18:11:15 +0100 Subject: [PATCH 2/2] chore: update readme, rename MapVisitor to MapAstVisitor --- CHANGELOG.md | 1 + src/interfaces/ast/map-ast.utils.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1bf71d..6755155 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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` diff --git a/src/interfaces/ast/map-ast.utils.ts b/src/interfaces/ast/map-ast.utils.ts index cff75ff..5113cda 100644 --- a/src/interfaces/ast/map-ast.utils.ts +++ b/src/interfaces/ast/map-ast.utils.ts @@ -109,7 +109,7 @@ export function isInlineCallNode(node: MapASTNode): node is InlineCallNode { return node.kind === 'InlineCall'; } -export interface MapVisitor { +export interface MapAstVisitor { visit(node: MapASTNode): R; visitPrimitiveLiteralNode(node: PrimitiveLiteralNode): R;