Skip to content

[cli] 컨트롤러 템플릿이 공개되지 않은 RouteContext 타입을 가져옴 #692

Description

@kang-heewon

Problem

croco create domaincroco make controller가 생성하는 컨트롤러가 @croco/transports-http에서 RouteContext를 import하지만, 해당 패키지는 이 타입을 export하지 않습니다. 새로 생성한 코드가 사용자 수정 없이 바로 typecheck에 실패할 수 있습니다.

Evidence

  • packages/cli/src/commands/createDomain.ts:129-163의 컨트롤러 템플릿이 type { RouteContext }@croco/transports-http에서 import하고 메서드 인자로 사용합니다.
  • packages/cli/src/commands/makeController.ts:47-80도 같은 import와 타입 사용을 생성합니다.
  • packages/transports-http/src/index.ts:19-38CrocoHttpContext 등은 export하지만 RouteContext는 export하지 않습니다.
  • RouteContext는 CLI 템플릿 외에 실제 transports-http export로 존재하지 않습니다.

Desired Outcome

CLI가 생성한 컨트롤러는 현재 공개 API만 사용해야 하며, 생성 직후 pnpm typecheck를 통과해야 합니다.

Suggested Approach

  • 템플릿이 실제 공개 타입인 CrocoHttpContext 또는 현재 라우트 핸들러 계약에 맞는 타입을 사용하도록 정리합니다.
  • RouteContext라는 이름이 필요하다면 @croco/transports-http의 공개 export와 문서/테스트까지 함께 맞춥니다.
  • createDomainmakeController 템플릿이 같은 소스 계약을 공유하도록 중복을 줄입니다.

Acceptance Criteria

  • croco create domaincroco make controller 결과물이 비공개/미존재 타입을 import하지 않습니다.
  • 생성된 컨트롤러 템플릿에 대한 스냅샷 또는 골든 테스트가 실패 모드를 잠급니다.
  • @croco/transports-http의 공개 타입 계약과 CLI 템플릿이 일치합니다.

Validation

  • pnpm test --filter=@croco/cli
  • pnpm typecheck --filter=@croco/cli
  • 가능하면 임시 프로젝트에서 생성 결과 tsc --noEmit 스모크 테스트

Metadata

Metadata

Assignees

Labels

P1Priority 1 issuebugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions