import { ValidationError } from "./errors.js";

export function parseOptionalEnumArray<T extends string>(
  value: unknown,
  allowed: readonly T[],
  fieldName: string
): T[] | undefined {
  if (value === undefined) return undefined;
  if (!Array.isArray(value)) throw new ValidationError(`${fieldName} must be an array.`);
  if (value.length === 0) throw new ValidationError(`${fieldName} must contain at least one value.`);
  const out: T[] = [];
  for (const entry of value) {
    if (typeof entry !== "string" || !allowed.includes(entry as T)) {
      throw new ValidationError(`${fieldName} contains unsupported values.`);
    }
    if (!out.includes(entry as T)) out.push(entry as T);
  }
  return out;
}
