"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 ] }] }) };