WORKOUT_KINDS — @gj-kit/expo-workouts
@gj-kit/expo-workouts에서 공개하는 constant입니다. package version 0.1.1의 release declaration을 그대로 표시합니다.
검증된 import 예제
섹션 제목: “검증된 import 예제”import { WORKOUT_KINDS } from '@gj-kit/expo-workouts';시그니처, 매개변수, 반환 타입
섹션 제목: “시그니처, 매개변수, 반환 타입”WORKOUT_KINDS: readonly [ "running", "walking", "hiking", "cycling", "swimming", "rowing", "strength", "wheelchair", "other"]이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.
Release context
섹션 제목: “Release context”- 패키지:
@gj-kit/expo-workouts - 버전:
0.1.1 - 공개 entry:
. - 소스: GitHub
구현 주석
섹션 제목: “구현 주석”D11, as amended by the product owner on 2026-08-22 (the original D11 named five members: running | walking | hiking | cycling | other).
Anything the platform reports that is not one of the eight named kinds collapses to 'other';
the raw value survives under platformData (iOS only — see below). CLOSED for 1.x; a member may
still be added in 0.x as a MINOR, which breaks exhaustive switches.
Every member maps to a NON-DEPRECATED constant on BOTH platforms — the full table with raw
integers lives in activity.ts and is pinned by tests/fixtures/activity-vectors.json.
⚠ indoor is STORED on iOS and DERIVED on Android. Health Connect’s ExerciseSessionRecord has
no indoor field, so indoor survives an Android round-trip only for the four kinds that have a
constant PAIR (running, cycling, swimming, rowing). For walking, hiking, strength,
wheelchair and other it is written nowhere on Android and reads back undefined.
⚠ The escape hatch is asymmetric. On iOS an unmapped HKWorkoutActivityType arrives intact in
platformData.ios.activityTypeRaw. On Android the value is already destroyed before it reaches
us — Health Connect collapses any unmapped int to 0 on BOTH the read and the write IPC path —
so platformData.android.exerciseType reads 0 and 'other' is all the information that exists.