"use strict"; var _index = require("./index"); var _index2 = _interopRequireDefault(_index); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (0, _index2.default)("AssignmentPattern", { visitor: ["left", "right"], aliases: ["Pattern", "LVal"], fields: { left: { validate: (0, _index.assertNodeType)("Identifier") }, right: { validate: (0, _index.assertNodeType)("Expression") }, decorators: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Decorator"))) } } }); (0, _index2.default)("ArrayPattern", { visitor: ["elements", "typeAnnotation"], aliases: ["Pattern", "LVal"], fields: { elements: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Identifier", "Pattern", "RestElement"))) }, decorators: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Decorator"))) } } }); (0, _index2.default)("ArrowFunctionExpression", { builder: ["params", "body", "async"], visitor: ["params", "body", "returnType", "typeParameters"], aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], fields: { params: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("LVal"))) }, body: { validate: (0, _index.assertNodeType)("BlockStatement", "Expression") }, async: { validate: (0, _index.assertValueType)("boolean"), default: false } } }); (0, _index2.default)("ClassBody", { visitor: ["body"], fields: { body: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("ClassMethod", "ClassProperty"))) } } }); (0, _index2.default)("ClassDeclaration", { builder: ["id", "superClass", "body", "decorators"], visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"], aliases: ["Scopable", "Class", "Statement", "Declaration", "Pureish"], fields: { id: { validate: (0, _index.assertNodeType)("Identifier") }, body: { validate: (0, _index.assertNodeType)("ClassBody") }, superClass: { optional: true, validate: (0, _index.assertNodeType)("Expression") }, decorators: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Decorator"))) } } }); (0, _index2.default)("ClassExpression", { inherits: "ClassDeclaration", aliases: ["Scopable", "Class", "Expression", "Pureish"], fields: { id: { optional: true, validate: (0, _index.assertNodeType)("Identifier") }, body: { validate: (0, _index.assertNodeType)("ClassBody") }, superClass: { optional: true, validate: (0, _index.assertNodeType)("Expression") }, decorators: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Decorator"))) } } }); (0, _index2.default)("ExportAllDeclaration", { visitor: ["source"], aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], fields: { source: { validate: (0, _index.assertNodeType)("StringLiteral") } } }); (0, _index2.default)("ExportDefaultDeclaration", { visitor: ["declaration"], aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], fields: { declaration: { validate: (0, _index.assertNodeType)("FunctionDeclaration", "ClassDeclaration", "Expression") } } }); (0, _index2.default)("ExportNamedDeclaration", { visitor: ["declaration", "specifiers", "source"], aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], fields: { declaration: { validate: (0, _index.assertNodeType)("Declaration"), optional: true }, specifiers: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("ExportSpecifier"))) }, source: { validate: (0, _index.assertNodeType)("StringLiteral"), optional: true } } }); (0, _index2.default)("ExportSpecifier", { visitor: ["local", "exported"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, _index.assertNodeType)("Identifier") }, exported: { validate: (0, _index.assertNodeType)("Identifier") } } }); (0, _index2.default)("ForOfStatement", { visitor: ["left", "right", "body"], aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], fields: { left: { validate: (0, _index.assertNodeType)("VariableDeclaration", "LVal") }, right: { validate: (0, _index.assertNodeType)("Expression") }, body: { validate: (0, _index.assertNodeType)("Statement") } } }); (0, _index2.default)("ImportDeclaration", { visitor: ["specifiers", "source"], aliases: ["Statement", "Declaration", "ModuleDeclaration"], fields: { specifiers: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"))) }, source: { validate: (0, _index.assertNodeType)("StringLiteral") } } }); (0, _index2.default)("ImportDefaultSpecifier", { visitor: ["local"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, _index.assertNodeType)("Identifier") } } }); (0, _index2.default)("ImportNamespaceSpecifier", { visitor: ["local"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, _index.assertNodeType)("Identifier") } } }); (0, _index2.default)("ImportSpecifier", { visitor: ["local", "imported"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, _index.assertNodeType)("Identifier") }, imported: { validate: (0, _index.assertNodeType)("Identifier") }, importKind: { validate: (0, _index.assertOneOf)(null, "type", "typeof") } } }); (0, _index2.default)("MetaProperty", { visitor: ["meta", "property"], aliases: ["Expression"], fields: { meta: { validate: (0, _index.assertValueType)("string") }, property: { validate: (0, _index.assertValueType)("string") } } }); (0, _index2.default)("ClassMethod", { aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], builder: ["kind", "key", "params", "body", "computed", "static"], visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], fields: { kind: { validate: (0, _index.chain)((0, _index.assertValueType)("string"), (0, _index.assertOneOf)("get", "set", "method", "constructor")), default: "method" }, computed: { default: false, validate: (0, _index.assertValueType)("boolean") }, static: { default: false, validate: (0, _index.assertValueType)("boolean") }, key: { validate: function validate(node, key, val) { var expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"]; _index.assertNodeType.apply(undefined, expectedTypes)(node, key, val); } }, params: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("LVal"))) }, body: { validate: (0, _index.assertNodeType)("BlockStatement") }, generator: { default: false, validate: (0, _index.assertValueType)("boolean") }, async: { default: false, validate: (0, _index.assertValueType)("boolean") } } }); (0, _index2.default)("ObjectPattern", { visitor: ["properties", "typeAnnotation"], aliases: ["Pattern", "LVal"], fields: { properties: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("RestProperty", "Property"))) }, decorators: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Decorator"))) } } }); (0, _index2.default)("SpreadElement", { visitor: ["argument"], aliases: ["UnaryLike"], fields: { argument: { validate: (0, _index.assertNodeType)("Expression") } } }); (0, _index2.default)("Super", { aliases: ["Expression"] }); (0, _index2.default)("TaggedTemplateExpression", { visitor: ["tag", "quasi"], aliases: ["Expression"], fields: { tag: { validate: (0, _index.assertNodeType)("Expression") }, quasi: { validate: (0, _index.assertNodeType)("TemplateLiteral") } } }); (0, _index2.default)("TemplateElement", { builder: ["value", "tail"], fields: { value: {}, tail: { validate: (0, _index.assertValueType)("boolean"), default: false } } }); (0, _index2.default)("TemplateLiteral", { visitor: ["quasis", "expressions"], aliases: ["Expression", "Literal"], fields: { quasis: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("TemplateElement"))) }, expressions: { validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Expression"))) } } }); (0, _index2.default)("YieldExpression", { builder: ["argument", "delegate"], visitor: ["argument"], aliases: ["Expression", "Terminatorless"], fields: { delegate: { validate: (0, _index.assertValueType)("boolean"), default: false }, argument: { optional: true, validate: (0, _index.assertNodeType)("Expression") } } });