@battle-racing/br-common-lib
Version:
Common library for all Battle Racing Repositorios
45 lines (44 loc) • 1.89 kB
JavaScript
"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
});