export default function getPropertyName()

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);
}