@kaiord/fit / encodeBodyCompositionFit
Function: encodeBodyCompositionFit()
encodeBodyCompositionFit(
krd,logger?):Uint8Array
Defined in: fit/src/adapters/garmin-fitsdk.ts:52
Converts a KRD carrying weight and/or body composition into real FIT file bytes (a weight_scale/mesgNum-30 message) ready to POST to Garmin's upload endpoint. Emits weight_scale, not body_composition (mesgNum 41), which is absent from the SDK Profile and would throw at the Encoder.
Parameters
krd
events?
object[]
extensions?
{[key: string]: unknown; course?: unknown; course_points?: unknown; fit?: unknown; health?: {[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: number; bmi?: number; bodyFatPercent?: number; bodyWaterPercent?: number; boneMassKilograms?: number; externalId?: string; kaiordRecordId?: string; kind: "bodyComposition"; leanMassKilograms?: number; measuredAt: string; sourceBridgeId?: string; version: string; visceralFatRating?: number; }; daily?: { activeCalories: number; date: string; externalId?: string; floorsClimbed?: number; intensityMinutes: { moderate: number; vigorous: number; }; kaiordRecordId?: string; kind: "daily"; restingCalories: number; sourceBridgeId?: string; steps: number; version: string; }; hrv?: { externalId?: string; kaiordRecordId?: string; kind: "hrv"; measuredAt: string; measurementWindow: "overnight" | "spot"; rMSSD: number; score?: number; sourceBridgeId?: string; version: string; }; sleep?: { endTime: string; externalId?: string; kaiordRecordId?: string; kind: "sleep"; restingHeartRate?: number; score?: number; sourceBridgeId?: string; stages: object[]; startTime: string; totalDurationSeconds: number; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: string; kaiordRecordId?: string; kind: "stress"; peakLevel: number; sourceBridgeId?: string; startTime: string; version: string; }; weight?: { externalId?: string; kaiordRecordId?: string; kind: "weight"; measuredAt: string; sourceBridgeId?: string; version: string; weightKilograms: number; }; }; structured_workout?: unknown; }
extensions.course?
unknown
extensions.course_points?
unknown
extensions.fit?
unknown
extensions.health?
{[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: number; bmi?: number; bodyFatPercent?: number; bodyWaterPercent?: number; boneMassKilograms?: number; externalId?: string; kaiordRecordId?: string; kind: "bodyComposition"; leanMassKilograms?: number; measuredAt: string; sourceBridgeId?: string; version: string; visceralFatRating?: number; }; daily?: { activeCalories: number; date: string; externalId?: string; floorsClimbed?: number; intensityMinutes: { moderate: number; vigorous: number; }; kaiordRecordId?: string; kind: "daily"; restingCalories: number; sourceBridgeId?: string; steps: number; version: string; }; hrv?: { externalId?: string; kaiordRecordId?: string; kind: "hrv"; measuredAt: string; measurementWindow: "overnight" | "spot"; rMSSD: number; score?: number; sourceBridgeId?: string; version: string; }; sleep?: { endTime: string; externalId?: string; kaiordRecordId?: string; kind: "sleep"; restingHeartRate?: number; score?: number; sourceBridgeId?: string; stages: object[]; startTime: string; totalDurationSeconds: number; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: string; kaiordRecordId?: string; kind: "stress"; peakLevel: number; sourceBridgeId?: string; startTime: string; version: string; }; weight?: { externalId?: string; kaiordRecordId?: string; kind: "weight"; measuredAt: string; sourceBridgeId?: string; version: string; weightKilograms: number; }; }
extensions.health.bodyComposition?
{ basalMetabolicRateKcal?: number; bmi?: number; bodyFatPercent?: number; bodyWaterPercent?: number; boneMassKilograms?: number; externalId?: string; kaiordRecordId?: string; kind: "bodyComposition"; leanMassKilograms?: number; measuredAt: string; sourceBridgeId?: string; version: string; visceralFatRating?: number; }
extensions.health.bodyComposition.basalMetabolicRateKcal?
number
extensions.health.bodyComposition.bmi?
number
extensions.health.bodyComposition.bodyFatPercent?
number
extensions.health.bodyComposition.bodyWaterPercent?
number
extensions.health.bodyComposition.boneMassKilograms?
number
extensions.health.bodyComposition.externalId?
string
extensions.health.bodyComposition.kaiordRecordId?
string
extensions.health.bodyComposition.kind
"bodyComposition"
extensions.health.bodyComposition.leanMassKilograms?
number
extensions.health.bodyComposition.measuredAt
string
extensions.health.bodyComposition.sourceBridgeId?
string
extensions.health.bodyComposition.version
string
extensions.health.bodyComposition.visceralFatRating?
number
extensions.health.daily?
{ activeCalories: number; date: string; externalId?: string; floorsClimbed?: number; intensityMinutes: { moderate: number; vigorous: number; }; kaiordRecordId?: string; kind: "daily"; restingCalories: number; sourceBridgeId?: string; steps: number; version: string; }
extensions.health.daily.activeCalories
number
extensions.health.daily.date
string
extensions.health.daily.externalId?
string
extensions.health.daily.floorsClimbed?
number
extensions.health.daily.intensityMinutes
{ moderate: number; vigorous: number; }
extensions.health.daily.intensityMinutes.moderate
number
extensions.health.daily.intensityMinutes.vigorous
number
extensions.health.daily.kaiordRecordId?
string
extensions.health.daily.kind
"daily"
extensions.health.daily.restingCalories
number
extensions.health.daily.sourceBridgeId?
string
extensions.health.daily.steps
number
extensions.health.daily.version
string
extensions.health.hrv?
{ externalId?: string; kaiordRecordId?: string; kind: "hrv"; measuredAt: string; measurementWindow: "overnight" | "spot"; rMSSD: number; score?: number; sourceBridgeId?: string; version: string; }
extensions.health.hrv.externalId?
string
extensions.health.hrv.kaiordRecordId?
string
extensions.health.hrv.kind
"hrv"
extensions.health.hrv.measuredAt
string
extensions.health.hrv.measurementWindow
"overnight" | "spot"
extensions.health.hrv.rMSSD
number
extensions.health.hrv.score?
number
extensions.health.hrv.sourceBridgeId?
string
extensions.health.hrv.version
string
extensions.health.sleep?
{ endTime: string; externalId?: string; kaiordRecordId?: string; kind: "sleep"; restingHeartRate?: number; score?: number; sourceBridgeId?: string; stages: object[]; startTime: string; totalDurationSeconds: number; version: string; }
extensions.health.sleep.endTime
string
extensions.health.sleep.externalId?
string
extensions.health.sleep.kaiordRecordId?
string
extensions.health.sleep.kind
"sleep"
extensions.health.sleep.restingHeartRate?
number
extensions.health.sleep.score?
number
extensions.health.sleep.sourceBridgeId?
string
extensions.health.sleep.stages
object[]
extensions.health.sleep.startTime
string
extensions.health.sleep.totalDurationSeconds
number
extensions.health.sleep.version
string
extensions.health.stress?
{ averageLevel: number; endTime: string; externalId?: string; kaiordRecordId?: string; kind: "stress"; peakLevel: number; sourceBridgeId?: string; startTime: string; version: string; }
extensions.health.stress.averageLevel
number
extensions.health.stress.endTime
string
extensions.health.stress.externalId?
string
extensions.health.stress.kaiordRecordId?
string
extensions.health.stress.kind
"stress"
extensions.health.stress.peakLevel
number
extensions.health.stress.sourceBridgeId?
string
extensions.health.stress.startTime
string
extensions.health.stress.version
string
extensions.health.weight?
{ externalId?: string; kaiordRecordId?: string; kind: "weight"; measuredAt: string; sourceBridgeId?: string; version: string; weightKilograms: number; }
extensions.health.weight.externalId?
string
extensions.health.weight.kaiordRecordId?
string
extensions.health.weight.kind
"weight"
extensions.health.weight.measuredAt
string
extensions.health.weight.sourceBridgeId?
string
extensions.health.weight.version
string
extensions.health.weight.weightKilograms
number
extensions.structured_workout?
unknown
laps?
object[]
metadata
{ created: string; manufacturer?: string; product?: string; serialNumber?: string; sport?: string; subSport?: string; }
metadata.created
string
metadata.manufacturer?
string
metadata.product?
string
metadata.serialNumber?
string
metadata.sport?
string
metadata.subSport?
string
records?
object[]
sessions?
object[]
type
"body_composition" | "course" | "daily_wellness" | "hrv_summary" | "recorded_activity" | "sleep_record" | "stress_episode" | "structured_workout" | "weight_measurement"
version
string
logger?
Logger
Returns
Uint8Array