@sidequest/core
Version:
@sidequest/core is the core package of SideQuest, a distributed background job queue for Node.js and TypeScript applications.
42 lines (38 loc) • 1.52 kB
JavaScript
;
var completeTransition = require('./complete-transition.cjs');
var failTransition = require('./fail-transition.cjs');
var retryTransition = require('./retry-transition.cjs');
var snoozeTransition = require('./snooze-transition.cjs');
/**
* Factory for creating job transitions from job results.
*/
class JobTransitionFactory {
/**
* Creates a job transition instance from a job result.
* @param jobResult The job result object.
* @returns The corresponding job transition instance.
*/
static create(jobResult) {
switch (jobResult.type) {
case "retry":
return new retryTransition.RetryTransition(jobResult.error, jobResult.delay);
case "snooze":
return new snoozeTransition.SnoozeTransition(jobResult.delay);
case "failed":
return new failTransition.FailTransition(jobResult.error);
case "completed":
return new completeTransition.CompleteTransition(jobResult.result);
}
}
}
/**
* Checks if a value is a JobResult object. If this returns false, it is probably a raw job result.
* @param value The value to check.
* @returns True if the value is a JobResult.
*/
function isJobResult(value) {
return !!value && typeof value === "object" && "__is_job_transition__" in value && !!value.__is_job_transition__;
}
exports.JobTransitionFactory = JobTransitionFactory;
exports.isJobResult = isJobResult;
//# sourceMappingURL=job-result.cjs.map