@sidequest/engine 1.10.0 → 1.12.0
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 +43 -3
- package/dist/engine.cjs.map +1 -1
- package/dist/engine.d.ts +34 -0
- package/dist/engine.js +43 -3
- package/dist/engine.js.map +1 -1
- package/dist/execution/executor-manager.cjs +1 -1
- package/dist/execution/executor-manager.js +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/job/job-builder.cjs +2 -0
- package/dist/job/job-builder.cjs.map +1 -1
- package/dist/job/job-builder.js +2 -0
- package/dist/job/job-builder.js.map +1 -1
- package/dist/shared-runner/manual-loader.cjs +64 -1
- package/dist/shared-runner/manual-loader.cjs.map +1 -1
- package/dist/shared-runner/manual-loader.d.ts +30 -1
- package/dist/shared-runner/manual-loader.js +65 -3
- package/dist/shared-runner/manual-loader.js.map +1 -1
- package/dist/shared-runner/runner.cjs +15 -2
- package/dist/shared-runner/runner.cjs.map +1 -1
- package/dist/shared-runner/runner.js +17 -4
- package/dist/shared-runner/runner.js.map +1 -1
- package/package.json +4 -4
package/dist/engine.cjs
CHANGED
|
@@ -3,14 +3,20 @@
|
|
|
3
3
|
var backend = require('@sidequest/backend');
|
|
4
4
|
var core = require('@sidequest/core');
|
|
5
5
|
var child_process = require('child_process');
|
|
6
|
+
var fs = require('fs');
|
|
6
7
|
var os = require('os');
|
|
8
|
+
var url = require('url');
|
|
7
9
|
var util = require('util');
|
|
8
10
|
var constants$1 = require('./constants.cjs');
|
|
9
11
|
var constants = require('./job/constants.cjs');
|
|
10
12
|
var cronRegistry = require('./job/cron-registry.cjs');
|
|
11
13
|
var jobBuilder = require('./job/job-builder.cjs');
|
|
12
14
|
var grantQueueConfig = require('./queue/grant-queue-config.cjs');
|
|
15
|
+
require('node:fs');
|
|
16
|
+
require('node:url');
|
|
13
17
|
var shutdown = require('./utils/shutdown.cjs');
|
|
18
|
+
var manualLoader = require('./shared-runner/manual-loader.cjs');
|
|
19
|
+
require('piscina');
|
|
14
20
|
|
|
15
21
|
/**
|
|
16
22
|
* The main engine for managing job queues and workers in Sidequest.
|
|
@@ -83,10 +89,9 @@ class Engine {
|
|
|
83
89
|
state: config?.queueDefaults?.state ?? backend.QUEUE_FALLBACK.state,
|
|
84
90
|
},
|
|
85
91
|
manualJobResolution: config?.manualJobResolution ?? false,
|
|
92
|
+
jobsFilePath: config?.jobsFilePath?.trim() ?? "",
|
|
86
93
|
};
|
|
87
|
-
|
|
88
|
-
throw new Error(`Invalid "maxConcurrentJobs" value: must be at least 1.`);
|
|
89
|
-
}
|
|
94
|
+
this.validateConfig();
|
|
90
95
|
core.logger("Engine").debug(`Configuring Sidequest engine: ${util.inspect(this.config)}`);
|
|
91
96
|
if (this.config.logger) {
|
|
92
97
|
core.configureLogger(this.config.logger);
|
|
@@ -97,6 +102,41 @@ class Engine {
|
|
|
97
102
|
}
|
|
98
103
|
return this.config;
|
|
99
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Validates the engine configuration settings.
|
|
107
|
+
*
|
|
108
|
+
* This method also resolves the jobs file path to a file URL if manual job resolution is enabled.
|
|
109
|
+
*
|
|
110
|
+
* @throws {Error} When `maxConcurrentJobs` is defined but less than 1
|
|
111
|
+
* @throws {Error} When `manualJobResolution` is enabled but the specified `jobsFilePath` does not exist
|
|
112
|
+
* @throws {Error} When `manualJobResolution` is enabled but no jobs script can be found in parent directories
|
|
113
|
+
*
|
|
114
|
+
* @remarks
|
|
115
|
+
* - Ensures `maxConcurrentJobs` is at least 1 if specified
|
|
116
|
+
* - When `manualJobResolution` is enabled, validates that either:
|
|
117
|
+
* - A valid `jobsFilePath` exists and resolves it to an absolute URL
|
|
118
|
+
* - A sidequest jobs script can be found in parent directories
|
|
119
|
+
* - Logs the resolved jobs file path when using manual job resolution
|
|
120
|
+
*/
|
|
121
|
+
validateConfig() {
|
|
122
|
+
if (this.config.maxConcurrentJobs !== undefined && this.config.maxConcurrentJobs < 1) {
|
|
123
|
+
throw new Error(`Invalid "maxConcurrentJobs" value: must be at least 1.`);
|
|
124
|
+
}
|
|
125
|
+
if (this.config.manualJobResolution) {
|
|
126
|
+
if (this.config.jobsFilePath) {
|
|
127
|
+
const scriptUrl = manualLoader.resolveScriptPath(this.config.jobsFilePath);
|
|
128
|
+
if (!fs.existsSync(url.fileURLToPath(scriptUrl))) {
|
|
129
|
+
throw new Error(`The specified jobsFilePath does not exist. Resolved to: ${scriptUrl}`);
|
|
130
|
+
}
|
|
131
|
+
core.logger("Engine").info(`Using manual jobs file at: ${this.config.jobsFilePath}`);
|
|
132
|
+
this.config.jobsFilePath = scriptUrl;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// This should throw an error if not found
|
|
136
|
+
manualLoader.findSidequestJobsScriptInParentDirs();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
100
140
|
/**
|
|
101
141
|
* Starts the Sidequest engine and worker process.
|
|
102
142
|
* @param config Optional configuration object.
|
package/dist/engine.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.cjs","sources":["../src/engine.ts"],"sourcesContent":[null],"names":["logger","cpus","MISC_FALLBACK","JOB_BUILDER_FALLBACK","QUEUE_FALLBACK","inspect","configureLogger","LazyBackend","grantQueueConfig","fork","DEFAULT_WORKER_PATH","gracefulShutdown","ScheduledJobRegistry","clearGracefulShutdown","JobBuilder"],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.cjs","sources":["../src/engine.ts"],"sourcesContent":[null],"names":["logger","cpus","MISC_FALLBACK","JOB_BUILDER_FALLBACK","QUEUE_FALLBACK","inspect","configureLogger","LazyBackend","resolveScriptPath","existsSync","fileURLToPath","findSidequestJobsScriptInParentDirs","grantQueueConfig","fork","DEFAULT_WORKER_PATH","gracefulShutdown","ScheduledJobRegistry","clearGracefulShutdown","JobBuilder"],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -63,6 +63,23 @@ interface EngineConfig {
|
|
|
63
63
|
* Defaults to `false`.
|
|
64
64
|
*/
|
|
65
65
|
manualJobResolution?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Optional path to the `sidequest.jobs.js` file when using manual job resolution.
|
|
68
|
+
* If not provided, the engine will search for `sidequest.jobs.js` starting from the current working directory
|
|
69
|
+
* and walking up through parent directories until it finds the file or reaches the root.
|
|
70
|
+
*
|
|
71
|
+
* This is useful if your `sidequest.jobs.js` file is located in a non-standard location
|
|
72
|
+
* or if you want to explicitly specify its path.
|
|
73
|
+
*
|
|
74
|
+
* This option will be resolved and changed at configuration time, and if the file does not exist,
|
|
75
|
+
* an error will be thrown.
|
|
76
|
+
*
|
|
77
|
+
* IMPORTANT: if a relative path is provided, it will be resolved relative to the file calling the engine or
|
|
78
|
+
* `Sidequest.configure()`, NOT the current working directory.
|
|
79
|
+
*
|
|
80
|
+
* If manualJobResolution === false, this option is ignored.
|
|
81
|
+
*/
|
|
82
|
+
jobsFilePath?: string;
|
|
66
83
|
}
|
|
67
84
|
/**
|
|
68
85
|
* Non-nullable version of the EngineConfig type.
|
|
@@ -104,6 +121,23 @@ declare class Engine {
|
|
|
104
121
|
* @returns The resolved configuration.
|
|
105
122
|
*/
|
|
106
123
|
configure(config?: EngineConfig): Promise<NonNullableEngineConfig>;
|
|
124
|
+
/**
|
|
125
|
+
* Validates the engine configuration settings.
|
|
126
|
+
*
|
|
127
|
+
* This method also resolves the jobs file path to a file URL if manual job resolution is enabled.
|
|
128
|
+
*
|
|
129
|
+
* @throws {Error} When `maxConcurrentJobs` is defined but less than 1
|
|
130
|
+
* @throws {Error} When `manualJobResolution` is enabled but the specified `jobsFilePath` does not exist
|
|
131
|
+
* @throws {Error} When `manualJobResolution` is enabled but no jobs script can be found in parent directories
|
|
132
|
+
*
|
|
133
|
+
* @remarks
|
|
134
|
+
* - Ensures `maxConcurrentJobs` is at least 1 if specified
|
|
135
|
+
* - When `manualJobResolution` is enabled, validates that either:
|
|
136
|
+
* - A valid `jobsFilePath` exists and resolves it to an absolute URL
|
|
137
|
+
* - A sidequest jobs script can be found in parent directories
|
|
138
|
+
* - Logs the resolved jobs file path when using manual job resolution
|
|
139
|
+
*/
|
|
140
|
+
validateConfig(): void;
|
|
107
141
|
/**
|
|
108
142
|
* Starts the Sidequest engine and worker process.
|
|
109
143
|
* @param config Optional configuration object.
|
package/dist/engine.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { QUEUE_FALLBACK, MISC_FALLBACK, LazyBackend } from '@sidequest/backend';
|
|
2
2
|
import { logger, configureLogger } from '@sidequest/core';
|
|
3
3
|
import { fork } from 'child_process';
|
|
4
|
+
import { existsSync } from 'fs';
|
|
4
5
|
import { cpus } from 'os';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
5
7
|
import { inspect } from 'util';
|
|
6
8
|
import { DEFAULT_WORKER_PATH } from './constants.js';
|
|
7
9
|
import { JOB_BUILDER_FALLBACK } from './job/constants.js';
|
|
8
10
|
import { ScheduledJobRegistry } from './job/cron-registry.js';
|
|
9
11
|
import { JobBuilder } from './job/job-builder.js';
|
|
10
12
|
import { grantQueueConfig } from './queue/grant-queue-config.js';
|
|
13
|
+
import 'node:fs';
|
|
14
|
+
import 'node:url';
|
|
11
15
|
import { gracefulShutdown, clearGracefulShutdown } from './utils/shutdown.js';
|
|
16
|
+
import { resolveScriptPath, findSidequestJobsScriptInParentDirs } from './shared-runner/manual-loader.js';
|
|
17
|
+
import 'piscina';
|
|
12
18
|
|
|
13
19
|
/**
|
|
14
20
|
* The main engine for managing job queues and workers in Sidequest.
|
|
@@ -81,10 +87,9 @@ class Engine {
|
|
|
81
87
|
state: config?.queueDefaults?.state ?? QUEUE_FALLBACK.state,
|
|
82
88
|
},
|
|
83
89
|
manualJobResolution: config?.manualJobResolution ?? false,
|
|
90
|
+
jobsFilePath: config?.jobsFilePath?.trim() ?? "",
|
|
84
91
|
};
|
|
85
|
-
|
|
86
|
-
throw new Error(`Invalid "maxConcurrentJobs" value: must be at least 1.`);
|
|
87
|
-
}
|
|
92
|
+
this.validateConfig();
|
|
88
93
|
logger("Engine").debug(`Configuring Sidequest engine: ${inspect(this.config)}`);
|
|
89
94
|
if (this.config.logger) {
|
|
90
95
|
configureLogger(this.config.logger);
|
|
@@ -95,6 +100,41 @@ class Engine {
|
|
|
95
100
|
}
|
|
96
101
|
return this.config;
|
|
97
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Validates the engine configuration settings.
|
|
105
|
+
*
|
|
106
|
+
* This method also resolves the jobs file path to a file URL if manual job resolution is enabled.
|
|
107
|
+
*
|
|
108
|
+
* @throws {Error} When `maxConcurrentJobs` is defined but less than 1
|
|
109
|
+
* @throws {Error} When `manualJobResolution` is enabled but the specified `jobsFilePath` does not exist
|
|
110
|
+
* @throws {Error} When `manualJobResolution` is enabled but no jobs script can be found in parent directories
|
|
111
|
+
*
|
|
112
|
+
* @remarks
|
|
113
|
+
* - Ensures `maxConcurrentJobs` is at least 1 if specified
|
|
114
|
+
* - When `manualJobResolution` is enabled, validates that either:
|
|
115
|
+
* - A valid `jobsFilePath` exists and resolves it to an absolute URL
|
|
116
|
+
* - A sidequest jobs script can be found in parent directories
|
|
117
|
+
* - Logs the resolved jobs file path when using manual job resolution
|
|
118
|
+
*/
|
|
119
|
+
validateConfig() {
|
|
120
|
+
if (this.config.maxConcurrentJobs !== undefined && this.config.maxConcurrentJobs < 1) {
|
|
121
|
+
throw new Error(`Invalid "maxConcurrentJobs" value: must be at least 1.`);
|
|
122
|
+
}
|
|
123
|
+
if (this.config.manualJobResolution) {
|
|
124
|
+
if (this.config.jobsFilePath) {
|
|
125
|
+
const scriptUrl = resolveScriptPath(this.config.jobsFilePath);
|
|
126
|
+
if (!existsSync(fileURLToPath(scriptUrl))) {
|
|
127
|
+
throw new Error(`The specified jobsFilePath does not exist. Resolved to: ${scriptUrl}`);
|
|
128
|
+
}
|
|
129
|
+
logger("Engine").info(`Using manual jobs file at: ${this.config.jobsFilePath}`);
|
|
130
|
+
this.config.jobsFilePath = scriptUrl;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// This should throw an error if not found
|
|
134
|
+
findSidequestJobsScriptInParentDirs();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
98
138
|
/**
|
|
99
139
|
* Starts the Sidequest engine and worker process.
|
|
100
140
|
* @param config Optional configuration object.
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sources":["../src/engine.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.js","sources":["../src/engine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ var EventEmitter = require('events');
|
|
|
5
5
|
var util = require('util');
|
|
6
6
|
var jobTransitioner = require('../job/job-transitioner.cjs');
|
|
7
7
|
require('node:fs');
|
|
8
|
-
require('node:path');
|
|
9
8
|
require('node:url');
|
|
9
|
+
require('node:path');
|
|
10
10
|
var runnerPool = require('../shared-runner/runner-pool.cjs');
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -3,8 +3,8 @@ import EventEmitter from 'events';
|
|
|
3
3
|
import { inspect } from 'util';
|
|
4
4
|
import { JobTransitioner } from '../job/job-transitioner.js';
|
|
5
5
|
import 'node:fs';
|
|
6
|
-
import 'node:path';
|
|
7
6
|
import 'node:url';
|
|
7
|
+
import 'node:path';
|
|
8
8
|
import { RunnerPool } from '../shared-runner/runner-pool.js';
|
|
9
9
|
|
|
10
10
|
/**
|
package/dist/index.cjs
CHANGED
|
@@ -38,6 +38,7 @@ exports.releaseStaleJobs = releaseStaleJobs.releaseStaleJobs;
|
|
|
38
38
|
exports.run = runner;
|
|
39
39
|
exports.MANUAL_SCRIPT_TAG = manualLoader.MANUAL_SCRIPT_TAG;
|
|
40
40
|
exports.findSidequestJobsScriptInParentDirs = manualLoader.findSidequestJobsScriptInParentDirs;
|
|
41
|
+
exports.resolveScriptPath = manualLoader.resolveScriptPath;
|
|
41
42
|
exports.RunnerPool = runnerPool.RunnerPool;
|
|
42
43
|
exports.importSidequest = _import.importSidequest;
|
|
43
44
|
exports.clearGracefulShutdown = shutdown.clearGracefulShutdown;
|
package/dist/index.cjs.map
CHANGED
|
@@ -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
|
@@ -12,7 +12,7 @@ export { cleanupFinishedJobs } from './routines/cleanup-finished-job.js';
|
|
|
12
12
|
export { releaseStaleJobs } from './routines/release-stale-jobs.js';
|
|
13
13
|
import * as runner from './shared-runner/runner.js';
|
|
14
14
|
export { runner as run };
|
|
15
|
-
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs } from './shared-runner/manual-loader.js';
|
|
15
|
+
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs, resolveScriptPath } from './shared-runner/manual-loader.js';
|
|
16
16
|
export { RunnerPool } from './shared-runner/runner-pool.js';
|
|
17
17
|
export { importSidequest } from './utils/import.js';
|
|
18
18
|
export { clearGracefulShutdown, gracefulShutdown } from './utils/shutdown.js';
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export { cleanupFinishedJobs } from './routines/cleanup-finished-job.js';
|
|
|
12
12
|
export { releaseStaleJobs } from './routines/release-stale-jobs.js';
|
|
13
13
|
import * as runner from './shared-runner/runner.js';
|
|
14
14
|
export { runner as run };
|
|
15
|
-
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs } from './shared-runner/manual-loader.js';
|
|
15
|
+
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs, resolveScriptPath } from './shared-runner/manual-loader.js';
|
|
16
16
|
export { RunnerPool } from './shared-runner/runner-pool.js';
|
|
17
17
|
export { importSidequest } from './utils/import.js';
|
|
18
18
|
export { clearGracefulShutdown, gracefulShutdown } from './utils/shutdown.js';
|
package/dist/job/job-builder.cjs
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
var core = require('@sidequest/core');
|
|
4
4
|
var nodeCron = require('node-cron');
|
|
5
5
|
var node_util = require('node:util');
|
|
6
|
+
require('node:fs');
|
|
7
|
+
require('node:url');
|
|
6
8
|
var manualLoader = require('../shared-runner/manual-loader.cjs');
|
|
7
9
|
require('piscina');
|
|
8
10
|
require('../constants.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-builder.cjs","sources":["../../src/job/job-builder.ts"],"sourcesContent":[null],"names":["JOB_BUILDER_FALLBACK","MANUAL_SCRIPT_TAG","UniquenessFactory","logger","inspect","ScheduledJobRegistry"],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-builder.cjs","sources":["../../src/job/job-builder.ts"],"sourcesContent":[null],"names":["JOB_BUILDER_FALLBACK","MANUAL_SCRIPT_TAG","UniquenessFactory","logger","inspect","ScheduledJobRegistry"],"mappings":"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"}
|
package/dist/job/job-builder.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { UniquenessFactory, logger } from '@sidequest/core';
|
|
2
2
|
import nodeCron from 'node-cron';
|
|
3
3
|
import { inspect } from 'node:util';
|
|
4
|
+
import 'node:fs';
|
|
5
|
+
import 'node:url';
|
|
4
6
|
import { MANUAL_SCRIPT_TAG } from '../shared-runner/manual-loader.js';
|
|
5
7
|
import 'piscina';
|
|
6
8
|
import '../constants.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-builder.js","sources":["../../src/job/job-builder.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-builder.js","sources":["../../src/job/job-builder.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var core = require('@sidequest/core');
|
|
3
4
|
var node_fs = require('node:fs');
|
|
4
5
|
var node_path = require('node:path');
|
|
5
6
|
var node_url = require('node:url');
|
|
@@ -29,7 +30,7 @@ const MANUAL_SCRIPT_TAG = "sidequest.jobs.js";
|
|
|
29
30
|
* const packageFile = findFileInParentDirs("package.json", "/some/project/dir");
|
|
30
31
|
* ```
|
|
31
32
|
*/
|
|
32
|
-
function findSidequestJobsScriptInParentDirs(fileName =
|
|
33
|
+
function findSidequestJobsScriptInParentDirs(fileName = MANUAL_SCRIPT_TAG, startDir = process.cwd()) {
|
|
33
34
|
if (!fileName.trim()) {
|
|
34
35
|
throw new Error("fileName must be a non-empty string");
|
|
35
36
|
}
|
|
@@ -56,7 +57,69 @@ function findSidequestJobsScriptInParentDirs(fileName = "sidequest.jobs.js", sta
|
|
|
56
57
|
}
|
|
57
58
|
throw new Error(`File "${fileName}" not found in "${startDir}" or any parent directory`);
|
|
58
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolves a script path to a file URL, handling various path formats and resolution strategies.
|
|
62
|
+
*
|
|
63
|
+
* This function attempts to resolve script paths in the following order:
|
|
64
|
+
* 1. If the path is already a valid URL, returns it as-is (for file: protocol URLs)
|
|
65
|
+
* 2. If the path is absolute, converts it directly to a file URL
|
|
66
|
+
* 3. If the path is relative, searches for the file in directories from the call stack,
|
|
67
|
+
* starting from the caller's directory and walking up the stack
|
|
68
|
+
*
|
|
69
|
+
* The stack-based resolution helps resolve relative paths based on the script's
|
|
70
|
+
* execution context rather than the current working directory.
|
|
71
|
+
*
|
|
72
|
+
* @param scriptPath - The script path to resolve. Can be a relative path, absolute path, or URL string.
|
|
73
|
+
* @returns The resolved file URL as a string
|
|
74
|
+
* @throws {Error} When scriptPath is empty or when the file cannot be found in any searched location
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* // Absolute path
|
|
79
|
+
* resolveScriptPath('/path/to/script.js') // Returns 'file:///path/to/script.js'
|
|
80
|
+
*
|
|
81
|
+
* // Relative path (searches based on call stack)
|
|
82
|
+
* resolveScriptPath('./script.js') // Returns file URL of script.js found in caller's directory
|
|
83
|
+
*
|
|
84
|
+
* // Already a URL
|
|
85
|
+
* resolveScriptPath('file:///path/to/script.js') // Returns 'file:///path/to/script.js'
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
function resolveScriptPath(scriptPath) {
|
|
89
|
+
scriptPath = scriptPath.trim();
|
|
90
|
+
if (!scriptPath) {
|
|
91
|
+
throw new Error("scriptPath must be a non-empty string");
|
|
92
|
+
}
|
|
93
|
+
// If the scriptPath is already a URL, return as is
|
|
94
|
+
try {
|
|
95
|
+
const url = new URL(scriptPath);
|
|
96
|
+
if (url.protocol === "file:") {
|
|
97
|
+
return url.href;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Not a valid URL, proceed to resolve as file path
|
|
102
|
+
}
|
|
103
|
+
// If it's an absolute path, convert directly to file URL
|
|
104
|
+
if (node_path.isAbsolute(scriptPath)) {
|
|
105
|
+
return node_url.pathToFileURL(scriptPath).href;
|
|
106
|
+
}
|
|
107
|
+
// Otherwise, search in current and parent directories based on stack trace
|
|
108
|
+
// This helps in resolving relative paths based on where the script is executed
|
|
109
|
+
// rather than the current working directory
|
|
110
|
+
const err = new Error();
|
|
111
|
+
const stackFiles = core.parseStackTrace(err);
|
|
112
|
+
for (const file of stackFiles) {
|
|
113
|
+
const parentDir = node_path.dirname(file);
|
|
114
|
+
const resolvedPath = node_path.resolve(parentDir, scriptPath);
|
|
115
|
+
if (node_fs.existsSync(resolvedPath)) {
|
|
116
|
+
return node_url.pathToFileURL(resolvedPath).href;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
throw new Error(`Unable to resolve script path: ${scriptPath}`);
|
|
120
|
+
}
|
|
59
121
|
|
|
60
122
|
exports.MANUAL_SCRIPT_TAG = MANUAL_SCRIPT_TAG;
|
|
61
123
|
exports.findSidequestJobsScriptInParentDirs = findSidequestJobsScriptInParentDirs;
|
|
124
|
+
exports.resolveScriptPath = resolveScriptPath;
|
|
62
125
|
//# sourceMappingURL=manual-loader.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual-loader.cjs","sources":["../../src/shared-runner/manual-loader.ts"],"sourcesContent":[null],"names":["resolve","join","existsSync","pathToFileURL","dirname"],"mappings":"
|
|
1
|
+
{"version":3,"file":"manual-loader.cjs","sources":["../../src/shared-runner/manual-loader.ts"],"sourcesContent":[null],"names":["resolve","join","existsSync","pathToFileURL","dirname","isAbsolute","parseStackTrace"],"mappings":";;;;;;;AAKA;;;AAGG;AACI,MAAM,iBAAiB,GAAG;AAEjC;;;;;;;;;;;;;;;;;;;AAmBG;AACG,SAAU,mCAAmC,CAAC,QAAQ,GAAG,iBAAiB,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,EAAA;AACxG,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;IACxD;AAEA,IAAA,IAAI,UAAU,GAAGA,iBAAO,CAAC,QAAQ,CAAC;AAClC,IAAA,MAAM,OAAO,GAAGA,iBAAO,CAAC,GAAG,CAAC;;AAG5B,IAAA,OAAO,UAAU,KAAK,OAAO,EAAE;QAC7B,MAAM,QAAQ,GAAGC,cAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;AAE3C,QAAA,IAAIC,kBAAU,CAAC,QAAQ,CAAC,EAAE;AACxB,YAAA,OAAOC,sBAAa,CAAC,QAAQ,CAAC,CAAC,IAAI;QACrC;;AAGA,QAAA,MAAM,SAAS,GAAGC,iBAAO,CAAC,UAAU,CAAC;;AAGrC,QAAA,IAAI,SAAS,KAAK,UAAU,EAAE;YAC5B;QACF;QAEA,UAAU,GAAG,SAAS;IACxB;;IAGA,MAAM,YAAY,GAAGH,cAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC5C,IAAA,IAAIC,kBAAU,CAAC,YAAY,CAAC,EAAE;AAC5B,QAAA,OAAOC,sBAAa,CAAC,YAAY,CAAC,CAAC,IAAI;IACzC;IAEA,MAAM,IAAI,KAAK,CAAC,CAAA,MAAA,EAAS,QAAQ,CAAA,gBAAA,EAAmB,QAAQ,CAAA,yBAAA,CAA2B,CAAC;AAC1F;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACG,SAAU,iBAAiB,CAAC,UAAkB,EAAA;AAClD,IAAA,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE;IAC9B,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAC1D;;AAGA,IAAA,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC5B,OAAO,GAAG,CAAC,IAAI;QACjB;IACF;AAAE,IAAA,MAAM;;IAER;;AAGA,IAAA,IAAIE,oBAAU,CAAC,UAAU,CAAC,EAAE;AAC1B,QAAA,OAAOF,sBAAa,CAAC,UAAU,CAAC,CAAC,IAAI;IACvC;;;;AAKA,IAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;AACvB,IAAA,MAAM,UAAU,GAAGG,oBAAe,CAAC,GAAG,CAAC;AACvC,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,QAAA,MAAM,SAAS,GAAGF,iBAAO,CAAC,IAAI,CAAC;QAC/B,MAAM,YAAY,GAAGJ,iBAAO,CAAC,SAAS,EAAE,UAAU,CAAC;AACnD,QAAA,IAAIE,kBAAU,CAAC,YAAY,CAAC,EAAE;AAC5B,YAAA,OAAOC,sBAAa,CAAC,YAAY,CAAC,CAAC,IAAI;QACzC;IACF;AAEA,IAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,CAAA,CAAE,CAAC;AACjE;;;;;;"}
|
|
@@ -24,5 +24,34 @@ declare const MANUAL_SCRIPT_TAG = "sidequest.jobs.js";
|
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
26
|
declare function findSidequestJobsScriptInParentDirs(fileName?: string, startDir?: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Resolves a script path to a file URL, handling various path formats and resolution strategies.
|
|
29
|
+
*
|
|
30
|
+
* This function attempts to resolve script paths in the following order:
|
|
31
|
+
* 1. If the path is already a valid URL, returns it as-is (for file: protocol URLs)
|
|
32
|
+
* 2. If the path is absolute, converts it directly to a file URL
|
|
33
|
+
* 3. If the path is relative, searches for the file in directories from the call stack,
|
|
34
|
+
* starting from the caller's directory and walking up the stack
|
|
35
|
+
*
|
|
36
|
+
* The stack-based resolution helps resolve relative paths based on the script's
|
|
37
|
+
* execution context rather than the current working directory.
|
|
38
|
+
*
|
|
39
|
+
* @param scriptPath - The script path to resolve. Can be a relative path, absolute path, or URL string.
|
|
40
|
+
* @returns The resolved file URL as a string
|
|
41
|
+
* @throws {Error} When scriptPath is empty or when the file cannot be found in any searched location
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* // Absolute path
|
|
46
|
+
* resolveScriptPath('/path/to/script.js') // Returns 'file:///path/to/script.js'
|
|
47
|
+
*
|
|
48
|
+
* // Relative path (searches based on call stack)
|
|
49
|
+
* resolveScriptPath('./script.js') // Returns file URL of script.js found in caller's directory
|
|
50
|
+
*
|
|
51
|
+
* // Already a URL
|
|
52
|
+
* resolveScriptPath('file:///path/to/script.js') // Returns 'file:///path/to/script.js'
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
declare function resolveScriptPath(scriptPath: string): string;
|
|
27
56
|
|
|
28
|
-
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs };
|
|
57
|
+
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs, resolveScriptPath };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { parseStackTrace } from '@sidequest/core';
|
|
1
2
|
import { existsSync } from 'node:fs';
|
|
2
|
-
import { resolve, join
|
|
3
|
+
import { isAbsolute, dirname, resolve, join } from 'node:path';
|
|
3
4
|
import { pathToFileURL } from 'node:url';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -27,7 +28,7 @@ const MANUAL_SCRIPT_TAG = "sidequest.jobs.js";
|
|
|
27
28
|
* const packageFile = findFileInParentDirs("package.json", "/some/project/dir");
|
|
28
29
|
* ```
|
|
29
30
|
*/
|
|
30
|
-
function findSidequestJobsScriptInParentDirs(fileName =
|
|
31
|
+
function findSidequestJobsScriptInParentDirs(fileName = MANUAL_SCRIPT_TAG, startDir = process.cwd()) {
|
|
31
32
|
if (!fileName.trim()) {
|
|
32
33
|
throw new Error("fileName must be a non-empty string");
|
|
33
34
|
}
|
|
@@ -54,6 +55,67 @@ function findSidequestJobsScriptInParentDirs(fileName = "sidequest.jobs.js", sta
|
|
|
54
55
|
}
|
|
55
56
|
throw new Error(`File "${fileName}" not found in "${startDir}" or any parent directory`);
|
|
56
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolves a script path to a file URL, handling various path formats and resolution strategies.
|
|
60
|
+
*
|
|
61
|
+
* This function attempts to resolve script paths in the following order:
|
|
62
|
+
* 1. If the path is already a valid URL, returns it as-is (for file: protocol URLs)
|
|
63
|
+
* 2. If the path is absolute, converts it directly to a file URL
|
|
64
|
+
* 3. If the path is relative, searches for the file in directories from the call stack,
|
|
65
|
+
* starting from the caller's directory and walking up the stack
|
|
66
|
+
*
|
|
67
|
+
* The stack-based resolution helps resolve relative paths based on the script's
|
|
68
|
+
* execution context rather than the current working directory.
|
|
69
|
+
*
|
|
70
|
+
* @param scriptPath - The script path to resolve. Can be a relative path, absolute path, or URL string.
|
|
71
|
+
* @returns The resolved file URL as a string
|
|
72
|
+
* @throws {Error} When scriptPath is empty or when the file cannot be found in any searched location
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* // Absolute path
|
|
77
|
+
* resolveScriptPath('/path/to/script.js') // Returns 'file:///path/to/script.js'
|
|
78
|
+
*
|
|
79
|
+
* // Relative path (searches based on call stack)
|
|
80
|
+
* resolveScriptPath('./script.js') // Returns file URL of script.js found in caller's directory
|
|
81
|
+
*
|
|
82
|
+
* // Already a URL
|
|
83
|
+
* resolveScriptPath('file:///path/to/script.js') // Returns 'file:///path/to/script.js'
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
function resolveScriptPath(scriptPath) {
|
|
87
|
+
scriptPath = scriptPath.trim();
|
|
88
|
+
if (!scriptPath) {
|
|
89
|
+
throw new Error("scriptPath must be a non-empty string");
|
|
90
|
+
}
|
|
91
|
+
// If the scriptPath is already a URL, return as is
|
|
92
|
+
try {
|
|
93
|
+
const url = new URL(scriptPath);
|
|
94
|
+
if (url.protocol === "file:") {
|
|
95
|
+
return url.href;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Not a valid URL, proceed to resolve as file path
|
|
100
|
+
}
|
|
101
|
+
// If it's an absolute path, convert directly to file URL
|
|
102
|
+
if (isAbsolute(scriptPath)) {
|
|
103
|
+
return pathToFileURL(scriptPath).href;
|
|
104
|
+
}
|
|
105
|
+
// Otherwise, search in current and parent directories based on stack trace
|
|
106
|
+
// This helps in resolving relative paths based on where the script is executed
|
|
107
|
+
// rather than the current working directory
|
|
108
|
+
const err = new Error();
|
|
109
|
+
const stackFiles = parseStackTrace(err);
|
|
110
|
+
for (const file of stackFiles) {
|
|
111
|
+
const parentDir = dirname(file);
|
|
112
|
+
const resolvedPath = resolve(parentDir, scriptPath);
|
|
113
|
+
if (existsSync(resolvedPath)) {
|
|
114
|
+
return pathToFileURL(resolvedPath).href;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
throw new Error(`Unable to resolve script path: ${scriptPath}`);
|
|
118
|
+
}
|
|
57
119
|
|
|
58
|
-
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs };
|
|
120
|
+
export { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs, resolveScriptPath };
|
|
59
121
|
//# sourceMappingURL=manual-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual-loader.js","sources":["../../src/shared-runner/manual-loader.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manual-loader.js","sources":["../../src/shared-runner/manual-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAKA;;;AAGG;AACI,MAAM,iBAAiB,GAAG;AAEjC;;;;;;;;;;;;;;;;;;;AAmBG;AACG,SAAU,mCAAmC,CAAC,QAAQ,GAAG,iBAAiB,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,EAAA;AACxG,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;IACxD;AAEA,IAAA,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClC,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;;AAG5B,IAAA,OAAO,UAAU,KAAK,OAAO,EAAE;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;AAE3C,QAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AACxB,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI;QACrC;;AAGA,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;;AAGrC,QAAA,IAAI,SAAS,KAAK,UAAU,EAAE;YAC5B;QACF;QAEA,UAAU,GAAG,SAAS;IACxB;;IAGA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC5C,IAAA,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE;AAC5B,QAAA,OAAO,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI;IACzC;IAEA,MAAM,IAAI,KAAK,CAAC,CAAA,MAAA,EAAS,QAAQ,CAAA,gBAAA,EAAmB,QAAQ,CAAA,yBAAA,CAA2B,CAAC;AAC1F;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACG,SAAU,iBAAiB,CAAC,UAAkB,EAAA;AAClD,IAAA,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE;IAC9B,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAC1D;;AAGA,IAAA,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC5B,OAAO,GAAG,CAAC,IAAI;QACjB;IACF;AAAE,IAAA,MAAM;;IAER;;AAGA,IAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;AAC1B,QAAA,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI;IACvC;;;;AAKA,IAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;AACvB,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC;AACvC,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;QAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC;AACnD,QAAA,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE;AAC5B,YAAA,OAAO,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI;QACzC;IACF;AAEA,IAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,CAAA,CAAE,CAAC;AACjE;;;;"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var core = require('@sidequest/core');
|
|
6
|
+
var node_fs = require('node:fs');
|
|
7
|
+
var node_url = require('node:url');
|
|
6
8
|
var _import = require('../utils/import.cjs');
|
|
7
9
|
var manualLoader = require('./manual-loader.cjs');
|
|
8
10
|
|
|
@@ -22,7 +24,18 @@ async function run({ jobData, config }) {
|
|
|
22
24
|
core.logger("Runner").debug("Manual job resolution is enabled; importing 'sidequest.jobs.js' job script.");
|
|
23
25
|
try {
|
|
24
26
|
// When manual job resolution is enabled, import from the sidequest.jobs.js script
|
|
25
|
-
|
|
27
|
+
if (!config.jobsFilePath) {
|
|
28
|
+
// If no custom path is provided, search for sidequest.jobs.js in parent directories
|
|
29
|
+
// throws if not found
|
|
30
|
+
scriptUrl = manualLoader.findSidequestJobsScriptInParentDirs();
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// If a custom path is provided, resolve it and ensure it exists
|
|
34
|
+
scriptUrl = manualLoader.resolveScriptPath(config.jobsFilePath);
|
|
35
|
+
if (!node_fs.existsSync(node_url.fileURLToPath(scriptUrl))) {
|
|
36
|
+
throw new Error(`The specified jobsFilePath does not exist. Resolved to: ${scriptUrl}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
26
39
|
}
|
|
27
40
|
catch (error) {
|
|
28
41
|
const errorMessage = `Failed to locate 'sidequest.jobs.js' for manual job resolution: ${error instanceof Error ? error.message : String(error)}`;
|
|
@@ -34,7 +47,7 @@ async function run({ jobData, config }) {
|
|
|
34
47
|
else {
|
|
35
48
|
core.logger("Runner").debug("Manual job resolution is disabled; importing specified job script.");
|
|
36
49
|
// Convert relative path to absolute file URL for dynamic import
|
|
37
|
-
scriptUrl = core.
|
|
50
|
+
scriptUrl = core.resolveScriptPathForJob(jobData.script);
|
|
38
51
|
}
|
|
39
52
|
script = (await import(scriptUrl));
|
|
40
53
|
core.logger("Runner").debug(`Successfully imported job script "${jobData.script}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.cjs","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":["logger","MANUAL_SCRIPT_TAG","findSidequestJobsScriptInParentDirs","toErrorData","
|
|
1
|
+
{"version":3,"file":"runner.cjs","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":["logger","MANUAL_SCRIPT_TAG","findSidequestJobsScriptInParentDirs","resolveScriptPath","existsSync","fileURLToPath","toErrorData","resolveScriptPathForJob","importSidequest"],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { logger, toErrorData,
|
|
1
|
+
import { logger, toErrorData, resolveScriptPathForJob } from '@sidequest/core';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
2
4
|
import { importSidequest } from '../utils/import.js';
|
|
3
|
-
import { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs } from './manual-loader.js';
|
|
5
|
+
import { MANUAL_SCRIPT_TAG, findSidequestJobsScriptInParentDirs, resolveScriptPath } from './manual-loader.js';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Runs a job by dynamically importing its script and executing the specified class.
|
|
@@ -18,7 +20,18 @@ async function run({ jobData, config }) {
|
|
|
18
20
|
logger("Runner").debug("Manual job resolution is enabled; importing 'sidequest.jobs.js' job script.");
|
|
19
21
|
try {
|
|
20
22
|
// When manual job resolution is enabled, import from the sidequest.jobs.js script
|
|
21
|
-
|
|
23
|
+
if (!config.jobsFilePath) {
|
|
24
|
+
// If no custom path is provided, search for sidequest.jobs.js in parent directories
|
|
25
|
+
// throws if not found
|
|
26
|
+
scriptUrl = findSidequestJobsScriptInParentDirs();
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// If a custom path is provided, resolve it and ensure it exists
|
|
30
|
+
scriptUrl = resolveScriptPath(config.jobsFilePath);
|
|
31
|
+
if (!existsSync(fileURLToPath(scriptUrl))) {
|
|
32
|
+
throw new Error(`The specified jobsFilePath does not exist. Resolved to: ${scriptUrl}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
22
35
|
}
|
|
23
36
|
catch (error) {
|
|
24
37
|
const errorMessage = `Failed to locate 'sidequest.jobs.js' for manual job resolution: ${error instanceof Error ? error.message : String(error)}`;
|
|
@@ -30,7 +43,7 @@ async function run({ jobData, config }) {
|
|
|
30
43
|
else {
|
|
31
44
|
logger("Runner").debug("Manual job resolution is disabled; importing specified job script.");
|
|
32
45
|
// Convert relative path to absolute file URL for dynamic import
|
|
33
|
-
scriptUrl =
|
|
46
|
+
scriptUrl = resolveScriptPathForJob(jobData.script);
|
|
34
47
|
}
|
|
35
48
|
script = (await import(scriptUrl));
|
|
36
49
|
logger("Runner").debug(`Successfully imported job script "${jobData.script}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.js","sources":["../../src/shared-runner/runner.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sidequest/engine",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "@sidequest/engine is the core engine of SideQuest, a distributed background job processing system for Node.js and TypeScript.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nodejs",
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
},
|
|
43
43
|
"license": "LGPL-3.0-or-later",
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@sidequest/backend": "1.
|
|
46
|
-
"@sidequest/core": "1.
|
|
45
|
+
"@sidequest/backend": "1.12.0",
|
|
46
|
+
"@sidequest/core": "1.12.0",
|
|
47
47
|
"node-cron": "^4.2.1",
|
|
48
48
|
"piscina": "^5.1.3"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"sidequest": "1.
|
|
51
|
+
"sidequest": "1.12.0"
|
|
52
52
|
}
|
|
53
53
|
}
|