export type NestedArray = ReadonlyArray>
/**
* Flatten an array of arrays into a single array.
*/
export function flatten(
list:
| ReadonlyArray
| NestedArray
| NestedArray>
| NestedArray>>
| NestedArray>>>,
): A[] {
return (list as A[]).reduce(flattenReducer, [] as A[])
}
function flattenReducer(acc: A[], value: A | A[]): A[] {
if (Array.isArray(value)) {
acc.push(...flatten(value))
} else {
acc.push(value)
}
return acc
}