콘텐츠로 이동

createBrowserSaveTarget — @gj-kit/expo-media

@gj-kit/expo-media/web에서 공개하는 function입니다. package version 0.6.1의 release declaration을 그대로 표시합니다.

import { createBrowserSaveTarget } from '@gj-kit/expo-media/web';
/**
* 서빙 URL을 브라우저 다운로드로 저장하는 `BrowserSaveAdapter`(§5.6).
* `createMediaSaver({ target: { kind: 'browser-download', browser } })`에 꽂는다.
*
* ⚠ `document`/`fetch`는 **필수 주입**이다(§5.6 시그니처 · §6.1-⑬ "런타임 + 생성 차단").
* 옵셔널로 두고 `globalThis`로 폴백하면 네이티브·SSR에서도 **생성이 조용히 성공**해
* "웹 전용 API를 네이티브에서" 조합이 타입에서 걸리지 않는다 — ⑬이 막으려던 바로 그 결말이다.
* `dist/web.d.ts`의 DOM 각인(§2.4)이 무DOM 소비자에게서 이 두 필드를 지켜주는 것도
* **필드가 시그니처에 존재할 때만** 의미가 있다.
* 호출 시점 판정(§8.5의 `platform-unsupported`)은 내부 `createDirectBrowserSave`가 계속 맡는다 —
* 비네이티브 포크(`src/save/web.ts`)는 SSR에 `document`가 없어도 조립될 수 있어야 하기 때문이다.
*/
declare function createBrowserSaveTarget(input: {
readonly document: Document;
readonly fetch: typeof fetch;
}): BrowserSaveAdapter;

이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.

  • 패키지: @gj-kit/expo-media
  • 버전: 0.6.1
  • 공개 entry: ./web
  • 소스: GitHub

서빙 URL을 브라우저 다운로드로 저장하는 BrowserSaveAdapter(§5.6). createMediaSaver({ target: { kind: 'browser-download', browser } })에 꽂는다.

document/fetch필수 주입이다(§5.6 시그니처 · §6.1-⑬ “런타임 + 생성 차단”). 옵셔널로 두고 globalThis로 폴백하면 네이티브·SSR에서도 생성이 조용히 성공해 “웹 전용 API를 네이티브에서” 조합이 타입에서 걸리지 않는다 — ⑬이 막으려던 바로 그 결말이다. dist/web.d.ts의 DOM 각인(§2.4)이 무DOM 소비자에게서 이 두 필드를 지켜주는 것도 필드가 시그니처에 존재할 때만 의미가 있다. 호출 시점 판정(§8.5의 platform-unsupported)은 내부 createDirectBrowserSave가 계속 맡는다 — 비네이티브 포크(src/save/web.ts)는 SSR에 document가 없어도 조립될 수 있어야 하기 때문이다.