@webda/async 3.7.3 → 4.0.0-beta.2

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.
Files changed (38) hide show
  1. package/lib/index.d.ts +1 -0
  2. package/lib/index.d.ts.map +1 -0
  3. package/lib/models.d.ts +7 -7
  4. package/lib/models.d.ts.map +1 -0
  5. package/lib/models.js +3 -1
  6. package/lib/models.js.map +1 -1
  7. package/lib/models.spec.d.ts +7 -0
  8. package/lib/models.spec.d.ts.map +1 -0
  9. package/lib/models.spec.js +64 -0
  10. package/lib/models.spec.js.map +1 -0
  11. package/lib/services/asyncjobservice.d.ts +4 -15
  12. package/lib/services/asyncjobservice.d.ts.map +1 -0
  13. package/lib/services/asyncjobservice.js +13 -49
  14. package/lib/services/asyncjobservice.js.map +1 -1
  15. package/lib/services/asyncjobservice.spec.d.ts +2 -0
  16. package/lib/services/asyncjobservice.spec.d.ts.map +1 -0
  17. package/lib/services/asyncjobservice.spec.js +561 -0
  18. package/lib/services/asyncjobservice.spec.js.map +1 -0
  19. package/lib/services/localrunner.d.ts +1 -0
  20. package/lib/services/localrunner.d.ts.map +1 -0
  21. package/lib/services/localrunner.js +1 -1
  22. package/lib/services/localrunner.js.map +1 -1
  23. package/lib/services/localrunner.spec.d.ts +2 -0
  24. package/lib/services/localrunner.spec.d.ts.map +1 -0
  25. package/lib/services/localrunner.spec.js +113 -0
  26. package/lib/services/localrunner.spec.js.map +1 -0
  27. package/lib/services/runner.d.ts +1 -0
  28. package/lib/services/runner.d.ts.map +1 -0
  29. package/lib/services/servicerunner.d.ts +1 -0
  30. package/lib/services/servicerunner.d.ts.map +1 -0
  31. package/lib/services/servicerunner.js +3 -2
  32. package/lib/services/servicerunner.js.map +1 -1
  33. package/lib/services/servicerunner.spec.d.ts +2 -0
  34. package/lib/services/servicerunner.spec.d.ts.map +1 -0
  35. package/lib/services/servicerunner.spec.js +111 -0
  36. package/lib/services/servicerunner.spec.js.map +1 -0
  37. package/package.json +20 -15
  38. package/webda.module.json +39 -21
