"use strict"; const required = require("@validatem/required"); const arrayOf = require("@validatem/array-of"); const isString = require("@validatem/is-string"); const isFunction = require("@validatem/is-function"); const isArray = require("@validatem/is-array"); const either = require("@validatem/either"); const isValue = require("@validatem/is-value"); const isPositiveInteger = require("./is-positive-integer"); function makeRules(recurse) { // We want to recurse exactly one level let isTaskArray = (recurse === true) ? arrayOf(makeRules(false)) : isArray; return { name: [ required, isString ], version: [ required, isString ], ttl: [ isPositiveInteger ], parallelTasks: [ either([ isPositiveInteger, isValue(Infinity) ]) ], taskInterval: [ isPositiveInteger ], dependents: [ required, isTaskArray ], dependencies: [ required, isTaskArray ], tags: [ required, arrayOf(isString) ], run: [ required, isFunction ] }; } module.exports = makeRules(true);