astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
56 lines (46 loc) • 5.82 kB
JavaScript
import * as t from '@babel/types'
import convertToIdentifierPair from './convertToIdentifierPair.mjs'
import convertToIdentifier from './Identifier.mjs'
export default function convertImportSpecifierReplacement() {
const convert = (node) => {
switch (node.type) {
case 'ImportDefaultSpecifier':
case 'ImportNamespaceSpecifier':
case 'ImportSpecifier':
return node
case 'ObjectExpression':
case 'ObjectPattern':
case 'ObjectTypeAnnotation':
case 'TSTypeLiteral': {
const result = []
for (const prop of node.type === 'TSTypeLiteral'
? node.members
: node.properties) {
const keyValue = convertToIdentifierPair(prop)
if (keyValue) {
const [key, value] = keyValue
result.push(
key.name === 'default'
? t.importDefaultSpecifier(value)
: t.importSpecifier(value, key)
)
}
}
return result
}
}
const identifier = convertToIdentifier(node)
if (identifier) {
return t.importDefaultSpecifier(identifier)
}
const keyValue = convertToIdentifierPair(node)
if (keyValue) {
const [key, value] = keyValue
return key.name === 'default'
? t.importDefaultSpecifier(value)
: t.importSpecifier(value, key)
}
return node
}
return convert
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0IiwiY29udmVydFRvSWRlbnRpZmllclBhaXIiLCJjb252ZXJ0VG9JZGVudGlmaWVyIiwiY29udmVydEltcG9ydFNwZWNpZmllclJlcGxhY2VtZW50IiwiY29udmVydCIsIm5vZGUiLCJ0eXBlIiwicmVzdWx0IiwicHJvcCIsIm1lbWJlcnMiLCJwcm9wZXJ0aWVzIiwia2V5VmFsdWUiLCJrZXkiLCJ2YWx1ZSIsInB1c2giLCJuYW1lIiwiaW1wb3J0RGVmYXVsdFNwZWNpZmllciIsImltcG9ydFNwZWNpZmllciIsImlkZW50aWZpZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udmVydFJlcGxhY2VtZW50L2NvbnZlcnRJbXBvcnRTcGVjaWZpZXJSZXBsYWNlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgKiBhcyB0IGZyb20gJ0BiYWJlbC90eXBlcydcbmltcG9ydCB7IFJlcGxhY2VtZW50Q29udmVydGVyIH0gZnJvbSAnLi8nXG5pbXBvcnQgY29udmVydFRvSWRlbnRpZmllclBhaXIgZnJvbSAnLi9jb252ZXJ0VG9JZGVudGlmaWVyUGFpcidcbmltcG9ydCBjb252ZXJ0VG9JZGVudGlmaWVyIGZyb20gJy4vSWRlbnRpZmllcidcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udmVydEltcG9ydFNwZWNpZmllclJlcGxhY2VtZW50KCk6IFJlcGxhY2VtZW50Q29udmVydGVyIHtcbiAgY29uc3QgY29udmVydCA9IChub2RlOiBOb2RlKTogTm9kZSB8IE5vZGVbXSA9PiB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInOlxuICAgICAgY2FzZSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgIGNhc2UgJ0ltcG9ydFNwZWNpZmllcic6XG4gICAgICAgIHJldHVybiBub2RlXG4gICAgICBjYXNlICdPYmplY3RFeHByZXNzaW9uJzpcbiAgICAgIGNhc2UgJ09iamVjdFBhdHRlcm4nOlxuICAgICAgY2FzZSAnT2JqZWN0VHlwZUFubm90YXRpb24nOlxuICAgICAgY2FzZSAnVFNUeXBlTGl0ZXJhbCc6IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBOb2RlW10gPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2Ygbm9kZS50eXBlID09PSAnVFNUeXBlTGl0ZXJhbCdcbiAgICAgICAgICA/IG5vZGUubWVtYmVyc1xuICAgICAgICAgIDogbm9kZS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgY29uc3Qga2V5VmFsdWUgPSBjb252ZXJ0VG9JZGVudGlmaWVyUGFpcihwcm9wKVxuICAgICAgICAgIGlmIChrZXlWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0ga2V5VmFsdWVcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgICBrZXkubmFtZSA9PT0gJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgPyB0LmltcG9ydERlZmF1bHRTcGVjaWZpZXIodmFsdWUgYXMgdC5JZGVudGlmaWVyKVxuICAgICAgICAgICAgICAgIDogdC5pbXBvcnRTcGVjaWZpZXIodmFsdWUgYXMgdC5JZGVudGlmaWVyLCBrZXkgYXMgdC5JZGVudGlmaWVyKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBjb252ZXJ0VG9JZGVudGlmaWVyKG5vZGUpXG4gICAgaWYgKGlkZW50aWZpZXIpIHtcbiAgICAgIHJldHVybiB0LmltcG9ydERlZmF1bHRTcGVjaWZpZXIoaWRlbnRpZmllciBhcyB0LklkZW50aWZpZXIpXG4gICAgfVxuICAgIGNvbnN0IGtleVZhbHVlID0gY29udmVydFRvSWRlbnRpZmllclBhaXIobm9kZSlcbiAgICBpZiAoa2V5VmFsdWUpIHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGtleVZhbHVlXG4gICAgICByZXR1cm4ga2V5Lm5hbWUgPT09ICdkZWZhdWx0J1xuICAgICAgICA/IHQuaW1wb3J0RGVmYXVsdFNwZWNpZmllcih2YWx1ZSBhcyB0LklkZW50aWZpZXIpXG4gICAgICAgIDogdC5pbXBvcnRTcGVjaWZpZXIodmFsdWUgYXMgdC5JZGVudGlmaWVyLCBrZXkgYXMgdC5JZGVudGlmaWVyKVxuICAgIH1cbiAgICByZXR1cm4gbm9kZVxuICB9XG4gIHJldHVybiBjb252ZXJ0XG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEtBQUtBLENBQVosTUFBbUIsY0FBbkI7O0FBRUEsT0FBT0MsdUJBQVAsTUFBb0MsMkJBQXBDO0FBQ0EsT0FBT0MsbUJBQVAsTUFBZ0MsY0FBaEM7O0FBRUEsZUFBZSxTQUFTQyxpQ0FBVCxHQUFtRTtFQUNoRixNQUFNQyxPQUFPLEdBQUcsQ0FBQ0MsSUFBRCxLQUErQjtJQUM3QyxRQUFRQSxJQUFJLENBQUNDLElBQWI7TUFDRSxLQUFLLHdCQUFMO01BQ0EsS0FBSywwQkFBTDtNQUNBLEtBQUssaUJBQUw7UUFDRSxPQUFPRCxJQUFQO01BQ0YsS0FBSyxrQkFBTDtNQUNBLEtBQUssZUFBTDtNQUNBLEtBQUssc0JBQUw7TUFDQSxLQUFLLGVBQUwsQ0FBc0I7VUFDcEIsTUFBTUUsTUFBYyxHQUFHLEVBQXZCO1VBQ0EsS0FBSyxNQUFNQyxJQUFYLElBQW1CSCxJQUFJLENBQUNDLElBQUwsS0FBYyxlQUFkO1VBQ2ZELElBQUksQ0FBQ0ksT0FEVTtVQUVmSixJQUFJLENBQUNLLFVBRlQsRUFFcUI7WUFDbkIsTUFBTUMsUUFBUSxHQUFHVix1QkFBdUIsQ0FBQ08sSUFBRCxDQUF4QztZQUNBLElBQUlHLFFBQUosRUFBYztjQUNaLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLElBQWVGLFFBQXJCO2NBQ0FKLE1BQU0sQ0FBQ08sSUFBUDtjQUNFRixHQUFHLENBQUNHLElBQUosS0FBYSxTQUFiO2NBQ0lmLENBQUMsQ0FBQ2dCLHNCQUFGLENBQXlCSCxLQUF6QixDQURKO2NBRUliLENBQUMsQ0FBQ2lCLGVBQUYsQ0FBa0JKLEtBQWxCLEVBQXlDRCxHQUF6QyxDQUhOOztZQUtEO1VBQ0Y7VUFDRCxPQUFPTCxNQUFQO1FBQ0QsQ0F4Qkg7O0lBMEJBLE1BQU1XLFVBQVUsR0FBR2hCLG1CQUFtQixDQUFDRyxJQUFELENBQXRDO0lBQ0EsSUFBSWEsVUFBSixFQUFnQjtNQUNkLE9BQU9sQixDQUFDLENBQUNnQixzQkFBRixDQUF5QkUsVUFBekIsQ0FBUDtJQUNEO0lBQ0QsTUFBTVAsUUFBUSxHQUFHVix1QkFBdUIsQ0FBQ0ksSUFBRCxDQUF4QztJQUNBLElBQUlNLFFBQUosRUFBYztNQUNaLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLElBQWVGLFFBQXJCO01BQ0EsT0FBT0MsR0FBRyxDQUFDRyxJQUFKLEtBQWEsU0FBYjtNQUNIZixDQUFDLENBQUNnQixzQkFBRixDQUF5QkgsS0FBekIsQ0FERztNQUVIYixDQUFDLENBQUNpQixlQUFGLENBQWtCSixLQUFsQixFQUF5Q0QsR0FBekMsQ0FGSjtJQUdEO0lBQ0QsT0FBT1AsSUFBUDtFQUNELENBdkNEO0VBd0NBLE9BQU9ELE9BQVA7QUFDRCJ9