LocalFileTransport — @gj-kit/expo-media
@gj-kit/expo-media에서 공개하는 interface입니다. package version 0.6.1의 release declaration을 그대로 표시합니다.
검증된 import 예제
섹션 제목: “검증된 import 예제”import { LocalFileTransport } from '@gj-kit/expo-media';시그니처, 매개변수, 반환 타입
섹션 제목: “시그니처, 매개변수, 반환 타입”/** * ⚠ **계약: 파일 바이트를 JS 힙으로 읽지 말 것.** 네이티브 스트리밍 업로드여야 한다. * * 근거(§7 하드닝 1): `FileSystem.uploadAsync`(레거시 URLSession 브리지)가 iOS 26에서 파일 기반 * 업로드를 **시작하는 중 프로세스를 종료시킨다** — promise가 reject될 기회조차 없으므로 * 재시도 로직도 에러 보고도 발화하지 않는다. 크래시 리포트에도 앱 코드 프레임이 남지 않아 * 원인 추적에만 수일이 걸렸다. * * expo 기본 어댑터는 `new File(uri).upload(url, { sessionType: 'foreground', * uploadType: BINARY_CONTENT })`를 쓴다. `hardening-guard`가 `uploadAsync` 문자열의 * 재등장을 `src/**` 전역에서 정적 차단한다. */interface LocalFileTransport { putLocalFile(input: PutRequest & { readonly uri: string; }): Promise<{ readonly status: number; }>;}이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.
Release context
섹션 제목: “Release context”- 패키지:
@gj-kit/expo-media - 버전:
0.6.1 - 공개 entry:
. - 소스: GitHub
구현 주석
섹션 제목: “구현 주석”⚠ 계약: 파일 바이트를 JS 힙으로 읽지 말 것. 네이티브 스트리밍 업로드여야 한다.
근거(§7 하드닝 1): FileSystem.uploadAsync(레거시 URLSession 브리지)가 iOS 26에서 파일 기반
업로드를 시작하는 중 프로세스를 종료시킨다 — promise가 reject될 기회조차 없으므로
재시도 로직도 에러 보고도 발화하지 않는다. 크래시 리포트에도 앱 코드 프레임이 남지 않아
원인 추적에만 수일이 걸렸다.
expo 기본 어댑터는 new File(uri).upload(url, { sessionType: 'foreground', uploadType: BINARY_CONTENT })를 쓴다. hardening-guard가 uploadAsync 문자열의
재등장을 src/** 전역에서 정적 차단한다.