```ts
export function flatten(items: readonly unknown[], depth?: number): unknown[] {
  if (depth === undefined) depth = Infinity;
  if (!Number.isInteger(depth) || depth < 0) throw new Error("Depth must be a non-negative integer or Infinity");

  return items.flatMap(item => {
    if (item instanceof Array && depth > 0) {
      return flatten(item, depth - 1);
    }
    return item;
  });
}
```