-
Notifications
You must be signed in to change notification settings - Fork 0
Patchlogr v0.1 TODO
- 리포지토리 생성
- 패키지 매니저 결정 (pnpm / yarn / npm)
- Node.js 버전 고정 (
.nvmrc) - TypeScript 설정 (
tsconfig.json) - ESLint / Prettier 설정
- 기본 CLI 엔트리 파일 생성 (
bin/patchlogr.ts) - 실행 명령 정의 (
patchlogr diff ...)
목표: “OpenAPI 3.0.x 문서를 안전하게 읽는다”
-
@apidevtools/swagger-parser설치 - JSON / YAML 파일 로딩 지원
-
$refdereference 처리 - OpenAPI 버전 검사
-
openapi필드 존재 여부 -
3.0.x아닌 경우 에러 처리
-
- invalid spec 에러 메시지 정리
✅ 결과물
→ loadOpenApi(filePath) → ResolvedOpenAPISpec
목표: “비교 가능한 표준 구조(Canonical Model) 생성”
-
CanonicalKey타입 정의 (METHOD path) -
CanonicalOperation인터페이스 정의 -
CanonicalSpec(operation map) 정의
-
paths순회 - HTTP method 필터링 (
get/post/put/patch/delete) - Canonical Key 생성
- operationId 추출
- tags / security 추출
- parameter 종류 구분 (path / query / header / cookie)
- parameter 정렬 (name + in 기준)
- required / schema fingerprint 추출
- requestBody 존재 여부 확인
- content-type 순회
- schema fingerprint 생성
- content-type 정렬
- status code 순회
- content-type 순회
- schema fingerprint 생성
- status code 정렬
-
schema → fingerprint 문자열 변환 함수
-
포함 요소
- type
- format
- required
- enum
- properties key 목록
-
순서 무관하게 deterministic 하게 생성
✅ 결과물
→ canonicalize(openApiSpec) → CanonicalSpec
목표: “두 CanonicalSpec의 차이를 구조적으로 계산”
-
addedOperations 계산
-
removedOperations 계산
-
modifiedOperations 계산
- parameters diff
- requestBody diff
- responses diff
- metadata diff
-
변경 이유(reason) 구조화
✅ 결과물
→ diffSpecs(oldSpec, newSpec) → DiffResult
목표: “깨질 수 있는 변경을 정확히 분류”
-
operation 삭제 → breaking
-
method 삭제 → breaking
-
path parameter 변경 → breaking
-
required 필드 추가 → breaking
-
필드 삭제 → breaking
-
type / format 변경 → breaking
-
enum 값 제거 → breaking
-
response status 제거 → breaking
-
breaking flag 계산
-
breaking 이유(reason) 수집
목표: “이번 변경이 major / minor / patch 중 무엇인지 자동 산출”
- MAJOR 조건 매핑
- MINOR 조건 매핑
- PATCH 조건 매핑
- NONE 조건 처리
- major > minor > patch > none
- 이유(reason) 목록 정리
✅ 결과물
→ calculateVersionBump(diffResult) → VersioningResult
목표: “머신이 읽을 수 있는 결과물 생성”
-
summary 계산
- added / removed / modified / breaking count
-
versioning 결과 포함
-
JSON 파일 출력 옵션
-
stdout 출력 옵션
목표: “사람이 읽을 수 있는 리뷰 결과”
- 변경 요약 섹션
- 권장 버전 bump 표시
- Breaking Changes 섹션
- Operation별 변경 요약
- Markdown 템플릿 정리
-
CLI 옵션 정의
--base--head--out
-
exit code 규칙
- breaking 있으면
exit 1(옵션)
- breaking 있으면
-
help / usage 문구 작성
- canonicalization 단위 테스트
- diff 엔진 테스트
- versioning 판정 테스트
- 실제 OAS 샘플 테스트
- deterministic output 검증
- README 작성
- 사용 예제
- versioning 규칙 설명
- 한계점 명시