angular-estree-parser
Version:
A parser that converts Angular source code into an ESTree-compatible form
88 lines (87 loc) • 2.53 kB
TypeScript
import type * as babel from '@babel/types';
export interface LocationInformation {
start: number;
end: number;
range: [number, number];
extra?: any;
}
export interface NGBaseNode extends LocationInformation {
type: string;
}
export type NGNode = babel.Node | NGMicrosyntaxNode | NGEmptyExpression | NGPipeExpression | NGQuotedExpression | NGChainedExpression;
export type CommentLine = babel.CommentLine & LocationInformation;
export interface NGEmptyExpression extends NGBaseNode {
type: 'NGEmptyExpression';
}
export interface NGPipeExpression extends NGBaseNode {
type: 'NGPipeExpression';
left: babel.Expression;
right: babel.Identifier;
arguments: babel.Expression[];
}
export interface NGQuotedExpression extends NGBaseNode {
type: 'NGQuotedExpression';
prefix: string;
value: string;
}
export interface NGChainedExpression extends NGBaseNode {
type: 'NGChainedExpression';
expressions: NGNode[];
}
export interface RawNGSpan {
start: number;
end: number;
}
/**
* Microsyntax ::
* ( ( Exp | Let ) ( Sep? ( Let | As | KeyExp ) )* Sep? Key? )?
*
* Sep ::
* ';'
* ','
*
* Key ::
* StringLiteral
* Identifier ( '-' Identifier )*
*
* Exp ::
* NGNode ( 'as' Key )?
*
* KeyExp ::
* Key ':'? Exp
*
* As ::
* Key 'as' Key
*
* Let ::
* 'let' Key ( '=' Key )?
*/
export interface NGMicrosyntax extends NGBaseNode {
type: 'NGMicrosyntax';
body: (NGMicrosyntaxAs | NGMicrosyntaxExpression | NGMicrosyntaxKey | NGMicrosyntaxKeyedExpression | NGMicrosyntaxLet)[];
}
export type NGMicrosyntaxNode = NGMicrosyntax | NGMicrosyntaxAs | NGMicrosyntaxExpression | NGMicrosyntaxKey | NGMicrosyntaxKeyedExpression | NGMicrosyntaxLet;
export interface NGMicrosyntaxKey extends NGBaseNode {
type: 'NGMicrosyntaxKey';
name: string;
}
export interface NGMicrosyntaxKeyedExpression extends NGBaseNode {
type: 'NGMicrosyntaxKeyedExpression';
key: NGMicrosyntaxKey;
expression: NGMicrosyntaxExpression;
}
export interface NGMicrosyntaxExpression extends NGBaseNode {
type: 'NGMicrosyntaxExpression';
expression: NGNode;
alias: NGMicrosyntaxKey | null;
}
export interface NGMicrosyntaxAs extends NGBaseNode {
type: 'NGMicrosyntaxAs';
key: NGMicrosyntaxKey;
alias: NGMicrosyntaxKey;
}
export interface NGMicrosyntaxLet extends NGBaseNode {
type: 'NGMicrosyntaxLet';
key: NGMicrosyntaxKey;
value: NGMicrosyntaxKey | null;
}