Repository navigation
fix(extractor): finish static composition and styled capture limits - #754
Merged
Merged
Conversation
…ClassNames cx calls, read style functions of props Refs #690, #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690, #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688, #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Contributor
Changepacks@devup-ui/wasm@1.0.83 → 1.0.84 - bindings/devup-ui-wasm/package.jsonPatch
@devup-ui/bun-plugin@1.0.22 → 1.0.23 - packages/bun-plugin/package.jsonPatch
@devup-ui/components@0.1.60 → 0.1.61 - packages/components/package.jsonPatch
@devup-ui/eslint-plugin@1.0.22 → 1.0.23 - packages/eslint-plugin/package.jsonPatch
@devup-ui/next-plugin@1.0.90 → 1.0.91 - packages/next-plugin/package.jsonPatch
@devup-ui/plugin-utils@1.0.17 → 1.0.18 - packages/plugin-utils/package.jsonPatch
@devup-ui/react@1.0.44 → 1.0.45 - packages/react/package.jsonPatch
@devup-ui/reset-css@1.0.31 → 1.0.32 - packages/reset-css/package.jsonPatch
@devup-ui/rsbuild-plugin@1.0.67 → 1.0.68 - packages/rsbuild-plugin/package.jsonPatch
@devup-ui/vite-plugin@1.0.73 → 1.0.74 - packages/vite-plugin/package.jsonPatch
@devup-ui/webpack-plugin@1.0.71 → 1.0.72 - packages/webpack-plugin/package.jsonPatch
|
Codecov Report✅ All modified and coverable lines are covered by tests.
🚀 New features to boost your workflow:
|
Preserve the updated parent guards and local-style features while capturing conditional rule controllers once and retaining static theme path checks. Refs #707 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…e objects Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688, #690, #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688, #690, #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 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 #688, #690, #695, #685 (정적 합성, styled 캡처와 CSS 레이어).
fix/composition-rest→main입니다. #736의 변경과 #745의 최종 headc3fe4647을 포함하며, #745 및 선행 의존성이 먼저 병합되어야 합니다. 두 번째 실제 병합d6879f28의 부모는2d51af46과c3fe4647입니다. 최신 head는51295a32542832d4a066d0bdb4cb8bd91717b5d3이며, 자동 병합하지 않습니다.요약
cssprop에서 실제 import 바인딩으로 읽습니다. 같은 이름의 지역 바인딩은 구분합니다.css, 정적으로 읽히는 배열 spread, 중첩 선택자·media·layer의 알려진 mixin, 전체 규칙을 고르는 props 콜백을 빌드 때 합성합니다.@layer를 객체 규칙과 같은 레이어 문맥으로 처리합니다. 새 스타일링 런타임·의존성·커버리지 제외·예산 변경은 없습니다. 관리 패키지 changepack은 모두 Patch이며 루트package.json은 대상이 아닙니다.--timeout 180만 추가합니다. 제품 동작이나 테스트 단언은 바꾸지 않습니다.두 부모 대비 제품 소스 규모
아래는 두 번째 병합 직후
d6879f28에 대한 보존된 Rust diff의 물리적 추가/삭제 줄 수입니다. 주석·빈 줄을 포함하고, 테스트 여부를 어휘적으로 분류하여 모호한 줄을 제품 측에 보수적으로 넣었습니다. 최종 head의 새 semantic LOC 측정이나 이번 timeout 커밋의 크기가 아닙니다.2d51af46c3fe4647이 수치를 최초 병합의 역사적 부모
bacd1351/58de8430대비 수치와 혼동하지 않습니다. 이후 중립적 테스트 파일명 정리f12842a7, Linux 미커버 보강eab71094, 한 줄 timeout 변경51295a32가 이어졌습니다. 상속된 전체 파일 수를 이 PR이 새로 작성한 제품 규모로 세지 않습니다.동작
D1과 원시 방출의 경계
정적으로 아는 합성은 속성 + 선택자 + 브레이크포인트 + 레이어마다 뒤의 authored part가 이기는 D1입니다.
css(a,b), 알려진 mixin, styled 상속/다중 파트와 정적 CSS prop 합성에 같은 의미를 적용합니다. props의className, 외부 클래스처럼 런타임만 아는 합성은 기존 CSS 캐스케이드입니다.추출의 원시 선언 뷰 R과 authored 의미 뷰 A를 구분합니다. 의미 합성은 A로 수행하고, 일반 클래스 합성과 합성 CSS prop은 최종 결과만 방출합니다. 원시 R 유지가 허용되는 것은 앞 선언 요약과 덮는 known className 선언이 없고, 정확히 하나의 스타일/규칙 파트이며, 문법 껍질을 벗긴 원본이 객체인 standalone CSS prop뿐입니다. 배열·조건·known mixin이 결과적으로 한 원자만 남는다고 standalone이 되지는 않습니다. 방출 권한과 무관하게 미해석 값/오류 검사는 R 전체에 적용하므로 패배한 선언의 오류도 숨기지 않습니다. 단독 콜백의 원래 숫자·shorthand·unitless·0·변수 계약과 count 3 단언을 유지합니다.
일반 styled 다중 파트도 같은 정규화 경계를 사용합니다. 승인된 진단 기대값 변경은 정확히 두 건입니다.
{padding:3,p:4}[12px,16px]→[16px]{padding:3,p:4}+ 뒤 padding 2[16px,8px]→[8px]이는 sheet 정렬의 우연이 아니라 D1 선택입니다. 단독 직접 콜백의
[12px,16px]와 원본 count 3 검증은 변경하지 않았습니다. 정확한 과거 main78d7c2b2673bdeaa0870bac6a2ec424706986de7의 immutable archive 네이티브 프로브에서도styled.div({padding:'8px'},{p:'4px'})가 두 클래스를 선택하고 CSS의 4px-before-8px 순서 때문에 8px가 이기는 같은 버그가 확인되었습니다. 수정 후 전체 생성 렌더러와 실제 StyleSheet QA는 양쪽 CSS 모드에서 4px만 선택하여 유효 4px를 확인했습니다. 이 기록은 당시의 네이티브 QA이지 새 브라우저 computed-style 측정이 아닙니다.캡처·평가·레이어
this/arguments의미·평가 횟수와 순서를 지킵니다. 알 수 없는 별칭은 값으로 남습니다.rest,style,className및 가린 바인딩과 충돌하지 않습니다. 원래 semantic binding ID와 공개 export/live binding을 보존합니다. 나중에 호출되는 캡처와 즉시 실행의 TDZ를 구분합니다.globalCss에 둡니다.||는 falsy,??는 nullish,&&는 원래 JS 조건을 따릅니다. 전역undefined/void 0/null과 가려진undefined를 구별합니다. 숫자와 callback preparation은 호출 위치의 라이브러리 문맥을 사용합니다.기존 공개 WASM/SSR 기록의 예로 namespace CSS prop은
<span title="child" class="padding-0-4px--255 color-0-blue--255 c-1-Child"></span>을 반환했고, Emotion 바인딩 콜백은<div class="c-1-Choice padding-0-3px--255 line-height-0-2--255"></div>을 반환했습니다. 이는 당시 debug 이름의 실제 기록이며 현재 head의 클래스 문자열을 고정하는 계약이 아닙니다.새로 생기는 오류
이번 timeout/커버리지 마무리로 새 오류 종류나 허용 정책을 추가하지 않습니다. 합성 기능이 새로 읽는 경로에서도 기존의
파일:줄:열, 문제 코드, 이유와 필요한 조건을 담는 located refusal 및 오류 우선순위를 유지합니다.@layer, CSS-wide 예약어/잘못된 레이어 이름, 레이어 순서 문장은 거부합니다. 이름 있는 블록을 사용하고 순서는globalCss에 선언해야 합니다. 예:@layer inherit는 유효한 dot-separated CSS identifier가 필요하다는 위치 있는 오류입니다.undefined를 알 수 없는 전체 규칙으로 쓰거나 namespace styled의 CSS prop이 기존 합성 overlap 계약을 위반하면 원래 위치의 오류를 유지합니다. standalone CSS API의 런타임 값도 정적인 값인 척 실행하지 않습니다.남는 한계
bacd1351/58de8430에서import { Dyn } from '@/Base'; export const Retargeted = Dyn.withComponent('a')가 양쪽 CSS 모드 모두 원문 그대로, styles 0, dependencies [], css_file/map None임을 확인했습니다. resolver 호출은 각각 0회와 package-barrel 선행 조회 1회이며, 후자는 retarget 성공이 아닙니다. 기존 공개 전체 모듈 실행은 남은 호출의 TypeError를 기록했습니다.styled(tag, styles)의 공개 객체 계약을 확장하지 않습니다. 내보낸 styled 마커의 기존 정책을 유지합니다.검증
최신 Linux CI: 40083409496, head
51295a32, 첫 시도 완료.publish,benchmark,landing-next-e2e,vinext-rsc-css-e2e,release-compat,react-18,webpack-extends-theme모두 success입니다. PR 이벤트의release/deploy-pages는 의도적으로 skipped이며, 실패는 아래 승인된wasm-size뿐입니다. job/workflow 재실행은 없었습니다.--fail-under 100: 100.00%, 19,872 / 19,872 줄. extractor 8,098 passed / 0 failed, 74.40초에 완료했습니다. 추가 커버리지 수정 커밋은 필요하지 않았습니다.All files | 100.00 | 100.00 |(함수/줄). 별도 bun-plugin preload-race 10 pass / 0 fail. 로컬 Vite 868과 CI 867은 관측된 실행 개수이며 같은 수치라고 바꿔 쓰지 않습니다.241d7cfb와 동일). 이전 8,073개 extractor 테스트는 58.71초, 8,098개는 기존 run40071121185의 두 시도에서 각각 약 60.02초에 timeout되어 커버리지를 측정하지 못했으며, 이번 Linux 실측 74.40초로 완료했습니다. 이는 빌드 성능 면제나 테스트 삭제가 아닙니다.eab71094의 두 proven-unreachable arm은 admission guard와 caller chain으로 도달 불가를 증명한 뒤 출력·오류·우선순위를 유지하는 최소 재구조화로 접었고, 양쪽 guard의 허용/거부 입력은 실제 테스트로 보강했습니다. 제외·panic·unreachable·expect·새 런타임 분기는 추가하지 않았습니다.bun install, WASM 포함 루트 build,verify:dist와 정상 전체 커밋 훅이 통과했습니다. Bun 1.4.4, Rust 1.99.1, jobs 2/default stack, 실행 전 메모리 7 GiB·C: 25 GiB 최소 가드를 적용했습니다. 훅 Rust 9,328 pass / 0 fail, root 6,249/0, Vite 868/0, 양쪽 Bun All files 함수/줄 100.00/100.00입니다. 최초 훅은 Windows CRLF lint 1건으로 테스트 전에 멈췄고 해당 JSON 줄 포맷만 고친 새 정상 시도가 통과했습니다. hook bypass는 없었습니다.커밋
51295a32는package.json한 파일의 timeout 한 줄만 바꾸고 정상 푸시 한 번으로 전달했습니다. 기존 merge·coverage·중립적 이름 정리 이력은 그대로이며 force-push, amend, rebase, merge/승인/종료/draft 변경은 하지 않았습니다.