import type { BaseEnum, EnumValues, PothosEnumValueConfig, SchemaTypes } from '../types/index.js'; export function normalizeEnumValues( values: EnumValues, ): Record> { const result: Record> = {}; if (Array.isArray(values)) { for (const key of values) { result[String(key)] = { pothosOptions: {}, }; } } else { for (const [key, value] of Object.entries(values)) { if (value && typeof value === 'object') { result[key] = { ...value, pothosOptions: value as PothosSchemaTypes.EnumValueConfig, }; } else if (typeof value === 'string') { result[value] = { pothosOptions: {}, }; } } } return result; } export function valuesFromEnum( Enum: BaseEnum, values?: Record, 'value'>>, ): Record> { const result: Record> = {}; const isReverseMapping = (key: string) => { const value = Enum[key]; if (typeof value !== 'string') { return false; } const mapped = Enum[value]; const numericKey = Number(key); return ( typeof mapped === 'number' && (mapped === numericKey || (Number.isNaN(mapped) && Number.isNaN(numericKey))) ); }; for (const key of Object.keys(Enum).filter((key) => !isReverseMapping(key))) { result[key] = { value: Enum[key], pothosOptions: {}, ...values?.[key], }; } return result; }