콘텐츠로 이동

LocalFileTransport — @gj-kit/expo-media

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

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 조건을 함께 확인하세요.

  • 패키지: @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-guarduploadAsync 문자열의 재등장을 src/** 전역에서 정적 차단한다.