@tevm/actions
Version:
A typesafe library for writing forge scripts in typescript
51 lines (44 loc) • 1.38 kB
JavaScript
import { InvalidRequestError } from '@tevm/errors'
import { zLoadStateParams } from './zLoadStateParams.js'
/**
* Type for errors returned by validateLoadStateParams.
* @typedef {InvalidRequestError} ValidateLoadStateParamsError
*/
/**
* Validates the parameters for loading the state into the VM.
*
* @param {import('./LoadStateParams.js').LoadStateParams} action - The parameters for the load state action.
* @returns {Array<ValidateLoadStateParamsError>} - An array of errors, if any.
*
* @example
* ```typescript
* import { validateLoadStateParams } from 'tevm/actions'
*
* const params = { state: {...} }
* const errors = validateLoadStateParams(params)
* if (errors.length > 0) {
* console.error('Validation errors:', errors)
* }
* ```
*/
export const validateLoadStateParams = (action) => {
/**
* @type {Array<ValidateLoadStateParamsError>}
*/
const errors = []
const parsedParams = zLoadStateParams.safeParse(action)
if (parsedParams.success === false) {
const formattedErrors = parsedParams.error.format()
if (formattedErrors._errors) {
formattedErrors._errors.forEach((error) => {
errors.push(new InvalidRequestError(error))
})
}
if (formattedErrors.state?._errors) {
formattedErrors.state._errors.forEach((error) => {
errors.push(new InvalidRequestError(`Invalid state: ${error}`))
})
}
}
return errors
}