UNPKG

astx

Version:

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

37 lines (32 loc) 4.72 kB
import compilePlaceholderReplacement from './Placeholder.mjs' import compileGenericNodeReplacement from './GenericNodeReplacement.mjs' import { unescapeIdentifier } from './Placeholder.mjs' export default function compileIdentifierReplacement(path, compileOptions) { const pattern = path.value const typeAnnotation = path.get('typeAnnotation') const placeholderReplacement = compilePlaceholderReplacement( path, pattern.name, compileOptions ) if (placeholderReplacement) { if (typeAnnotation.value != null) { const typeAnnotationReplacement = compileGenericNodeReplacement( typeAnnotation, compileOptions ) return { ...placeholderReplacement, generate: (match) => { const generated = placeholderReplacement.generate(match) if (!Array.isArray(generated)) { generated.typeAnnotation = typeAnnotationReplacement.generate(match) } return generated }, } } return placeholderReplacement } pattern.name = unescapeIdentifier(pattern.name) } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlUGxhY2Vob2xkZXJSZXBsYWNlbWVudCIsImNvbXBpbGVHZW5lcmljTm9kZVJlcGxhY2VtZW50IiwidW5lc2NhcGVJZGVudGlmaWVyIiwiY29tcGlsZUlkZW50aWZpZXJSZXBsYWNlbWVudCIsInBhdGgiLCJjb21waWxlT3B0aW9ucyIsInBhdHRlcm4iLCJ2YWx1ZSIsInR5cGVBbm5vdGF0aW9uIiwiZ2V0IiwicGxhY2Vob2xkZXJSZXBsYWNlbWVudCIsIm5hbWUiLCJ0eXBlQW5ub3RhdGlvblJlcGxhY2VtZW50IiwiZ2VuZXJhdGUiLCJtYXRjaCIsImdlbmVyYXRlZCIsIkFycmF5IiwiaXNBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlUmVwbGFjZW1lbnQvSWRlbnRpZmllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlLCBJZGVudGlmaWVyLCBOb2RlUGF0aCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHtcbiAgQ29tcGlsZWRSZXBsYWNlbWVudCxcbiAgQ29tcGlsZVJlcGxhY2VtZW50T3B0aW9ucyxcbiAgUmVwbGFjZWFibGVNYXRjaCxcbn0gZnJvbSAnLi8nXG5pbXBvcnQgY29tcGlsZVBsYWNlaG9sZGVyUmVwbGFjZW1lbnQgZnJvbSAnLi9QbGFjZWhvbGRlcidcbmltcG9ydCBjb21waWxlR2VuZXJpY05vZGVSZXBsYWNlbWVudCBmcm9tICcuL0dlbmVyaWNOb2RlUmVwbGFjZW1lbnQnXG5pbXBvcnQgeyB1bmVzY2FwZUlkZW50aWZpZXIgfSBmcm9tICcuL1BsYWNlaG9sZGVyJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21waWxlSWRlbnRpZmllclJlcGxhY2VtZW50KFxuICBwYXRoOiBOb2RlUGF0aDxJZGVudGlmaWVyLCBJZGVudGlmaWVyPixcbiAgY29tcGlsZU9wdGlvbnM6IENvbXBpbGVSZXBsYWNlbWVudE9wdGlvbnNcbik6IENvbXBpbGVkUmVwbGFjZW1lbnQgfCB2b2lkIHtcbiAgY29uc3QgcGF0dGVybiA9IHBhdGgudmFsdWVcblxuICBjb25zdCB0eXBlQW5ub3RhdGlvbiA9IHBhdGguZ2V0KCd0eXBlQW5ub3RhdGlvbicpXG5cbiAgY29uc3QgcGxhY2Vob2xkZXJSZXBsYWNlbWVudCA9IGNvbXBpbGVQbGFjZWhvbGRlclJlcGxhY2VtZW50KFxuICAgIHBhdGgsXG4gICAgcGF0dGVybi5uYW1lLFxuICAgIGNvbXBpbGVPcHRpb25zXG4gIClcbiAgaWYgKHBsYWNlaG9sZGVyUmVwbGFjZW1lbnQpIHtcbiAgICBpZiAodHlwZUFubm90YXRpb24udmFsdWUgIT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZUFubm90YXRpb25SZXBsYWNlbWVudCA9IGNvbXBpbGVHZW5lcmljTm9kZVJlcGxhY2VtZW50KFxuICAgICAgICB0eXBlQW5ub3RhdGlvbixcbiAgICAgICAgY29tcGlsZU9wdGlvbnNcbiAgICAgIClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnBsYWNlaG9sZGVyUmVwbGFjZW1lbnQsXG4gICAgICAgIGdlbmVyYXRlOiAobWF0Y2g6IFJlcGxhY2VhYmxlTWF0Y2gpOiBOb2RlIHwgTm9kZVtdID0+IHtcbiAgICAgICAgICBjb25zdCBnZW5lcmF0ZWQgPSBwbGFjZWhvbGRlclJlcGxhY2VtZW50LmdlbmVyYXRlKG1hdGNoKVxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShnZW5lcmF0ZWQpKSB7XG4gICAgICAgICAgICA7KGdlbmVyYXRlZCBhcyBhbnkpLnR5cGVBbm5vdGF0aW9uID1cbiAgICAgICAgICAgICAgdHlwZUFubm90YXRpb25SZXBsYWNlbWVudC5nZW5lcmF0ZShtYXRjaClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGxhY2Vob2xkZXJSZXBsYWNlbWVudFxuICB9XG4gIHBhdHRlcm4ubmFtZSA9IHVuZXNjYXBlSWRlbnRpZmllcihwYXR0ZXJuLm5hbWUpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQU1BLE9BQU9BLDZCQUFQLE1BQTBDLGVBQTFDO0FBQ0EsT0FBT0MsNkJBQVAsTUFBMEMsMEJBQTFDO0FBQ0EsU0FBU0Msa0JBQVQsUUFBbUMsZUFBbkM7O0FBRUEsZUFBZSxTQUFTQyw0QkFBVDtBQUNiQyxJQURhO0FBRWJDLGNBRmE7QUFHZTtFQUM1QixNQUFNQyxPQUFPLEdBQUdGLElBQUksQ0FBQ0csS0FBckI7O0VBRUEsTUFBTUMsY0FBYyxHQUFHSixJQUFJLENBQUNLLEdBQUwsQ0FBUyxnQkFBVCxDQUF2Qjs7RUFFQSxNQUFNQyxzQkFBc0IsR0FBR1YsNkJBQTZCO0VBQzFESSxJQUQwRDtFQUUxREUsT0FBTyxDQUFDSyxJQUZrRDtFQUcxRE4sY0FIMEQsQ0FBNUQ7O0VBS0EsSUFBSUssc0JBQUosRUFBNEI7SUFDMUIsSUFBSUYsY0FBYyxDQUFDRCxLQUFmLElBQXdCLElBQTVCLEVBQWtDO01BQ2hDLE1BQU1LLHlCQUF5QixHQUFHWCw2QkFBNkI7TUFDN0RPLGNBRDZEO01BRTdESCxjQUY2RCxDQUEvRDs7TUFJQSxPQUFPO1FBQ0wsR0FBR0ssc0JBREU7UUFFTEcsUUFBUSxFQUFFLENBQUNDLEtBQUQsS0FBNEM7VUFDcEQsTUFBTUMsU0FBUyxHQUFHTCxzQkFBc0IsQ0FBQ0csUUFBdkIsQ0FBZ0NDLEtBQWhDLENBQWxCO1VBQ0EsSUFBSSxDQUFDRSxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsU0FBZCxDQUFMLEVBQStCO1lBQzdCLENBQUVBLFNBQUQsQ0FBbUJQLGNBQW5CO1lBQ0NJLHlCQUF5QixDQUFDQyxRQUExQixDQUFtQ0MsS0FBbkMsQ0FERDtVQUVGO1VBQ0QsT0FBT0MsU0FBUDtRQUNELENBVEksRUFBUDs7SUFXRDtJQUNELE9BQU9MLHNCQUFQO0VBQ0Q7RUFDREosT0FBTyxDQUFDSyxJQUFSLEdBQWVULGtCQUFrQixDQUFDSSxPQUFPLENBQUNLLElBQVQsQ0FBakM7QUFDRCJ9