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.
47 lines
1.5 KiB
JavaScript
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 ]
|
|
}]
|
|
})
|
|
};
|