@webda/async 2.0.0-beta.1 → 2.0.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/lib/index.d.ts +4 -4
- package/lib/index.js +4 -20
- package/lib/index.js.map +1 -1
- package/lib/models.js +4 -9
- package/lib/models.js.map +1 -1
- package/lib/services/asyncjobservice.d.ts +4 -5
- package/lib/services/asyncjobservice.js +161 -182
- package/lib/services/asyncjobservice.js.map +1 -1
- package/lib/services/localrunner.d.ts +5 -4
- package/lib/services/localrunner.js +48 -52
- package/lib/services/localrunner.js.map +1 -1
- package/lib/services/runner.d.ts +3 -3
- package/lib/services/runner.js +6 -12
- package/lib/services/runner.js.map +1 -1
- package/package.json +14 -11
- package/webda.module.json +448 -2
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./models";
|
|
2
|
-
export * from "./services/asyncjobservice";
|
|
3
|
-
export * from "./services/runner";
|
|
4
|
-
export * from "./services/localrunner";
|
|
1
|
+
export * from "./models.js";
|
|
2
|
+
export * from "./services/asyncjobservice.js";
|
|
3
|
+
export * from "./services/runner.js";
|
|
4
|
+
export * from "./services/localrunner.js";
|
package/lib/index.js
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./models"), exports);
|
|
18
|
-
__exportStar(require("./services/asyncjobservice"), exports);
|
|
19
|
-
__exportStar(require("./services/runner"), exports);
|
|
20
|
-
__exportStar(require("./services/localrunner"), exports);
|
|
1
|
+
export * from "./models.js";
|
|
2
|
+
export * from "./services/asyncjobservice.js";
|
|
3
|
+
export * from "./services/runner.js";
|
|
4
|
+
export * from "./services/localrunner.js";
|
|
21
5
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
package/lib/models.js
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AsyncAction = exports.WebdaAsyncAction = void 0;
|
|
4
|
-
const core_1 = require("@webda/core");
|
|
1
|
+
import { CoreModel } from "@webda/core";
|
|
5
2
|
/**
|
|
6
3
|
* Define here a model that can be used along with Store service
|
|
7
4
|
* @WebdaModel
|
|
8
5
|
*/
|
|
9
|
-
class AsyncAction extends
|
|
6
|
+
export default class AsyncAction extends CoreModel {
|
|
10
7
|
}
|
|
11
|
-
exports.default = AsyncAction;
|
|
12
|
-
exports.AsyncAction = AsyncAction;
|
|
13
8
|
/**
|
|
14
9
|
* Define a Webda Async Action
|
|
15
10
|
*/
|
|
16
|
-
class WebdaAsyncAction extends AsyncAction {
|
|
11
|
+
export class WebdaAsyncAction extends AsyncAction {
|
|
17
12
|
}
|
|
18
|
-
|
|
13
|
+
export { AsyncAction };
|
|
19
14
|
//# sourceMappingURL=models.js.map
|
package/lib/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAyBxC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;CAuDjD;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,WAAW;CAShD;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CloudBinary, Context, Queue, RequestFilter, Service, ServiceParameters, Store } from "@webda/core";
|
|
2
|
-
import { AsyncAction, AsyncActionQueueItem } from "../models";
|
|
3
|
-
import { Runner } from "./runner";
|
|
2
|
+
import { AsyncAction, AsyncActionQueueItem } from "../models.js";
|
|
3
|
+
import { Runner } from "./runner.js";
|
|
4
4
|
/**
|
|
5
5
|
* Represent a Job information as you will find in env
|
|
6
6
|
*/
|
|
@@ -90,7 +90,7 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
|
|
|
90
90
|
/**
|
|
91
91
|
* @inheritdoc
|
|
92
92
|
*/
|
|
93
|
-
resolve():
|
|
93
|
+
resolve(): this;
|
|
94
94
|
/**
|
|
95
95
|
* Allow job status report url
|
|
96
96
|
*/
|
|
@@ -131,8 +131,7 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
|
|
|
131
131
|
* @returns
|
|
132
132
|
*/
|
|
133
133
|
getHeaders(jobInfo: JobInfo): {
|
|
134
|
-
|
|
135
|
-
"X-Job-Time": string;
|
|
134
|
+
[key: string]: string;
|
|
136
135
|
};
|
|
137
136
|
/**
|
|
138
137
|
* Wrap async job and call the job status hook
|
|
@@ -1,40 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.AsyncJobService = exports.AsyncJobServiceParameters = void 0;
|
|
13
|
-
const core_1 = require("@webda/core");
|
|
14
|
-
const axios_1 = require("axios");
|
|
15
|
-
const crypto = require("crypto");
|
|
16
|
-
const uuid_1 = require("uuid");
|
|
17
|
-
const runner_1 = require("./runner");
|
|
1
|
+
import { Service, ServiceParameters } from "@webda/core";
|
|
2
|
+
import axios from "axios";
|
|
3
|
+
import * as crypto from "crypto";
|
|
4
|
+
import { v4 as uuidv4 } from "uuid";
|
|
5
|
+
import { Runner } from "./runner.js";
|
|
18
6
|
/**
|
|
19
7
|
* @inheritdoc
|
|
20
8
|
*/
|
|
21
|
-
class AsyncJobServiceParameters extends
|
|
9
|
+
export class AsyncJobServiceParameters extends ServiceParameters {
|
|
22
10
|
constructor(params) {
|
|
23
|
-
var _a, _b, _c, _d;
|
|
24
11
|
super(params);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
12
|
+
this.url ?? (this.url = "/async/jobs");
|
|
13
|
+
this.queue ?? (this.queue = "AsyncActionsQueue");
|
|
14
|
+
this.store ?? (this.store = "AsyncActions");
|
|
15
|
+
this.runners ?? (this.runners = []);
|
|
29
16
|
}
|
|
30
17
|
}
|
|
31
|
-
exports.AsyncJobServiceParameters = AsyncJobServiceParameters;
|
|
32
18
|
/**
|
|
33
19
|
* AsyncService allows you to launch jobs and report status
|
|
34
20
|
*
|
|
35
21
|
* @WebdaModda
|
|
36
22
|
*/
|
|
37
|
-
class AsyncJobService extends
|
|
23
|
+
export default class AsyncJobService extends Service {
|
|
38
24
|
/**
|
|
39
25
|
* @inheritdoc
|
|
40
26
|
*/
|
|
@@ -86,132 +72,124 @@ class AsyncJobService extends core_1.Service {
|
|
|
86
72
|
});
|
|
87
73
|
}
|
|
88
74
|
this.getWebda().registerRequestFilter(this);
|
|
75
|
+
return this;
|
|
89
76
|
}
|
|
90
77
|
/**
|
|
91
78
|
* Allow job status report url
|
|
92
79
|
*/
|
|
93
|
-
checkRequest(context) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return false;
|
|
102
|
-
});
|
|
80
|
+
async checkRequest(context) {
|
|
81
|
+
const url = context.getHttpContext().getRelativeUri();
|
|
82
|
+
if (url.startsWith(this.parameters.url)) {
|
|
83
|
+
// Allow status url to be called without other mechanism
|
|
84
|
+
await this.verifyJobRequest(context);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
103
88
|
}
|
|
104
89
|
/**
|
|
105
90
|
*
|
|
106
91
|
* @param context
|
|
107
92
|
* @param action
|
|
108
93
|
*/
|
|
109
|
-
verifyJobRequest(context) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return action;
|
|
131
|
-
});
|
|
94
|
+
async verifyJobRequest(context) {
|
|
95
|
+
const jobId = context.getHttpContext().getUniqueHeader("X-Job-Id");
|
|
96
|
+
if (!jobId) {
|
|
97
|
+
this.log("TRACE", "Require Job Id");
|
|
98
|
+
throw 404;
|
|
99
|
+
}
|
|
100
|
+
const action = await this.store.get(jobId);
|
|
101
|
+
if (!action) {
|
|
102
|
+
this.log("TRACE", `Unknown Job Id '${jobId}'`);
|
|
103
|
+
throw 404;
|
|
104
|
+
}
|
|
105
|
+
const jobTime = context.getHttpContext().getUniqueHeader("X-Job-Time");
|
|
106
|
+
const jobHash = context.getHttpContext().getUniqueHeader("X-Job-Hash");
|
|
107
|
+
// Ensure hash mac is correct
|
|
108
|
+
if (jobHash !== crypto.createHmac(AsyncJobService.HMAC_ALGO, action.__secretKey).update(jobTime).digest("hex")) {
|
|
109
|
+
this.log("TRACE", "Invalid Job HMAC");
|
|
110
|
+
throw 403;
|
|
111
|
+
}
|
|
112
|
+
// Set the context extension
|
|
113
|
+
context.setExtension("asyncJob", action);
|
|
114
|
+
return action;
|
|
132
115
|
}
|
|
133
116
|
/**
|
|
134
117
|
* Status hook for job report
|
|
135
118
|
*
|
|
136
119
|
* Only updates specific fields: status, errorMessage, statusDetails, results, logs (appending)
|
|
137
120
|
*/
|
|
138
|
-
statusHook(context) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
121
|
+
async statusHook(context) {
|
|
122
|
+
const action = await this.verifyJobRequest(context);
|
|
123
|
+
const body = await context.getRequestBody();
|
|
124
|
+
action._lastJobUpdate = Number.parseInt(context.getHttpContext().getUniqueHeader("X-Job-Time")) || 0;
|
|
125
|
+
if (Date.now() - action._lastJobUpdate > 60) {
|
|
126
|
+
action._lastJobUpdate = Date.now();
|
|
127
|
+
}
|
|
128
|
+
if (body.logs && Array.isArray(body.logs)) {
|
|
129
|
+
action.logs.push(...body.logs);
|
|
130
|
+
// Prevent having too much logs
|
|
131
|
+
if (action.logs.length > 100) {
|
|
132
|
+
action.logs = action.logs.slice(-100);
|
|
145
133
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
134
|
+
}
|
|
135
|
+
["status", "errorMessage", "statusDetails", "results"].forEach(k => {
|
|
136
|
+
if (body[k] !== undefined) {
|
|
137
|
+
// @ts-ignore
|
|
138
|
+
action[k] = body[k];
|
|
152
139
|
}
|
|
153
|
-
["status", "errorMessage", "statusDetails", "results"].forEach(k => {
|
|
154
|
-
if (body[k] !== undefined) {
|
|
155
|
-
action[k] = body[k];
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
yield this.store.save(action);
|
|
159
|
-
context.write(Object.assign(Object.assign({}, action), { logs: undefined, statusDetails: undefined }));
|
|
160
140
|
});
|
|
141
|
+
await this.store.save(action);
|
|
142
|
+
context.write({ ...action, logs: undefined, statusDetails: undefined });
|
|
161
143
|
}
|
|
162
144
|
/**
|
|
163
145
|
* Worker
|
|
164
146
|
*
|
|
165
147
|
* This will launch actions based on defined runners
|
|
166
148
|
*/
|
|
167
|
-
worker() {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
return this.queue.consume(this.handleEvent.bind(this));
|
|
173
|
-
});
|
|
149
|
+
async worker() {
|
|
150
|
+
if (this.runners.length === 0) {
|
|
151
|
+
throw new Error(`AsyncJobService.worker requires runners`);
|
|
152
|
+
}
|
|
153
|
+
return this.queue.consume(this.handleEvent.bind(this));
|
|
174
154
|
}
|
|
175
155
|
/**
|
|
176
156
|
* Handle one event from the queue and launch the job
|
|
177
157
|
* @param event
|
|
178
158
|
*/
|
|
179
|
-
handleEvent(event) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
// Fallback if needed
|
|
190
|
-
if (selectedRunner === undefined && this.parameters.fallbackOnFirst) {
|
|
191
|
-
selectedRunner = this.runners[0];
|
|
192
|
-
}
|
|
193
|
-
if (selectedRunner === undefined) {
|
|
194
|
-
yield this.store.patch({
|
|
195
|
-
uuid: event.uuid,
|
|
196
|
-
status: "ERROR",
|
|
197
|
-
errorMessage: `No runner found for the job`
|
|
198
|
-
});
|
|
199
|
-
return;
|
|
159
|
+
async handleEvent(event) {
|
|
160
|
+
let selectedRunner;
|
|
161
|
+
// Take first to acknowledge the job
|
|
162
|
+
for (let runner of this.runners) {
|
|
163
|
+
if (runner.handleType(event.type)) {
|
|
164
|
+
selectedRunner = runner;
|
|
165
|
+
break;
|
|
200
166
|
}
|
|
201
|
-
|
|
167
|
+
}
|
|
168
|
+
// Fallback if needed
|
|
169
|
+
if (selectedRunner === undefined && this.parameters.fallbackOnFirst) {
|
|
170
|
+
selectedRunner = this.runners[0];
|
|
171
|
+
}
|
|
172
|
+
if (selectedRunner === undefined) {
|
|
173
|
+
await this.store.patch({
|
|
202
174
|
uuid: event.uuid,
|
|
203
|
-
status: "
|
|
204
|
-
|
|
205
|
-
const action = yield this.store.get(event.uuid);
|
|
206
|
-
const info = {
|
|
207
|
-
JOB_SECRET_KEY: action.__secretKey,
|
|
208
|
-
JOB_ID: action.getUuid(),
|
|
209
|
-
JOB_HOOK: this.getWebda().getApiUrl(this.parameters.url),
|
|
210
|
-
JOB_ORCHESTRATOR: this.getName()
|
|
211
|
-
};
|
|
212
|
-
yield action.update({
|
|
213
|
-
job: yield selectedRunner.launchAction(action, info)
|
|
175
|
+
status: "ERROR",
|
|
176
|
+
errorMessage: `No runner found for the job`
|
|
214
177
|
});
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
await this.store.patch({
|
|
181
|
+
uuid: event.uuid,
|
|
182
|
+
status: "STARTING"
|
|
183
|
+
});
|
|
184
|
+
const action = await this.store.get(event.uuid);
|
|
185
|
+
const info = {
|
|
186
|
+
JOB_SECRET_KEY: action.__secretKey,
|
|
187
|
+
JOB_ID: action.getUuid(),
|
|
188
|
+
JOB_HOOK: this.getWebda().getApiUrl(this.parameters.url),
|
|
189
|
+
JOB_ORCHESTRATOR: this.getName()
|
|
190
|
+
};
|
|
191
|
+
await action.update({
|
|
192
|
+
job: await selectedRunner.launchAction(action, info)
|
|
215
193
|
});
|
|
216
194
|
}
|
|
217
195
|
/**
|
|
@@ -219,17 +197,15 @@ class AsyncJobService extends core_1.Service {
|
|
|
219
197
|
* @param action
|
|
220
198
|
* @returns
|
|
221
199
|
*/
|
|
222
|
-
launchAction(action) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
return this.queue.sendMessage({ uuid: action.getUuid(), __secretKey: action.__secretKey, type: action.type });
|
|
232
|
-
});
|
|
200
|
+
async launchAction(action) {
|
|
201
|
+
action.status = "QUEUED";
|
|
202
|
+
action.type = action.constructor.name;
|
|
203
|
+
action.__secretKey = uuidv4();
|
|
204
|
+
await this.store.save(action);
|
|
205
|
+
if (this.parameters.localLaunch) {
|
|
206
|
+
return this.handleEvent({ uuid: action.getUuid(), __secretKey: action.__secretKey, type: action.type });
|
|
207
|
+
}
|
|
208
|
+
return this.queue.sendMessage({ uuid: action.getUuid(), __secretKey: action.__secretKey, type: action.type });
|
|
233
209
|
}
|
|
234
210
|
/**
|
|
235
211
|
* Return headers to request status hook
|
|
@@ -251,70 +227,73 @@ class AsyncJobService extends core_1.Service {
|
|
|
251
227
|
/**
|
|
252
228
|
* Wrap async job and call the job status hook
|
|
253
229
|
*/
|
|
254
|
-
runWebdaAsyncAction(jobInfo
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
230
|
+
async runWebdaAsyncAction(jobInfo) {
|
|
231
|
+
// Get it from environment
|
|
232
|
+
if (jobInfo === undefined) {
|
|
233
|
+
jobInfo = {};
|
|
234
|
+
Object.keys(process.env)
|
|
235
|
+
.filter(k => k.startsWith("JOB_"))
|
|
236
|
+
// @ts-ignore
|
|
237
|
+
.forEach((k) => (jobInfo[k] = process.env[k]));
|
|
238
|
+
}
|
|
239
|
+
// Ensure correct context
|
|
240
|
+
if (!jobInfo.JOB_ORCHESTRATOR || !jobInfo.JOB_ID || !jobInfo.JOB_SECRET_KEY || !jobInfo.JOB_HOOK) {
|
|
241
|
+
throw new Error("Cannot run AsyncAction without context");
|
|
242
|
+
}
|
|
243
|
+
// If we are not the target redirect to the right one
|
|
244
|
+
if (jobInfo.JOB_ORCHESTRATOR !== this.getName()) {
|
|
245
|
+
return this.getService(jobInfo.JOB_ORCHESTRATOR).runWebdaAsyncAction(jobInfo);
|
|
246
|
+
}
|
|
247
|
+
// Get action info by calling the hook
|
|
248
|
+
let action = (await axios.post(jobInfo.JOB_HOOK, {
|
|
249
|
+
agent: {
|
|
250
|
+
...Runner.getAgentInfo(),
|
|
251
|
+
nodeVersion: process.version
|
|
252
|
+
},
|
|
253
|
+
status: "RUNNING"
|
|
254
|
+
}, {
|
|
255
|
+
headers: this.getHeaders(jobInfo)
|
|
256
|
+
})).data;
|
|
257
|
+
let results;
|
|
258
|
+
try {
|
|
259
|
+
// Check it contains the right info
|
|
260
|
+
if (!action.method || !action.serviceName) {
|
|
261
|
+
throw new Error("WebdaAsyncAction must have method and serviceName defined at least");
|
|
262
262
|
}
|
|
263
|
-
//
|
|
264
|
-
|
|
265
|
-
|
|
263
|
+
// Call the service[method](...args)
|
|
264
|
+
let service = this.getService(action.serviceName);
|
|
265
|
+
if (!service) {
|
|
266
|
+
throw new Error(`WebdaAsyncAction Service '${action.serviceName}' not found: mismatch app version`);
|
|
266
267
|
}
|
|
267
|
-
//
|
|
268
|
-
if (
|
|
269
|
-
|
|
268
|
+
// @ts-ignore
|
|
269
|
+
if (!service[action.method]) {
|
|
270
|
+
throw new Error(`WebdaAsyncAction Method '${action.method}' not found in service ${action.serviceName}: mismatch app version`);
|
|
270
271
|
}
|
|
271
|
-
//
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
try {
|
|
280
|
-
// Check it contains the right info
|
|
281
|
-
if (!action.method || !action.serviceName) {
|
|
282
|
-
throw new Error("WebdaAsyncAction must have method and serviceName defined at least");
|
|
283
|
-
}
|
|
284
|
-
// Call the service[method](...args)
|
|
285
|
-
let service = this.getService(action.serviceName);
|
|
286
|
-
if (!service) {
|
|
287
|
-
throw new Error(`WebdaAsyncAction Service '${action.serviceName}' not found: mismatch app version`);
|
|
288
|
-
}
|
|
289
|
-
if (!service[action.method]) {
|
|
290
|
-
throw new Error(`WebdaAsyncAction Method '${action.method}' not found in service ${action.serviceName}: mismatch app version`);
|
|
291
|
-
}
|
|
292
|
-
results = yield service[action.method](...action.arguments);
|
|
293
|
-
}
|
|
294
|
-
catch (err) {
|
|
295
|
-
// Job is in error
|
|
296
|
-
yield axios_1.default.post(jobInfo.JOB_HOOK, {
|
|
297
|
-
errorMessage: err.message,
|
|
298
|
-
status: "ERROR"
|
|
299
|
-
}, {
|
|
300
|
-
headers: this.getHeaders(jobInfo)
|
|
301
|
-
});
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
// Update status
|
|
305
|
-
yield axios_1.default.post(jobInfo.JOB_HOOK, {
|
|
306
|
-
results,
|
|
307
|
-
status: "SUCCESS"
|
|
272
|
+
// @ts-ignore
|
|
273
|
+
results = await service[action.method](...(action.arguments || []));
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
// Job is in error
|
|
277
|
+
await axios.post(jobInfo.JOB_HOOK, {
|
|
278
|
+
errorMessage: err?.message,
|
|
279
|
+
status: "ERROR"
|
|
308
280
|
}, {
|
|
309
281
|
headers: this.getHeaders(jobInfo)
|
|
310
282
|
});
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// Update status
|
|
286
|
+
await axios.post(jobInfo.JOB_HOOK, {
|
|
287
|
+
results,
|
|
288
|
+
status: "SUCCESS"
|
|
289
|
+
}, {
|
|
290
|
+
headers: this.getHeaders(jobInfo)
|
|
311
291
|
});
|
|
312
292
|
}
|
|
313
293
|
}
|
|
314
|
-
exports.default = AsyncJobService;
|
|
315
|
-
exports.AsyncJobService = AsyncJobService;
|
|
316
294
|
/**
|
|
317
295
|
* HMAC Algorithm used for simple auth
|
|
318
296
|
*/
|
|
319
297
|
AsyncJobService.HMAC_ALGO = "sha256";
|
|
298
|
+
export { AsyncJobService };
|
|
320
299
|
//# sourceMappingURL=asyncjobservice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncjobservice.js","sourceRoot":"","sources":["../../src/services/asyncjobservice.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asyncjobservice.js","sourceRoot":"","sources":["../../src/services/asyncjobservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,OAAO,EAAE,iBAAiB,EAAS,MAAM,aAAa,CAAC;AAC5G,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAYlC;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IA2C9D,YAAY,MAAW;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,KAAR,IAAI,CAAC,GAAG,GAAK,aAAa,EAAC;QAC3B,IAAI,CAAC,KAAK,KAAV,IAAI,CAAC,KAAK,GAAK,mBAAmB,EAAC;QACnC,IAAI,CAAC,KAAK,KAAV,IAAI,CAAC,KAAK,GAAK,cAAc,EAAC;QAC9B,IAAI,CAAC,OAAO,KAAZ,IAAI,CAAC,OAAO,GAAK,EAAE,EAAC;IACtB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eACnB,SAAQ,OAAU;IAyBlB;;OAEG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD;;OAEG;IACH,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,UAAU,CAAC,KAAK,cAAc,CAAC,CAAC;SAC/F;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,UAAU,CAAC,KAAK,cAAc,CAAC,CAAC;SAC/F;QACD,kBAAkB;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAS,CAAC,CAAC,CAAC;YACvC,IAAI,GAAG,KAAK,SAAS,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;aAChD;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAEhC,gEAAgE;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE;YACxE,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,sCAAsC;QACtC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAc,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC7E,qFAAqF;YACrF,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,4CAA4C,EAAE;gBAC3F,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB;gBAC5C,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;gBACrC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACzB,OAAO,EAAE,CAAC,KAAK,CAAC;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,kCAAkC,EAAE;gBACjF,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;gBACvC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;gBACrC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACzB,OAAO,EAAE,CAAC,KAAK,CAAC;aACjB,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAgB;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC;QACtD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACvC,wDAAwD;YACxD,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAsC,OAAgB;QAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACpC,MAAM,GAAG,CAAC;SACX;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,GAAG,CAAC,CAAC;YAC/C,MAAM,GAAG,CAAC;SACX;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACvE,6BAA6B;QAC7B,IAAI,OAAO,KAAK,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9G,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACtC,MAAM,GAAG,CAAC;SACX;QACD,4BAA4B;QAC5B,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzC,OAAU,MAAM,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,UAAU,CAAC,OAAgB;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAE5C,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,cAAc,GAAG,EAAE,EAAE;YAC3C,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,+BAA+B;YAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;gBAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;aACvC;SACF;QACD,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBACzB,aAAa;gBACb,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,WAAW,CAAC,KAA2B;QACrD,IAAI,cAAc,CAAC;QACnB,oCAAoC;QACpC,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACjC,cAAc,GAAG,MAAM,CAAC;gBACxB,MAAM;aACP;SACF;QACD,qBAAqB;QACrB,IAAI,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YACnE,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,IAAI,cAAc,KAAK,SAAS,EAAE;YAChC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,6BAA6B;aAC5C,CAAC,CAAC;YACH,OAAO;SACR;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,IAAI,GAAY;YACpB,cAAc,EAAE,MAAM,CAAC,WAAW;YAClC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACxD,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE;SACjC,CAAC;QACF,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,GAAG,EAAE,MAAM,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,MAAmB;QACpC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QACtC,MAAM,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACzG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,OAAgB;QACzB,IAAI,GAAG,GAA8B;YACnC,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;SACpC,CAAC;QACF,GAAG,CAAC,YAAY,CAAC,GAAG,MAAM;aACvB,UAAU,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;aAC7D,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;aACzB,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,OAAiB;QACzC,0BAA0B;QAC1B,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAClC,aAAa;iBACZ,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1D;QACD,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAChG,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QACD,qDAAqD;QACrD,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE;YAC/C,OAAO,IAAI,CAAC,UAAU,CAAkB,OAAO,CAAC,gBAAgB,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SAChG;QAED,sCAAsC;QACtC,IAAI,MAAM,GAAG,CACX,MAAM,KAAK,CAAC,IAAI,CACd,OAAO,CAAC,QAAQ,EAChB;YACE,KAAK,EAAE;gBACL,GAAG,MAAM,CAAC,YAAY,EAAE;gBACxB,WAAW,EAAE,OAAO,CAAC,OAAO;aAC7B;YACD,MAAM,EAAE,SAAS;SAClB,EACD;YACE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;SAClC,CACF,CACF,CAAC,IAAI,CAAC;QAEP,IAAI,OAAO,CAAC;QACZ,IAAI;YACF,mCAAmC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACzC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;aACvF;YACD,oCAAoC;YACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,WAAW,mCAAmC,CAAC,CAAC;aACrG;YACD,aAAa;YACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC3B,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,MAAM,0BAA0B,MAAM,CAAC,WAAW,wBAAwB,CAC9G,CAAC;aACH;YACD,aAAa;YACb,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;SACrE;QAAC,OAAO,GAAG,EAAE;YACZ,kBAAkB;YAClB,MAAM,KAAK,CAAC,IAAI,CACd,OAAO,CAAC,QAAQ,EAChB;gBACE,YAAY,EAA4B,GAAI,EAAE,OAAO;gBACrD,MAAM,EAAE,OAAO;aAChB,EACD;gBACE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;aAClC,CACF,CAAC;YACF,OAAO;SACR;QACD,gBAAgB;QAChB,MAAM,KAAK,CAAC,IAAI,CACd,OAAO,CAAC,QAAQ,EAChB;YACE,OAAO;YACP,MAAM,EAAE,SAAS;SAClB,EACD;YACE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;SAClC,CACF,CAAC;IACJ,CAAC;;AAlTD;;GAEG;AACI,yBAAS,GAAW,QAAQ,CAAC;AAkTtC,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { AgentInfo, Runner, RunnerParameters } from "./runner";
|
|
3
|
-
import { AsyncAction } from "../models";
|
|
4
|
-
import { SpawnOptions } from "child_process";
|
|
5
2
|
import { ServiceParameters } from "@webda/core";
|
|
6
|
-
import {
|
|
3
|
+
import { SpawnOptions } from "child_process";
|
|
4
|
+
import { AsyncAction } from "../models.js";
|
|
5
|
+
import { JobInfo } from "./asyncjobservice.js";
|
|
6
|
+
import { AgentInfo, Runner, RunnerParameters } from "./runner.js";
|
|
7
7
|
export declare class LocalRunnerParameters extends RunnerParameters {
|
|
8
8
|
/**
|
|
9
9
|
* Command to launch
|
|
@@ -42,6 +42,7 @@ export default class LocalRunner<T extends LocalRunnerParameters = LocalRunnerPa
|
|
|
42
42
|
* @inheritdoc
|
|
43
43
|
*/
|
|
44
44
|
loadParameters(params: any): ServiceParameters;
|
|
45
|
+
spawn(command: string, args: string[], options?: SpawnOptions | undefined): import("child_process").ChildProcess;
|
|
45
46
|
/**
|
|
46
47
|
* @inheritdoc
|
|
47
48
|
*/
|