Skip to content

@kaiord/fit


@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