All files / array/operator insertAt.ts

100% Statements 11/11
100% Branches 6/6
100% Functions 3/3
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 147x 10x 1x     5x 5x 2x   3x   5x    
export const insertAt = (index: number) => <T>(value: T) => (array: T[]) => {
  if (index < 0 || index > array.length) {
    throw Error(`index: (${index}) out of range`);
  }
 
  const copy = Array.from(array);
  if (index === array.length) {
    copy.push(value);
  } else {
    copy.splice(index, 0, value);
  }
  return copy;
};