@zeushq/nextjs-zapi
Version:
Next.js SDK for creating a Zeus API
25 lines (19 loc) • 596 B
text/typescript
import Joi from 'joi';
import { Config } from './config';
const paramsSchema = Joi.object({
baseURL: Joi.string().uri().required()
});
export type DeepPartial<T> = {
[P in keyof T]?: T[P] extends Array<infer I> ? Array<DeepPartial<I>> : DeepPartial<T[P]>;
};
export type ConfigParameters = DeepPartial<Config>;
export const get = (params: ConfigParameters = {}): Config => {
const { value, error, warning } = paramsSchema.validate(params);
if (error) {
throw new TypeError(error.details[0].message);
}
if (warning) {
console.warn(warning.message);
}
return value;
};