콘텐츠로 이동

MediaMetadata — @gj-kit/expo-media

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

import { MediaMetadata } from '@gj-kit/expo-media';
/**
* EXIF에서 유도한 촬영 메타데이터. `capturedAt`은 ISO 타임스탬프이며, EXIF 벽시계는
* **기기 로컬 타임존**으로 해석한다(§7 하드닝 11 — 근거는 `metadata.ts`에 원문 그대로 있다).
*
* ⚠ **필드명은 전신 그대로다.** 초안의 `geoPoint → location` 리네임은 **철회**했다(G5 확정).
* 이 객체는 `api.completeUpload({ photo })`로 **호스트 백엔드에 그대로 전달**된다
* (전신 uploader.ts:442). 리네임의 파손은 타입에 잡히지 않는다:
* · 호스트 대입 지점 `kit.ts:40-44`가 `completeUpload({...input})`을 zod 파생 타입에 넘긴다.
* · 타깃은 `packages/shared/src/index.ts:105-108` `photoMetadataSchema = { capturedAt?, geoPoint? }`.
* · `{capturedAt?, location?}` → `{capturedAt?, geoPoint?}` 대입은 공통 프로퍼티 `capturedAt`이
* 있어 **weak type 검사를 통과**하고, 변수 전달이라 초과 프로퍼티 검사도 걸리지 않는다.
* · 런타임에서는 서버 zod가 non-strict라 미지의 `location` 키를 **조용히 스트립**한다.
* 즉 컴파일도 테스트도 통과하고 위치정보만 사라지는 §6.1의 전형적 "조용히 깨지는" 클래스이며,
* 얻는 것은 명명 취향뿐이었다.
*
* ⚠ 초안의 `width`/`height`는 **삭제**했다. 전신 EXIF 파서는 `PixelXDimension`/`PixelYDimension`을
* 읽지 않으므로(photoMetadata.ts 전문에 `Pixel`·`width`·`height` 0건 — grep 실측) 영구 `undefined`인
* 죽은 필드였고, `MediaUploadCompletion`에 이미 최상위 `width`/`height`(피커 자산 치수,
* uploader.ts:749-756)가 있어 의미도 중복이다.
*/
type MediaMetadata = {
readonly capturedAt?: string | undefined;
readonly geoPoint?: GeoPoint | undefined;
};

이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.

  • 패키지: @gj-kit/expo-media
  • 버전: 0.6.1
  • 공개 entry: .
  • 소스: GitHub

EXIF에서 유도한 촬영 메타데이터. capturedAt은 ISO 타임스탬프이며, EXIF 벽시계는 기기 로컬 타임존으로 해석한다(§7 하드닝 11 — 근거는 metadata.ts에 원문 그대로 있다).

필드명은 전신 그대로다. 초안의 geoPoint → location 리네임은 철회했다(G5 확정). 이 객체는 api.completeUpload({ photo })호스트 백엔드에 그대로 전달된다 (전신 uploader.ts:442). 리네임의 파손은 타입에 잡히지 않는다: · 호스트 대입 지점 kit.ts:40-44completeUpload({...input})을 zod 파생 타입에 넘긴다. · 타깃은 packages/shared/src/index.ts:105-108 photoMetadataSchema = { capturedAt?, geoPoint? }. · {capturedAt?, location?}{capturedAt?, geoPoint?} 대입은 공통 프로퍼티 capturedAt이 있어 weak type 검사를 통과하고, 변수 전달이라 초과 프로퍼티 검사도 걸리지 않는다. · 런타임에서는 서버 zod가 non-strict라 미지의 location 키를 조용히 스트립한다. 즉 컴파일도 테스트도 통과하고 위치정보만 사라지는 §6.1의 전형적 “조용히 깨지는” 클래스이며, 얻는 것은 명명 취향뿐이었다.

⚠ 초안의 width/height삭제했다. 전신 EXIF 파서는 PixelXDimension/PixelYDimension을 읽지 않으므로(photoMetadata.ts 전문에 Pixel·width·height 0건 — grep 실측) 영구 undefined인 죽은 필드였고, MediaUploadCompletion에 이미 최상위 width/height(피커 자산 치수, uploader.ts:749-756)가 있어 의미도 중복이다.