@@ -0,0 +1,113 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { suite, test } from "@testdeck/mocha";
8
+ import { WebdaTest } from "@webda/core/lib/test.js";
9
+ import * as assert from "assert";
10
+ import { EventEmitter } from "events";
11
+ import { nextTick } from "process";
12
+ import { stub } from "sinon";
13
+ import LocalRunner from "./localrunner.js";
14
+ import { Runner } from "./runner.js";
15
+ class FakeRunner extends Runner {
16
+ launchAction(action) {
17
+ throw new Error("Method not implemented.");
18
+ }
19
+ }
20
+ class FakeChildProcess extends EventEmitter {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.pid = 666;
24
+ this.stdout = new EventEmitter();
25
+ this.stderr = new EventEmitter();
26
+ }
27
+ send(type, ...args) {
28
+ this.emit(type, ...args);
29
+ }
30
+ }
31
+ let LocalRunnerTest = class LocalRunnerTest extends WebdaTest {
32
+ cov() {
33
+ new LocalRunner(this.webda, "runner", {});
34
+ const runner = new LocalRunner(this.webda, "runner", { actions: ["plop"], options: { env: { OK: "test" } } });
35
+ assert.strictEqual(runner.handleType("plop"), true);
36
+ assert.strictEqual(runner.handleType("plop2"), false);
37
+ new LocalRunner(this.webda, "runner", { options: { env: { OK: "test" } } });
38
+ // Just for loadParameters
39
+ new FakeRunner(this.webda, "fake", {});
40
+ }
41
+ getJobInfo(action) {
42
+ return {
43
+ JOB_HOOK: "",
44
+ JOB_ID: action.getUuid(),
45
+ JOB_ORCHESTRATOR: "test",
46
+ JOB_SECRET_KEY: action.__secretKey
47
+ };
48
+ }
49
+ async launchAction() {
50
+ const runner = new LocalRunner(this.webda, "runner", {});
51
+ // @ts-expect-error
52
+ const spawn = stub(runner, "spawn").returns({ pid: "fake" });
53
+ try {
54
+ const action = await this.getService("AsyncJobs").save({ status: "STARTING", logs: [] });
55
+ const job = await runner.launchAction(action, this.getJobInfo(action));
56
+ assert.strictEqual(spawn.calledOnce, true);
57
+ assert.strictEqual(job.pid, "fake");
58
+ await action.refresh();
59
+ assert.strictEqual(action.status, "STARTING");
60
+ runner.getParameters().args = ["test"];
61
+ await runner.launchAction(action, this.getJobInfo(action));
62
+ }
63
+ finally {
64
+ spawn.restore();
65
+ }
66
+ }
67
+ async launchActionAutoStatus() {
68
+ const child = new FakeChildProcess();
69
+ const runner = new LocalRunner(this.webda, "runner", { autoStatus: true });
70
+ // @ts-expect-error
71
+ const spawn = stub(runner, "spawn").returns(child);
72
+ try {
73
+ const action = await this.getService("AsyncJobs").save({ status: "STARTING", logs: [] });
74
+ const job = await runner.launchAction(action, this.getJobInfo(action));
75
+ assert.strictEqual(spawn.calledOnce, true);
76
+ assert.strictEqual(job.pid, 666);
77
+ await action.refresh();
78
+ assert.strictEqual(action.status, "RUNNING");
79
+ assert.deepStrictEqual(action.logs, []);
80
+ child.stdout.emit("data", "stdout output");
81
+ child.stderr.emit("data", "stderr output");
82
+ await new Promise(resolve => nextTick(resolve));
83
+ await this.sleep(1000);
84
+ await action.refresh();
85
+ assert.strictEqual(action.status, "RUNNING");
86
+ assert.deepStrictEqual(action.logs, ["stdout output", "stderr output"]);
87
+ child.emit("exit", 1);
88
+ await new Promise(resolve => nextTick(resolve));
89
+ await action.refresh();
90
+ assert.strictEqual(action.status, "ERROR");
91
+ child.emit("exit", 0);
92
+ await new Promise(resolve => nextTick(resolve));
93
+ await action.refresh();
94
+ assert.strictEqual(action.status, "SUCCESS");
95
+ }
96
+ finally {
97
+ spawn.restore();
98
+ }
99
+ }
100
+ };
101
+ __decorate([
102
+ test
103
+ ], LocalRunnerTest.prototype, "cov", null);
104
+ __decorate([
105
+ test
106
+ ], LocalRunnerTest.prototype, "launchAction", null);
107
+ __decorate([
108
+ test
109
+ ], LocalRunnerTest.prototype, "launchActionAutoStatus", null);
110
+ LocalRunnerTest = __decorate([
111
+ suite
112
+ ], LocalRunnerTest);
113
+ //# sourceMappingURL=localrunner.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localrunner.spec.js","sourceRoot":"","sources":["../../src/services/localrunner.spec.ts"],"names":[],"mappings":"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"}
@@ -50,3 +50,4 @@ export declare abstract class Runner<T extends RunnerParameters = RunnerParamete
50
50
  */
51
51
  abstract launchAction(action: AsyncAction, info: JobInfo): Promise<any>;
52
52
  }
53
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/services/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,qBAAa,gBAAiB,SAAQ,iBAAiB;IACrD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEP,MAAM,EAAE,GAAG;CAIxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,8BAAsB,MAAM,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC5F;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,iBAAiB;IAG9C;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACH,MAAM,CAAC,YAAY,IAAI,SAAS;IAShC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;CACxE"}
@@ -65,3 +65,4 @@ export default class ServiceRunner<T extends ServiceRunnerParameters = ServiceRu
65
65
  */
