{"version":3,"file":"eslint-visitor-keys.cjs","sources":["../lib/visitor-keys.js","../lib/index.js"],"sourcesContent":["/**\n * @typedef {import('./index.js').VisitorKeys} VisitorKeys\n */\n\n/**\n * @type {VisitorKeys}\n */\nconst KEYS = {\n AssignmentExpression: [\n \"left\",\n \"right\"\n ],\n AssignmentPattern: [\n \"left\",\n \"right\"\n ],\n ArrayExpression: [\n \"elements\"\n ],\n ArrayPattern: [\n \"elements\"\n ],\n ArrowFunctionExpression: [\n \"params\",\n \"body\"\n ],\n AwaitExpression: [\n \"argument\"\n ],\n BlockStatement: [\n \"body\"\n ],\n BinaryExpression: [\n \"left\",\n \"right\"\n ],\n BreakStatement: [\n \"label\"\n ],\n CallExpression: [\n \"callee\",\n \"arguments\"\n ],\n CatchClause: [\n \"param\",\n \"body\"\n ],\n ChainExpression: [\n \"expression\"\n ],\n ClassBody: [\n \"body\"\n ],\n ClassDeclaration: [\n \"id\",\n \"superClass\",\n \"body\"\n ],\n ClassExpression: [\n \"id\",\n \"superClass\",\n \"body\"\n ],\n ConditionalExpression: [\n \"test\",\n \"consequent\",\n \"alternate\"\n ],\n ContinueStatement: [\n \"label\"\n ],\n DebuggerStatement: [],\n DoWhileStatement: [\n \"body\",\n \"test\"\n ],\n EmptyStatement: [],\n ExportAllDeclaration: [\n \"exported\",\n \"source\"\n ],\n ExportDefaultDeclaration: [\n \"declaration\"\n ],\n ExportNamedDeclaration: [\n \"declaration\",\n \"specifiers\",\n \"source\"\n ],\n ExportSpecifier: [\n \"exported\",\n \"local\"\n ],\n ExpressionStatement: [\n \"expression\"\n ],\n ExperimentalRestProperty: [\n \"argument\"\n ],\n ExperimentalSpreadProperty: [\n \"argument\"\n ],\n ForStatement: [\n \"init\",\n \"test\",\n \"update\",\n \"body\"\n ],\n ForInStatement: [\n \"left\",\n \"right\",\n \"body\"\n ],\n ForOfStatement: [\n \"left\",\n \"right\",\n \"body\"\n ],\n FunctionDeclaration: [\n \"id\",\n \"params\",\n \"body\"\n ],\n FunctionExpression: [\n \"id\",\n \"params\",\n \"body\"\n ],\n Identifier: [],\n IfStatement: [\n \"test\",\n \"consequent\",\n \"alternate\"\n ],\n ImportDeclaration: [\n \"specifiers\",\n \"source\"\n ],\n ImportDefaultSpecifier: [\n \"local\"\n ],\n ImportExpression: [\n \"source\"\n ],\n ImportNamespaceSpecifier: [\n \"local\"\n ],\n ImportSpecifier: [\n \"imported\",\n \"local\"\n ],\n JSXAttribute: [\n \"name\",\n \"value\"\n ],\n JSXClosingElement: [\n \"name\"\n ],\n JSXElement: [\n \"openingElement\",\n \"children\",\n \"closingElement\"\n ],\n JSXEmptyExpression: [],\n JSXExpressionContainer: [\n \"expression\"\n ],\n JSXIdentifier: [],\n JSXMemberExpression: [\n \"object\",\n \"property\"\n ],\n JSXNamespacedName: [\n \"namespace\",\n \"name\"\n ],\n JSXOpeningElement: [\n \"name\",\n \"attributes\"\n ],\n JSXSpreadAttribute: [\n \"argument\"\n ],\n JSXText: [],\n JSXFragment: [\n \"openingFragment\",\n \"children\",\n \"closingFragment\"\n ],\n JSXClosingFragment: [],\n JSXOpeningFragment: [],\n Literal: [],\n LabeledStatement: [\n \"label\",\n \"body\"\n ],\n LogicalExpression: [\n \"left\",\n \"right\"\n ],\n MemberExpression: [\n \"object\",\n \"property\"\n ],\n MetaProperty: [\n \"meta\",\n \"property\"\n ],\n MethodDefinition: [\n \"key\",\n \"value\"\n ],\n NewExpression: [\n \"callee\",\n \"arguments\"\n ],\n ObjectExpression: [\n \"properties\"\n ],\n ObjectPattern: [\n \"properties\"\n ],\n PrivateIdentifier: [],\n Program: [\n \"body\"\n ],\n Property: [\n \"key\",\n \"value\"\n ],\n PropertyDefinition: [\n \"key\",\n \"value\"\n ],\n RestElement: [\n \"argument\"\n ],\n ReturnStatement: [\n \"argument\"\n ],\n SequenceExpression: [\n \"expressions\"\n ],\n SpreadElement: [\n \"argument\"\n ],\n StaticBlock: [\n \"body\"\n ],\n Super: [],\n SwitchStatement: [\n \"discriminant\",\n \"cases\"\n ],\n SwitchCase: [\n \"test\",\n \"consequent\"\n ],\n TaggedTemplateExpression: [\n \"tag\",\n \"quasi\"\n ],\n TemplateElement: [],\n TemplateLiteral: [\n \"quasis\",\n \"expressions\"\n ],\n ThisExpression: [],\n ThrowStatement: [\n \"argument\"\n ],\n TryStatement: [\n \"block\",\n \"handler\",\n \"finalizer\"\n ],\n UnaryExpression: [\n \"argument\"\n ],\n UpdateExpression: [\n \"argument\"\n ],\n VariableDeclaration: [\n \"declarations\"\n ],\n VariableDeclarator: [\n \"id\",\n \"init\"\n ],\n WhileStatement: [\n \"test\",\n \"body\"\n ],\n WithStatement: [\n \"object\",\n \"body\"\n ],\n YieldExpression: [\n \"argument\"\n ]\n};\n\n// Types.\nconst NODE_TYPES = Object.keys(KEYS);\n\n// Freeze the keys.\nfor (const type of NODE_TYPES) {\n Object.freeze(KEYS[type]);\n}\nObject.freeze(KEYS);\n\nexport default KEYS;\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\nimport KEYS from \"./visitor-keys.js\";\n\n/**\n * @typedef {{ readonly [type: string]: ReadonlyArray<string> }} VisitorKeys\n */\n\n// List to ignore keys.\nconst KEY_BLACKLIST = new Set([\n \"parent\",\n \"leadingComments\",\n \"trailingComments\"\n]);\n\n/**\n * Check whether a given key should be used or not.\n * @param {string} key The key to check.\n * @returns {boolean} `true` if the key should be used.\n */\nfunction filterKey(key) {\n return !KEY_BLACKLIST.has(key) && key[0] !== \"_\";\n}\n\n/**\n * Get visitor keys of a given node.\n * @param {object} node The AST node to get keys.\n * @returns {readonly string[]} Visitor keys of the node.\n */\nexport function getKeys(node) {\n return Object.keys(node).filter(filterKey);\n}\n\n// Disable valid-jsdoc rule because it reports syntax error on the type of @returns.\n// eslint-disable-next-line valid-jsdoc\n/**\n * Make the union set with `KEYS` and given keys.\n * @param {VisitorKeys} additionalKeys The additional keys.\n * @returns {VisitorKeys} The union set.\n */\nexport function unionWith(additionalKeys) {\n const retv = /** @type {{\n [type: string]: ReadonlyArray<string>\n }} */ (Object.assign({}, KEYS));\n\n for (const type of Object.keys(additionalKeys)) {\n if (Object.prototype.hasOwnProperty.call(retv, type)) {\n const keys = new Set(additionalKeys[type]);\n\n for (const key of retv[type]) {\n keys.add(key);\n }\n\n retv[type] = Object.freeze(Array.from(keys));\n } else {\n retv[type] = Object.freeze(Array.from(additionalKeys[type]));\n }\n }\n\n return Object.freeze(retv);\n}\n\nexport { KEYS };\n"],"names":[],"mappings":"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"} |