astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
20 lines (18 loc) • 2.83 kB
JavaScript
import * as t from '@babel/types'
import convertToIdentifierExpressionPair from './convertToIdentifierExpressionPair.mjs'
import convertToExpression from './convertToExpression.mjs'
export default function convertPropertyReplacement(node) {
switch (node.type) {
case 'SpreadElement':
case 'ObjectProperty':
return node
case 'TSRestType':
case 'ObjectTypeSpreadProperty': {
const expr = convertToExpression(node)
if (expr) return t.spreadElement(expr)
}
}
const keyValue = convertToIdentifierExpressionPair(node)
if (keyValue) return t.objectProperty(keyValue[0], keyValue[1])
return node
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0IiwiY29udmVydFRvSWRlbnRpZmllckV4cHJlc3Npb25QYWlyIiwiY29udmVydFRvRXhwcmVzc2lvbiIsImNvbnZlcnRQcm9wZXJ0eVJlcGxhY2VtZW50Iiwibm9kZSIsInR5cGUiLCJleHByIiwic3ByZWFkRWxlbWVudCIsImtleVZhbHVlIiwib2JqZWN0UHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udmVydFJlcGxhY2VtZW50L2NvbnZlcnRQcm9wZXJ0eVJlcGxhY2VtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGUgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCAqIGFzIHQgZnJvbSAnQGJhYmVsL3R5cGVzJ1xuaW1wb3J0IGNvbnZlcnRUb0lkZW50aWZpZXJFeHByZXNzaW9uUGFpciBmcm9tICcuL2NvbnZlcnRUb0lkZW50aWZpZXJFeHByZXNzaW9uUGFpcidcbmltcG9ydCBjb252ZXJ0VG9FeHByZXNzaW9uIGZyb20gJy4vY29udmVydFRvRXhwcmVzc2lvbidcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udmVydFByb3BlcnR5UmVwbGFjZW1lbnQobm9kZTogTm9kZSk6IE5vZGUge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgJ1NwcmVhZEVsZW1lbnQnOlxuICAgIGNhc2UgJ09iamVjdFByb3BlcnR5JzpcbiAgICAgIHJldHVybiBub2RlXG4gICAgY2FzZSAnVFNSZXN0VHlwZSc6XG4gICAgY2FzZSAnT2JqZWN0VHlwZVNwcmVhZFByb3BlcnR5Jzoge1xuICAgICAgY29uc3QgZXhwciA9IGNvbnZlcnRUb0V4cHJlc3Npb24obm9kZSlcbiAgICAgIGlmIChleHByKSByZXR1cm4gdC5zcHJlYWRFbGVtZW50KGV4cHIgYXMgdC5FeHByZXNzaW9uKVxuICAgIH1cbiAgfVxuICBjb25zdCBrZXlWYWx1ZSA9IGNvbnZlcnRUb0lkZW50aWZpZXJFeHByZXNzaW9uUGFpcihub2RlKVxuICBpZiAoa2V5VmFsdWUpXG4gICAgcmV0dXJuIHQub2JqZWN0UHJvcGVydHkoXG4gICAgICBrZXlWYWx1ZVswXSBhcyB0LklkZW50aWZpZXIsXG4gICAgICBrZXlWYWx1ZVsxXSBhcyB0LkV4cHJlc3Npb25cbiAgICApXG4gIHJldHVybiBub2RlXG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEtBQUtBLENBQVosTUFBbUIsY0FBbkI7QUFDQSxPQUFPQyxpQ0FBUCxNQUE4QyxxQ0FBOUM7QUFDQSxPQUFPQyxtQkFBUCxNQUFnQyx1QkFBaEM7O0FBRUEsZUFBZSxTQUFTQywwQkFBVCxDQUFvQ0MsSUFBcEMsRUFBc0Q7RUFDbkUsUUFBUUEsSUFBSSxDQUFDQyxJQUFiO0lBQ0UsS0FBSyxlQUFMO0lBQ0EsS0FBSyxnQkFBTDtNQUNFLE9BQU9ELElBQVA7SUFDRixLQUFLLFlBQUw7SUFDQSxLQUFLLDBCQUFMLENBQWlDO1FBQy9CLE1BQU1FLElBQUksR0FBR0osbUJBQW1CLENBQUNFLElBQUQsQ0FBaEM7UUFDQSxJQUFJRSxJQUFKLEVBQVUsT0FBT04sQ0FBQyxDQUFDTyxhQUFGLENBQWdCRCxJQUFoQixDQUFQO01BQ1gsQ0FSSDs7RUFVQSxNQUFNRSxRQUFRLEdBQUdQLGlDQUFpQyxDQUFDRyxJQUFELENBQWxEO0VBQ0EsSUFBSUksUUFBSjtFQUNFLE9BQU9SLENBQUMsQ0FBQ1MsY0FBRjtFQUNMRCxRQUFRLENBQUMsQ0FBRCxDQURIO0VBRUxBLFFBQVEsQ0FBQyxDQUFELENBRkgsQ0FBUDs7RUFJRixPQUFPSixJQUFQO0FBQ0QifQ==