 ```ts
function flatten(items: readonly unknown[], depth = Infinity): unknown[] {
    return items
        .map(item => typeof item === 'object' && item !== null ? (depth > 0 ? Array.isArray(item) ? flatten(item, depth - 1) : Object.entries(item).flatMap(val => val[1] instanceof Object && val[1] !== null ? flatten(Array.isArray(val[1]) ? [val[1]] : Object.values(val[1]), Math.max(0, depth - 2)) : flatten([val]).flat() : item
        : [item]);
}
```