Files
config/src/index.ts
T
2025-09-11 17:15:02 +02:00

28 lines
658 B
TypeScript

import logger from 'log'
import * as yup from 'yup'
import * as parsing from './parsing'
import type {Ok} from './helpers'
export * as yup from 'yup'
const log = logger('config')
export async function parse<S extends yup.Maybe<yup.AnyObject>>(schema: yup.ObjectSchema<S>): Promise<Ok<S>> {
log.info('Parse from env')
log.trace('Start parsing')
const config = await parsing.object(schema)
if (!config.ok) return config
log.trace('double-check')
const res = await schema.isValid(config.data, {strict: true})
if (!res) {
log.error('Double-check failed')
log.debug('Config', config.data)
return {ok: false}
}
return config
}