40 lines
No EOL
1.2 KiB
JavaScript
40 lines
No EOL
1.2 KiB
JavaScript
const { object, bool, string, number, boolean, array } = require('yup');
|
|
|
|
const validator = object({
|
|
core: object({
|
|
secure: bool().default(false),
|
|
secret: string().min(8).required(),
|
|
host: string().default('0.0.0.0'),
|
|
port: number().default(3000),
|
|
database_url: string().required(),
|
|
logger: boolean().default(true),
|
|
stats_interval: number().default(1800),
|
|
}).required(),
|
|
uploader: object({
|
|
route: string().default('/u'),
|
|
embed_route: string().default('/a'),
|
|
length: number().default(6),
|
|
directory: string().default('./uploads'),
|
|
admin_limit: number().default(104900000),
|
|
user_limit: number().default(104900000),
|
|
disabled_extensions: array().default([]),
|
|
}).required(),
|
|
urls: object({
|
|
route: string().default('/go'),
|
|
length: number().default(6),
|
|
}).required(),
|
|
ratelimit: object({
|
|
user: number().default(0),
|
|
admin: number().default(0),
|
|
}),
|
|
});
|
|
|
|
|
|
module.exports = function validate(config) {
|
|
try {
|
|
return validator.validateSync(config, { abortEarly: false });
|
|
} catch (e) {
|
|
if (process.env.ZIPLINE_DOCKER_BUILD) return {};
|
|
throw `${e.errors.length} errors occured\n${e.errors.map(x => '\t' + x).join('\n')}`;
|
|
}
|
|
}; |