UNPKG

trainingpeaks-sdk

Version:
71 lines (70 loc) 3.31 kB
import { WorkoutStructureBuilder } from '../../domain/builders/workout-structure-builder.js'; import { WorkoutStructureElementBuilder } from '../../domain/builders/workout-structure-element-builder.js'; import { ElementType } from '../../types/index.js'; import { createCooldownStep, createIntervalStep, createRecoveryStep, createSteadyStep, createWarmupStep, } from './workout-steps.js'; export const createIntervalWorkout = (warmupMinutes = 10, intervalMinutes = 5, intervalIntensity = 120, recoveryMinutes = 3, intervals = 6, cooldownMinutes = 10) => { const builder = new WorkoutStructureBuilder(); const warmupElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createWarmupStep(warmupMinutes)) .build(); builder.addElement(warmupElement); for (let i = 0; i < intervals; i++) { const intervalElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createIntervalStep(intervalMinutes, intervalIntensity)) .build(); builder.addElement(intervalElement); if (i < intervals - 1) { const recoveryElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createRecoveryStep(recoveryMinutes)) .build(); builder.addElement(recoveryElement); } } const cooldownElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createCooldownStep(cooldownMinutes)) .build(); builder.addElement(cooldownElement); return builder.build(); }; export const createTempoWorkout = (warmupMinutes = 15, tempoMinutes = 30, tempoIntensity = 90, cooldownMinutes = 10) => { const builder = new WorkoutStructureBuilder(); const warmupElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createWarmupStep(warmupMinutes)) .build(); builder.addElement(warmupElement); const tempoElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createSteadyStep(tempoMinutes, tempoIntensity)) .build(); builder.addElement(tempoElement); const cooldownElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createCooldownStep(cooldownMinutes)) .build(); builder.addElement(cooldownElement); return builder.build(); }; export const createLongSteadyWorkout = (warmupMinutes = 10, steadyMinutes = 120, steadyIntensity = 75, cooldownMinutes = 10) => { const builder = new WorkoutStructureBuilder(); const warmupElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createWarmupStep(warmupMinutes)) .build(); builder.addElement(warmupElement); const steadyElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createSteadyStep(steadyMinutes, steadyIntensity)) .build(); builder.addElement(steadyElement); const cooldownElement = new WorkoutStructureElementBuilder() .type(ElementType.STEP) .addStep(createCooldownStep(cooldownMinutes)) .build(); builder.addElement(cooldownElement); return builder.build(); };