```ts
export function buildMinHeapByInsertion(values: number[]): number[] {
    if (!Array.isArray(values)) {
        throw new Error("Input must be a list of numbers.");
    }
    if (!values.every(num => typeof num === 'number' && Number.isInteger(num))) {
        throw new Error("All elements in the input array must be whole numbers.");
    }

    const heap: number[] = [];

    for (const value of values) {
        heap.push(value);
        let currentIndex = heap.length - 1;

        while (currentIndex > 0) {
            const parentIndex = Math.floor((currentIndex - 1) / 2);
            if (heap[currentIndex] < heap[parentIndex]) {
                [heap[currentIndex], heap[parentIndex]] = [heap[parentIndex], heap[currentIndex]];
                currentIndex = parentIndex;
            } else {
                break;
            }
        }
    }

    return heap;
}
```