ast-info.cjs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. const ESLINT_VISITOR_KEYS = require("eslint-visitor-keys").KEYS;
  2. const babel = require("./babel-core.cjs");
  3. let visitorKeys;
  4. exports.getVisitorKeys = function getVisitorKeys() {
  5. if (!visitorKeys) {
  6. const newTypes = {
  7. ChainExpression: ESLINT_VISITOR_KEYS.ChainExpression,
  8. ImportExpression: ESLINT_VISITOR_KEYS.ImportExpression,
  9. Literal: ESLINT_VISITOR_KEYS.Literal,
  10. MethodDefinition: ["decorators"].concat(ESLINT_VISITOR_KEYS.MethodDefinition),
  11. Property: ["decorators"].concat(ESLINT_VISITOR_KEYS.Property),
  12. PropertyDefinition: ["decorators", "typeAnnotation"].concat(ESLINT_VISITOR_KEYS.PropertyDefinition)
  13. };
  14. const conflictTypes = {
  15. ClassPrivateMethod: ["decorators"].concat(ESLINT_VISITOR_KEYS.MethodDefinition),
  16. ExportAllDeclaration: ESLINT_VISITOR_KEYS.ExportAllDeclaration
  17. };
  18. visitorKeys = Object.assign({}, newTypes, babel.types.VISITOR_KEYS, conflictTypes);
  19. }
  20. return visitorKeys;
  21. };
  22. let tokLabels;
  23. exports.getTokLabels = function getTokLabels() {
  24. return tokLabels || (tokLabels = (p => p.reduce((o, [k, v]) => Object.assign({}, o, {
  25. [k]: v
  26. }), {}))(Object.entries(babel.tokTypes).map(([key, tok]) => [key, tok.label])));
  27. };