Skip to content

chore: 릴리즈 — CodeQL 보안 수정 + jest 30 / TypeScript 6 마이그레이션 - #199

Merged
chanwoo7 merged 7 commits into
mainfrom
develop
Aug 22, 2026
Merged

chore: 릴리즈 — CodeQL 보안 수정 + jest 30 / TypeScript 6 마이그레이션#199
chanwoo7 merged 7 commits into
mainfrom
develop

Conversation

@chanwoo7

@chanwoo7 chanwoo7 commented Aug 22, 2026

Copy link
Copy Markdown
Member

릴리즈 개요

CodeQL 보안 수정 1건과 개발 도구 메이저 마이그레이션 2건을 릴리즈합니다.
develop → main이며, 포함된 변경은 PR #196 / #197 / #198 세 건입니다.
런타임 동작 변경은 #196의 쿼리 키 필터링뿐이고, 나머지는 개발 의존성입니다.

포함 변경

이 릴리즈로 이슈 #58, #60이 자동 종료됩니다.

검증

Summary by CodeRabbit

  • 버그 수정

    • URL 쿼리 처리 시 잠재적으로 위험한 키를 제외해 보안을 강화했습니다.
  • 개선 사항

    • 최신 개발 도구 및 타입 검사 환경으로 업데이트했습니다.
    • 빌드 설정을 정리해 TypeScript 프로젝트의 빌드 안정성을 높였습니다.
    • 생성된 빌드 정보 파일이 버전 관리 대상에서 제외됩니다.

CodeQL js/remote-property-injection(high) 3건 반영. toQueryParams가
사용자 쿼리 문자열의 키를 그대로 객체 속성으로 써서 __proto__ 등
위험 키가 속성 이름으로 유입될 수 있었다.

- __proto__/constructor/prototype 키는 변환에서 제외
- CodeQL이 sanitizer로 인식하도록 Set이 아닌 명시적 키 비교 사용
- 회귀 테스트 1건 추가
fix(common): 쿼리 키의 프로토타입 오염 위험 속성 쓰기 차단
보류 사유였던 실DB 테스트 인프라 이관이 완료되어(184 suites 전부
testcontainers) 수행 조건을 충족했다. 이슈는 ts-jest 30 동반 필요를
전제했지만 ts-jest 29.4.x가 jest ^30을 peer로 지원해 bump 불필요.

- jest ^29 → ^30 (30.4.1), @types/jest ^29 → ^30
- ts-jest는 ^29 유지 (peer: jest ^29 || ^30)
- 코드/설정 변경 없이 전체 스위트 통과 (1574 tests / 184 suites)
chore: jest 29 → 30 마이그레이션
TS 6가 출력 레이아웃 기준 디렉터리 명시를 요구(TS5011)해 보류했던
마이그레이션. tsc --noEmit·전체 테스트는 무변경 통과라 실제 조치는
빌드 설정 명시뿐이었다.

- typescript ^5.7.3 → ^6.0.3
- typescript-eslint ^8.59.3 → ^8.67.0 (TS <6.1 peer 지원 버전)
- tsconfig.build.json에 rootDir ./src 명시 — 기존 공통 소스 디렉터리와
  동일해 dist 산출 구조 불변
- 빌드 부산물 *.tsbuildinfo gitignore 추가 (incremental 활성 상태)
chore: TypeScript 5.9 → 6.0 마이그레이션
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5778c566-298c-4cbc-9b9f-c668844a9909

📥 Commits

Reviewing files that changed from the base of the PR and between 77eaa83 and 3ef2a5c.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (5)
  • .gitignore
  • package.json
  • src/common/utils/url-query.spec.ts
  • src/common/utils/url-query.ts
  • tsconfig.build.json

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

toQueryParams가 프로토타입 오염에 사용될 수 있는 키를 제외합니다. 관련 테스트를 추가했습니다. TypeScript 빌드 설정과 개발 의존성 버전을 업데이트하고 빌드 정보 파일 무시 규칙을 추가했습니다.

Changes

쿼리 키 안전성

Layer / File(s) Summary
예약 키 필터링과 검증
src/common/utils/url-query.ts, src/common/utils/url-query.spec.ts
toQueryParams__proto__, constructor, prototype 키를 제외합니다. 테스트는 safe 키만 결과에 포함되는지 검증합니다.

개발 도구 설정

Layer / File(s) Summary
빌드 및 의존성 설정
tsconfig.build.json, .gitignore, package.json
빌드 rootDir./src로 설정하고 *.tsbuildinfo를 무시합니다. Jest, @types/jest, TypeScript, typescript-eslint 버전을 업데이트했습니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 3ef2a

The release filters unsafe query keys and updates development tooling/build configuration without a demonstrated regression; validation and build checks pass, so no actionable merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목은 CodeQL 보안 수정과 Jest 30 및 TypeScript 6 마이그레이션이라는 주요 변경 내용을 간결하게 설명합니다.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. (3 skipped: 3 unsupported.)
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

🧹 knip — dead-code 리포트

요약 항목 없음
전체 리포트
(knip 출력 없음 — 이슈 0이거나 실행 실패)

청소 후보(오탐 가능) · 기준 docs/guide/architecture-conventions.md

@github-actions

Copy link
Copy Markdown

🩺 NestJS Doctor — 89/100 (Good)

진단 279건 (error 0).

Category error warning info
architecture 0 0 13
correctness 0 126 0
performance 0 24 17
schema 0 0 86
security 0 13 0
architecture / security 상위 항목
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal type 'IAuditLogRepository'.
  • warning security/security/no-exposed-env-vars: Direct 'process.env.NODE_ENV' access in 'AuthController'. Use ConfigService instead.
  • warning security/security/require-guards-on-endpoints: Endpoint 'start' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'callback' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'refresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'logout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerLogin' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerRefresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerLogout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'devIssueToken' has no @UseGuards() at class or method level.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal module '@/features/conversation/repositories/conversation.repository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal type 'ConversationRepository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal module '@/features/order/repositories/order.repository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal type 'OrderRepository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal module '@/features/product/repositories/product.repository'.

오탐 포함 가능 · 기준 docs/guide/architecture-conventions.md

@codecov

codecov Bot commented Aug 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

Copy link
Copy Markdown

Coverage report

St.
Category Percentage Covered / Total
🟢 Statements 97.61% 4772/4889
🟢 Branches 93.96% 1928/2052
🟢 Functions 95.99% 933/972
🟢 Lines 98.21% 4339/4418

Test suite run success

1574 tests passing in 184 suites.

Report generated by 🧪jest coverage report action from 3ef2a5c

@chanwoo7
chanwoo7 merged commit d3e4d49 into main Aug 22, 2026
15 checks passed
@chanwoo7
chanwoo7 deleted the develop branch August 22, 2026 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant