toPickedAsset — @gj-kit/expo-media
@gj-kit/expo-media에서 공개하는 function입니다. package version 0.6.1의 release declaration을 그대로 표시합니다.
검증된 import 예제
섹션 제목: “검증된 import 예제”import { toPickedAsset } from '@gj-kit/expo-media';시그니처, 매개변수, 반환 타입
섹션 제목: “시그니처, 매개변수, 반환 타입”/** * `DeviceAsset`의 정체성(id·filename·치수)과 resolve 결과(바이트 위치·실측 크기·EXIF)를 합쳐 * 피커 업로드 경로가 받는 형태를 만든다. * * ⚠ **`exif: resolved.exif ?? undefined` — null → undefined 정규화가 필수다.** * EOP(`exactOptionalPropertyTypes`) 하에서 `ResolvedDeviceAsset.exif`는 * `Readonly<Record<string, unknown>> | null`이고 `PickedAsset.exif`는 * `?: Readonly<Record<string, unknown>> | undefined`라 **null을 그대로 대입하면 TS2322**다 * (설계 문서 §5.4-④의 실측 확인). 전신은 `exif: null`을 그대로 흘렸다. * * ⚠ **`reportedSizeBytes`는 채우지 않는다.** 기기 경로에서 크기의 진실은 `verifiedSizeBytes` * (= 실제로 스트리밍될 캐시 사본을 stat한 값)뿐이다. 자칭 크기를 여기서 끼워 넣으면 * §7 하드닝 3이 세운 신뢰도 서열(verified > file-system stat > reported)이 무너지고, * Android 재인코딩 자산에서 서버가 업로드를 거절하던 그 사고가 그대로 재발한다. * * ⚠ **`assetId`를 반드시 채운다.** 소비자의 dedup 1차 키이기 때문이다(§3.3-⑥): * `assetId`가 없으면 dedup이 스테이징 사본 uri로 폴백하는데, 그 uri는 resolve마다 재생성되므로 * 같은 사진을 두 번 선택해도 dedup이 통과해버린다. */declare function toPickedAsset(asset: DeviceAsset, resolved: ResolvedDeviceAsset): ResolvedPickedAsset;이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.
Release context
섹션 제목: “Release context”- 패키지:
@gj-kit/expo-media - 버전:
0.6.1 - 공개 entry:
. - 소스: GitHub
구현 주석
섹션 제목: “구현 주석”DeviceAsset의 정체성(id·filename·치수)과 resolve 결과(바이트 위치·실측 크기·EXIF)를 합쳐
피커 업로드 경로가 받는 형태를 만든다.
⚠ exif: resolved.exif ?? undefined — null → undefined 정규화가 필수다.
EOP(exactOptionalPropertyTypes) 하에서 ResolvedDeviceAsset.exif는
Readonly<Record<string, unknown>> | null이고 PickedAsset.exif는
?: Readonly<Record<string, unknown>> | undefined라 null을 그대로 대입하면 TS2322다
(설계 문서 §5.4-④의 실측 확인). 전신은 exif: null을 그대로 흘렸다.
⚠ reportedSizeBytes는 채우지 않는다. 기기 경로에서 크기의 진실은 verifiedSizeBytes
(= 실제로 스트리밍될 캐시 사본을 stat한 값)뿐이다. 자칭 크기를 여기서 끼워 넣으면
§7 하드닝 3이 세운 신뢰도 서열(verified > file-system stat > reported)이 무너지고,
Android 재인코딩 자산에서 서버가 업로드를 거절하던 그 사고가 그대로 재발한다.
⚠ assetId를 반드시 채운다. 소비자의 dedup 1차 키이기 때문이다(§3.3-⑥):
assetId가 없으면 dedup이 스테이징 사본 uri로 폴백하는데, 그 uri는 resolve마다 재생성되므로
같은 사진을 두 번 선택해도 dedup이 통과해버린다.