oceanprotocol/market

View on GitHub
src/components/Asset/AssetActions/ConsumerParameters/_validation.ts

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
import { ConsumerParameter } from '@oceanprotocol/lib'
import * as Yup from 'yup'
import { SchemaLike } from 'yup/lib/types'

export function getUserCustomParameterValidationSchema(
  parameters: ConsumerParameter[]
): SchemaLike {
  const shape = {}

  parameters?.forEach((parameter) => {
    const schemaBase =
      parameter.type === 'number'
        ? Yup.number()
        : parameter.type === 'boolean'
        ? Yup.boolean()
        : Yup.string()

    Object.assign(shape, {
      [parameter.name]: parameter.required
        ? schemaBase.required('required')
        : schemaBase.nullable().transform((value) => value || null)
    })
  })

  const schema = Yup.object(shape)

  return schema
}