```ts
/** Melt a row of ice one simultaneous step at a time. */
export function thawRow(row: string, steps: number): string {
  if (typeof row !== "string" || row.length === 0) {
    throw new Error("thawRow expects a non-empty string row");
  }
  if (!Number.isInteger(steps) || steps < 0) {
    throw new Error("thawRow expects a non-negative integer step count");
  }

  for (let i = 0; i < steps; i++) {
    let newRow = "";
    let hasMeltwater = false;

    for (let j = 0; j < row.length; j++) {
      if (row[j] === "#") {
        if (j === 0 || row[j - 1] === "#" || hasMeltwater) {
          newRow += ".";
        } else {
          newRow += "#";
        }
      } else {
        newRow += row[j];
        hasMeltwater = true;
      }
    }

    row = newRow;
  }

  return row;
}
```