npm install esvalid
Returns true if and only if the given AST node represents a valid ECMAScript program.
Returns true if and only if the given AST node represents a valid ECMAScript expression.
Returns an array of InvalidAstError
objects representing the errors in the
given AST. An effort is made to continue collecting errors in the face of
malformed ASTs. If an empty array is returned, it is implied that the given AST
node is error free.
Constructs a new InvalidAstError
instance. node
must be non-null.
var esvalid = require("esvalid");
var esprima = require("esprima");
var program = esprima.parse(fs.readFileSync(require.resolve("esprima")));
esvalid.isValid(program); // true
esvalid.isValid({type: "Program", body: []}); // true
esvalid.isValid({type: "Program", body: null}); // false
esvalid.isValidExpression({type: "Program", body: []}); // false
esvalid.isValidExpression({type: "Literal", value: 0}); // true
esvalid.errors({type: "Program", body: []}); // []
var error = esvalid.errors({type: "Program", body: null})[0];
error instanceof esvalid.InvalidAstError; // true
error.node; // {type: "Program", body: null}
error.message; // "Program `body` member must be non-null"
This is a list of all esvalid validity tests other than null
tests and type checks.
- BreakStatement must have an IterationStatement or SwitchStatement as an ancestor
- labelled BreakStatement must have a matching LabeledStatement ancestor
- CatchClause
param
member must not beeval
orarguments
in strict mode - ContinueStatement must have an IterationStatement as an ancestor
- labelled ContinueStatement must have a matching LabeledStatement ancestor
- FunctionDeclaration
id
member must not beeval
orarguments
in strict mode - FunctionExpression
id
member must not beeval
orarguments
in strict mode - FunctionDeclaration parameter names must be unique in strict mode
- FunctionExpression parameter names must be unique in strict mode
- Identifier
name
member must be a valid IdentifierName - Identifier
name
member must not be a ReservedWord - IfStatement with null
alternate
must not be theconsequent
of an IfStatement with a non-nullalternate
- LabeledStatement must not be nested within a LabeledStatement with the same label
- numeric Literal nodes must not be NaN
- numeric Literal nodes must be non-negative
- numeric Literal nodes must be finite
- static MemberExpression
property
member must have a valid IdentifierNamename
member - ObjectExpression getter property
value
member must have zero parameters - ObjectExpression setter property
value
member must have exactly one parameter - ObjectExpression must not have more than one data property with the same name in strict mode
- ObjectExpression must not have data and getter properties with the same name
- ObjectExpression must not have data and setter properties with the same name
- ObjectExpression must not have data and getter properties with the same name
- ObjectExpression must not have multiple getters with the same name
- ObjectExpression must not have data and setter properties with the same name
- ObjectExpression must not have multiple setters with the same name
- ReturnStatement must be nested within a FunctionExpression or FunctionDeclaration node
- SequenceExpression
expressions
member length must be >= 2 - SwitchStatement
cases
member must contain no more than one SwitchCase with a nulltest
member - TryStatement must have a non-null
handler
member or a non-nullfinalizer
member delete
with unqualified identifier not allowed in strict mode- VariableDeclaration
declarations
member must be non-empty - WithStatement not allowed in strict mode