UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

36 lines (34 loc) 4.37 kB
import { pathIs } from '../types.mjs' import compilePlaceholderMatcher from './Placeholder.mjs' import compileSpecialMatcher from './SpecialMatcher.mjs' export default function compileGenericTypeAnnotationMatcher( path, compileOptions ) { const { id, typeParameters } = path.value const n = compileOptions.backend.t.namedTypes if (n.Identifier.check(id)) { if (typeParameters == null) { const placeholderMatcher = compilePlaceholderMatcher( path, id.name, compileOptions, { nodeType: 'FlowType', } ) if (placeholderMatcher) return placeholderMatcher } else { const typeParametersPath = path.get('typeParameters') if (pathIs(typeParametersPath, n.TypeParameterInstantiation)) { const special = compileSpecialMatcher( path, id.name, typeParametersPath.get('params'), compileOptions ) if (special) return special } } } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoSXMiLCJjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyIiwiY29tcGlsZVNwZWNpYWxNYXRjaGVyIiwiY29tcGlsZUdlbmVyaWNUeXBlQW5ub3RhdGlvbk1hdGNoZXIiLCJwYXRoIiwiY29tcGlsZU9wdGlvbnMiLCJpZCIsInR5cGVQYXJhbWV0ZXJzIiwidmFsdWUiLCJuIiwiYmFja2VuZCIsInQiLCJuYW1lZFR5cGVzIiwiSWRlbnRpZmllciIsImNoZWNrIiwicGxhY2Vob2xkZXJNYXRjaGVyIiwibmFtZSIsIm5vZGVUeXBlIiwidHlwZVBhcmFtZXRlcnNQYXRoIiwiZ2V0IiwiVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24iLCJzcGVjaWFsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBpbGVNYXRjaGVyL0dlbmVyaWNUeXBlQW5ub3RhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljVHlwZUFubm90YXRpb24sIE5vZGVQYXRoLCBwYXRoSXMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IENvbXBpbGVkTWF0Y2hlciwgQ29tcGlsZU9wdGlvbnMgfSBmcm9tICcuJ1xuaW1wb3J0IGNvbXBpbGVQbGFjZWhvbGRlck1hdGNoZXIgZnJvbSAnLi9QbGFjZWhvbGRlcidcbmltcG9ydCBjb21waWxlU3BlY2lhbE1hdGNoZXIgZnJvbSAnLi9TcGVjaWFsTWF0Y2hlcidcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcGlsZUdlbmVyaWNUeXBlQW5ub3RhdGlvbk1hdGNoZXIoXG4gIHBhdGg6IE5vZGVQYXRoPEdlbmVyaWNUeXBlQW5ub3RhdGlvbiwgR2VuZXJpY1R5cGVBbm5vdGF0aW9uPixcbiAgY29tcGlsZU9wdGlvbnM6IENvbXBpbGVPcHRpb25zXG4pOiBDb21waWxlZE1hdGNoZXIgfCB2b2lkIHtcbiAgY29uc3QgeyBpZCwgdHlwZVBhcmFtZXRlcnMgfTogR2VuZXJpY1R5cGVBbm5vdGF0aW9uID0gcGF0aC52YWx1ZVxuICBjb25zdCBuID0gY29tcGlsZU9wdGlvbnMuYmFja2VuZC50Lm5hbWVkVHlwZXNcblxuICBpZiAobi5JZGVudGlmaWVyLmNoZWNrKGlkKSkge1xuICAgIGlmICh0eXBlUGFyYW1ldGVycyA9PSBudWxsKSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlck1hdGNoZXIgPSBjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyKFxuICAgICAgICBwYXRoLFxuICAgICAgICBpZC5uYW1lLFxuICAgICAgICBjb21waWxlT3B0aW9ucyxcbiAgICAgICAgeyBub2RlVHlwZTogJ0Zsb3dUeXBlJyB9XG4gICAgICApXG5cbiAgICAgIGlmIChwbGFjZWhvbGRlck1hdGNoZXIpIHJldHVybiBwbGFjZWhvbGRlck1hdGNoZXJcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnNQYXRoID0gcGF0aC5nZXQoJ3R5cGVQYXJhbWV0ZXJzJylcbiAgICAgIGlmIChwYXRoSXModHlwZVBhcmFtZXRlcnNQYXRoLCBuLlR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uKSkge1xuICAgICAgICBjb25zdCBzcGVjaWFsID0gY29tcGlsZVNwZWNpYWxNYXRjaGVyKFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgaWQubmFtZSxcbiAgICAgICAgICB0eXBlUGFyYW1ldGVyc1BhdGguZ2V0KCdwYXJhbXMnKSxcbiAgICAgICAgICBjb21waWxlT3B0aW9uc1xuICAgICAgICApXG5cbiAgICAgICAgaWYgKHNwZWNpYWwpIHJldHVybiBzcGVjaWFsXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQTBDQSxNQUExQyxRQUF3RCxVQUF4RDs7QUFFQSxPQUFPQyx5QkFBUCxNQUFzQyxlQUF0QztBQUNBLE9BQU9DLHFCQUFQLE1BQWtDLGtCQUFsQzs7QUFFQSxlQUFlLFNBQVNDLG1DQUFUO0FBQ2JDLElBRGE7QUFFYkMsY0FGYTtBQUdXO0VBQ3hCLE1BQU0sRUFBRUMsRUFBRixFQUFNQyxjQUFOLEtBQWdESCxJQUFJLENBQUNJLEtBQTNEO0VBQ0EsTUFBTUMsQ0FBQyxHQUFHSixjQUFjLENBQUNLLE9BQWYsQ0FBdUJDLENBQXZCLENBQXlCQyxVQUFuQzs7RUFFQSxJQUFJSCxDQUFDLENBQUNJLFVBQUYsQ0FBYUMsS0FBYixDQUFtQlIsRUFBbkIsQ0FBSixFQUE0QjtJQUMxQixJQUFJQyxjQUFjLElBQUksSUFBdEIsRUFBNEI7TUFDMUIsTUFBTVEsa0JBQWtCLEdBQUdkLHlCQUF5QjtNQUNsREcsSUFEa0Q7TUFFbERFLEVBQUUsQ0FBQ1UsSUFGK0M7TUFHbERYLGNBSGtEO01BSWxELEVBQUVZLFFBQVEsRUFBRSxVQUFaLEVBSmtELENBQXBEOzs7TUFPQSxJQUFJRixrQkFBSixFQUF3QixPQUFPQSxrQkFBUDtJQUN6QixDQVRELE1BU087TUFDTCxNQUFNRyxrQkFBa0IsR0FBR2QsSUFBSSxDQUFDZSxHQUFMLENBQVMsZ0JBQVQsQ0FBM0I7TUFDQSxJQUFJbkIsTUFBTSxDQUFDa0Isa0JBQUQsRUFBcUJULENBQUMsQ0FBQ1csMEJBQXZCLENBQVYsRUFBOEQ7UUFDNUQsTUFBTUMsT0FBTyxHQUFHbkIscUJBQXFCO1FBQ25DRSxJQURtQztRQUVuQ0UsRUFBRSxDQUFDVSxJQUZnQztRQUduQ0Usa0JBQWtCLENBQUNDLEdBQW5CLENBQXVCLFFBQXZCLENBSG1DO1FBSW5DZCxjQUptQyxDQUFyQzs7O1FBT0EsSUFBSWdCLE9BQUosRUFBYSxPQUFPQSxPQUFQO01BQ2Q7SUFDRjtFQUNGO0FBQ0YifQ==