66
66
  launchAction(action: AsyncAction, info: JobInfo): Promise<ServiceAction>;
67
67
  }
68
+ //# sourceMappingURL=servicerunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicerunner.d.ts","sourceRoot":"","sources":["../../src/services/servicerunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAE,WAAW,EAA0C,MAAM,WAAW,CAAC;AAChF,OAAwB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAOhD,SAAS,CAAC,MAAM,EAAE,WAAW;IACtB,YAAY,EAAE,MAAM;IACpB,MAAM,CAAC,EAAE,MAAM;IARxB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;gBAGhC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACH,MAAM,EAAE,WAAW,EACtB,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM;IAKxB,SAAS,CAAC,GAAG,EAAE,aAAa;IAO5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQf,YAAY;CAInB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEV,MAAM,EAAE,GAAG;CAIxB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC/G;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG;IAG1B;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;CAiD/E"}
@@ -61,7 +61,7 @@ export default class ServiceRunner extends Runner {
61
61
  throw new Error("Can only handle AsyncWebdaAction or AsyncOperationAction got " + action.constructor.name);
62
62
  }
63
63
  // Launch within current process
64
- let promise = (async (action) => {
64
+ const promise = (async (action) => {
65
65
  let logger;
66
66
  try {
67
67
  await action.patch({ status: "RUNNING" });
@@ -82,7 +82,8 @@ export default class ServiceRunner extends Runner {
82
82
  await logger?.saveAndClose();
83
83
  await action.patch({
84
84
  status: "ERROR",
85
- errorMessage: JSON.stringify(err, Object.getOwnPropertyNames(err))
85
+ errorMessage: err.message,
86
+ errorName: err.name
86
87
  }, null);
87
88
  this.log("ERROR", "Job", action.getUuid(), "errored", err);
88
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"servicerunner.js","sourceRoot":"","sources":["../../src/services/servicerunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAA+C,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAe,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAa,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAkB/D;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAGlD,YACE,MAAoB,EACpB,KAAqB,EACrB,KAAa,EACH,MAAmB,EACtB,YAAoB,EACpB,MAAe;QAEtB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAJlB,WAAM,GAAN,MAAM,CAAa;QACtB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,WAAM,GAAN,MAAM,CAAS;IAGxB,CAAC;IAED,SAAS,CAAC,GAAkB;QAC1B,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,gBAAgB;IAc3D,YAAY,MAAW;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,KAAjB,IAAI,CAAC,YAAY,GAAK,IAAI,EAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,aAA2E,SAAQ,MAAS;IAC/G;;;;OAIG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAmB,EAAE,IAAa;QACnD,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,IAAI,MAAM,YAAY,oBAAoB,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,8DAA8D,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3G,MAAM,IAAI,KAAK,CAAC,+DAA+D,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7G,CAAC;QAED,gCAAgC;QAChC,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,MAA+C,EAAE,EAAE;YACvE,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,uDAAuD;gBACvD,MAAM,GAAG,IAAI,kBAAkB,CAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC,eAAe,EAAE,EACjC,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,UAAU,CAAkB,IAAI,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC,SAAS,IAAI,IAAI,EAC1F,MAAM,EACN,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAC1B,CAAC;gBACF,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;oBACvC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxF,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC1E,CAAC;gBACD,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;gBAE5B,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,EAAE,YAAY,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC,KAAK,CAChB;oBACE,MAAM,EAAE,OAAO;oBACf,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;iBACnE,EACD,IAAI,CACL,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEX,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;YAC5B,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"servicerunner.js","sourceRoot":"","sources":["../../src/services/servicerunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAA+C,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAe,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAa,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAkB/D;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAGlD,YACE,MAAoB,EACpB,KAAqB,EACrB,KAAa,EACH,MAAmB,EACtB,YAAoB,EACpB,MAAe;QAEtB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAJlB,WAAM,GAAN,MAAM,CAAa;QACtB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,WAAM,GAAN,MAAM,CAAS;IAGxB,CAAC;IAED,SAAS,CAAC,GAAkB;QAC1B,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,gBAAgB;IAc3D,YAAY,MAAW;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,KAAjB,IAAI,CAAC,YAAY,GAAK,IAAI,EAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,aAA2E,SAAQ,MAAS;IAC/G;;;;OAIG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAmB,EAAE,IAAa;QACnD,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,IAAI,MAAM,YAAY,oBAAoB,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,8DAA8D,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3G,MAAM,IAAI,KAAK,CAAC,+DAA+D,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7G,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAA+C,EAAE,EAAE;YACzE,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,uDAAuD;gBACvD,MAAM,GAAG,IAAI,kBAAkB,CAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC,eAAe,EAAE,EACjC,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,UAAU,CAAkB,IAAI,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC,SAAS,IAAI,IAAI,EAC1F,MAAM,EACN,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAC1B,CAAC;gBACF,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;oBACvC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxF,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC1E,CAAC;gBACD,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;gBAE5B,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,MAAM,EAAE,YAAY,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC,KAAK,CAChB;oBACE,MAAM,EAAE,OAAO;oBACf,YAAY,EAAG,GAAa,CAAC,OAAO;oBACpC,SAAS,EAAG,GAAa,CAAC,IAAI;iBAC/B,EACD,IAAI,CACL,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEX,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;YAC5B,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=servicerunner.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicerunner.spec.d.ts","sourceRoot":"","sources":["../../src/services/servicerunner.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,111 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { suite, test } from "@testdeck/mocha";
8
+ import { CoreModel, Operation, OperationContext, SimpleOperationContext } from "@webda/core";
9
+ import { WebdaTest } from "@webda/core/lib/test.js";
10
+ import assert from "assert";
11
+ import { AsyncOperationAction, AsyncWebdaAction } from "../models.js";
12
+ import { Runner } from "./runner.js";
13
+ import ServiceRunner from "./servicerunner.js";
14
+ class FakeRunner extends Runner {
15
+ launchAction(action) {
16
+ throw new Error("Method not implemented.");
17
+ }
18
+ test(arg) {
19
+ this.log("INFO", "FakeRunner test", arg);
20
+ if (arg === 666) {
21
+ throw new Error("Error");
22
+ }
23
+ }
24
+ operation(ctx) {
25
+ this.log("INFO", "Logging test");
26
+ }
27
+ }
28
+ __decorate([
29
+ Operation()
30
+ ], FakeRunner.prototype, "operation", null);
31
+ let ServiceRunnerTest = class ServiceRunnerTest extends WebdaTest {
32
+ async operationAction() {
33
+ this.registerService(new FakeRunner(this.webda, "calledRunner"));
34
+ this.webda.initStatics();
35
+ const runner = new ServiceRunner(this.webda, "runner", { actions: ["plop"] });
36
+ const ctx = new OperationContext(this.webda);
37
+ const action = new AsyncOperationAction("calledRunner.testOp", ctx);
38
+ await this.getService("AsyncJobs").save(action);
39
+ await runner.launchAction(action, {
40
+ JOB_HOOK: "",
41
+ JOB_ID: action.getUuid(),
42
+ JOB_ORCHESTRATOR: "test",
43
+ JOB_SECRET_KEY: ""
44
+ });
45
+ }
46
+ async cov() {
47
+ this.registerService(new FakeRunner(this.webda, "calledRunner"));
48
+ const runner = new ServiceRunner(this.webda, "runner", { actions: ["plop"] });
49
+ const action = new AsyncWebdaAction();
50
+ action.serviceName = "calledRunner";
51
+ action.method = "test";
52
+ await this.getService("AsyncJobs").save(action);
53
+ let serviceAction = await runner.launchAction(action, {
54
+ JOB_HOOK: "",
55
+ JOB_ID: action.getUuid(),
56
+ JOB_ORCHESTRATOR: "test",
57
+ JOB_SECRET_KEY: ""
58
+ });
59
+ await serviceAction.promise;
60
+ await action.refresh();
61
+ assert.strictEqual(action.logs?.length, 1);
62
+ assert.ok(action.logs[0].endsWith(" [ INFO] [calledRunner] FakeRunner test undefined"));
63
+ const action2 = new AsyncWebdaAction();
64
+ action2.serviceName = "calledRunner";
65
+ action2.method = "test";
66
+ action2.arguments = [666];
67
+ await this.getService("AsyncJobs").save(action2);
68
+ serviceAction = await runner.launchAction(action2, {
69
+ JOB_HOOK: "",
70
+ JOB_ID: action2.getUuid(),
71
+ JOB_ORCHESTRATOR: "test",
72
+ JOB_SECRET_KEY: ""
73
+ });
74
+ await serviceAction.promise;
75
+ await action2.refresh();
76
+ assert.strictEqual(action2.status, "ERROR");
77
+ assert.strictEqual(action2.logs?.length, 1);
78
+ assert.ok(action2.logs[0].endsWith(" [ INFO] [calledRunner] FakeRunner test 666"));
79
+ action.type = "plop";
80
+ await assert.rejects(() => runner.launchAction(new CoreModel(), {
81
+ JOB_HOOK: "",
82
+ JOB_ID: action2.getUuid(),
83
+ JOB_ORCHESTRATOR: "test",
84
+ JOB_SECRET_KEY: ""
85
+ }), /Can only handle AsyncWebdaAction or AsyncOperationAction got CoreModel/);
86
+ const opAction = new AsyncOperationAction("CalledRunner.Operation", new SimpleOperationContext(this.webda).setInput(Buffer.from("{}")));
87
+ this.webda.initStatics();
88
+ await this.getService("AsyncJobs").save(opAction);
89
+ serviceAction = await runner.launchAction(opAction, {
90
+ JOB_HOOK: "",
91
+ JOB_ID: opAction.getUuid(),
92
+ JOB_ORCHESTRATOR: "test",
93
+ JOB_SECRET_KEY: ""
94
+ });
95
+ await serviceAction.promise;
96
+ await opAction.refresh();
97
+ assert.strictEqual(opAction.status, "SUCCESS");
98
+ assert.strictEqual(opAction.logs?.length, 1);
99
+ assert.ok(opAction.logs[0].endsWith(" [ INFO] [calledRunner] Logging test"));
100
+ }
101
+ };
102
+ __decorate([
103
+ test
104
+ ], ServiceRunnerTest.prototype, "operationAction", null);
105
+ __decorate([
106
+ test
107
+ ], ServiceRunnerTest.prototype, "cov", null);
108
+ ServiceRunnerTest = __decorate([
109
+ suite
110
+ ], ServiceRunnerTest);
111
+ //# sourceMappingURL=servicerunner.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicerunner.spec.js","sourceRoot":"","sources":["../../src/services/servicerunner.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webda/async",
3
- "version": "3.7.3",
3
+ "version": "4.0.0-beta.2",
4
4
  "description": "Async System",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -8,9 +8,13 @@
8
8
  "build:module": "webda build",
9
9
  "build:watch": "webda build --watch",
10
10
  "pretest": "npm run build",
11
- "test": "c8 mocha -r ../../node_modules/ts-node/register",
12
- "test:debug": "mocha --recursive --exit --no-timeouts 'src/**/*.spec.ts'",
13
- "run": "node core"
11
+ "test": "c8 mocha",
12
+ "test:debug": "mocha --no-timeouts",
13
+ "run": "node core",
14
+ "format": "prettier --check src/**/*",
15
+ "lint": "eslint",
16
+ "lint:fix": "eslint --fix",
17
+ "format:fix": "prettier --write src/**/*"
14
18
  },
15
19
  "keywords": [
16
20
  "webda-module"
@@ -21,22 +25,22 @@
21
25
  "package.json"
22
26
  ],
23
27
  "dependencies": {
24
- "@webda/core": "^3.16.3",
25
- "@webda/workout": "^3.2.1",
28
+ "@webda/core": "^4.0.0-beta.2",
29
+ "@webda/ql": "^4.0.0-beta.2",
30
+ "@webda/workout": "^4.0.0-beta.2",
26
31
  "axios": "^1.1.3",
27
32
  "json-schema": "^0.4.0",
28
- "node-cron": "^3.0.2",
29
- "uuid": "^10.0.0"
33
+ "node-cron": "^3.0.2"
30
34
  },
31
35
  "devDependencies": {
32
36
  "@testdeck/mocha": "^0.3.3",
33
- "@types/node": "18.11.13",
34
- "@webda/tsc-esm": "^1.3.1",
37
+ "@types/node": "20.0.0",
38
+ "@webda/tsc-esm": "^4.0.0-beta.2",
35
39
  "mocha": "^10.0.0",
36
- "sinon": "^18.0.0",
40
+ "sinon": "^19.0.2",
37
41
  "source-map-support": "^0.5.19",
38
- "ts-node": "^10.2.0",
39
- "typescript": "~5.5.3"
42
+ "tsx": "^4.17.0",
43
+ "typescript": "^5.6.2"
40
44
  },
41
45
  "c8": {
42
46
  "report-dir": "./reports",
@@ -66,7 +70,7 @@
66
70
  },
67
71
  "type": "module",
68
72
  "engines": {
69
- "node": ">=18.0.0"
73
+ "node": ">=20.0.0"
70
74
  },
71
75
  "nx": {
72
76
  "implicitDependencies": [
@@ -74,5 +78,6 @@
74
78
  "@webda/tsc-esm"
75
79
  ]
76
80
  },
77
- "gitHead": "3424571d0cbdcbdc05ba699c20c802fe3641f4aa"
81
+ "license": "LGPL-3.0-only",
82
+ "gitHead": "e992dcfb82cefa6cd5c61c54a0e63778b6f53d8e"
78
83
  }
package/webda.module.json CHANGED
@@ -30,7 +30,8 @@
30
30
  "status": "\"RUNNING\" | \"SUCCESS\" | \"ERROR\" | \"QUEUED\" | \"STARTING\" | \"TIMEOUT\" | \"SCHEDULED\"",
31
31
  "scheduled": "number",
32
32
  "errorMessage": "string",
33
- "job": "Job",
33
+ "errorName": "string",
34
+ "job": "any",
34
35
  "_lastJobUpdate": "number",
35
36
  "results": "any",
36
37
  "statusDetails": "any",
@@ -54,7 +55,8 @@
54
55
  "status": "\"RUNNING\" | \"SUCCESS\" | \"ERROR\" | \"QUEUED\" | \"STARTING\" | \"TIMEOUT\" | \"SCHEDULED\"",
55
56
  "scheduled": "number",
56
57
  "errorMessage": "string",
57
- "job": "Job",
58
+ "errorName": "string",
59
+ "job": "any",
58
60
  "_lastJobUpdate": "number",
59
61
  "results": "any",
60
62
  "statusDetails": "any",
@@ -79,7 +81,8 @@
79
81
  "status": "\"RUNNING\" | \"SUCCESS\" | \"ERROR\" | \"QUEUED\" | \"STARTING\" | \"TIMEOUT\" | \"SCHEDULED\"",
80
82
  "scheduled": "number",
81
83
  "errorMessage": "string",
82
- "job": "Job",
84
+ "errorName": "string",
85
+ "job": "any",
83
86
  "_lastJobUpdate": "number",
84
87
  "results": "any",
85
88
  "statusDetails": "any",
@@ -141,8 +144,11 @@
141
144
  "type": "string",
142
145
  "description": "If an error occured it should contain the message"
143
146
  },
147
+ "errorName": {
148
+ "type": "string",
149
+ "description": "If an error occured it should contain the name"
150
+ },
144
151
  "job": {
145
- "type": "object",
146
152
  "description": "Job information"
147
153
  },
148
154
  "_lastJobUpdate": {
@@ -198,13 +204,7 @@
198
204
  "url": {
199
205
  "type": "string",
200
206
  "description": "URL to expose job status report hook",
201
- "default": "/async/jobs",
202
- "deprecated": "will be removed in 4.0 to only use object AsyncAction"
203
- },
204
- "binaryStore": {
205
- "type": "string",
206
- "description": "If we want to expose a way to upload/download binary for the job\n\nIt will expose a /download and /upload additional url",
207
- "deprecated": "will be removed in 4.0 to only use object AsyncAction"
207
+ "default": "/async"
208
208
  },
209
209
  "localLaunch": {
210
210
  "type": "boolean",
@@ -326,8 +326,11 @@
326
326
  "type": "string",
327
327
  "description": "If an error occured it should contain the message"
328
328
  },
329
+ "errorName": {
330
+ "type": "string",
331
+ "description": "If an error occured it should contain the name"
332
+ },
329
333
  "job": {
330
- "type": "object",
331
334
  "description": "Job information"
332
335
  },
333
336
  "_lastJobUpdate": {
@@ -371,12 +374,13 @@
371
374
  "description": "Contain all registered promises to this context",
372
375
  "readOnly": true
373
376
  },
377
+ "parameters": {},
374
378
  "_stream": {
375
379
  "type": "object",
376
380
  "properties": {
377
381
  "writable": {
378
382
  "type": "boolean",
379
- "description": "Is `true` if it is safe to call `writable.write()`, which means the stream has not been destroyed, errored or ended."
383
+ "description": "Is `true` if it is safe to call `writable.write()`, which means the stream has not been destroyed, errored, or ended."
380
384
  },
381
385
  "writableEnded": {
382
386
  "type": "boolean",
@@ -408,7 +412,7 @@
408
412
  },
409
413
  "closed": {
410
414
  "type": "boolean",
411
- "description": "Is true after 'close' has been emitted."
415
+ "description": "Is `true` after `'close'` has been emitted."
412
416
  },
413
417
  "errored": {
414
418
  "anyOf": [
@@ -438,7 +442,7 @@
438
442
  },
439
443
  "writableNeedDrain": {
440
444
  "type": "boolean",
441
- "description": "Is `true` if the stream's buffer has been full and stream will emit 'drain'."
445
+ "description": "Is `true` if the stream's buffer has been full and stream will emit `'drain'`."
442
446
  }
443
447
  },
444
448
  "required": [
@@ -458,6 +462,9 @@
458
462
  "readOnly": true
459
463
  }
460
464
  },
465
+ "required": [
466
+ "parameters"
467
+ ],
461
468
  "description": "OperationContext is used when call to an operation"
462
469
  },
463
470
  "logLevel": {
@@ -533,8 +540,11 @@
533
540
  "type": "string",
534
541
  "description": "If an error occured it should contain the message"
535
542
  },
543
+ "errorName": {
544
+ "type": "string",
545
+ "description": "If an error occured it should contain the name"
546
+ },
536
547
  "job": {
537
- "type": "object",
538
548
  "description": "Job information"
539
549
  },
540
550
  "_lastJobUpdate": {
@@ -746,7 +756,7 @@
746
756
  },
747
757
  "hostname": {
748
758
  "type": "string",
749
- "description": "Gets and sets the host name portion of the URL. The key difference between`url.host` and `url.hostname` is that `url.hostname` does _not_ include the port.\n\n```js const myURL = new URL('https://example.org:81/foo'); console.log(myURL.hostname); // Prints example.org\n\n// Setting the hostname does not change the port myURL.hostname = 'example.com:82'; console.log(myURL.href); // Prints https://example.com:81/foo\n\n// Use myURL.host to change the hostname and port myURL.host = 'example.org:82'; console.log(myURL.href); // Prints https://example.org:82/foo ```\n\nInvalid host name values assigned to the `hostname` property are ignored."
759
+ "description": "Gets and sets the host name portion of the URL. The key difference between`url.host` and `url.hostname` is that `url.hostname` does _not_ include the port.\n\n```js const myURL = new URL('https://example.org:81/foo'); console.log(myURL.hostname); // Prints example.org\n\n// Setting the hostname does not change the port myURL.hostname = 'example.com'; console.log(myURL.href); // Prints https://example.com:81/foo\n\n// Use myURL.host to change the hostname and port myURL.host = 'example.org:82'; console.log(myURL.href); // Prints https://example.org:82/foo ```\n\nInvalid host name values assigned to the `hostname` property are ignored."
750
760
  },
751
761
  "href": {
752
762
  "type": "string",
@@ -758,7 +768,7 @@
758
768
  },
759
769
  "password": {
760
770
  "type": "string",
761
- "description": "Gets and sets the password portion of the URL.\n\n```js const myURL = new URL('https://abc:xyz@example.com'); console.log(myURL.password); // Prints xyz\n\nmyURL.password = '123'; console.log(myURL.href); // Prints https://abc:123@example.com ```\n\nInvalid URL characters included in the value assigned to the `password` property are `percent-encoded`. The selection of which characters to percent-encode may vary somewhat from what the {@link parse } and {@link format } methods would produce."
771
+ "description": "Gets and sets the password portion of the URL.\n\n```js const myURL = new URL('https://abc:xyz@example.com'); console.log(myURL.password); // Prints xyz\n\nmyURL.password = '123'; console.log(myURL.href); // Prints https://abc:123@example.com/ ```\n\nInvalid URL characters included in the value assigned to the `password` property are `percent-encoded`. The selection of which characters to percent-encode may vary somewhat from what the {@link parse } and {@link format } methods would produce."
762
772
  },
763
773
  "pathname": {
764
774
  "type": "string",
@@ -778,8 +788,16 @@
778
788
  },
779
789
  "searchParams": {
780
790
  "type": "object",
781
- "properties": {},
782
- "description": "Gets the `URLSearchParams` object representing the query parameters of the URL. This property is read-only but the `URLSearchParams` object it provides can be used to mutate the URL instance; to replace the entirety of query parameters of the URL, use the {@link search } setter. See `URLSearchParams` documentation for details.\n\nUse care when using `.searchParams` to modify the `URL` because, per the WHATWG specification, the `URLSearchParams` object uses different rules to determine which characters to percent-encode. For instance, the `URL` object will not percent encode the ASCII tilde (`~`) character, while `URLSearchParams` will always encode it:\n\n```js const myUrl = new URL('https://example.org/abc?foo=~bar');\n\nconsole.log(myUrl.search); // prints ?foo=~bar\n\n// Modify the URL via searchParams... myUrl.searchParams.sort();\n\nconsole.log(myUrl.search); // prints ?foo=%7Ebar ```"
791
+ "properties": {
792
+ "size": {
793
+ "type": "number",
794
+ "description": "The total number of parameter entries."
795
+ }
796
+ },
797
+ "required": [
798
+ "size"
799
+ ],
800
+ "description": "Gets the `URLSearchParams` object representing the query parameters of the URL. This property is read-only but the `URLSearchParams` object it provides can be used to mutate the URL instance; to replace the entirety of query parameters of the URL, use the {@link search } setter. See `URLSearchParams` documentation for details.\n\nUse care when using `.searchParams` to modify the `URL` because, per the WHATWG specification, the `URLSearchParams` object uses different rules to determine which characters to percent-encode. For instance, the `URL` object will not percent encode the ASCII tilde (`~`) character, while `URLSearchParams` will always encode it:\n\n```js const myURL = new URL('https://example.org/abc?foo=~bar');\n\nconsole.log(myURL.search); // prints ?foo=~bar\n\n// Modify the URL via searchParams... myURL.searchParams.sort();\n\nconsole.log(myURL.search); // prints ?foo=%7Ebar ```"
783
801
  },
784
802
  "username": {
785
803
  "type": "string",
@@ -815,7 +833,7 @@
815
833
  },
816
834
  "windowsHide": {
817
835
  "type": "boolean",
818
- "default": true
836
+ "default": false
819
837
  },
820
838
  "argv0": {
821
839
  "type": "string"