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:
co-authored by
Claude Opus 5
parent
7756856bb2
commit
5d9ad4f74a
@@ -23,8 +23,11 @@ export {
|
||||
export type { CredentialPatchOutcome } from "./http-contract-bridge.ts";
|
||||
/**
|
||||
* V2 legacy. operationId + `LegacyHttpInput`으로 호출하는 범용 클라이언트다.
|
||||
* 새 코드는 위의 V3 실행기를 쓴다. 남아 있는 이유는 계약이 아직 없는
|
||||
* 오퍼레이션을 위한 이행 경로이기 때문이다.
|
||||
* 새 코드는 위의 V3 실행기를 쓴다.
|
||||
*
|
||||
* 이 템플릿은 V2의 오퍼레이션 레지스트리와 payload 매퍼를 비워서 출하한다.
|
||||
* 제품이 `RuntimeHttpContract`(`src/bootstrap/runtime-adapters.ts`)의 네
|
||||
* 슬롯을 주입해야 동작한다 — 주입 없이 V3에서 되돌리면 모든 요청이 실패한다.
|
||||
*/
|
||||
export {
|
||||
createHttpClient,
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user