astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
47 lines (41 loc) • 5.85 kB
JavaScript
import * as t from '@babel/types'
import convertToJSXIdentifierName from './convertToIdentifierName.mjs'
import convertToExpression from './convertToExpression.mjs'
export default function convertToJSXIdentifierNameExpressionPair(node) {
switch (node.type) {
case 'ObjectProperty':
case 'ObjectTypeProperty':
case 'Property': {
const key = convertToJSXIdentifierName(node.key)
const value = convertToExpression(node.value)
if (key && value) return [key, value]
break
}
case 'TSPropertySignature': {
const key = convertToJSXIdentifierName(node.key)
const value = convertToExpression(node.typeAnnotation || node.key)
if (key && value) return [key, value]
break
}
case 'JSXAttribute': {
const key = convertToJSXIdentifierName(node.name)
const value = convertToExpression(node.value || node.name)
if (key && value) return [key, value]
break
}
case 'ImportSpecifier': {
const key =
node.imported.type === 'StringLiteral'
? node.imported.value
: node.imported.name
const value = node.local || node.imported
return [key, value]
}
case 'ImportDefaultSpecifier': {
const value = node.local || t.identifier('default')
return ['default', value]
}
}
const key = convertToJSXIdentifierName(node)
if (key) return [key, t.identifier(key)]
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0IiwiY29udmVydFRvSlNYSWRlbnRpZmllck5hbWUiLCJjb252ZXJ0VG9FeHByZXNzaW9uIiwiY29udmVydFRvSlNYSWRlbnRpZmllck5hbWVFeHByZXNzaW9uUGFpciIsIm5vZGUiLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJ0eXBlQW5ub3RhdGlvbiIsIm5hbWUiLCJpbXBvcnRlZCIsImxvY2FsIiwiaWRlbnRpZmllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0UmVwbGFjZW1lbnQvY29udmVydFRvSlNYSWRlbnRpZmllck5hbWVFeHByZXNzaW9uUGFpci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlLCBFeHByZXNzaW9uIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgKiBhcyB0IGZyb20gJ0BiYWJlbC90eXBlcydcbmltcG9ydCBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZSBmcm9tICcuL2NvbnZlcnRUb0lkZW50aWZpZXJOYW1lJ1xuaW1wb3J0IGNvbnZlcnRUb0V4cHJlc3Npb24gZnJvbSAnLi9jb252ZXJ0VG9FeHByZXNzaW9uJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZUV4cHJlc3Npb25QYWlyKFxuICBub2RlOiBOb2RlXG4pOiBbc3RyaW5nLCBFeHByZXNzaW9uXSB8IHZvaWQge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgJ09iamVjdFByb3BlcnR5JzpcbiAgICBjYXNlICdPYmplY3RUeXBlUHJvcGVydHknOlxuICAgIGNhc2UgJ1Byb3BlcnR5Jzoge1xuICAgICAgY29uc3Qga2V5ID0gY29udmVydFRvSlNYSWRlbnRpZmllck5hbWUobm9kZS5rZXkpXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnZlcnRUb0V4cHJlc3Npb24obm9kZS52YWx1ZSlcbiAgICAgIGlmIChrZXkgJiYgdmFsdWUpIHJldHVybiBba2V5LCB2YWx1ZV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgJ1RTUHJvcGVydHlTaWduYXR1cmUnOiB7XG4gICAgICBjb25zdCBrZXkgPSBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlLmtleSlcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFRvRXhwcmVzc2lvbihub2RlLnR5cGVBbm5vdGF0aW9uIHx8IG5vZGUua2V5KVxuICAgICAgaWYgKGtleSAmJiB2YWx1ZSkgcmV0dXJuIFtrZXksIHZhbHVlXVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAnSlNYQXR0cmlidXRlJzoge1xuICAgICAgY29uc3Qga2V5ID0gY29udmVydFRvSlNYSWRlbnRpZmllck5hbWUobm9kZS5uYW1lKVxuICAgICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0VG9FeHByZXNzaW9uKG5vZGUudmFsdWUgfHwgbm9kZS5uYW1lKVxuICAgICAgaWYgKGtleSAmJiB2YWx1ZSkgcmV0dXJuIFtrZXksIHZhbHVlXVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAnSW1wb3J0U3BlY2lmaWVyJzoge1xuICAgICAgY29uc3Qga2V5ID1cbiAgICAgICAgbm9kZS5pbXBvcnRlZC50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCdcbiAgICAgICAgICA/IG5vZGUuaW1wb3J0ZWQudmFsdWVcbiAgICAgICAgICA6IG5vZGUuaW1wb3J0ZWQubmFtZVxuICAgICAgY29uc3QgdmFsdWUgPSBub2RlLmxvY2FsIHx8IG5vZGUuaW1wb3J0ZWRcbiAgICAgIHJldHVybiBba2V5LCB2YWx1ZV1cbiAgICB9XG4gICAgY2FzZSAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcic6IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbm9kZS5sb2NhbCB8fCB0LmlkZW50aWZpZXIoJ2RlZmF1bHQnKVxuICAgICAgcmV0dXJuIFsnZGVmYXVsdCcsIHZhbHVlXVxuICAgIH1cbiAgfVxuICBjb25zdCBrZXkgPSBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlKVxuICBpZiAoa2V5KSByZXR1cm4gW2tleSwgdC5pZGVudGlmaWVyKGtleSldXG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEtBQUtBLENBQVosTUFBbUIsY0FBbkI7QUFDQSxPQUFPQywwQkFBUCxNQUF1QywyQkFBdkM7QUFDQSxPQUFPQyxtQkFBUCxNQUFnQyx1QkFBaEM7O0FBRUEsZUFBZSxTQUFTQyx3Q0FBVDtBQUNiQyxJQURhO0FBRWdCO0VBQzdCLFFBQVFBLElBQUksQ0FBQ0MsSUFBYjtJQUNFLEtBQUssZ0JBQUw7SUFDQSxLQUFLLG9CQUFMO0lBQ0EsS0FBSyxVQUFMLENBQWlCO1FBQ2YsTUFBTUMsR0FBRyxHQUFHTCwwQkFBMEIsQ0FBQ0csSUFBSSxDQUFDRSxHQUFOLENBQXRDO1FBQ0EsTUFBTUMsS0FBSyxHQUFHTCxtQkFBbUIsQ0FBQ0UsSUFBSSxDQUFDRyxLQUFOLENBQWpDO1FBQ0EsSUFBSUQsR0FBRyxJQUFJQyxLQUFYLEVBQWtCLE9BQU8sQ0FBQ0QsR0FBRCxFQUFNQyxLQUFOLENBQVA7UUFDbEI7TUFDRDtJQUNELEtBQUsscUJBQUwsQ0FBNEI7UUFDMUIsTUFBTUQsR0FBRyxHQUFHTCwwQkFBMEIsQ0FBQ0csSUFBSSxDQUFDRSxHQUFOLENBQXRDO1FBQ0EsTUFBTUMsS0FBSyxHQUFHTCxtQkFBbUIsQ0FBQ0UsSUFBSSxDQUFDSSxjQUFMLElBQXVCSixJQUFJLENBQUNFLEdBQTdCLENBQWpDO1FBQ0EsSUFBSUEsR0FBRyxJQUFJQyxLQUFYLEVBQWtCLE9BQU8sQ0FBQ0QsR0FBRCxFQUFNQyxLQUFOLENBQVA7UUFDbEI7TUFDRDtJQUNELEtBQUssY0FBTCxDQUFxQjtRQUNuQixNQUFNRCxHQUFHLEdBQUdMLDBCQUEwQixDQUFDRyxJQUFJLENBQUNLLElBQU4sQ0FBdEM7UUFDQSxNQUFNRixLQUFLLEdBQUdMLG1CQUFtQixDQUFDRSxJQUFJLENBQUNHLEtBQUwsSUFBY0gsSUFBSSxDQUFDSyxJQUFwQixDQUFqQztRQUNBLElBQUlILEdBQUcsSUFBSUMsS0FBWCxFQUFrQixPQUFPLENBQUNELEdBQUQsRUFBTUMsS0FBTixDQUFQO1FBQ2xCO01BQ0Q7SUFDRCxLQUFLLGlCQUFMLENBQXdCO1FBQ3RCLE1BQU1ELEdBQUc7UUFDUEYsSUFBSSxDQUFDTSxRQUFMLENBQWNMLElBQWQsS0FBdUIsZUFBdkI7UUFDSUQsSUFBSSxDQUFDTSxRQUFMLENBQWNILEtBRGxCO1FBRUlILElBQUksQ0FBQ00sUUFBTCxDQUFjRCxJQUhwQjtRQUlBLE1BQU1GLEtBQUssR0FBR0gsSUFBSSxDQUFDTyxLQUFMLElBQWNQLElBQUksQ0FBQ00sUUFBakM7UUFDQSxPQUFPLENBQUNKLEdBQUQsRUFBTUMsS0FBTixDQUFQO01BQ0Q7SUFDRCxLQUFLLHdCQUFMLENBQStCO1FBQzdCLE1BQU1BLEtBQUssR0FBR0gsSUFBSSxDQUFDTyxLQUFMLElBQWNYLENBQUMsQ0FBQ1ksVUFBRixDQUFhLFNBQWIsQ0FBNUI7UUFDQSxPQUFPLENBQUMsU0FBRCxFQUFZTCxLQUFaLENBQVA7TUFDRCxDQWhDSDs7RUFrQ0EsTUFBTUQsR0FBRyxHQUFHTCwwQkFBMEIsQ0FBQ0csSUFBRCxDQUF0QztFQUNBLElBQUlFLEdBQUosRUFBUyxPQUFPLENBQUNBLEdBQUQsRUFBTU4sQ0FBQyxDQUFDWSxVQUFGLENBQWFOLEdBQWIsQ0FBTixDQUFQO0FBQ1YifQ==