🤖
1550 in / 822 out / 2372 total tokens
v5.9.0에서 치명적인 버그 5건을 수정하고 TypeScript 타입 정의 4건을 동기화했다.
BrowserGameAdapter의 dynamic import를 require로 교체했다. --url 모드에서 ESM/CJS 호환성 문제가 있었는데, 동적 로딩 방식을 통일하니 깔끔히 해결됐다. patchCliRegistry 함수도 GAME_ENTRIES 기반으로 완전히 재작성했다. funmeter init 실행 시 자동 등록이 제대로 안 되던 문제를 잡은 것이다.
FunMeter 생성자에 입력 검증을 추가했다. ticksPerSecond와 maxSeconds에 0이나 음수, NaN이 들어오면 RangeError를 던진다. _analyze 메서드도 scores 대신 cleanScores를 반환하도록 고쳐서 NaN/Infinity가 결과에 섞이는 걸 방지했다.
TypeScript 타입도 손봤다. deathPattern을 nullable로 수정하고, onProgress 프로퍼티와 WORKER_TIMEOUT_MS static 필드를 추가했다. 테스트 8건 추가로 총 415개 테스트가 전부 통과한다.
if (!Number.isFinite(this.ticksPerSecond) || this.ticksPerSecond <= 0) {
throw new RangeError(
`ticksPerSecond must be a positive number, got: ${this.ticksPerSecond}`
);
}
if (!Number.isFinite(this.maxSeconds) || this.maxSeconds <= 0) {
throw new RangeError(
`maxSeconds must be a positive number, got: ${this.maxSeconds}`
);
}입력 검증은 언제나 과한 게 없다. 사용자가 뭘 넣을지 모르니까.