docs: say what a product must inject to use the V2 transport

RuntimeHttpContract는 슬롯 네 개를 명시한 주입 지점인데, 그 슬롯이 비어
있다는 사실과 비운 채 되돌리면 모든 요청이 실패한다는 사실이 코드 어디에도
없었다. V3는 설치된 feature 계약에서 오퍼레이션을 받으므로 이 슬롯과
무관하다는 것도 함께 적는다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
DongHyeonka
2026-09-16 18:58:36 +09:00
co-authored by Claude Opus 5
parent 7756856bb2
commit 5d9ad4f74a
2 changed files with 20 additions and 2 deletions
+15
View File
@@ -63,6 +63,21 @@ import {
} from "../contracts/query-invalidation.ts";
type HttpClientDependencies = Parameters<typeof createHttpClient>[0];
/**
* 제품이 V2 전송을 쓰려면 채워야 하는 슬롯 네 개.
*
* 이 템플릿은 넷 다 비워서 출하한다. 기본값인
* `contracts/api-operations.ts`의 `API_OPERATIONS`는 빈 객체이고
* `adapters/http/resource-mapper.ts`의 `mapOperationPayload`는 항상
* `MAPPING_INVARIANT_REJECTED`를 반환한다. 그래서 **이 레포 상태 그대로는
* V2로 어떤 오퍼레이션도 실행되지 않는다** — 그건 결함이 아니라 제품이
* 채우는 자리다.
*
* V2를 rollback/compatibility 경로로 쓰려는 제품은 이 네 슬롯을 주입해야
* 한다. 주입하지 않은 채 V3에서 되돌리면 모든 요청이 실패한다.
* V3(`createContractHttpExecutor`)는 설치된 feature 계약에서 오퍼레이션을
* 받으므로 이 슬롯과 무관하게 동작한다.
*/
export type RuntimeHttpContract = Pick<
HttpClientDependencies,
"getOperation" | "validatePayload" | "validateRequest" | "mapPayload"