@sidequest/core
Version:
@sidequest/core is the core package of SideQuest, a distributed background job queue for Node.js and TypeScript applications.
39 lines (36 loc) • 1.4 kB
JavaScript
import { CompleteTransition } from './complete-transition.js';
import { FailTransition } from './fail-transition.js';
import { RetryTransition } from './retry-transition.js';
import { SnoozeTransition } from './snooze-transition.js';
/**
* 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(jobResult.error, jobResult.delay);
case "snooze":
return new SnoozeTransition(jobResult.delay);
case "failed":
return new FailTransition(jobResult.error);
case "completed":
return new 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__;
}
export { JobTransitionFactory, isJobResult };
//# sourceMappingURL=job-result.js.map