Files
overleaf-cep/libraries/validation-tools/validateReq.js
Andrew Rumble d467eb1a7e Add build trigger for validation-tools
GitOrigin-RevId: 04299d9ab23c65aa791acecd1c0e63b70df9a8d1
2025-09-19 08:05:18 +00:00

35 lines
888 B
JavaScript

// @ts-check
const { ParamsError } = require('./Errors')
/**
* @typedef {import('zod').ZodType} ZodType
* @typedef {import('express').Request} Request
*/
/**
* @template T
* @typedef {import('zod').output<T>} output<T>
*/
/**
* Validate a request against a zod schema
*
* @template {ZodType} T
* @param {Request} req - The Express request object
* @param {T} schema - The Zod schema to validate against
* @returns {output<T>} The validated request object
*/
function validateReq(req, schema) {
const parsed = schema.safeParse(req)
if (parsed.success) {
return parsed.data
} else if (parsed.error.issues.some(issue => issue.path[0] === 'params')) {
// Parts of the URL path failed to validate; throw a specific error
throw new ParamsError('Invalid params').withCause(parsed.error)
} else {
throw parsed.error
}
}
module.exports = { validateReq }