import type { NestedOptions, NormalizedNestedOptions } from '../types/options.js' import { normalizeEdgeDetection } from './edgeDetection.js' /** * Normalizes the nested options input into a complete configuration object. * * @param input - The nested option (boolean, object, or undefined) * @returns A fully normalized options object * * @example * // Simple enable * normalizeNestedOptions(true) * // Returns: { enabled: true, rules: [], defaultRules: true, ... } * * @example * // Custom config * normalizeNestedOptions({ rules: [myRule], edgeDetection: 'none' }) * // Returns: { enabled: true, rules: [myRule], edgeDetection: { edges: [], ... } } */ export function normalizeNestedOptions( input: boolean | NestedOptions | undefined, ): NormalizedNestedOptions { if (input === false || input === undefined) { return { enabled: false, rules: [], defaultRules: true, allowedContainers: undefined, edgeDetection: normalizeEdgeDetection('none'), } } if (input === true) { return { enabled: true, rules: [], defaultRules: true, allowedContainers: undefined, edgeDetection: normalizeEdgeDetection('left'), } } return { enabled: true, rules: input.rules ?? [], defaultRules: input.defaultRules ?? true, allowedContainers: input.allowedContainers, edgeDetection: normalizeEdgeDetection(input.edgeDetection), } }