이 패키지의 eslint 는 설정 결함 두 가지가 겹쳐 단 한 파일도 린팅한 적이
없었다. build 스크립트에 `eslint &&` 게이트가 있었으나 매칭 파일이 0개라
항상 통과했다 — 게이트가 있는 것처럼 보이지만 실은 없는 상태였다.
(1) files: ["src/**/*"] 는 ESLint 9 에서 universal 패턴으로 취급돼
.ts 를 린팅 대상으로 opt-in 하지 못한다. 확장자 명시가 필요하다.
(2) 배열 프리셋(tseslint.configs.recommended, 길이 3)을 객체 리터럴에
스프레드해 {0:…,1:…,2:…} 쓰레기 키가 되어 프리셋이 무력화됐다.
extends 로 합성하도록 교정.
복구 후 드러난 26건을 전량 처리해 0 errors / 0 warnings 달성.
실버그 (no-async-promise-executor 가 잡아냄):
- Dialog.show() 가 new Promise(async …) 였다. await dialog.updateComplete
가 reject 되면 async executor 가 예외를 삼키고 hide 리스너는 등록조차
되지 않아 await Dialog.show(...) 호출자가 영원히 매달렸다. 리스너를
await 이전으로 옮기고(대기 중 hide 를 놓치던 경합도 해소), 실패 시
"닫힘 = null" 규약대로 종료 + 고아 엘리먼트 제거.
회귀 테스트 3건 추가 — 수정 전 형태로 되돌려 실패(타임아웃)를 실증했다.
기타 위반:
- UOverlayElement: 삼항을 문으로 사용 → if/else
- URating/USelect/UTree: switch case 의 const 누출 → 블록 격리
- any 캐스팅을 실제 타입으로 교체(CloseOnPolicy[]/UInput/InputType/
VirtualElement/unknown[]). 공개 API 시그니처 변경 없음
- no-console 은 warn/error 허용으로 조정(라이브러리 진단은 정당),
고아 eslint-disable 지시자 2건 제거
CHANGELOG 에 누락돼 있던 1.7.1 항목도 함께 기재.
검증: lint 0 problems(exit 0) · 43/43 tests(9 files) · tsc 통과 · build 성공