diff --git a/src/interfaces/ast/index.ts b/src/interfaces/ast/index.ts index 502f5cf..6cce541 100644 --- a/src/interfaces/ast/index.ts +++ b/src/interfaces/ast/index.ts @@ -1,4 +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 +export * from './profile-ast.utils'; diff --git a/src/interfaces/ast/map-ast.ts b/src/interfaces/ast/map-ast.ts index 9334731..659958d 100644 --- a/src/interfaces/ast/map-ast.ts +++ b/src/interfaces/ast/map-ast.ts @@ -20,9 +20,7 @@ export type MapNodeKind = | 'MapDefinition' | 'OperationDefinition' // DOCUMENT - | 'ProfileId' - | 'Provider' - | 'Map' + | 'MapHeader' | 'MapDocument'; export interface MapASTNodeBase { @@ -187,31 +185,24 @@ export interface OperationDefinitionNode extends MapASTNodeBase { // DOCUMENT -/** - * `profileId = ` - */ -export interface MapProfileIdNode extends MapASTNodeBase { - kind: 'ProfileId'; - profileId: string; -} - -/** - * `provider = ` - */ -export interface ProviderNode extends MapASTNodeBase { - kind: 'Provider'; - providerId: string; -} - -export interface MapNode extends MapASTNodeBase { - kind: 'Map'; - profileId: MapProfileIdNode; - provider: ProviderNode; +export interface MapHeaderNode extends MapASTNodeBase { + kind: 'MapHeader'; + profile: { + scope?: string; + name: string; + version: { + major: number; + minor: number; + patch: number; + }; + }; + provider: string; + variant?: string; } export interface MapDocumentNode extends MapASTNodeBase { kind: 'MapDocument'; - map: MapNode; + header: MapHeaderNode; definitions: (MapDefinitionNode | OperationDefinitionNode)[]; } @@ -229,8 +220,6 @@ export type MapASTNode = | HttpCallStatementNode | MapDefinitionNode | OperationDefinitionNode - | MapProfileIdNode - | ProviderNode - | MapNode + | MapHeaderNode | MapDocumentNode | InlineCallNode; diff --git a/src/interfaces/ast/map-ast.utils.ts b/src/interfaces/ast/map-ast.utils.ts index 4f24715..5469bad 100644 --- a/src/interfaces/ast/map-ast.utils.ts +++ b/src/interfaces/ast/map-ast.utils.ts @@ -9,13 +9,11 @@ import { MapASTNode, MapDefinitionNode, MapDocumentNode, - MapNode, - MapProfileIdNode, + MapHeaderNode, ObjectLiteralNode, OperationDefinitionNode, OutcomeStatementNode, PrimitiveLiteralNode, - ProviderNode, SetStatementNode, StatementConditionNode, } from './map-ast'; @@ -32,16 +30,12 @@ export function isOperationDefinitionNode( return node.kind === 'OperationDefinition'; } -export function isProviderNode(node: MapASTNode): node is ProviderNode { - return node.kind === 'Provider'; -} - export function isSetStatementNode(node: MapASTNode): node is SetStatementNode { return node.kind === 'SetStatement'; } -export function isMapNode(node: MapASTNode): node is MapNode { - return node.kind === 'Map'; +export function isMapHeaderNode(node: MapASTNode): node is MapHeaderNode { + return node.kind === 'MapHeader'; } export function isMapDefinitionNode( @@ -104,10 +98,6 @@ export function isHttpCallStatementNode( return node.kind === 'HttpCallStatement'; } -export function isMapProfileIdNode(node: MapASTNode): node is MapProfileIdNode { - return node.kind === 'ProfileId'; -} - export function isInlineCallNode(node: MapASTNode): node is InlineCallNode { return node.kind === 'InlineCall'; } diff --git a/src/interfaces/ast/profile-ast.ts b/src/interfaces/ast/profile-ast.ts index b91ee49..842155d 100644 --- a/src/interfaces/ast/profile-ast.ts +++ b/src/interfaces/ast/profile-ast.ts @@ -21,8 +21,7 @@ export type ProfileNodeKind = | 'UseCaseSlotDefinition' | 'UseCaseDefinition' // DOCUMENT - | 'ProfileId' - | 'Profile' + | 'ProfileHeader' | 'ProfileDocument'; export interface ProfileASTNodeBase { @@ -202,22 +201,23 @@ export interface UseCaseDefinitionNode // DOCUMENT // -/** `profile = string` */ -export interface ProfileIdNode extends ProfileASTNodeBase { - kind: 'ProfileId'; - profileId: string; -} /** - * The node containing document information at the top of the document. + * The node containing document information. */ -export interface ProfileNode extends ProfileASTNodeBase, DocumentedNode { - kind: 'Profile'; - profileId: ProfileIdNode; +export interface ProfileHeaderNode extends ProfileASTNodeBase, DocumentedNode { + kind: 'ProfileHeader'; + scope?: string; + name: string; + version: { + major: number; + minor: number; + patch: number; + }; } /** Node enclosing the whole document */ export interface ProfileDocumentNode extends ProfileASTNodeBase { kind: 'ProfileDocument'; - profile: ProfileNode; + header: ProfileHeaderNode; definitions: DocumentDefinition[]; } export type DocumentDefinition = @@ -237,8 +237,7 @@ export type ProfileASTNode = | ObjectDefinitionNode | PrimitiveTypeNameNode | ProfileDocumentNode - | ProfileIdNode - | ProfileNode + | ProfileHeaderNode | UnionDefinitionNode | UseCaseDefinitionNode | UseCaseSlotDefinitionNode; diff --git a/src/interfaces/ast/profile-ast.utils.ts b/src/interfaces/ast/profile-ast.utils.ts index 4118b32..11bb71f 100644 --- a/src/interfaces/ast/profile-ast.utils.ts +++ b/src/interfaces/ast/profile-ast.utils.ts @@ -12,8 +12,7 @@ import { PrimitiveTypeNameNode, ProfileASTNode, ProfileDocumentNode, - ProfileIdNode, - ProfileNode, + ProfileHeaderNode, Type, TypeDefinition, TypeName, @@ -116,12 +115,10 @@ export function isUseCaseDefinitionNode( 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 isProfileHeaderNode( + node: ProfileASTNode +): node is ProfileHeaderNode { + return node.kind === 'ProfileHeader'; } export function isProfileDocumentNode(