/** options accepted by {@linkcode parse}, {@linkcode parseObject} & co. */ export interface Options { /** * maximum nesting limit (default 128) * containers deeper than this fail with a `"nesting"` error */ maxDepth?: number; } /** default `maxDepth` if not provided */ export const DEFAULT_MAX_DEPTH = 128; /** safely retrieve the `maxDepth` value from {@linkcode Options} */ export function resolveMaxDepth(options?: Options): number { const maxDepth = options?.maxDepth ?? DEFAULT_MAX_DEPTH; if (!Number.isInteger(maxDepth) || (maxDepth as number) < 0) { throw new TypeError( `maxDepth must be a non-negative integer, got ${(maxDepth as number)}`, ); } return maxDepth as number; }