Skip to content

@kaiord/core


@kaiord/core / compareKRDs

Function: compareKRDs() ​

compareKRDs(krd1, krd2, toleranceChecker, logger): object[]

Defined in: packages/core/src/application/round-trip/compare-krds.ts:12

Parameters ​

krd1 ​

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

extensions.health.weight.weightKilograms ​

number = ...

extensions.structured_workout? ​

unknown = ...

laps? ​

object[] = ...

metadata ​

{ created: string; manufacturer?: string; product?: string; serialNumber?: string; sport?: string; subSport?: string; } = krdMetadataSchema

metadata.created ​

string = ...

metadata.manufacturer? ​

string = ...

metadata.product? ​

string = ...

metadata.serialNumber? ​

string = ...

metadata.sport? ​

string = ...

See

sportSchema for known sport values. Accepts custom strings for forward compatibility.

Optional at the metadata level because health-metric KRD types (sleep, weight, HRV, daily wellness, body composition, stress) have no associated sport. A conditional refinement on krdSchema still requires sport for the three legacy workout/activity/course types so v1.x consumers see no change for those.

metadata.subSport? ​

string = ...

records? ​

object[] = ...

sessions? ​

object[] = ...

type ​

"structured_workout" | "recorded_activity" | "course" | "sleep_record" | "weight_measurement" | "hrv_summary" | "daily_wellness" | "body_composition" | "stress_episode" = fileTypeSchema

version ​

string = ...

krd2 ​

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

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 = healthVersionSchema

extensions.health.weight.weightKilograms ​

number = ...

extensions.structured_workout? ​

unknown = ...

laps? ​

object[] = ...

metadata ​

{ created: string; manufacturer?: string; product?: string; serialNumber?: string; sport?: string; subSport?: string; } = krdMetadataSchema

metadata.created ​

string = ...

metadata.manufacturer? ​

string = ...

metadata.product? ​

string = ...

metadata.serialNumber? ​

string = ...

metadata.sport? ​

string = ...

See

sportSchema for known sport values. Accepts custom strings for forward compatibility.

Optional at the metadata level because health-metric KRD types (sleep, weight, HRV, daily wellness, body composition, stress) have no associated sport. A conditional refinement on krdSchema still requires sport for the three legacy workout/activity/course types so v1.x consumers see no change for those.

metadata.subSport? ​

string = ...

records? ​

object[] = ...

sessions? ​

object[] = ...

type ​

"structured_workout" | "recorded_activity" | "course" | "sleep_record" | "weight_measurement" | "hrv_summary" | "daily_wellness" | "body_composition" | "stress_episode" = fileTypeSchema

version ​

string = ...

toleranceChecker ​

ToleranceChecker

logger ​

Logger

Returns ​

object[]