mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-22 06:00:56 +02:00

* chore: cleanup client depend 🧹
* chore: replace joi with zod and remove unused user validator
* chore: move dep from root to api, cleanup other unused api deps
* chore: remove unused dev dep
* chore: update bun lockfile
* fix: bun scripts
* chore: add bun flag to update script
* chore: remove legacy webpack + babel dev deps
* chore: add back dev deps needed for frontend unit testing
* fix(validators): make schemas as expected and more robust with a full test suite of edge cases
* chore: remove axios from root package, remove path from api, update bun
69 lines
1.5 KiB
JavaScript
69 lines
1.5 KiB
JavaScript
const { z } = require('zod');
|
|
|
|
function errorsToString(errors) {
|
|
return errors
|
|
.map((error) => {
|
|
let field = error.path.join('.');
|
|
let message = error.message;
|
|
|
|
return `${field}: ${message}`;
|
|
})
|
|
.join(' ');
|
|
}
|
|
|
|
const loginSchema = z.object({
|
|
email: z.string().email(),
|
|
password: z
|
|
.string()
|
|
.min(8)
|
|
.max(128)
|
|
.refine((value) => value.trim().length > 0, {
|
|
message: 'Password cannot be only spaces',
|
|
}),
|
|
});
|
|
|
|
const registerSchema = z
|
|
.object({
|
|
name: z.string().min(3).max(80),
|
|
username: z
|
|
.union([
|
|
z.literal(''),
|
|
z
|
|
.string()
|
|
.min(2)
|
|
.max(80)
|
|
.regex(/^[a-zA-Z0-9_.-@#$%&*() ]+$/),
|
|
])
|
|
.transform((value) => (value === '' ? null : value))
|
|
.optional()
|
|
.nullable(),
|
|
email: z.string().email(),
|
|
password: z
|
|
.string()
|
|
.min(8)
|
|
.max(128)
|
|
.refine((value) => value.trim().length > 0, {
|
|
message: 'Password cannot be only spaces',
|
|
}),
|
|
confirm_password: z
|
|
.string()
|
|
.min(8)
|
|
.max(128)
|
|
.refine((value) => value.trim().length > 0, {
|
|
message: 'Password cannot be only spaces',
|
|
}),
|
|
})
|
|
.superRefine(({ confirm_password, password }, ctx) => {
|
|
if (confirm_password !== password) {
|
|
ctx.addIssue({
|
|
code: 'custom',
|
|
message: 'The passwords did not match',
|
|
});
|
|
}
|
|
});
|
|
|
|
module.exports = {
|
|
loginSchema,
|
|
registerSchema,
|
|
errorsToString,
|
|
};
|