You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
srap/src/validators/is-valid-configuration.js

47 lines
1.5 KiB
JavaScript

"use strict";
const required = require("@validatem/required");
const defaultTo = require("@validatem/default-to");
const either = require("@validatem/either");
const anything = require("@validatem/anything");
const anyProperty = require("@validatem/any-property");
const arrayOf = require("@validatem/array-of");
const isFunction = require("@validatem/is-function");
const isString = require("@validatem/is-string");
const isInteger = require("@validatem/is-integer");
const isPositive = require("@validatem/is-positive");
const isValue = require("@validatem/is-value");
const isBoolean = require("@validatem/is-boolean");
const isMS = require("./is-ms");
module.exports = {
backend: [ required, isValue("postgresql") ], // No other backends exist yet
simulate: [ isBoolean, defaultTo(false) ],
taskInterval: [ isMS ], // global rate limit
database: anything, // FIXME: Validate various database options
seed: arrayOf({
id: [ required, isString ],
tags: [ required, arrayOf(isString) ],
data: [ required, anything ] // FIXME: Validate object
}),
tags: anyProperty({
key: [ required, isString ],
value: [ required, arrayOf(isString) ]
}),
tasks: anyProperty({
key: [ required, isString ],
value: [ required, {
ttl: [ isMS ],
taskInterval: [ isMS ],
parallelTasks: [ defaultTo, either([
[ isValue(Infinity) ],
[ isInteger, isPositive ]
])],
version: [ defaultTo("0"), isString ],
dependsOn: [ defaultTo([]), arrayOf(isString) ],
run: [ required, isFunction ]
}]
})
};