```ts
export function buildMinHeapByInsertion(values: number[]): number[] {
  if (!Array.isArray(values)) {
    throw new Error('Input must be an array');
  }

  for (const value of values) {
    if (!Number.isInteger(value)) {
      throw new Error('All elements in the input must be whole numbers');
    }
  }

  const heap: number[] = [];

  for (const value of values) {
    heap.push(value);
    let i = heap.length - 1;
    while (i > 0) {
      const parentIndex = Math.floor((i - 1) / 2);
      if (heap[parentIndex] <= heap[i]) break;
      [heap[parentIndex], heap[i]] = [heap[i], heap[parentIndex]];
      i = parentIndex;
    }
  }

  return heap;
}
```