UNPKG

@battle-racing/br-common-lib

Version:

Common library for all Battle Racing Repositorios

45 lines (44 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.signWaiverSchema = exports.createPlayerSchema = exports.playerSchema = exports.playerStatsSchema = exports.playerWaiverStatusSchema = exports.playerTypeSchema = void 0; const zod_1 = require("zod"); const Player_const_1 = require("./Player.const"); exports.playerTypeSchema = zod_1.z.enum(Player_const_1.PLAYER_TYPE); exports.playerWaiverStatusSchema = zod_1.z.object({ isSigned: zod_1.z.boolean().default(false), waiverId: zod_1.z.uuidv4().nullable().optional(), templateVersion: zod_1.z.string().optional(), expiresAt: zod_1.z.date().nullable().optional(), }); exports.playerStatsSchema = zod_1.z.object({ totalRaces: zod_1.z.number().int().default(0), bestTimeMs: zod_1.z.number().int().nullable().optional(), xp: zod_1.z.number().int().default(0), }); exports.playerSchema = zod_1.z.object({ id: zod_1.z.uuidv4(), nickname: zod_1.z.string().min(2).max(20), avatarUrl: zod_1.z.url().optional(), birthDate: zod_1.z.date(), type: exports.playerTypeSchema.default(Player_const_1.PLAYER_TYPE.ADULT), ownerUserId: zod_1.z.uuidv4().nullable().optional(), isGuest: zod_1.z.boolean().default(true), waiver: exports.playerWaiverStatusSchema, // TODO: Add the stats here, to aovid extra queries stats: exports.playerStatsSchema.optional().nullable(), createdAt: zod_1.z.date(), updatedAt: zod_1.z.date(), }); exports.createPlayerSchema = exports.playerSchema .pick({ nickname: true, ownerUserId: true, isGuest: true, }) .extend({ birthDate: zod_1.z.coerce.date(), }); exports.signWaiverSchema = zod_1.z.object({ signature: zod_1.z.string().optional(), // Base64 or simply a boolean acceptance. Let's make it flexible. accepted: zod_1.z.literal(true), // They must explicitly pass accepted: true });