import { assert } from '@blackglory/errors' import { flattenBy } from './flatten-by.js' export function flattenDeep(iterable: Iterable): IterableIterator export function flattenDeep( iterable: Iterable , depth: number ): IterableIterator export function flattenDeep( iterable: Iterable , depth: number = Infinity ): IterableIterator { assert( depth === Infinity || Number.isInteger(depth) , 'The parameter depth must be an integer' ) assert(depth >= 0, 'The parameter depth must be greater than or equal to 0') return flattenBy(iterable, (_, level) => level <= depth) }