Repository navigation
Conversation
Refs #684, #695; follows #756 JSX-02 type guard policy Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #684, #695 (#756 JSX-02 타입 가드 후속, main
24a595763기반의 독립 PR)선행 PR 스택 의존성은 없습니다. #763의 기존 수정 파일, 기존
recommended설정과 스냅샷, 추출기·바인딩·번들러·React 구현 및 WASM 크기 예산은 변경하지 않았습니다.요약
no-unknown-style-spread규칙과configs.recommendedTypeChecked를 추가했습니다. 런타임 입력에서 온 것으로 증명되는 spread의 타입이 Devup 스타일 키를 가질 수 있을 때 진단하며, 원래 React DOM 속성만 전달하는 타입은 허용합니다.typescript/lib/tsserverlibrary요청의 URL을 잘못 만들어 project service가 ENOENT로 중단되던 문제입니다.동작
기존
recommended는 타입 검사 없이 종전대로 동작합니다. 다음 설정을 선택해야 새 규칙이 실행됩니다.새 네임스페이스는
@devup-ui/type-checked/no-unknown-style-spread입니다. 기존 플러그인을 재정의하지 않아 두 preset 및 반복한 typed preset이 합성됩니다. 기존parserOptions.project도 지원합니다.DevupProps, 스타일 키를 갖는 named/union/intersection 타입any,unknown,{},object, 열린 제네릭 및 이를 포함한 교집합color·width포함HTMLAttributes & object/HTMLAttributes & {}React.PointerEvent.width대상은 실제 import binding으로 확인한 9개 Devup 기본 컴포넌트입니다. named alias와 namespace/default 접근을 지원하며 shadowed/type-only/unrelated binding은 제외합니다. 매개변수·catch·arguments·this·재대입 없는 별칭/멤버 및 런타임 spread를 포함한 객체를 제한적으로 추적합니다. 사용자 코드는 실행하지 않습니다.
실제 main WASM의 두 CSS 모드에서 확인한 빌드/lint 합의를 영구 회귀 30개로 유지합니다. 런타임 기본값과 런타임 우선
rest || fallback/rest ?? fallback은 fallback의 스타일까지 전달만 하므로 진단합니다. 알려진 import가 먼저인 표현식은 실제 합성되어 허용합니다. 두 혼합 conditional 방향은 기존 located build error로 거절되므로 새 규칙 진단을 추가하지 않습니다. 추출기와className·style병합 구현은 그대로입니다.실제 main 출력 예:
knownImport가{ bg: 'red' }여도 이 경우background:red가 생성되지 않습니다. 알려진 import만 spread한 control은 실제 CSS를 생성합니다. 이 차이를 타입 진단으로 알리며 런타임 키 분류나 기본 스타일을 삽입하지 않습니다.DOM 출처는 실제 React namespace의 AST/symbol 및 원래 intrinsic attribute 선언 identity로 증명합니다.
ReactElementaugmentation이 사용자 스타일 키를 DOM으로 승격하지 못하고 native intrinsic 재선언도 원래 DOM 속성을 지우지 않습니다. TS6 shim은 모든typescript/subpath 요청을 공식 호환 패키지의 실제 Node resolution에 위임하며, 실제 CJS/ESM·확장자 유무·package.json 및 공식await-thenableproject-service 회귀를 유지합니다.새로 생기는 오류
This runtime spread can carry Devup style props. Constrain the type or pass style props explicitly; use build-time-known composition or forward DOM-only props separately.StyleSchemaError로 실패합니다.남는 한계
임의의 component alias·styled 생성 컴포넌트 추론, standalone 호출/import 평가와 분류되지 않은 값 흐름은 빌드 권한에 남깁니다. 스타일은 명시적인 prop 또는 빌드가 아는 합성으로 작성하고 전달 속성은 실제 DOM/nonstyle 타입으로 제한해야 합니다.
무한 문자열 템플릿은 정확한 교집합·차집합 matcher를 사용합니다. 숫자 placeholder 등 matcher가 지원하지 않는 좁은 질의는 실제 도메인에서 고정 후보
'',screen,(display: grid),0,1을 만들며, checker가 양쪽 양의 도메인 소속과 모든 제외 도메인 밖임을 증명한 키만 증인으로 인정합니다. 하나의 증인이 있으면 보고하고 전체 도메인 마스크는 보고하지 않습니다. 숫자 템플릿 문법·대수·인터프리터를 구현한 것은 아니므로 matcher와 검증된 증인 모두 전달 가능성을 증명하지 못한 해당 질의만 미보고할 수 있습니다. 다른 유한 키·인덱스 검사는 계속합니다. 이 한정 정책은 coordinator가 승인했습니다.검증
bg타입에도 진단이 0개이던 RED와 TS6 project-service ENOENT RED를 먼저 보존했습니다. DOM 출처, 비발현 교집합/인덱스, 열린 제네릭, 제외 도메인, numeric witness, UTF-16 및 augmentation/native 재선언도 실제 checker RED 뒤에 수정했습니다. union 의심 건은 재현되지 않아 union 버그 수정으로 주장하지 않습니다.04b21203eb53406f1eef03b3a9547fdd6cae4bbc: Oracle APPROVE/HIGH, stable Rust 1.99.1 기본 스택 fmt/strict clippy, Rust 9,428/0/0 ignored, WASM/전체 패키지 build/declarations/verify:dist/lint 통과, 공개 API QA 20개 통과.8b748172bd5a5fd8babe901e8042adee007e0e07: scoped lint 통과, 루트 6,529/0, Vite 868/0, 실제 양쪽 100.00% functions / 100.00% lines로 전체 재검증했습니다(434.117초). 이전 검토 트리 대비 승인된 테스트 환경/개별 시간 제한만 변경했고 assertion과 테스트 수는 그대로입니다.a894ffcca3c96f69f004112b48d9ddea59e43473가 정확한 최종 tree에서 생성되었고 작업 트리는 clean입니다. bypass/amend/force는 없었습니다. 앞선 2회 실패를 성공으로 바꾸어 기록하지 않았습니다.a894ffcca3c96f69f004112b48d9ddea59e43473, 재실행 0회: publish / benchmark / landing-next-e2e / react-18 / vinext-rsc-css-e2e / webpack-extends-theme / release-compat / wasm-size 8개 모두 통과했습니다. main 전용 release/deploy-pages 및 site upload skip만 예상된 조건부 제외이며 prerender skip은 아닙니다.