const ow = require('ow'); const Task = require('./task'); function checkTask(t) { return { validator: t instanceof Task, message: `Expected ${t} to be a Task object` }; } module.exports = { checkTaskOrString: ow.any(ow.object.validate(checkTask), ow.string), DependencyCycleError: class DependencyCycleError extends Error { constructor(message, cyclePath) { ow(message, ow.string); ow(cyclePath, ow.array.ofType(ow.string)); super(message); this.cyclePath = cyclePath; this.name = 'DependencyCycleError'; } }, StateError: class StateError extends Error { constructor(message) { ow(message, ow.string); super(message); this.name = 'StateError'; } }, UnknownDependencyError: class UnknownDependencyError extends Error { constructor(message) { ow(message, ow.string); super(message); this.name = 'UnknownDependencyError'; } }, UnknownTaskError: class UnknownTaskError extends Error { constructor(message) { ow(message, ow.string); super(message); this.name = 'UnknownTaskError'; } } };