astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
37 lines (32 loc) • 4.72 kB
JavaScript
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