in src/utils/getPropertyName.ts [14:51]
export default function getPropertyName(
propertyPath: NodePath,
importer: Importer,
): string | null {
if (t.ObjectTypeSpreadProperty.check(propertyPath.node)) {
return getNameOrValue(propertyPath.get('argument').get('id'), false);
} else if (propertyPath.node.computed) {
const key = propertyPath.get('key');
// Try to resolve variables and member expressions
if (t.Identifier.check(key.node) || t.MemberExpression.check(key.node)) {
const value = resolveToValue(key, importer).node;
if (
t.Literal.check(value) &&
(typeof value.value === 'string' || typeof value.value === 'number')
) {
return `${value.value}`;
}
}
// generate name for identifier
if (t.Identifier.check(key.node)) {
return `${COMPUTED_PREFIX}${key.node.name}`;
}
if (
t.Literal.check(key.node) &&
(typeof key.node.value === 'string' || typeof key.node.value === 'number')
) {
return `${key.node.value}`;
}
return null;
}
return getNameOrValue(propertyPath.get('key'), false);
}