Core API
@byeolnaerim/typed-rx-http 기본 엔트리포인트의 공개 API입니다.
주요 exports
createHttpClient<Paths>(options)
| Name | Type | Default | Description |
|---|---|---|---|
baseUrl required | string | - | 요청 URL prefix. |
headerStore | HeaderStore | - | 공용 in-memory headers. |
headersProvider | HeadersProvider | - | 요청 시점에 계산되는 headers. 존재하면 HeaderStore 대신 사용합니다. |
dropAuthWhenCacheControl | boolean | true | Cache-Control과 Authorization이 함께 있을 때 Authorization을 제거합니다. |
onServer401 | () => void | Promise<void> | - | 서버 환경의 401 hook. |
defaultErrorMessage | DefaultErrorMessageResolver | - | 기본 에러 message resolver. |
callApi<R>(args)
단일 JSON 응답 HTTP Observable.
callApiStream<RChunk>(args)
ReadableStream의 NDJSON line을 RChunk로 emit하는 Observable.
uploadFile(args)
지정 URL로 File을 PUT하는 Observable helper.
createSSEObservable<R>(args)
브라우저 EventSource를 Observable로 감싸는 helper.
createHeaderStore(initial?)
| Name | Type | Default | Description |
|---|---|---|---|
initial | Record<string, string> | { Content-Type: application/json } | 초기 헤더 object. |
get
복사본 반환.
set
전체 교체.
merge
truthy value만 병합.
remove
단일 key 제거.
clear
전체 또는 지정 key 배열 제거.
createCsrCache<CacheName>()
callApiCsrCache
callApi 함수, ServiceArguments, CacheForService를 받아 브라우저 메모리 cache Observable을 반환합니다.
removeCsrCache
전달 문자열로 시작하는 모든 cache key를 제거합니다. 서버에서는 no-op입니다.
createSessionAuth(options)
| Name | Type | Default | Description |
|---|---|---|---|
headerStore required | HeaderStore | - | Authorization을 유지하는 store. |
onLoginChange | (loggedIn: boolean) => void | - | 외부 로그인 상태 side effect. |
tokenUrl | string | /api/auth/token | 현재 토큰 조회 endpoint. |
refreshUrl | string | /api/auth/token/refresh | 토큰 refresh endpoint. |
logoutUrl | string | /api/auth/logout | logout endpoint. |
formatAuthorization | (rawToken: string) => string | Bearer | Authorization header formatter. |
ensureToken$
헤더에 토큰이 없을 때 tokenUrl을 공유 요청으로 호출합니다.
refreshToken$
현재 auth header로 refreshUrl을 호출합니다.
logout$
동시 logout을 shareReplay로 공유합니다.
withSessionAuth
ensure → source → 401 refresh → retry/logout 흐름의 RxJS operator.
withEnsureToken
refresh 없이 ensure만 선행하는 RxJS operator.
Stream & utility exports
ndjsonStream<T>(body)
ReadableStream<Uint8Array>를 줄 단위 JSON Observable로 변환하고 unsubscribe 시 reader를 cancel합니다.
replacePathVariable(template, record)
{key}를 encodeURIComponent(value)로 치환하고 nullish 값은 placeholder를 남깁니다.
toQueryString(record)
scalar와 배열 query를 URL encode합니다. 배열은 key를 반복합니다.
stableStringify(obj)
cache key 생성을 위해 object key를 정렬해 stringify합니다.
joinUrl(baseUrl, path)
경계 slash를 정리해 URL을 결합합니다.