trainingpeaks-sdk
Version:
TypeScript SDK for TrainingPeaks API integration
71 lines (70 loc) • 3.03 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TrainingPeaksAthleteSchema = exports.WorkoutSchema = exports.AuthTokenSchema = exports.UserSchema = void 0;
const zod_1 = require("zod");
const workout_structure_schema_1 = require("./workout-structure.schema.js");
exports.UserSchema = zod_1.z.object({
id: zod_1.z.string().min(1),
name: zod_1.z.string().trim().min(1).max(100),
username: zod_1.z.string().trim().min(1).max(100),
avatar: zod_1.z
.string()
.url()
.or(zod_1.z.literal(''))
.transform((val) => (val === '' ? undefined : val))
.optional(),
preferences: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
});
exports.AuthTokenSchema = zod_1.z.object({
accessToken: zod_1.z.string().min(1),
tokenType: zod_1.z.string().min(1),
expiresIn: zod_1.z.number().nonnegative().finite(),
expires: zod_1.z.date(),
refreshToken: zod_1.z.string().min(1).optional(),
scope: zod_1.z.string().min(1).optional(),
});
exports.WorkoutSchema = zod_1.z.object({
id: zod_1.z.string().min(1),
name: zod_1.z.string().min(1).max(200),
description: zod_1.z.string().max(1000),
date: zod_1.z.date(),
duration: zod_1.z.number().nonnegative().finite(),
distance: zod_1.z.number().nonnegative().finite().optional(),
activityType: zod_1.z.string().min(1).max(50).optional(),
tags: zod_1.z.array(zod_1.z.string().min(1).max(50)).optional(),
fileContent: zod_1.z.string().optional(),
fileName: zod_1.z.string().min(1).max(255).optional(),
createdAt: zod_1.z.date().optional(),
updatedAt: zod_1.z.date().optional(),
structure: workout_structure_schema_1.WorkoutStructureSchema.optional(),
});
exports.TrainingPeaksAthleteSchema = zod_1.z.object({
athleteId: zod_1.z.number().positive(),
firstName: zod_1.z.string().min(1).max(100),
lastName: zod_1.z.string().min(1).max(100),
email: zod_1.z.string().email(),
phone: zod_1.z.string().nullable().optional(),
cellPhone: zod_1.z.string().nullable().optional(),
age: zod_1.z.number().nonnegative().optional(),
athleteType: zod_1.z.number(),
userType: zod_1.z.number(),
lastPlannedWorkout: zod_1.z.string().nullable().optional(),
settings: zod_1.z.unknown().optional(),
personPhotoUrl: zod_1.z
.string()
.url()
.or(zod_1.z.literal(''))
.nullable()
.optional()
.transform((val) => (val === '' ? null : val)),
coachedBy: zod_1.z.number().nullable().optional(),
userName: zod_1.z.string().min(1),
lastUpgradeOn: zod_1.z.string().nullable().optional(),
downgradeAllowed: zod_1.z.boolean().default(false),
expireOn: zod_1.z.string(),
premiumTrial: zod_1.z.boolean().default(false),
premiumTrialDaysRemaining: zod_1.z.number().nonnegative().default(0),
downgradeAllowedOn: zod_1.z.string().optional(),
workoutIndexState: zod_1.z.number().default(0),
prCalcState: zod_1.z.number().default(0),
});