(job, i, names, config)
| 205 | |
| 206 | // eslint-disable-next-line complexity |
| 207 | const validate = async (job, i, names, config) => { |
| 208 | const errors = validateJobName(job, i, names); |
| 209 | |
| 210 | if (errors.length > 0) { |
| 211 | throw combineErrors(errors); |
| 212 | } |
| 213 | |
| 214 | // Support a simple string which we will transform to have a path |
| 215 | if (isSANB(job)) { |
| 216 | return validateStringJob(job, i, config); |
| 217 | } |
| 218 | |
| 219 | // Job is a function |
| 220 | if (typeof job === 'function') { |
| 221 | return validateFunctionJob(job, i); |
| 222 | } |
| 223 | |
| 224 | // Use a prefix for errors |
| 225 | const prefix = `Job #${i + 1} named "${job.name}"`; |
| 226 | |
| 227 | errors.push(...(await validateJobPath(job, prefix, config))); |
| 228 | |
| 229 | // Don't allow users to mix interval AND cron |
| 230 | if (job.interval !== undefined && job.cron !== undefined) { |
| 231 | errors.push( |
| 232 | new Error(`${prefix} cannot have both interval and cron configuration`) |
| 233 | ); |
| 234 | } |
| 235 | |
| 236 | // Don't allow users to mix timeout AND date |
| 237 | if (job.timeout !== undefined && job.date !== undefined) { |
| 238 | errors.push(new Error(`${prefix} cannot have both timeout and date`)); |
| 239 | } |
| 240 | |
| 241 | const jobNameError = validateReservedJobName(job.name); |
| 242 | if (jobNameError) { |
| 243 | errors.push(jobNameError); |
| 244 | } |
| 245 | |
| 246 | // Validate date |
| 247 | if (job.date !== undefined && !(job.date instanceof Date)) { |
| 248 | errors.push(new Error(`${prefix} had an invalid Date of ${job.date}`)); |
| 249 | } |
| 250 | |
| 251 | for (const prop of ['timeout', 'interval']) { |
| 252 | if (job[prop] !== undefined) { |
| 253 | try { |
| 254 | parseValue(job[prop]); |
| 255 | } catch (err) { |
| 256 | errors.push( |
| 257 | combineErrors([ |
| 258 | new Error(`${prefix} had an invalid ${prop} of ${job.timeout}`), |
| 259 | err |
| 260 | ]) |
| 261 | ); |
| 262 | } |
| 263 | } |
| 264 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…