UNPKG

astx

Version:

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

56 lines (46 loc) 5.82 kB
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