UNPKG

trainingpeaks-sdk

Version:
68 lines (67 loc) 2.5 kB
import { z } from 'zod'; import { WorkoutStructureSchema } from './workout-structure.schema.js'; export const UserSchema = z.object({ id: z.string().min(1), name: z.string().trim().min(1).max(100), username: z.string().trim().min(1).max(100), avatar: z .string() .url() .or(z.literal('')) .transform((val) => (val === '' ? undefined : val)) .optional(), preferences: z.record(z.string(), z.unknown()).optional(), }); export const AuthTokenSchema = z.object({ accessToken: z.string().min(1), tokenType: z.string().min(1), expiresIn: z.number().nonnegative().finite(), expires: z.date(), refreshToken: z.string().min(1).optional(), scope: z.string().min(1).optional(), }); export const WorkoutSchema = z.object({ id: z.string().min(1), name: z.string().min(1).max(200), description: z.string().max(1000), date: z.date(), duration: z.number().nonnegative().finite(), distance: z.number().nonnegative().finite().optional(), activityType: z.string().min(1).max(50).optional(), tags: z.array(z.string().min(1).max(50)).optional(), fileContent: z.string().optional(), fileName: z.string().min(1).max(255).optional(), createdAt: z.date().optional(), updatedAt: z.date().optional(), structure: WorkoutStructureSchema.optional(), }); export const TrainingPeaksAthleteSchema = z.object({ athleteId: z.number().positive(), firstName: z.string().min(1).max(100), lastName: z.string().min(1).max(100), email: z.string().email(), phone: z.string().nullable().optional(), cellPhone: z.string().nullable().optional(), age: z.number().nonnegative().optional(), athleteType: z.number(), userType: z.number(), lastPlannedWorkout: z.string().nullable().optional(), settings: z.unknown().optional(), personPhotoUrl: z .string() .url() .or(z.literal('')) .nullable() .optional() .transform((val) => (val === '' ? null : val)), coachedBy: z.number().nullable().optional(), userName: z.string().min(1), lastUpgradeOn: z.string().nullable().optional(), downgradeAllowed: z.boolean().default(false), expireOn: z.string(), premiumTrial: z.boolean().default(false), premiumTrialDaysRemaining: z.number().nonnegative().default(0), downgradeAllowedOn: z.string().optional(), workoutIndexState: z.number().default(0), prCalcState: z.number().default(0), });