@sidequest/engine 1.0.0-next.17 → 1.0.0-next.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/engine.cjs CHANGED
@@ -64,6 +64,7 @@ class Engine {
64
64
  gracefulShutdown: config?.gracefulShutdown ?? true,
65
65
  minThreads: config?.minThreads ?? os.cpus().length,
66
66
  maxThreads: config?.maxThreads ?? os.cpus().length * 2,
67
+ idleWorkerTimeout: config?.idleWorkerTimeout ?? 10_000,
67
68
  releaseStaleJobsMaxStaleMs: config?.releaseStaleJobsMaxStaleMs ?? backend.MISC_FALLBACK.maxStaleMs, // 10 minutes
68
69
  releaseStaleJobsMaxClaimedMs: config?.releaseStaleJobsMaxClaimedMs ?? backend.MISC_FALLBACK.maxClaimedMs, // 1 minute
69
70
  jobDefaults: {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.cjs","sources":["../src/engine.ts"],"sourcesContent":[null],"names":["logger","cpus","MISC_FALLBACK","JOB_BUILDER_FALLBACK","QUEUE_FALLBACK","configureLogger","LazyBackend","grantQueueConfig","fork","gracefulShutdown","clearGracefulShutdown","JobBuilder"],"mappings":"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"}
1
+ {"version":3,"file":"engine.cjs","sources":["../src/engine.ts"],"sourcesContent":[null],"names":["logger","cpus","MISC_FALLBACK","JOB_BUILDER_FALLBACK","QUEUE_FALLBACK","configureLogger","LazyBackend","grantQueueConfig","fork","gracefulShutdown","clearGracefulShutdown","JobBuilder"],"mappings":"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"}
package/dist/engine.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { BackendConfig, NewQueueData, Backend } from '@sidequest/backend';
2
- import { LoggerOptions } from '@sidequest/core';
3
- import { JobClassType } from './job/job.js';
2
+ import { LoggerOptions, JobClassType } from '@sidequest/core';
4
3
  import { JobBuilderDefaults, JobBuilder } from './job/job-builder.js';
5
4
  import { QueueDefaults } from './queue/grant-queue-config.js';
6
5
 
@@ -34,6 +33,8 @@ interface EngineConfig {
34
33
  minThreads?: number;
35
34
  /** Maximum number of worker threads to use. Defaults to `minThreads * 2` */
36
35
  maxThreads?: number;
36
+ /** Timeout in milliseconds for idle workers before they are terminated. Defaults to 10 seconds */
37
+ idleWorkerTimeout?: number;
37
38
  /**
38
39
  * Default job builder configuration.
39
40
  * This allows setting default values for job properties like queue, timeout, uniqueness, etc.
package/dist/engine.js CHANGED
@@ -62,6 +62,7 @@ class Engine {
62
62
  gracefulShutdown: config?.gracefulShutdown ?? true,
63
63
  minThreads: config?.minThreads ?? cpus().length,
64
64
  maxThreads: config?.maxThreads ?? cpus().length * 2,
65
+ idleWorkerTimeout: config?.idleWorkerTimeout ?? 10_000,
65
66
  releaseStaleJobsMaxStaleMs: config?.releaseStaleJobsMaxStaleMs ?? MISC_FALLBACK.maxStaleMs, // 10 minutes
66
67
  releaseStaleJobsMaxClaimedMs: config?.releaseStaleJobsMaxClaimedMs ?? MISC_FALLBACK.maxClaimedMs, // 1 minute
67
68
  jobDefaults: {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sources":["../src/engine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sources":["../src/engine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -5,7 +5,6 @@ var dispatcher = require('./execution/dispatcher.cjs');
5
5
  var executorManager = require('./execution/executor-manager.cjs');
6
6
  var queueManager = require('./execution/queue-manager.cjs');
7
7
  var constants = require('./job/constants.cjs');
8
- var job = require('./job/job.cjs');
9
8
  var jobBuilder = require('./job/job-builder.cjs');
10
9
  var jobTransitioner = require('./job/job-transitioner.cjs');
11
10
  var grantQueueConfig = require('./queue/grant-queue-config.cjs');
@@ -24,7 +23,6 @@ exports.Dispatcher = dispatcher.Dispatcher;
24
23
  exports.ExecutorManager = executorManager.ExecutorManager;
25
24
  exports.QueueManager = queueManager.QueueManager;
26
25
  exports.JOB_BUILDER_FALLBACK = constants.JOB_BUILDER_FALLBACK;
27
- exports.Job = job.Job;
28
26
  exports.JobBuilder = jobBuilder.JobBuilder;
29
27
  exports.JobTransitioner = jobTransitioner.JobTransitioner;
30
28
  exports.differentQueueConfig = grantQueueConfig.differentQueueConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,6 @@ export { Dispatcher } from './execution/dispatcher.js';
3
3
  export { ExecutorManager } from './execution/executor-manager.js';
4
4
  export { QueueManager } from './execution/queue-manager.js';
5
5
  export { JOB_BUILDER_FALLBACK } from './job/constants.js';
6
- export { Job, JobClassType } from './job/job.js';
7
6
  export { JobBuilder, JobBuilderDefaults, UniquenessInput } from './job/job-builder.js';
8
7
  export { JobTransitioner } from './job/job-transitioner.js';
9
8
  export { QueueDefaults, differentQueueConfig, grantQueueConfig } from './queue/grant-queue-config.js';
package/dist/index.js CHANGED
@@ -3,7 +3,6 @@ export { Dispatcher } from './execution/dispatcher.js';
3
3
  export { ExecutorManager } from './execution/executor-manager.js';
4
4
  export { QueueManager } from './execution/queue-manager.js';
5
5
  export { JOB_BUILDER_FALLBACK } from './job/constants.js';
6
- export { Job } from './job/job.js';
7
6
  export { JobBuilder } from './job/job-builder.js';
8
7
  export { JobTransitioner } from './job/job-transitioner.js';
9
8
  export { differentQueueConfig, grantQueueConfig } from './queue/grant-queue-config.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -1,7 +1,6 @@
1
1
  import { Backend } from '@sidequest/backend';
2
- import { TimePeriod, JobData } from '@sidequest/core';
2
+ import { TimePeriod, JobClassType, JobData } from '@sidequest/core';
3
3
  import { ScheduledTask } from 'node-cron';
4
- import { JobClassType } from './job.js';
5
4
 
6
5
  /**
7
6
  * Configuration for job uniqueness constraints.
@@ -22,6 +22,7 @@ class RunnerPool {
22
22
  filename: runnerPath,
23
23
  minThreads: this.nonNullConfig.minThreads,
24
24
  maxThreads: this.nonNullConfig.maxThreads,
25
+ idleTimeout: this.nonNullConfig.idleWorkerTimeout,
25
26
  });
26
27
  core.logger("RunnerPool").debug(`Created worker pool with min ${this.nonNullConfig.minThreads} threads and max ${this.nonNullConfig.maxThreads} threads`);
27
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner-pool.cjs","sources":["../../src/shared-runner/runner-pool.ts"],"sourcesContent":[null],"names":["logger"],"mappings":";;;;;;AAMA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAmB,EAAE,WAAW,CAAC;AAEjE;;AAEG;MACU,UAAU,CAAA;AAQD,IAAA,aAAA;;AANH,IAAA,IAAI;AAErB;;;AAGG;AACH,IAAA,WAAA,CAAoB,aAAsC,EAAA;QAAtC,IAAA,CAAA,aAAa,GAAb,aAAa;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC;AACtB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AAC1C,SAAA,CAAC;QACFA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CACxB,CAAA,6BAAA,EAAgC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,iBAAA,EAAoB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,QAAA,CAAU,CACzH;IACH;AAEA;;;;;AAKG;IACH,GAAG,CAAC,GAAY,EAAE,MAAqB,EAAA;AACrC,QAAAA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,YAAA,EAAe,GAAG,CAAC,EAAE,CAAA,QAAA,CAAU,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAChF;AAEA;;AAEG;AACH,IAAA,MAAM,OAAO,GAAA;QACXA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC3B;AACD;;;;"}
1
+ {"version":3,"file":"runner-pool.cjs","sources":["../../src/shared-runner/runner-pool.ts"],"sourcesContent":[null],"names":["logger"],"mappings":";;;;;;AAMA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAmB,EAAE,WAAW,CAAC;AAEjE;;AAEG;MACU,UAAU,CAAA;AAQD,IAAA,aAAA;;AANH,IAAA,IAAI;AAErB;;;AAGG;AACH,IAAA,WAAA,CAAoB,aAAsC,EAAA;QAAtC,IAAA,CAAA,aAAa,GAAb,aAAa;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC;AACtB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACzC,YAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB;AAClD,SAAA,CAAC;QACFA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CACxB,CAAA,6BAAA,EAAgC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,iBAAA,EAAoB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,QAAA,CAAU,CACzH;IACH;AAEA;;;;;AAKG;IACH,GAAG,CAAC,GAAY,EAAE,MAAqB,EAAA;AACrC,QAAAA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,YAAA,EAAe,GAAG,CAAC,EAAE,CAAA,QAAA,CAAU,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAChF;AAEA;;AAEG;AACH,IAAA,MAAM,OAAO,GAAA;QACXA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC3B;AACD;;;;"}
@@ -20,6 +20,7 @@ class RunnerPool {
20
20
  filename: runnerPath,
21
21
  minThreads: this.nonNullConfig.minThreads,
22
22
  maxThreads: this.nonNullConfig.maxThreads,
23
+ idleTimeout: this.nonNullConfig.idleWorkerTimeout,
23
24
  });
24
25
  logger("RunnerPool").debug(`Created worker pool with min ${this.nonNullConfig.minThreads} threads and max ${this.nonNullConfig.maxThreads} threads`);
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner-pool.js","sources":["../../src/shared-runner/runner-pool.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;AAEjE;;AAEG;MACU,UAAU,CAAA;AAQD,IAAA,aAAA;;AANH,IAAA,IAAI;AAErB;;;AAGG;AACH,IAAA,WAAA,CAAoB,aAAsC,EAAA;QAAtC,IAAA,CAAA,aAAa,GAAb,aAAa;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC;AACtB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AAC1C,SAAA,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CACxB,CAAA,6BAAA,EAAgC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,iBAAA,EAAoB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,QAAA,CAAU,CACzH;IACH;AAEA;;;;;AAKG;IACH,GAAG,CAAC,GAAY,EAAE,MAAqB,EAAA;AACrC,QAAA,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,YAAA,EAAe,GAAG,CAAC,EAAE,CAAA,QAAA,CAAU,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAChF;AAEA;;AAEG;AACH,IAAA,MAAM,OAAO,GAAA;QACX,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC3B;AACD;;;;"}
1
+ {"version":3,"file":"runner-pool.js","sources":["../../src/shared-runner/runner-pool.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;AAEjE;;AAEG;MACU,UAAU,CAAA;AAQD,IAAA,aAAA;;AANH,IAAA,IAAI;AAErB;;;AAGG;AACH,IAAA,WAAA,CAAoB,aAAsC,EAAA;QAAtC,IAAA,CAAA,aAAa,GAAb,aAAa;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC;AACtB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACzC,YAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB;AAClD,SAAA,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CACxB,CAAA,6BAAA,EAAgC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,iBAAA,EAAoB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,QAAA,CAAU,CACzH;IACH;AAEA;;;;;AAKG;IACH,GAAG,CAAC,GAAY,EAAE,MAAqB,EAAA;AACrC,QAAA,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,YAAA,EAAe,GAAG,CAAC,EAAE,CAAA,QAAA,CAAU,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAChF;AAEA;;AAEG;AACH,IAAA,MAAM,OAAO,GAAA;QACX,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC3B;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.cjs","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":["logger","toErrorData","importSidequest"],"mappings":";;;;;;;AAKA;;;;;AAKG;AACY,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAA8C,EAAA;AAC/F,IAAA,MAAM,qBAAqB,CAAC,MAAM,CAAC;IAEnC,IAAI,MAAM,GAAiC,EAAE;AAC7C,IAAA,IAAI;AACF,QAAAA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,sBAAA,EAAyB,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;QAClE,MAAM,IAAI,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAiC;AACvE,QAAAA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,kCAAA,EAAqC,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;IAChF;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,YAAY,GAAG,CAAA,6BAAA,EAAgC,OAAO,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAE;QACjIA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;AACpC,QAAA,MAAM,SAAS,GAAGC,gBAAW,CAAC,KAAc,CAAC;AAC7C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO;IACxD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAG,CAAA,mBAAA,EAAsB,OAAO,CAAC,KAAK,EAAE;QACnDD,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,SAAS,GAAGC,gBAAW,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;IAEA,MAAM,GAAG,GAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvD,IAAA,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;AAE1B,IAAAD,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,OAAO,CAAC,KAAK,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC;IACzF,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACrC;AAEA;;;;;;;;;;AAUG;AACI,eAAe,qBAAqB,CAAC,MAAoB,EAAA;AAC9D,IAAA,IAAI;QACFA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC;AACpE,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAME,uBAAe,EAAE;AAC7C,QAAA,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7DF,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAChE,QAAA,OAAO,IAAI;IACb;IAAE,OAAO,KAAK,EAAE;QACdA,WAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnB,CAAA,mCAAA,EAAsC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,oBAAA,CAAsB,CACnH;AACD,QAAA,OAAO,KAAK;IACd;AACF;;;;;"}
1
+ {"version":3,"file":"runner.cjs","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":["logger","toErrorData","importSidequest"],"mappings":";;;;;;;AAIA;;;;;AAKG;AACY,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAA8C,EAAA;AAC/F,IAAA,MAAM,qBAAqB,CAAC,MAAM,CAAC;IAEnC,IAAI,MAAM,GAAiC,EAAE;AAC7C,IAAA,IAAI;AACF,QAAAA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,sBAAA,EAAyB,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;QAClE,MAAM,IAAI,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAiC;AACvE,QAAAA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,kCAAA,EAAqC,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;IAChF;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,YAAY,GAAG,CAAA,6BAAA,EAAgC,OAAO,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAE;QACjIA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;AACpC,QAAA,MAAM,SAAS,GAAGC,gBAAW,CAAC,KAAc,CAAC;AAC7C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO;IACxD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAG,CAAA,mBAAA,EAAsB,OAAO,CAAC,KAAK,EAAE;QACnDD,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,SAAS,GAAGC,gBAAW,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;IAEA,MAAM,GAAG,GAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvD,IAAA,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;AAE1B,IAAAD,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,OAAO,CAAC,KAAK,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC;IACzF,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACrC;AAEA;;;;;;;;;;AAUG;AACI,eAAe,qBAAqB,CAAC,MAAoB,EAAA;AAC9D,IAAA,IAAI;QACFA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC;AACpE,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAME,uBAAe,EAAE;AAC7C,QAAA,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7DF,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAChE,QAAA,OAAO,IAAI;IACb;IAAE,OAAO,KAAK,EAAE;QACdA,WAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnB,CAAA,mCAAA,EAAsC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,oBAAA,CAAsB,CACnH;AACD,QAAA,OAAO,KAAK;IACd;AACF;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAKA;;;;;AAKG;AACY,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAA8C,EAAA;AAC/F,IAAA,MAAM,qBAAqB,CAAC,MAAM,CAAC;IAEnC,IAAI,MAAM,GAAiC,EAAE;AAC7C,IAAA,IAAI;AACF,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,sBAAA,EAAyB,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;QAClE,MAAM,IAAI,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAiC;AACvE,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,kCAAA,EAAqC,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;IAChF;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,YAAY,GAAG,CAAA,6BAAA,EAAgC,OAAO,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAE;QACjI,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;AACpC,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,KAAc,CAAC;AAC7C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO;IACxD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAG,CAAA,mBAAA,EAAsB,OAAO,CAAC,KAAK,EAAE;QACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;IAEA,MAAM,GAAG,GAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvD,IAAA,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;AAE1B,IAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,OAAO,CAAC,KAAK,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC;IACzF,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACrC;AAEA;;;;;;;;;;AAUG;AACI,eAAe,qBAAqB,CAAC,MAAoB,EAAA;AAC9D,IAAA,IAAI;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC;AACpE,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,EAAE;AAC7C,QAAA,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAChE,QAAA,OAAO,IAAI;IACb;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnB,CAAA,mCAAA,EAAsC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,oBAAA,CAAsB,CACnH;AACD,QAAA,OAAO,KAAK;IACd;AACF;;;;"}
1
+ {"version":3,"file":"runner.js","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIA;;;;;AAKG;AACY,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAA8C,EAAA;AAC/F,IAAA,MAAM,qBAAqB,CAAC,MAAM,CAAC;IAEnC,IAAI,MAAM,GAAiC,EAAE;AAC7C,IAAA,IAAI;AACF,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,sBAAA,EAAyB,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;QAClE,MAAM,IAAI,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAiC;AACvE,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,kCAAA,EAAqC,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;IAChF;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,YAAY,GAAG,CAAA,6BAAA,EAAgC,OAAO,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAE;QACjI,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;AACpC,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,KAAc,CAAC;AAC7C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO;IACxD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAG,CAAA,mBAAA,EAAsB,OAAO,CAAC,KAAK,EAAE;QACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1E;IAEA,MAAM,GAAG,GAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvD,IAAA,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;AAE1B,IAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,OAAO,CAAC,KAAK,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC;IACzF,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACrC;AAEA;;;;;;;;;;AAUG;AACI,eAAe,qBAAqB,CAAC,MAAoB,EAAA;AAC9D,IAAA,IAAI;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC;AACpE,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,EAAE;AAC7C,QAAA,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAChE,QAAA,OAAO,IAAI;IACb;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnB,CAAA,mCAAA,EAAsC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,oBAAA,CAAsB,CACnH;AACD,QAAA,OAAO,KAAK;IACd;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sidequest/engine",
3
- "version": "1.0.0-next.17",
3
+ "version": "1.0.0-next.22",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -20,13 +20,13 @@
20
20
  },
21
21
  "license": "LGPL-3.0-or-later",
22
22
  "dependencies": {
23
- "@sidequest/backend": "1.0.0-next.17",
24
- "@sidequest/core": "1.0.0-next.17",
23
+ "@sidequest/backend": "1.0.0-next.22",
24
+ "@sidequest/core": "1.0.0-next.22",
25
25
  "node-cron": "^4.1.1",
26
26
  "piscina": "^5.1.2"
27
27
  },
28
28
  "peerDependencies": {
29
- "sidequest": "1.0.0-next.17"
29
+ "sidequest": "1.0.0-next.22"
30
30
  },
31
31
  "packageManager": "yarn@4.9.2",
32
32
  "stableVersion": "1.0.0-next.3"
package/dist/job/job.cjs DELETED
@@ -1,250 +0,0 @@
1
- 'use strict';
2
-
3
- var core = require('@sidequest/core');
4
- var promises = require('fs/promises');
5
- var url = require('url');
6
-
7
- /**
8
- * Abstract base class for Sidequest jobs.
9
- * Concrete job classes should extend this class and implement the `run` method.
10
- *
11
- * There are a few convenience methods that can be used to return early and trigger a transition:
12
- * - `snooze(delay: number)`: Returns a SnoozeResult to delay the job execution for a specified time.
13
- * - `retry(reason: string | Error, delay?: number)`: Returns a RetryResult to retry the job with an optional delay.
14
- * - `fail(reason: string | Error)`: Returns a FailedResult to mark the job as failed with a reason.
15
- * - `complete(result: unknown)`: Returns a CompletedResult to mark the job as completed with a result.
16
- *
17
- * Calling any of these methods without returning its result will do absolutely nothing. Thus, you need to return
18
- * the result of any of these methods to trigger the job transition.
19
- *
20
- * If there is an uncaught error in the `run` method, it will automatically return a RetryResult with the error data.
21
- *
22
- * @example
23
- * ```typescript
24
- * class MyJob extends Job {
25
- * async run(arg1: string, arg2: number): Promise<string> {
26
- * // Your job logic here
27
- * if (someCondition) {
28
- * return this.snooze(1000); // Delay the job for 1 second
29
- * }
30
- * if (anotherCondition) {
31
- * return this.retry(new Error("Retrying due to some condition"), 500); // Retry after 500ms
32
- * }
33
- * if (yetAnotherCondition) {
34
- * return this.fail("Failed due to some reason"); // Mark the job as failed
35
- * }
36
- * // If everything is fine, return the result
37
- * return this.complete("Job completed successfully"); // Mark the job as completed
38
- * // Alternatively, you can just return a value, which will be treated as the job result:
39
- * return "Job completed successfully";
40
- * }
41
- * }
42
- */
43
- class Job {
44
- scriptResolver;
45
- // JobData properties
46
- id;
47
- script;
48
- queue;
49
- state;
50
- class;
51
- args;
52
- constructor_args;
53
- attempt;
54
- max_attempts;
55
- inserted_at;
56
- available_at;
57
- timeout;
58
- result;
59
- errors;
60
- attempted_at;
61
- completed_at;
62
- failed_at;
63
- canceled_at;
64
- claimed_at;
65
- claimed_by;
66
- unique_digest;
67
- uniqueness_config;
68
- /**
69
- * Initializes the job and resolves its script path.
70
- */
71
- constructor() {
72
- /* IMPORTANT: the build path resolution must be called here.
73
- * This is important to ensure the path resolution is returning the Job implementation.
74
- */
75
- this.scriptResolver = buildPath(this.constructor.name).then((script) => {
76
- Object.assign(this, { script });
77
- core.logger("Job").debug(`Job script resolved: ${script}`);
78
- return script;
79
- });
80
- }
81
- /**
82
- * Injects JobData properties into the job instance at runtime.
83
- * @param jobData The job data to inject into this instance.
84
- */
85
- injectJobData(jobData) {
86
- core.logger("Job").debug(`Injecting job data into ${this.className}:`, jobData);
87
- Object.assign(this, jobData);
88
- }
89
- /**
90
- * The class name of this job.
91
- */
92
- get className() {
93
- return this.constructor.name;
94
- }
95
- /**
96
- * Waits until the job is ready (script path resolved).
97
- * @returns A promise that resolves when ready.
98
- */
99
- async ready() {
100
- return await this.scriptResolver;
101
- }
102
- /**
103
- * Returns a snooze result for this job.
104
- * This will delay the job execution for the specified time by setting `available_at` to the current
105
- * time plus the delay.
106
- *
107
- * @param delay The delay in milliseconds.
108
- * @returns A SnoozeResult object.
109
- */
110
- snooze(delay) {
111
- core.logger("Job").debug(`Job ${this.className} snoozed for ${delay}ms`);
112
- return { __is_job_transition__: true, type: "snooze", delay: delay };
113
- }
114
- /**
115
- * Returns a retry result for this job. It will increase one attempt and set the `attempted_at`
116
- * to the current time. If the number of attempts is increased to the maximum allowed, the transition
117
- * will mark the job as failed.
118
- *
119
- * @param reason The reason for retrying.
120
- * @param delay Optional delay in milliseconds.
121
- * @returns A RetryResult object.
122
- */
123
- retry(reason, delay) {
124
- const error = core.toErrorData(reason);
125
- core.logger("Job").debug(`Job ${this.className} retrying due to: ${error.message}${delay ? ` after ${delay}ms` : ""}`);
126
- return { __is_job_transition__: true, type: "retry", error, delay };
127
- }
128
- /**
129
- * Returns a failed result for this job. This method will prevent any retry attempts and will mark the
130
- * job as failed indefinitely.
131
- *
132
- * @param reason The reason for failure.
133
- * @returns A FailedResult object.
134
- */
135
- fail(reason) {
136
- const error = core.toErrorData(reason);
137
- core.logger("Job").debug(`Job ${this.className} failed: ${error.message}`);
138
- return { __is_job_transition__: true, type: "failed", error };
139
- }
140
- /**
141
- * Returns a completed result for this job.
142
- * This method will mark the job as completed.
143
- *
144
- * @param result The result value.
145
- * @returns A CompletedResult object.
146
- */
147
- complete(result) {
148
- core.logger("Job").debug(`Job ${this.className} completed.`);
149
- return { __is_job_transition__: true, type: "completed", result };
150
- }
151
- /**
152
- * Runs the job and returns a JobResult.
153
- * This method is intended to be used internally.
154
- *
155
- * @param args Arguments to pass to the run method.
156
- * @returns A promise resolving to the job result.
157
- */
158
- async perform(...args) {
159
- try {
160
- const result = await this.run(...args);
161
- if (core.isJobResult(result)) {
162
- return result;
163
- }
164
- return { __is_job_transition__: true, type: "completed", result };
165
- }
166
- catch (error) {
167
- core.logger("Job").debug(error);
168
- const errorData = core.toErrorData(error);
169
- return { __is_job_transition__: true, type: "retry", error: errorData };
170
- }
171
- }
172
- }
173
- // TODO need to test this with unit tests
174
- /**
175
- * Attempts to determine the file path where a given class is exported by analyzing the current call stack.
176
- *
177
- * This function inspects the stack trace of a newly created error to extract file paths,
178
- * then checks each file to see if it exports the specified class. If found, returns the file path
179
- * as a `file://` URI. If not found, returns the first file path in the stack as a fallback.
180
- * Throws an error if no file paths can be determined.
181
- *
182
- * @param className - The name of the class to search for in the stack trace files.
183
- * @returns A promise that resolves to the `file://` URI of the file exporting the class, or the first file in the stack.
184
- * @throws If no file paths can be determined from the stack trace.
185
- */
186
- async function buildPath(className) {
187
- const err = new Error();
188
- let stackLines = err.stack?.split("\n") ?? [];
189
- stackLines = stackLines.slice(1);
190
- core.logger("Job").debug(`Resolving script file path. Stack lines: ${stackLines.join("\n")}`);
191
- const filePaths = stackLines
192
- .map((line) => {
193
- const match = /(file:\/\/)?(((\/?)(\w:))?([/\\].+)):\d+:\d+/.exec(line);
194
- if (match) {
195
- return `${match[5] ?? ""}${match[6].replaceAll("\\", "/")}`;
196
- }
197
- return null;
198
- })
199
- .filter(Boolean);
200
- for (const filePath of filePaths) {
201
- const hasExported = await hasClassExported(filePath, className);
202
- if (hasExported) {
203
- core.logger("Job").debug(`${filePath} exports class ${className}`);
204
- return `file://${filePath}`;
205
- }
206
- }
207
- if (filePaths.length > 0) {
208
- core.logger("Job").debug(`No class ${className} found in stack, returning first file path: ${filePaths[0]}`);
209
- return `file://${filePaths[0]}`;
210
- }
211
- throw new Error("Could not determine the task path");
212
- }
213
- /**
214
- * Checks if a given file exports a class with the specified name.
215
- *
216
- * This function attempts to import the module at the provided file path and
217
- * determines if it exports a class (either as a named export or as the default export)
218
- * matching the given class name.
219
- *
220
- * @param filePath - The absolute path to the module file to check.
221
- * @param className - The name of the class to look for in the module's exports.
222
- * @returns A promise that resolves to `true` if the class is exported, or `false` otherwise.
223
- */
224
- async function hasClassExported(filePath, className) {
225
- try {
226
- await promises.access(filePath);
227
- }
228
- catch {
229
- return false;
230
- }
231
- try {
232
- const moduleUrl = url.pathToFileURL(filePath).href;
233
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
234
- const mod = await import(moduleUrl);
235
- if (mod && typeof mod === "object" && className in mod && typeof mod[className] === "function") {
236
- return true;
237
- }
238
- if ("default" in mod && typeof mod.default === "function" && mod.default.name === className) {
239
- return true;
240
- }
241
- return false;
242
- }
243
- catch (e) {
244
- core.logger("Core").debug(e);
245
- return false;
246
- }
247
- }
248
-
249
- exports.Job = Job;
250
- //# sourceMappingURL=job.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job.cjs","sources":["../../src/job/job.ts"],"sourcesContent":[null],"names":["logger","toErrorData","isJobResult","access","pathToFileURL"],"mappings":"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"}
package/dist/job/job.d.ts DELETED
@@ -1,178 +0,0 @@
1
- import { JobData, JobState, ErrorData, UniquenessConfig, SnoozeResult, RetryResult, FailedResult, CompletedResult, JobResult } from '@sidequest/core';
2
-
3
- /**
4
- * Type for a job class constructor.
5
- */
6
- type JobClassType = (new (...args: any) => Job) & {
7
- prototype: {
8
- run: (...args: any) => unknown;
9
- };
10
- };
11
- /**
12
- * Abstract base class for Sidequest jobs.
13
- * Concrete job classes should extend this class and implement the `run` method.
14
- *
15
- * There are a few convenience methods that can be used to return early and trigger a transition:
16
- * - `snooze(delay: number)`: Returns a SnoozeResult to delay the job execution for a specified time.
17
- * - `retry(reason: string | Error, delay?: number)`: Returns a RetryResult to retry the job with an optional delay.
18
- * - `fail(reason: string | Error)`: Returns a FailedResult to mark the job as failed with a reason.
19
- * - `complete(result: unknown)`: Returns a CompletedResult to mark the job as completed with a result.
20
- *
21
- * Calling any of these methods without returning its result will do absolutely nothing. Thus, you need to return
22
- * the result of any of these methods to trigger the job transition.
23
- *
24
- * If there is an uncaught error in the `run` method, it will automatically return a RetryResult with the error data.
25
- *
26
- * @example
27
- * ```typescript
28
- * class MyJob extends Job {
29
- * async run(arg1: string, arg2: number): Promise<string> {
30
- * // Your job logic here
31
- * if (someCondition) {
32
- * return this.snooze(1000); // Delay the job for 1 second
33
- * }
34
- * if (anotherCondition) {
35
- * return this.retry(new Error("Retrying due to some condition"), 500); // Retry after 500ms
36
- * }
37
- * if (yetAnotherCondition) {
38
- * return this.fail("Failed due to some reason"); // Mark the job as failed
39
- * }
40
- * // If everything is fine, return the result
41
- * return this.complete("Job completed successfully"); // Mark the job as completed
42
- * // Alternatively, you can just return a value, which will be treated as the job result:
43
- * return "Job completed successfully";
44
- * }
45
- * }
46
- */
47
- declare abstract class Job implements JobData {
48
- private scriptResolver;
49
- readonly id: number;
50
- readonly script: string;
51
- readonly queue: string;
52
- readonly state: JobState;
53
- readonly class: string;
54
- readonly args: unknown[];
55
- readonly constructor_args: unknown[];
56
- readonly attempt: number;
57
- readonly max_attempts: number;
58
- readonly inserted_at: Date;
59
- readonly available_at: Date;
60
- readonly timeout: number | null;
61
- readonly result: Omit<unknown, "undefined"> | null;
62
- readonly errors: ErrorData[] | null;
63
- readonly attempted_at: Date | null;
64
- readonly completed_at: Date | null;
65
- readonly failed_at: Date | null;
66
- readonly canceled_at: Date | null;
67
- readonly claimed_at: Date | null;
68
- readonly claimed_by: string | null;
69
- readonly unique_digest: string | null;
70
- readonly uniqueness_config: UniquenessConfig | null;
71
- /**
72
- * Initializes the job and resolves its script path.
73
- */
74
- constructor();
75
- /**
76
- * Injects JobData properties into the job instance at runtime.
77
- * @param jobData The job data to inject into this instance.
78
- */
79
- injectJobData(jobData: JobData): void;
80
- /**
81
- * The class name of this job.
82
- */
83
- get className(): string;
84
- /**
85
- * Waits until the job is ready (script path resolved).
86
- * @returns A promise that resolves when ready.
87
- */
88
- ready(): Promise<string>;
89
- /**
90
- * Returns a snooze result for this job.
91
- * This will delay the job execution for the specified time by setting `available_at` to the current
92
- * time plus the delay.
93
- *
94
- * @param delay The delay in milliseconds.
95
- * @returns A SnoozeResult object.
96
- */
97
- snooze(delay: number): SnoozeResult;
98
- /**
99
- * Returns a retry result for this job. It will increase one attempt and set the `attempted_at`
100
- * to the current time. If the number of attempts is increased to the maximum allowed, the transition
101
- * will mark the job as failed.
102
- *
103
- * @param reason The reason for retrying.
104
- * @param delay Optional delay in milliseconds.
105
- * @returns A RetryResult object.
106
- */
107
- retry(reason: string | Error, delay?: number): RetryResult;
108
- /**
109
- * Returns a failed result for this job. This method will prevent any retry attempts and will mark the
110
- * job as failed indefinitely.
111
- *
112
- * @param reason The reason for failure.
113
- * @returns A FailedResult object.
114
- */
115
- fail(reason: string | Error): FailedResult;
116
- /**
117
- * Returns a completed result for this job.
118
- * This method will mark the job as completed.
119
- *
120
- * @param result The result value.
121
- * @returns A CompletedResult object.
122
- */
123
- complete(result: unknown): CompletedResult;
124
- /**
125
- * Runs the job and returns a JobResult.
126
- * This method is intended to be used internally.
127
- *
128
- * @param args Arguments to pass to the run method.
129
- * @returns A promise resolving to the job result.
130
- */
131
- perform<T extends JobClassType>(...args: Parameters<T["prototype"]["run"]>): Promise<JobResult>;
132
- /**
133
- * The main logic for the job. Must be implemented by subclasses.
134
- *
135
- * Returning anything from this method will be treated as the job result and mark the job for completion.
136
- *
137
- * If there is an uncaught error in the `run` method, it will automatically return a RetryResult with
138
- * the error data, which will trigger a job retry.
139
- *
140
- * There are a few convenience methods that can be used inside this method to return early and trigger
141
- * a job transition:
142
- * - `snooze(delay: number)`: Returns a SnoozeResult to delay the job execution for a specified time.
143
- * - `retry(reason: string | Error, delay?: number)`: Returns a RetryResult to retry the job with an
144
- * optional delay.
145
- * - `fail(reason: string | Error)`: Returns a FailedResult to mark the job as failed with a reason.
146
- * - `complete(result: unknown)`: Returns a CompletedResult to mark the job as completed with a result.
147
- *
148
- * You must return the result of any of these convenience methods to trigger the job transition. Simply
149
- * calling them without returning their result will do absolutely nothing.
150
- *
151
- * @example
152
- * ```typescript
153
- * async run(arg1: string, arg2: number): Promise<string> {
154
- * // Your job logic here
155
- * if (someCondition) {
156
- * return this.snooze(1000); // Delay the job for 1 second
157
- * }
158
- * if (anotherCondition) {
159
- * return this.retry(new Error("Retrying due to some condition"), 500); // Retry after 500ms
160
- * }
161
- * if (yetAnotherCondition) {
162
- * return this.fail("Failed due to some reason"); // Mark the job as failed
163
- * }
164
- * // If everything is fine, return the result
165
- * return this.complete("Job completed successfully"); // Mark the job as completed
166
- * // Alternatively, you can just return a value, which will be treated as the job result:
167
- * return "Job completed successfully";
168
- * }
169
- * ```
170
- *
171
- * @param args Arguments for the job, if any.
172
- * @returns The result of the job.
173
- */
174
- abstract run(...args: unknown[]): unknown;
175
- }
176
-
177
- export { Job };
178
- export type { JobClassType };
package/dist/job/job.js DELETED
@@ -1,248 +0,0 @@
1
- import { logger, toErrorData, isJobResult } from '@sidequest/core';
2
- import { access } from 'fs/promises';
3
- import { pathToFileURL } from 'url';
4
-
5
- /**
6
- * Abstract base class for Sidequest jobs.
7
- * Concrete job classes should extend this class and implement the `run` method.
8
- *
9
- * There are a few convenience methods that can be used to return early and trigger a transition:
10
- * - `snooze(delay: number)`: Returns a SnoozeResult to delay the job execution for a specified time.
11
- * - `retry(reason: string | Error, delay?: number)`: Returns a RetryResult to retry the job with an optional delay.
12
- * - `fail(reason: string | Error)`: Returns a FailedResult to mark the job as failed with a reason.
13
- * - `complete(result: unknown)`: Returns a CompletedResult to mark the job as completed with a result.
14
- *
15
- * Calling any of these methods without returning its result will do absolutely nothing. Thus, you need to return
16
- * the result of any of these methods to trigger the job transition.
17
- *
18
- * If there is an uncaught error in the `run` method, it will automatically return a RetryResult with the error data.
19
- *
20
- * @example
21
- * ```typescript
22
- * class MyJob extends Job {
23
- * async run(arg1: string, arg2: number): Promise<string> {
24
- * // Your job logic here
25
- * if (someCondition) {
26
- * return this.snooze(1000); // Delay the job for 1 second
27
- * }
28
- * if (anotherCondition) {
29
- * return this.retry(new Error("Retrying due to some condition"), 500); // Retry after 500ms
30
- * }
31
- * if (yetAnotherCondition) {
32
- * return this.fail("Failed due to some reason"); // Mark the job as failed
33
- * }
34
- * // If everything is fine, return the result
35
- * return this.complete("Job completed successfully"); // Mark the job as completed
36
- * // Alternatively, you can just return a value, which will be treated as the job result:
37
- * return "Job completed successfully";
38
- * }
39
- * }
40
- */
41
- class Job {
42
- scriptResolver;
43
- // JobData properties
44
- id;
45
- script;
46
- queue;
47
- state;
48
- class;
49
- args;
50
- constructor_args;
51
- attempt;
52
- max_attempts;
53
- inserted_at;
54
- available_at;
55
- timeout;
56
- result;
57
- errors;
58
- attempted_at;
59
- completed_at;
60
- failed_at;
61
- canceled_at;
62
- claimed_at;
63
- claimed_by;
64
- unique_digest;
65
- uniqueness_config;
66
- /**
67
- * Initializes the job and resolves its script path.
68
- */
69
- constructor() {
70
- /* IMPORTANT: the build path resolution must be called here.
71
- * This is important to ensure the path resolution is returning the Job implementation.
72
- */
73
- this.scriptResolver = buildPath(this.constructor.name).then((script) => {
74
- Object.assign(this, { script });
75
- logger("Job").debug(`Job script resolved: ${script}`);
76
- return script;
77
- });
78
- }
79
- /**
80
- * Injects JobData properties into the job instance at runtime.
81
- * @param jobData The job data to inject into this instance.
82
- */
83
- injectJobData(jobData) {
84
- logger("Job").debug(`Injecting job data into ${this.className}:`, jobData);
85
- Object.assign(this, jobData);
86
- }
87
- /**
88
- * The class name of this job.
89
- */
90
- get className() {
91
- return this.constructor.name;
92
- }
93
- /**
94
- * Waits until the job is ready (script path resolved).
95
- * @returns A promise that resolves when ready.
96
- */
97
- async ready() {
98
- return await this.scriptResolver;
99
- }
100
- /**
101
- * Returns a snooze result for this job.
102
- * This will delay the job execution for the specified time by setting `available_at` to the current
103
- * time plus the delay.
104
- *
105
- * @param delay The delay in milliseconds.
106
- * @returns A SnoozeResult object.
107
- */
108
- snooze(delay) {
109
- logger("Job").debug(`Job ${this.className} snoozed for ${delay}ms`);
110
- return { __is_job_transition__: true, type: "snooze", delay: delay };
111
- }
112
- /**
113
- * Returns a retry result for this job. It will increase one attempt and set the `attempted_at`
114
- * to the current time. If the number of attempts is increased to the maximum allowed, the transition
115
- * will mark the job as failed.
116
- *
117
- * @param reason The reason for retrying.
118
- * @param delay Optional delay in milliseconds.
119
- * @returns A RetryResult object.
120
- */
121
- retry(reason, delay) {
122
- const error = toErrorData(reason);
123
- logger("Job").debug(`Job ${this.className} retrying due to: ${error.message}${delay ? ` after ${delay}ms` : ""}`);
124
- return { __is_job_transition__: true, type: "retry", error, delay };
125
- }
126
- /**
127
- * Returns a failed result for this job. This method will prevent any retry attempts and will mark the
128
- * job as failed indefinitely.
129
- *
130
- * @param reason The reason for failure.
131
- * @returns A FailedResult object.
132
- */
133
- fail(reason) {
134
- const error = toErrorData(reason);
135
- logger("Job").debug(`Job ${this.className} failed: ${error.message}`);
136
- return { __is_job_transition__: true, type: "failed", error };
137
- }
138
- /**
139
- * Returns a completed result for this job.
140
- * This method will mark the job as completed.
141
- *
142
- * @param result The result value.
143
- * @returns A CompletedResult object.
144
- */
145
- complete(result) {
146
- logger("Job").debug(`Job ${this.className} completed.`);
147
- return { __is_job_transition__: true, type: "completed", result };
148
- }
149
- /**
150
- * Runs the job and returns a JobResult.
151
- * This method is intended to be used internally.
152
- *
153
- * @param args Arguments to pass to the run method.
154
- * @returns A promise resolving to the job result.
155
- */
156
- async perform(...args) {
157
- try {
158
- const result = await this.run(...args);
159
- if (isJobResult(result)) {
160
- return result;
161
- }
162
- return { __is_job_transition__: true, type: "completed", result };
163
- }
164
- catch (error) {
165
- logger("Job").debug(error);
166
- const errorData = toErrorData(error);
167
- return { __is_job_transition__: true, type: "retry", error: errorData };
168
- }
169
- }
170
- }
171
- // TODO need to test this with unit tests
172
- /**
173
- * Attempts to determine the file path where a given class is exported by analyzing the current call stack.
174
- *
175
- * This function inspects the stack trace of a newly created error to extract file paths,
176
- * then checks each file to see if it exports the specified class. If found, returns the file path
177
- * as a `file://` URI. If not found, returns the first file path in the stack as a fallback.
178
- * Throws an error if no file paths can be determined.
179
- *
180
- * @param className - The name of the class to search for in the stack trace files.
181
- * @returns A promise that resolves to the `file://` URI of the file exporting the class, or the first file in the stack.
182
- * @throws If no file paths can be determined from the stack trace.
183
- */
184
- async function buildPath(className) {
185
- const err = new Error();
186
- let stackLines = err.stack?.split("\n") ?? [];
187
- stackLines = stackLines.slice(1);
188
- logger("Job").debug(`Resolving script file path. Stack lines: ${stackLines.join("\n")}`);
189
- const filePaths = stackLines
190
- .map((line) => {
191
- const match = /(file:\/\/)?(((\/?)(\w:))?([/\\].+)):\d+:\d+/.exec(line);
192
- if (match) {
193
- return `${match[5] ?? ""}${match[6].replaceAll("\\", "/")}`;
194
- }
195
- return null;
196
- })
197
- .filter(Boolean);
198
- for (const filePath of filePaths) {
199
- const hasExported = await hasClassExported(filePath, className);
200
- if (hasExported) {
201
- logger("Job").debug(`${filePath} exports class ${className}`);
202
- return `file://${filePath}`;
203
- }
204
- }
205
- if (filePaths.length > 0) {
206
- logger("Job").debug(`No class ${className} found in stack, returning first file path: ${filePaths[0]}`);
207
- return `file://${filePaths[0]}`;
208
- }
209
- throw new Error("Could not determine the task path");
210
- }
211
- /**
212
- * Checks if a given file exports a class with the specified name.
213
- *
214
- * This function attempts to import the module at the provided file path and
215
- * determines if it exports a class (either as a named export or as the default export)
216
- * matching the given class name.
217
- *
218
- * @param filePath - The absolute path to the module file to check.
219
- * @param className - The name of the class to look for in the module's exports.
220
- * @returns A promise that resolves to `true` if the class is exported, or `false` otherwise.
221
- */
222
- async function hasClassExported(filePath, className) {
223
- try {
224
- await access(filePath);
225
- }
226
- catch {
227
- return false;
228
- }
229
- try {
230
- const moduleUrl = pathToFileURL(filePath).href;
231
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
232
- const mod = await import(moduleUrl);
233
- if (mod && typeof mod === "object" && className in mod && typeof mod[className] === "function") {
234
- return true;
235
- }
236
- if ("default" in mod && typeof mod.default === "function" && mod.default.name === className) {
237
- return true;
238
- }
239
- return false;
240
- }
241
- catch (e) {
242
- logger("Core").debug(e);
243
- return false;
244
- }
245
- }
246
-
247
- export { Job };
248
- //# sourceMappingURL=job.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job.js","sources":["../../src/job/job.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}