| const KEYS = { |
| AssignmentExpression: [ |
| "left", |
| "right" |
| ], |
| AssignmentPattern: [ |
| "left", |
| "right" |
| ], |
| ArrayExpression: [ |
| "elements" |
| ], |
| ArrayPattern: [ |
| "elements" |
| ], |
| ArrowFunctionExpression: [ |
| "params", |
| "body" |
| ], |
| AwaitExpression: [ |
| "argument" |
| ], |
| BlockStatement: [ |
| "body" |
| ], |
| BinaryExpression: [ |
| "left", |
| "right" |
| ], |
| BreakStatement: [ |
| "label" |
| ], |
| CallExpression: [ |
| "callee", |
| "arguments" |
| ], |
| CatchClause: [ |
| "param", |
| "body" |
| ], |
| ChainExpression: [ |
| "expression" |
| ], |
| ClassBody: [ |
| "body" |
| ], |
| ClassDeclaration: [ |
| "id", |
| "superClass", |
| "body" |
| ], |
| ClassExpression: [ |
| "id", |
| "superClass", |
| "body" |
| ], |
| ConditionalExpression: [ |
| "test", |
| "consequent", |
| "alternate" |
| ], |
| ContinueStatement: [ |
| "label" |
| ], |
| DebuggerStatement: [], |
| DoWhileStatement: [ |
| "body", |
| "test" |
| ], |
| EmptyStatement: [], |
| ExportAllDeclaration: [ |
| "exported", |
| "source" |
| ], |
| ExportDefaultDeclaration: [ |
| "declaration" |
| ], |
| ExportNamedDeclaration: [ |
| "declaration", |
| "specifiers", |
| "source" |
| ], |
| ExportSpecifier: [ |
| "exported", |
| "local" |
| ], |
| ExpressionStatement: [ |
| "expression" |
| ], |
| ExperimentalRestProperty: [ |
| "argument" |
| ], |
| ExperimentalSpreadProperty: [ |
| "argument" |
| ], |
| ForStatement: [ |
| "init", |
| "test", |
| "update", |
| "body" |
| ], |
| ForInStatement: [ |
| "left", |
| "right", |
| "body" |
| ], |
| ForOfStatement: [ |
| "left", |
| "right", |
| "body" |
| ], |
| FunctionDeclaration: [ |
| "id", |
| "params", |
| "body" |
| ], |
| FunctionExpression: [ |
| "id", |
| "params", |
| "body" |
| ], |
| Identifier: [], |
| IfStatement: [ |
| "test", |
| "consequent", |
| "alternate" |
| ], |
| ImportDeclaration: [ |
| "specifiers", |
| "source" |
| ], |
| ImportDefaultSpecifier: [ |
| "local" |
| ], |
| ImportExpression: [ |
| "source" |
| ], |
| ImportNamespaceSpecifier: [ |
| "local" |
| ], |
| ImportSpecifier: [ |
| "imported", |
| "local" |
| ], |
| JSXAttribute: [ |
| "name", |
| "value" |
| ], |
| JSXClosingElement: [ |
| "name" |
| ], |
| JSXElement: [ |
| "openingElement", |
| "children", |
| "closingElement" |
| ], |
| JSXEmptyExpression: [], |
| JSXExpressionContainer: [ |
| "expression" |
| ], |
| JSXIdentifier: [], |
| JSXMemberExpression: [ |
| "object", |
| "property" |
| ], |
| JSXNamespacedName: [ |
| "namespace", |
| "name" |
| ], |
| JSXOpeningElement: [ |
| "name", |
| "attributes" |
| ], |
| JSXSpreadAttribute: [ |
| "argument" |
| ], |
| JSXText: [], |
| JSXFragment: [ |
| "openingFragment", |
| "children", |
| "closingFragment" |
| ], |
| JSXClosingFragment: [], |
| JSXOpeningFragment: [], |
| Literal: [], |
| LabeledStatement: [ |
| "label", |
| "body" |
| ], |
| LogicalExpression: [ |
| "left", |
| "right" |
| ], |
| MemberExpression: [ |
| "object", |
| "property" |
| ], |
| MetaProperty: [ |
| "meta", |
| "property" |
| ], |
| MethodDefinition: [ |
| "key", |
| "value" |
| ], |
| NewExpression: [ |
| "callee", |
| "arguments" |
| ], |
| ObjectExpression: [ |
| "properties" |
| ], |
| ObjectPattern: [ |
| "properties" |
| ], |
| PrivateIdentifier: [], |
| Program: [ |
| "body" |
| ], |
| Property: [ |
| "key", |
| "value" |
| ], |
| PropertyDefinition: [ |
| "key", |
| "value" |
| ], |
| RestElement: [ |
| "argument" |
| ], |
| ReturnStatement: [ |
| "argument" |
| ], |
| SequenceExpression: [ |
| "expressions" |
| ], |
| SpreadElement: [ |
| "argument" |
| ], |
| StaticBlock: [ |
| "body" |
| ], |
| Super: [], |
| SwitchStatement: [ |
| "discriminant", |
| "cases" |
| ], |
| SwitchCase: [ |
| "test", |
| "consequent" |
| ], |
| TaggedTemplateExpression: [ |
| "tag", |
| "quasi" |
| ], |
| TemplateElement: [], |
| TemplateLiteral: [ |
| "quasis", |
| "expressions" |
| ], |
| ThisExpression: [], |
| ThrowStatement: [ |
| "argument" |
| ], |
| TryStatement: [ |
| "block", |
| "handler", |
| "finalizer" |
| ], |
| UnaryExpression: [ |
| "argument" |
| ], |
| UpdateExpression: [ |
| "argument" |
| ], |
| VariableDeclaration: [ |
| "declarations" |
| ], |
| VariableDeclarator: [ |
| "id", |
| "init" |
| ], |
| WhileStatement: [ |
| "test", |
| "body" |
| ], |
| WithStatement: [ |
| "object", |
| "body" |
| ], |
| YieldExpression: [ |
| "argument" |
| ] |
| }; |
| |
| // Types. |
| const NODE_TYPES = Object.keys(KEYS); |
| |
| // Freeze the keys. |
| for (const type of NODE_TYPES) { |
| Object.freeze(KEYS[type]); |
| } |
| Object.freeze(KEYS); |
| |
| export default KEYS; |