PickedAsset — @gj-kit/expo-media
@gj-kit/expo-media에서 공개하는 type입니다. package version 0.6.1의 release declaration을 그대로 표시합니다.
검증된 import 예제
섹션 제목: “검증된 import 예제”import { PickedAsset } from '@gj-kit/expo-media';시그니처, 매개변수, 반환 타입
섹션 제목: “시그니처, 매개변수, 반환 타입”type PickedAsset = { readonly uri: string; /** * 기기 라이브러리 원본 식별자(iOS PhotoKit localIdentifier / Android MediaStore id). * 없을 수 있다(웹 File 드롭, 카메라 캡처). * * ⚠ **왜 필요한가**: 소비자의 dedup 1차 키다 — * `apps/mobile/src/photos/pendingPhotos.ts:43` * ``pickerAssetDedupKey = `asset:${asset.assetId ?? asset.uri}` `` * uri 폴백만 남으면 스테이징 사본 uri가 resolve마다 재생성되므로(§7 하드닝 2) 같은 사진을 * 두 번 선택했을 때 dedup이 통과해버린다. 전신은 `resolveDeviceAssetForUpload`가 * `assetId: asset.id`를 채워 device 자산과 picker 자산의 동일성을 유지했다 * — devicePhotoLibrary.ts:364. 새 설계에서는 `toPickedAsset`이 그 역할을 한다(§5.4-④). */ readonly assetId?: string | undefined; readonly fileName?: string | undefined; readonly mimeType?: string | undefined; readonly width?: number | undefined; readonly height?: number | undefined; /** * ⚠ 어댑터는 **원시값 그대로** 넘긴다. 네이티브는 ms, 웹은 s이며 정규화는 core가 한다 * (§7 하드닝 4 — 정규화 지점을 하나로 고정. 어댑터가 변환하면 이중 변환이 된다). * * 전신 사고: expo-image-picker 웹이 `HTMLVideoElement.duration`(초)을 그대로 전달해 * 20분 영상이 1200ms로 저장됐고, 어떤 길이 캡도 그것을 통과시켰다. */ readonly durationRaw?: number | undefined; readonly exif?: Readonly<Record<string, unknown>> | undefined; /** * 어댑터가 "실제로 스트리밍될 파일"을 stat해 확인한 크기. 있으면 최우선. * 전신의 뒷문 프로퍼티 `__photoKitVerifiedSizeBytes`를 정식 필드로 승격(§7 하드닝 3). */ readonly verifiedSizeBytes?: number | undefined; /** * ⚠ 신뢰 금지 — 최후 폴백이다(§7 하드닝 3). * Android가 `quality < 1`로 재인코딩할 때 `asset.fileSize`는 **원본** 크기를 보고하므로 * 스토리지가 실제로 받은 바이트와 어긋나 서버가 업로드를 거절한다. * 필드명이 곧 신뢰도다: `verifiedSizeBytes`(실측) > file-system stat > `reportedSizeBytes`(자칭). */ readonly reportedSizeBytes?: number | undefined;};이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.
Release context
섹션 제목: “Release context”- 패키지:
@gj-kit/expo-media - 버전:
0.6.1 - 공개 entry:
. - 소스: GitHub