Skip to content

Commit

Permalink
Merge pull request #19 from superfaceai/feature/versioning-and-variants
Browse files Browse the repository at this point in the history
feat: update profile and map header nodes
  • Loading branch information
TheEdward162 authored Jan 7, 2021
2 parents 4d4b1fc + b885eb8 commit 79659bd
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 63 deletions.
2 changes: 1 addition & 1 deletion src/interfaces/ast/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export * from './map-ast';
export * from './map-ast.utils';
export * from './profile-ast';
export * from './profile-ast.utils';
export * from './profile-ast.utils';
43 changes: 16 additions & 27 deletions src/interfaces/ast/map-ast.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ export type MapNodeKind =
| 'MapDefinition'
| 'OperationDefinition'
// DOCUMENT
| 'ProfileId'
| 'Provider'
| 'Map'
| 'MapHeader'
| 'MapDocument';

export interface MapASTNodeBase {
Expand Down Expand Up @@ -187,31 +185,24 @@ export interface OperationDefinitionNode extends MapASTNodeBase {

// DOCUMENT

/**
* `profileId = <string>`
*/
export interface MapProfileIdNode extends MapASTNodeBase {
kind: 'ProfileId';
profileId: string;
}

/**
* `provider = <string>`
*/
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)[];
}

Expand All @@ -229,8 +220,6 @@ export type MapASTNode =
| HttpCallStatementNode
| MapDefinitionNode
| OperationDefinitionNode
| MapProfileIdNode
| ProviderNode
| MapNode
| MapHeaderNode
| MapDocumentNode
| InlineCallNode;
16 changes: 3 additions & 13 deletions src/interfaces/ast/map-ast.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,11 @@ import {
MapASTNode,
MapDefinitionNode,
MapDocumentNode,
MapNode,
MapProfileIdNode,
MapHeaderNode,
ObjectLiteralNode,
OperationDefinitionNode,
OutcomeStatementNode,
PrimitiveLiteralNode,
ProviderNode,
SetStatementNode,
StatementConditionNode,
} from './map-ast';
Expand All @@ -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(
Expand Down Expand Up @@ -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';
}
27 changes: 13 additions & 14 deletions src/interfaces/ast/profile-ast.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ export type ProfileNodeKind =
| 'UseCaseSlotDefinition'
| 'UseCaseDefinition'
// DOCUMENT
| 'ProfileId'
| 'Profile'
| 'ProfileHeader'
| 'ProfileDocument';

export interface ProfileASTNodeBase {
Expand Down Expand Up @@ -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 =
Expand All @@ -237,8 +237,7 @@ export type ProfileASTNode =
| ObjectDefinitionNode
| PrimitiveTypeNameNode
| ProfileDocumentNode
| ProfileIdNode
| ProfileNode
| ProfileHeaderNode
| UnionDefinitionNode
| UseCaseDefinitionNode
| UseCaseSlotDefinitionNode;
13 changes: 5 additions & 8 deletions src/interfaces/ast/profile-ast.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import {
PrimitiveTypeNameNode,
ProfileASTNode,
ProfileDocumentNode,
ProfileIdNode,
ProfileNode,
ProfileHeaderNode,
Type,
TypeDefinition,
TypeName,
Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit 79659bd

Please sign in to comment.