UNPKG

astx

Version:

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

105 lines (96 loc) 10.4 kB
function isValidJSXIdentifier(s) { return /^[_$a-z][-_$a-z0-9]*$/i.test(s) } export default function convertToJSXIdentifierName(node) { var _node$local, _node$imported, _node$imported2, _node$local2, _node$local3 switch (node.type) { case 'ObjectProperty': if (node.shorthand) return convertToJSXIdentifierName(node.key) break case 'TSPropertySignature': if (!node.typeAnnotation) return convertToJSXIdentifierName(node.key) break case 'ObjectTypeSpreadProperty': case 'SpreadElement': return convertToJSXIdentifierName(node.argument) case 'ExpressionStatement': return convertToJSXIdentifierName(node.expression) case 'Identifier': case 'JSXIdentifier': return node.name case 'JSXExpressionContainer': return convertToJSXIdentifierName(node.expression) case 'JSXAttribute': if (!node.value) return convertToJSXIdentifierName(node.name) break case 'JSXText': case 'StringLiteral': case 'Literal': if (isValidJSXIdentifier(String(node.value))) return String(node.value) break case 'TemplateLiteral': if ( node.quasis.length === 1 && node.quasis[0].value.cooked && isValidJSXIdentifier(node.quasis[0].value.cooked) ) { return node.quasis[0].value.cooked } break case 'TypeAnnotation': case 'TSTypeAnnotation': case 'TSRestType': return convertToJSXIdentifierName(node.typeAnnotation) case 'GenericTypeAnnotation': if (node.id.type !== 'Identifier' || node.typeParameters) return return node.id.name case 'TSTypeReference': if (node.typeName.type !== 'Identifier' || node.typeParameters) return return node.typeName.name case 'ImportDefaultSpecifier': return (_node$local = node.local) === null || _node$local === void 0 ? void 0 : _node$local.name case 'ImportSpecifier': if ( ((_node$imported = node.imported) === null || _node$imported === void 0 ? void 0 : _node$imported.type) !== 'Identifier' || ((_node$imported2 = node.imported) === null || _node$imported2 === void 0 ? void 0 : _node$imported2.name) !== ((_node$local2 = node.local) === null || _node$local2 === void 0 ? void 0 : _node$local2.name) ) return return (_node$local3 = node.local) === null || _node$local3 === void 0 ? void 0 : _node$local3.name case 'TypeParameter': case 'TSTypeParameter': return node.name case 'ClassImplements': case 'InterfaceExtends': return convertToJSXIdentifierName(node.id) case 'MixedTypeAnnotation': return 'mixed' case 'TSUnknownKeyword': return 'unknown' case 'AnyTypeAnnotation': case 'TSAnyKeyword': return 'any' case 'StringTypeAnnotation': case 'TSStringKeyword': return 'string' case 'NumberTypeAnnotation': case 'TSNumberKeyword': return 'number' case 'BooleanTypeAnnotation': case 'TSBooleanKeyword': return 'boolean' case 'TSSymbolKeyword': return 'symbol' } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1ZhbGlkSlNYSWRlbnRpZmllciIsInMiLCJ0ZXN0IiwiY29udmVydFRvSlNYSWRlbnRpZmllck5hbWUiLCJub2RlIiwidHlwZSIsInNob3J0aGFuZCIsImtleSIsInR5cGVBbm5vdGF0aW9uIiwiYXJndW1lbnQiLCJleHByZXNzaW9uIiwibmFtZSIsInZhbHVlIiwiU3RyaW5nIiwicXVhc2lzIiwibGVuZ3RoIiwiY29va2VkIiwiaWQiLCJ0eXBlUGFyYW1ldGVycyIsInR5cGVOYW1lIiwibG9jYWwiLCJpbXBvcnRlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0UmVwbGFjZW1lbnQvY29udmVydFRvSlNYSWRlbnRpZmllck5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5mdW5jdGlvbiBpc1ZhbGlkSlNYSWRlbnRpZmllcihzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIC9eW18kYS16XVstXyRhLXowLTldKiQvaS50ZXN0KHMpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnZlcnRUb0pTWElkZW50aWZpZXJOYW1lKG5vZGU6IE5vZGUpOiBzdHJpbmcgfCB2b2lkIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlICdPYmplY3RQcm9wZXJ0eSc6XG4gICAgICBpZiAobm9kZS5zaG9ydGhhbmQpIHJldHVybiBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlLmtleSlcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnVFNQcm9wZXJ0eVNpZ25hdHVyZSc6XG4gICAgICBpZiAoIW5vZGUudHlwZUFubm90YXRpb24pIHJldHVybiBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlLmtleSlcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnT2JqZWN0VHlwZVNwcmVhZFByb3BlcnR5JzpcbiAgICBjYXNlICdTcHJlYWRFbGVtZW50JzpcbiAgICAgIHJldHVybiBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlLmFyZ3VtZW50KVxuICAgIGNhc2UgJ0V4cHJlc3Npb25TdGF0ZW1lbnQnOlxuICAgICAgcmV0dXJuIGNvbnZlcnRUb0pTWElkZW50aWZpZXJOYW1lKG5vZGUuZXhwcmVzc2lvbilcbiAgICBjYXNlICdJZGVudGlmaWVyJzpcbiAgICBjYXNlICdKU1hJZGVudGlmaWVyJzpcbiAgICAgIHJldHVybiBub2RlLm5hbWVcbiAgICBjYXNlICdKU1hFeHByZXNzaW9uQ29udGFpbmVyJzpcbiAgICAgIHJldHVybiBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlLmV4cHJlc3Npb24pXG4gICAgY2FzZSAnSlNYQXR0cmlidXRlJzpcbiAgICAgIGlmICghbm9kZS52YWx1ZSkgcmV0dXJuIGNvbnZlcnRUb0pTWElkZW50aWZpZXJOYW1lKG5vZGUubmFtZSlcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnSlNYVGV4dCc6XG4gICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgY2FzZSAnTGl0ZXJhbCc6XG4gICAgICBpZiAoaXNWYWxpZEpTWElkZW50aWZpZXIoU3RyaW5nKG5vZGUudmFsdWUpKSkgcmV0dXJuIFN0cmluZyhub2RlLnZhbHVlKVxuICAgICAgYnJlYWtcbiAgICBjYXNlICdUZW1wbGF0ZUxpdGVyYWwnOlxuICAgICAgaWYgKFxuICAgICAgICBub2RlLnF1YXNpcy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgbm9kZS5xdWFzaXNbMF0udmFsdWUuY29va2VkICYmXG4gICAgICAgIGlzVmFsaWRKU1hJZGVudGlmaWVyKG5vZGUucXVhc2lzWzBdLnZhbHVlLmNvb2tlZClcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbm9kZS5xdWFzaXNbMF0udmFsdWUuY29va2VkXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIGNhc2UgJ1R5cGVBbm5vdGF0aW9uJzpcbiAgICBjYXNlICdUU1R5cGVBbm5vdGF0aW9uJzpcbiAgICBjYXNlICdUU1Jlc3RUeXBlJzpcbiAgICAgIHJldHVybiBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlLnR5cGVBbm5vdGF0aW9uKVxuICAgIGNhc2UgJ0dlbmVyaWNUeXBlQW5ub3RhdGlvbic6XG4gICAgICBpZiAobm9kZS5pZC50eXBlICE9PSAnSWRlbnRpZmllcicgfHwgbm9kZS50eXBlUGFyYW1ldGVycykgcmV0dXJuXG4gICAgICByZXR1cm4gbm9kZS5pZC5uYW1lXG4gICAgY2FzZSAnVFNUeXBlUmVmZXJlbmNlJzpcbiAgICAgIGlmIChub2RlLnR5cGVOYW1lLnR5cGUgIT09ICdJZGVudGlmaWVyJyB8fCBub2RlLnR5cGVQYXJhbWV0ZXJzKSByZXR1cm5cbiAgICAgIHJldHVybiBub2RlLnR5cGVOYW1lLm5hbWVcbiAgICBjYXNlICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgIHJldHVybiBub2RlLmxvY2FsPy5uYW1lXG4gICAgY2FzZSAnSW1wb3J0U3BlY2lmaWVyJzpcbiAgICAgIGlmIChcbiAgICAgICAgbm9kZS5pbXBvcnRlZD8udHlwZSAhPT0gJ0lkZW50aWZpZXInIHx8XG4gICAgICAgIG5vZGUuaW1wb3J0ZWQ/Lm5hbWUgIT09IG5vZGUubG9jYWw/Lm5hbWVcbiAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICByZXR1cm4gbm9kZS5sb2NhbD8ubmFtZVxuICAgIGNhc2UgJ1R5cGVQYXJhbWV0ZXInOlxuICAgIGNhc2UgJ1RTVHlwZVBhcmFtZXRlcic6XG4gICAgICByZXR1cm4gbm9kZS5uYW1lXG4gICAgY2FzZSAnQ2xhc3NJbXBsZW1lbnRzJzpcbiAgICBjYXNlICdJbnRlcmZhY2VFeHRlbmRzJzpcbiAgICAgIHJldHVybiBjb252ZXJ0VG9KU1hJZGVudGlmaWVyTmFtZShub2RlLmlkKVxuICAgIGNhc2UgJ01peGVkVHlwZUFubm90YXRpb24nOlxuICAgICAgcmV0dXJuICdtaXhlZCdcbiAgICBjYXNlICdUU1Vua25vd25LZXl3b3JkJzpcbiAgICAgIHJldHVybiAndW5rbm93bidcbiAgICBjYXNlICdBbnlUeXBlQW5ub3RhdGlvbic6XG4gICAgY2FzZSAnVFNBbnlLZXl3b3JkJzpcbiAgICAgIHJldHVybiAnYW55J1xuICAgIGNhc2UgJ1N0cmluZ1R5cGVBbm5vdGF0aW9uJzpcbiAgICBjYXNlICdUU1N0cmluZ0tleXdvcmQnOlxuICAgICAgcmV0dXJuICdzdHJpbmcnXG4gICAgY2FzZSAnTnVtYmVyVHlwZUFubm90YXRpb24nOlxuICAgIGNhc2UgJ1RTTnVtYmVyS2V5d29yZCc6XG4gICAgICByZXR1cm4gJ251bWJlcidcbiAgICBjYXNlICdCb29sZWFuVHlwZUFubm90YXRpb24nOlxuICAgIGNhc2UgJ1RTQm9vbGVhbktleXdvcmQnOlxuICAgICAgcmV0dXJuICdib29sZWFuJ1xuICAgIGNhc2UgJ1RTU3ltYm9sS2V5d29yZCc6XG4gICAgICByZXR1cm4gJ3N5bWJvbCdcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLFNBQVNBLG9CQUFULENBQThCQyxDQUE5QixFQUF5QztFQUN2QyxPQUFPLHlCQUF5QkMsSUFBekIsQ0FBOEJELENBQTlCLENBQVA7QUFDRDs7QUFFRCxlQUFlLFNBQVNFLDBCQUFULENBQW9DQyxJQUFwQyxFQUErRDtFQUM1RSxRQUFRQSxJQUFJLENBQUNDLElBQWI7SUFDRSxLQUFLLGdCQUFMO01BQ0UsSUFBSUQsSUFBSSxDQUFDRSxTQUFULEVBQW9CLE9BQU9ILDBCQUEwQixDQUFDQyxJQUFJLENBQUNHLEdBQU4sQ0FBakM7TUFDcEI7SUFDRixLQUFLLHFCQUFMO01BQ0UsSUFBSSxDQUFDSCxJQUFJLENBQUNJLGNBQVYsRUFBMEIsT0FBT0wsMEJBQTBCLENBQUNDLElBQUksQ0FBQ0csR0FBTixDQUFqQztNQUMxQjtJQUNGLEtBQUssMEJBQUw7SUFDQSxLQUFLLGVBQUw7TUFDRSxPQUFPSiwwQkFBMEIsQ0FBQ0MsSUFBSSxDQUFDSyxRQUFOLENBQWpDO0lBQ0YsS0FBSyxxQkFBTDtNQUNFLE9BQU9OLDBCQUEwQixDQUFDQyxJQUFJLENBQUNNLFVB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