export default function ConvertFormdataToJSON(
  formData?: FormData,
): Record<string, any> {
  if (!formData) {
    return {};
  }

  const result: Record<string, any> = {};

  for (const [key, value] of formData.entries()) {
    const keys = key.split("-");
    let current = result;

    for (let i = 0; i < keys.length; i++) {
      const isLast = i === keys.length - 1;
      const currentKey = keys[i];

      if (isLast) {
        if (value instanceof File) {
          current[currentKey] = value;
        } else {
          if (value === "true") {
            current[currentKey] = true;
          } else if (value === "false") {
            current[currentKey] = false;
          } else if (value !== "" && !isNaN(Number(value))) {
            current[currentKey] = Number(value);
          } else {
            current[currentKey] = value;
          }
        }
      } else {
        if (current[currentKey] === undefined) {
          current[currentKey] = isNaN(Number(keys[i + 1])) ? {} : [];
        }
        current = current[currentKey];
      }
    }
  }

  return result;
}
