```ts

 export function mergeIntervals(intervals: number[][]): number[][] {
    if (!intervals.length) return [];

    intervals.sort((a, b) => a[0] - b[0]);

    const merged = [intervals[0]];

    for (let i = 1; i < intervals.length; i++) {
        const current = merged.at(-1)!;
        const next = intervals[i];

        if (current[1] >= next[0]) {
            current[1] = Math.max(current[1], next[1]);
        } else {
            merged.push(next);
        }
    }

    return merged.filter(pair => pair[0] <= pair[1]);
}

```