mediaMetadataFromJpeg — @gj-kit/expo-media
@gj-kit/expo-media에서 공개하는 function입니다. package version 0.6.1의 release declaration을 그대로 표시합니다.
검증된 import 예제
섹션 제목: “검증된 import 예제”import { mediaMetadataFromJpeg } from '@gj-kit/expo-media';시그니처, 매개변수, 반환 타입
섹션 제목: “시그니처, 매개변수, 반환 타입”/** * 전신 `extractPhotoMetadataFromBlob(blob, fallbackExif, contentType)`(photoMetadata.ts:265-290). * 초안이 지웠던 인자 2개를 `options`로 **복원**한다(G6 · §7.1). **4규칙이 계약이다**: * ① 비-JPEG 스킵 — `(contentType ?? source.type)`이 'jpeg'/'jpg'를 포함하지 않으면 파싱하지 않고 * fallback을 그대로 반환한다. * ② **필드 단위 병합** — `parsed?.X ?? fallback?.X`. 객체 단위 폴백이 아니다. * capturedAt만 파싱되고 geoPoint는 fallback에서 오는 조합이 **정상 결과**다. * ③ 파싱 예외 시 fallback 반환 — throw 금지. 메타데이터 때문에 업로드가 죽어선 안 된다. * ④ ①②③ 이후에도 유효값이 없으면 `undefined`(빈 객체 금지 — `mediaMetadataFromExif`와 동일). * * ⚠ 인자를 지우면 웹 피커 경로(`fallbackExif: asset.exif`)에서 JPEG 파싱이 실패했을 때 피커가 준 * EXIF가 통째로 버려져 촬영시각·위치가 유실된다. 그 유실은 컴파일도 테스트도 통과한다. */declare function mediaMetadataFromJpeg(source: BinarySource, options?: { readonly fallbackExif?: ReadonlyExifRecord | null | undefined; readonly contentType?: MediaContentType | string | null | undefined;} | undefined): Promise<MediaMetadata | undefined>;이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.
Release context
섹션 제목: “Release context”- 패키지:
@gj-kit/expo-media - 버전:
0.6.1 - 공개 entry:
. - 소스: GitHub
구현 주석
섹션 제목: “구현 주석”전신 extractPhotoMetadataFromBlob(blob, fallbackExif, contentType)(photoMetadata.ts:265-290).
초안이 지웠던 인자 2개를 options로 복원한다(G6 · §7.1). 4규칙이 계약이다:
① 비-JPEG 스킵 — (contentType ?? source.type)이 ‘jpeg’/’jpg’를 포함하지 않으면 파싱하지 않고
fallback을 그대로 반환한다.
② 필드 단위 병합 — parsed?.X ?? fallback?.X. 객체 단위 폴백이 아니다.
capturedAt만 파싱되고 geoPoint는 fallback에서 오는 조합이 정상 결과다.
③ 파싱 예외 시 fallback 반환 — throw 금지. 메타데이터 때문에 업로드가 죽어선 안 된다.
④ ①②③ 이후에도 유효값이 없으면 undefined(빈 객체 금지 — mediaMetadataFromExif와 동일).
⚠ 인자를 지우면 웹 피커 경로(fallbackExif: asset.exif)에서 JPEG 파싱이 실패했을 때 피커가 준
EXIF가 통째로 버려져 촬영시각·위치가 유실된다. 그 유실은 컴파일도 테스트도 통과한다.