```ts
/**
 * Merges overlapping intervals into a single list without overlaps.
 * Each interval is represented by a two-element array [start, end].
 * Intervals with equal start and end values are merged. The output is sorted ascending by start position.
 *
 * Examples:
 * >>> mergeIntervals([[1, 3], [2, 5], [8, 10]])
 * [[1, 5]]
 * >>> mergeIntervals([[1, 4], [5, 6], [7, 9]])
 * [[1, 9]]
 * >>> mergeIntervals([[-2, -1], [-3, 3], [0, 5]])
 * [[-3, 5]]
 */
function mergeIntervals(intervals: number[][]): number[][] {
    if (intervals.length === 0) return [];

    intervals.sort((a, b) => a[0] - b[0]);
    const merged: number[][] = [intervals[0]];

    for (let i = 1; i < intervals.length; i++) {
        const current = intervals[i];
        const lastMerged = merged.pop();

        if (current[0] > lastMerged![1]) {
            merged.push(lastMerged!);
            merged.push(current);
        } else {
            merged.pop();
            merged.push([lastMerged![0], Math.max(lastMerged![1], current[1])]);
        }
    }

    return merged;
}
```