@webda/async 4.0.0-beta.11 → 4.0.0-beta.13
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/README.md +14 -14
- package/lib/asyncaction.model.d.ts +14 -1
- package/lib/asyncaction.model.d.ts.map +1 -1
- package/lib/asyncaction.model.js +50 -9
- package/lib/asyncaction.model.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/services/asyncevents.service.d.ts +7 -5
- package/lib/services/asyncevents.service.d.ts.map +1 -1
- package/lib/services/asyncevents.service.js +11 -7
- package/lib/services/asyncevents.service.js.map +1 -1
- package/lib/services/asyncjobservice.service.d.ts +12 -8
- package/lib/services/asyncjobservice.service.d.ts.map +1 -1
- package/lib/services/asyncjobservice.service.js +49 -16
- package/lib/services/asyncjobservice.service.js.map +1 -1
- package/lib/services/localrunner.service.d.ts +2 -2
- package/lib/services/localrunner.service.d.ts.map +1 -1
- package/lib/services/localrunner.service.js +3 -3
- package/lib/services/localrunner.service.js.map +1 -1
- package/lib/services/runner.service.d.ts.map +1 -1
- package/lib/services/runner.service.js.map +1 -1
- package/lib/services/servicerunner.service.d.ts +6 -5
- package/lib/services/servicerunner.service.d.ts.map +1 -1
- package/lib/services/servicerunner.service.js +14 -10
- package/lib/services/servicerunner.service.js.map +1 -1
- package/package.json +18 -19
- package/webda.module.json +64 -246
package/README.md
CHANGED
|
@@ -50,18 +50,18 @@ pnpm add @webda/async
|
|
|
50
50
|
}
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
| Parameter
|
|
54
|
-
|
|
55
|
-
| `queue`
|
|
56
|
-
| `url`
|
|
57
|
-
| `runners`
|
|
58
|
-
| `localLaunch`
|
|
59
|
-
| `fallbackOnFirst`
|
|
60
|
-
| `concurrencyLimit`
|
|
61
|
-
| `includeCron`
|
|
62
|
-
| `logsLimit`
|
|
63
|
-
| `asyncOperationDefinition` | string
|
|
64
|
-
| `schedulerResolution`
|
|
53
|
+
| Parameter | Type | Default | Required | Description |
|
|
54
|
+
| -------------------------- | -------- | --------------------- | -------- | ---------------------------------------------------------------------------- |
|
|
55
|
+
| `queue` | string | `"AsyncActionsQueue"` | Yes | Name of the Queue service to dispatch jobs through |
|
|
56
|
+
| `url` | string | `"/async"` | No | URL prefix for the status hook endpoint |
|
|
57
|
+
| `runners` | string[] | `[]` | Yes | List of Runner service names to execute jobs |
|
|
58
|
+
| `localLaunch` | boolean | `false` | No | Execute jobs inline (no queue) — useful for development |
|
|
59
|
+
| `fallbackOnFirst` | boolean | `false` | No | Use first runner if no runner matches the job type |
|
|
60
|
+
| `concurrencyLimit` | number | — | No | Maximum number of jobs running concurrently |
|
|
61
|
+
| `includeCron` | boolean | `true` | No | Launch `@Cron` operations as async operation actions, on the cluster leader |
|
|
62
|
+
| `logsLimit` | number | `500` | No | Max log lines retained per job in the store |
|
|
63
|
+
| `asyncOperationDefinition` | string | — | No | Path to a JSON file of operation definitions generated by `webda operations` |
|
|
64
|
+
| `schedulerResolution` | number | `60000` | No | Scheduler tick interval in milliseconds |
|
|
65
65
|
|
|
66
66
|
## Usage
|
|
67
67
|
|
|
@@ -78,8 +78,8 @@ export class ReportService extends Service {
|
|
|
78
78
|
// Expose an HTTP endpoint that queues a job and returns immediately
|
|
79
79
|
async generateReport(ctx: any): Promise<void> {
|
|
80
80
|
const action = await this.asyncJobService.launchAsAsyncAction(
|
|
81
|
-
"ReportService",
|
|
82
|
-
"runReport",
|
|
81
|
+
"ReportService", // service name
|
|
82
|
+
"runReport", // method name
|
|
83
83
|
ctx.getParameters().reportId
|
|
84
84
|
);
|
|
85
85
|
ctx.write({ jobId: action.getUuid(), status: action.status });
|
|
@@ -182,7 +182,7 @@ export declare class AsyncOperationAction extends AsyncAction {
|
|
|
182
182
|
/**
|
|
183
183
|
* Operation to call
|
|
184
184
|
*/
|
|
185
|
-
operationId
|
|
185
|
+
operationId?: string;
|
|
186
186
|
/**
|
|
187
187
|
* Context to call the operation with
|
|
188
188
|
*/
|
|
@@ -191,6 +191,12 @@ export declare class AsyncOperationAction extends AsyncAction {
|
|
|
191
191
|
* Log level to capture
|
|
192
192
|
*/
|
|
193
193
|
logLevel: WorkerLogLevel;
|
|
194
|
+
/**
|
|
195
|
+
* The operation is called as the system (`useSystem`), a cron for example
|
|
196
|
+
*
|
|
197
|
+
* The context is stored as data: the runner rebuilds a system context from this flag
|
|
198
|
+
*/
|
|
199
|
+
system?: boolean;
|
|
194
200
|
/**
|
|
195
201
|
* @param operationId operation to call or initial data
|
|
196
202
|
* @param context context to use
|
|
@@ -203,5 +209,12 @@ export declare class AsyncOperationAction extends AsyncAction {
|
|
|
203
209
|
*/
|
|
204
210
|
isInternal(): boolean;
|
|
205
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Rebuild the operation context of an AsyncOperationAction loaded from a store or received from a status hook
|
|
214
|
+
* @param context - the stored context, an OperationContext when the action never left the process
|
|
215
|
+
* @param system - the action runs as the system (see {@link AsyncOperationAction.system})
|
|
216
|
+
* @returns an operation context
|
|
217
|
+
*/
|
|
218
|
+
export declare function getActionOperationContext(context: any, system?: boolean): OperationContext;
|
|
206
219
|
export { AsyncAction };
|
|
207
220
|
//# sourceMappingURL=asyncaction.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncaction.model.d.ts","
|
|
1
|
+
{"version":3,"file":"asyncaction.model.d.ts","sources":["../src/asyncaction.model.ts"],"names":[],"mappings":"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"}
|
package/lib/asyncaction.model.js
CHANGED
|
@@ -32,7 +32,7 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
|
|
|
32
32
|
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
33
|
done = true;
|
|
34
34
|
};
|
|
35
|
-
import { Action, CoreModel, WebContext, WebdaError, useContext, useLog, useParameters, useRouter } from "@webda/core";
|
|
35
|
+
import { Action, CoreModel, GlobalOperationContext, OperationContext, Session, SimpleOperationContext, WebContext, WebdaError, useContext, useLog, useParameters, useRouter } from "@webda/core";
|
|
36
36
|
import * as crypto from "node:crypto";
|
|
37
37
|
/**
|
|
38
38
|
* Headers sent by a job runner to authenticate against the status hook
|
|
@@ -44,8 +44,7 @@ const JOB_HEADERS = ["X-Job-Hash", "X-Job-Time"];
|
|
|
44
44
|
* @returns true if both job headers are present
|
|
45
45
|
*/
|
|
46
46
|
function hasJobHeaders(context) {
|
|
47
|
-
return (context instanceof WebContext &&
|
|
48
|
-
JOB_HEADERS.every(h => context.getHttpContext()?.getUniqueHeader(h) !== undefined));
|
|
47
|
+
return (context instanceof WebContext && JOB_HEADERS.every(h => context.getHttpContext()?.getUniqueHeader(h) !== undefined));
|
|
49
48
|
}
|
|
50
49
|
let AsyncAction = (() => {
|
|
51
50
|
var _a;
|
|
@@ -106,7 +105,13 @@ let AsyncAction = (() => {
|
|
|
106
105
|
* @returns the absolute url of the status action
|
|
107
106
|
*/
|
|
108
107
|
getHookUrl() {
|
|
109
|
-
|
|
108
|
+
const uuid = this.uuid;
|
|
109
|
+
if (!uuid)
|
|
110
|
+
throw new WebdaError.BadRequest("Async action has no identifier");
|
|
111
|
+
const route = useRouter().getModelUrl(this);
|
|
112
|
+
if (!route)
|
|
113
|
+
throw new WebdaError.BadRequest("Async action route is unavailable");
|
|
114
|
+
return `${useParameters()?.apiUrl ?? ""}${route}/${uuid}/status`;
|
|
110
115
|
}
|
|
111
116
|
/**
|
|
112
117
|
* Update the action with a status report
|
|
@@ -114,7 +119,7 @@ let AsyncAction = (() => {
|
|
|
114
119
|
* @param time - the job time header
|
|
115
120
|
* @returns this
|
|
116
121
|
*/
|
|
117
|
-
async update(body, time
|
|
122
|
+
async update(body, time) {
|
|
118
123
|
if (body.logs && Array.isArray(body.logs)) {
|
|
119
124
|
this.logs ?? (this.logs = []);
|
|
120
125
|
this.logs.push(...body.logs);
|
|
@@ -144,8 +149,21 @@ let AsyncAction = (() => {
|
|
|
144
149
|
async verifyJobRequest(context) {
|
|
145
150
|
const jobTime = context.getHttpContext().getUniqueHeader("X-Job-Time");
|
|
146
151
|
const jobHash = context.getHttpContext().getUniqueHeader("X-Job-Hash");
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
if (!jobTime || !jobHash || !this.__secretKey) {
|
|
153
|
+
useLog("TRACE", "Invalid Job HMAC");
|
|
154
|
+
throw new WebdaError.Forbidden("Invalid Job HMAC");
|
|
155
|
+
}
|
|
156
|
+
if (/^\d{10,15}$/.test(jobTime)) {
|
|
157
|
+
const ts = Number.parseInt(jobTime, 10);
|
|
158
|
+
if (Math.abs(Date.now() - ts) > 300000) {
|
|
159
|
+
useLog("TRACE", "Expired Job HMAC timestamp");
|
|
160
|
+
throw new WebdaError.Forbidden("Invalid Job HMAC");
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
const expected = Buffer.from(this.getHmac(jobTime), "utf8");
|
|
164
|
+
const provided = Buffer.from(jobHash, "utf8");
|
|
165
|
+
// Ensure hash mac is correct using constant-time comparison
|
|
166
|
+
if (expected.length !== provided.length || !crypto.timingSafeEqual(expected, provided)) {
|
|
149
167
|
useLog("TRACE", "Invalid Job HMAC");
|
|
150
168
|
throw new WebdaError.Forbidden("Invalid Job HMAC");
|
|
151
169
|
}
|
|
@@ -176,7 +194,7 @@ let AsyncAction = (() => {
|
|
|
176
194
|
return true;
|
|
177
195
|
}
|
|
178
196
|
catch (err) {
|
|
179
|
-
return err.message;
|
|
197
|
+
return err instanceof Error ? err.message : String(err);
|
|
180
198
|
}
|
|
181
199
|
}
|
|
182
200
|
return "This model does not support any action: override canAct";
|
|
@@ -251,9 +269,10 @@ export class AsyncOperationAction extends AsyncAction {
|
|
|
251
269
|
constructor(operationId, context, logLevel = "INFO") {
|
|
252
270
|
super(typeof operationId === "object" ? operationId : undefined);
|
|
253
271
|
if (typeof operationId !== "object") {
|
|
254
|
-
this.operationId = operationId;
|
|
272
|
+
this.operationId = typeof operationId === "string" ? operationId : undefined;
|
|
255
273
|
this.context = context;
|
|
256
274
|
this.logLevel = logLevel;
|
|
275
|
+
this.system = context?.isGlobalContext?.() === true;
|
|
257
276
|
}
|
|
258
277
|
this.logLevel ?? (this.logLevel = "INFO");
|
|
259
278
|
}
|
|
@@ -265,5 +284,27 @@ export class AsyncOperationAction extends AsyncAction {
|
|
|
265
284
|
return true;
|
|
266
285
|
}
|
|
267
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Rebuild the operation context of an AsyncOperationAction loaded from a store or received from a status hook
|
|
289
|
+
* @param context - the stored context, an OperationContext when the action never left the process
|
|
290
|
+
* @param system - the action runs as the system (see {@link AsyncOperationAction.system})
|
|
291
|
+
* @returns an operation context
|
|
292
|
+
*/
|
|
293
|
+
export function getActionOperationContext(context, system = false) {
|
|
294
|
+
if (context instanceof OperationContext) {
|
|
295
|
+
return context;
|
|
296
|
+
}
|
|
297
|
+
const input = context?.input;
|
|
298
|
+
// A stored system action (a cron) runs as the system again
|
|
299
|
+
const ctx = system ? new GlobalOperationContext() : new SimpleOperationContext();
|
|
300
|
+
if (!system) {
|
|
301
|
+
const session = new Session();
|
|
302
|
+
if (context?.session && typeof context.session === "object") {
|
|
303
|
+
Object.assign(session, context.session);
|
|
304
|
+
}
|
|
305
|
+
ctx.setSession(session);
|
|
306
|
+
}
|
|
307
|
+
return ctx.setInput(Buffer.isBuffer(input) ? input : input?.type === "Buffer" ? Buffer.from(input.data) : Buffer.from("{}"));
|
|
308
|
+
}
|
|
268
309
|
export { AsyncAction };
|
|
269
310
|
//# sourceMappingURL=asyncaction.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncaction.model.js","
|
|
1
|
+
{"version":3,"file":"asyncaction.model.js","sources":["../src/asyncaction.model.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { registerWebdaPackage } from "@webda/utils";
|
|
1
2
|
export * from "./asyncaction.model.js";
|
|
2
3
|
export * from "./services/asyncjobservice.service.js";
|
|
3
4
|
export * from "./services/runner.service.js";
|
|
4
5
|
export * from "./services/localrunner.service.js";
|
|
5
6
|
export * from "./services/servicerunner.service.js";
|
|
6
7
|
export * from "./services/asyncevents.service.js";
|
|
8
|
+
// Refuse a second copy of the package, see registerWebdaPackage
|
|
9
|
+
registerWebdaPackage("@webda/async", import.meta.url);
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAElD,gEAAgE;AAChE,oBAAoB,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -66,13 +66,15 @@ export declare class EventServiceParameters extends ServiceParameters {
|
|
|
66
66
|
/**
|
|
67
67
|
* Queues to post async events to
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
/** @default {} */
|
|
70
|
+
queues: {
|
|
70
71
|
[key: string]: string;
|
|
71
72
|
};
|
|
72
73
|
/**
|
|
73
74
|
* Make the event sending asynchronous
|
|
74
75
|
*/
|
|
75
|
-
|
|
76
|
+
/** @default false */
|
|
77
|
+
sync: boolean;
|
|
76
78
|
/**
|
|
77
79
|
* @override
|
|
78
80
|
* @param params - the input parameters
|
|
@@ -85,7 +87,7 @@ export declare class EventServiceParameters extends ServiceParameters {
|
|
|
85
87
|
* @WebdaModda AsyncEvents
|
|
86
88
|
*/
|
|
87
89
|
declare class EventService<T extends EventServiceParameters = EventServiceParameters> extends Service<T> {
|
|
88
|
-
_callbacks: any
|
|
90
|
+
_callbacks: Record<string, Array<(payload: any, event: AsyncEvent) => unknown>>;
|
|
89
91
|
_queues: QueueMap;
|
|
90
92
|
_defaultQueue: string;
|
|
91
93
|
_async: boolean;
|
|
@@ -118,7 +120,7 @@ declare class EventService<T extends EventServiceParameters = EventServiceParame
|
|
|
118
120
|
* @param callback - the listener
|
|
119
121
|
* @param queue - the queue to use, default queue if not specified
|
|
120
122
|
*/
|
|
121
|
-
bindAsyncListener(service: Service | ModelClass, event: string, callback: any, queue?: string): void;
|
|
123
|
+
bindAsyncListener(service: Service | ModelClass, event: string, callback: (payload: any, event: AsyncEvent) => unknown, queue?: string): void;
|
|
122
124
|
/**
|
|
123
125
|
* Synchronous Listener to proxy to async
|
|
124
126
|
*
|
|
@@ -128,7 +130,7 @@ declare class EventService<T extends EventServiceParameters = EventServiceParame
|
|
|
128
130
|
* @param payload - the event payload
|
|
129
131
|
* @returns the send or handle promise
|
|
130
132
|
*/
|
|
131
|
-
pushEvent(service: Service | ModelClass, type: string, queue: string, payload: any): Promise<void>;
|
|
133
|
+
pushEvent(service: Service | ModelClass, type: string, queue: string | undefined, payload: any): Promise<void>;
|
|
132
134
|
/**
|
|
133
135
|
* Process one event
|
|
134
136
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncevents.service.d.ts","
|
|
1
|
+
{"version":3,"file":"asyncevents.service.d.ts","sources":["../../src/services/asyncevents.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAoC,MAAM,aAAa,CAAC;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IAEX;;OAEG;IACH,MAAM,CAAC,UAAU,SAAqB;IAEtC;;;;OAIG;IACH,YAAY,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,EAWlF;IAED;;;;;;OAMG;IACH,MAAM;;MAYL;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,cAazB;IAED;;;OAGG;IACH,SAAS,WAER;CACF;AAED;;GAEG;AACH,UAAU,QAAQ;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D;;OAEG;IACH,kBAAkB;IAClB,MAAM,EAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACnC;;OAEG;IACH,qBAAqB;IACrB,IAAI,EAAG,OAAO,CAAC;IAEf;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAK3B;CACF;AAED;;;GAGG;AACH,cAAM,YAAY,CAAC,CAAC,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC9F,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAM;IACrF,OAAO,EAAE,QAAQ,CAAM;IACvB,aAAa,EAAE,MAAM,CAAM;IAC3B,MAAM,EAAG,OAAO,CAAC;IAEjB;;;OAGG;IACH,OAAO,IAAI,IAAI,CAiBd;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,iBAAiB,CACf,OAAO,EAAE,OAAO,GAAG,UAAU,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,EACtD,KAAK,CAAC,EAAE,MAAM,QAiBf;IAED;;;;;;;;OAQG;IACG,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,iBAUnG;IAED;;;;;OAKG;IACH,UAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5D;IAED;;;;OAIG;IACH,UAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,iBAE/C;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,GAAE,MAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxD;CACF;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -146,16 +146,16 @@ class EventService extends Service {
|
|
|
146
146
|
if (!this._async) {
|
|
147
147
|
throw Error("EventService is not configured for asynchronous");
|
|
148
148
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
const selectedQueue = queue || this._defaultQueue;
|
|
150
|
+
if (!selectedQueue)
|
|
151
|
+
throw new Error("EventService requires a queue for async events");
|
|
152
152
|
const mapper = new AsyncEvent(service, event).getMapper();
|
|
153
153
|
if (!this._callbacks[mapper]) {
|
|
154
154
|
if (service instanceof Service) {
|
|
155
|
-
service.on(event, data => this.pushEvent(service, event,
|
|
155
|
+
service.on(event, (data) => this.pushEvent(service, event, selectedQueue, data));
|
|
156
156
|
}
|
|
157
157
|
else {
|
|
158
|
-
useRepository(service).on(event, data => this.pushEvent(service, event,
|
|
158
|
+
useRepository(service).on(event, (data) => this.pushEvent(service, event, selectedQueue, data));
|
|
159
159
|
}
|
|
160
160
|
this._callbacks[mapper] = [];
|
|
161
161
|
}
|
|
@@ -173,7 +173,11 @@ class EventService extends Service {
|
|
|
173
173
|
async pushEvent(service, type, queue, payload) {
|
|
174
174
|
const event = new AsyncEvent(service, type, payload);
|
|
175
175
|
if (this._async) {
|
|
176
|
-
|
|
176
|
+
const selectedQueue = queue ?? this._defaultQueue;
|
|
177
|
+
const target = this._queues[selectedQueue];
|
|
178
|
+
if (!target)
|
|
179
|
+
throw new Error(`Unknown async event queue: ${selectedQueue}`);
|
|
180
|
+
return target.sendMessage(event);
|
|
177
181
|
}
|
|
178
182
|
else {
|
|
179
183
|
return this.handleEvent(event);
|
|
@@ -190,7 +194,7 @@ class EventService extends Service {
|
|
|
190
194
|
return Promise.reject("Callbacks should not be empty, possible application version mismatch between emitter and worker");
|
|
191
195
|
}
|
|
192
196
|
const promises = [];
|
|
193
|
-
this._callbacks[event.getMapper()].
|
|
197
|
+
this._callbacks[event.getMapper()].forEach(executor => {
|
|
194
198
|
promises.push(executor(event.payload, event));
|
|
195
199
|
});
|
|
196
200
|
// Need to handle the failure
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncevents.service.js","
|
|
1
|
+
{"version":3,"file":"asyncevents.service.js","sources":["../../src/services/asyncevents.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,13 +54,13 @@ export declare class AsyncJobServiceParameters extends ServiceParameters {
|
|
|
54
54
|
*
|
|
55
55
|
* @default false
|
|
56
56
|
*/
|
|
57
|
-
onlyHttpHook
|
|
57
|
+
onlyHttpHook: boolean;
|
|
58
58
|
/**
|
|
59
59
|
* Include Cron annotation to launch them as AsyncOperationAction
|
|
60
60
|
*
|
|
61
61
|
* @default true
|
|
62
62
|
*/
|
|
63
|
-
includeCron
|
|
63
|
+
includeCron: boolean;
|
|
64
64
|
/**
|
|
65
65
|
* Include the scheduler system in the worker
|
|
66
66
|
*/
|
|
@@ -73,7 +73,7 @@ export declare class AsyncJobServiceParameters extends ServiceParameters {
|
|
|
73
73
|
*
|
|
74
74
|
* @default 60000
|
|
75
75
|
*/
|
|
76
|
-
schedulerResolution
|
|
76
|
+
schedulerResolution: number;
|
|
77
77
|
/**
|
|
78
78
|
* Limit the number of lines of logs available for an async action
|
|
79
79
|
*
|
|
@@ -87,13 +87,13 @@ export declare class AsyncJobServiceParameters extends ServiceParameters {
|
|
|
87
87
|
*
|
|
88
88
|
* @default Webda/AsyncWebdaAction
|
|
89
89
|
*/
|
|
90
|
-
asyncActionModel
|
|
90
|
+
asyncActionModel: string;
|
|
91
91
|
/**
|
|
92
92
|
* Model to use when launching async operation
|
|
93
93
|
*
|
|
94
94
|
* @default Webda/AsyncOperationAction
|
|
95
95
|
*/
|
|
96
|
-
asyncOperationModel
|
|
96
|
+
asyncOperationModel: string;
|
|
97
97
|
/**
|
|
98
98
|
* JSON file of the AsyncOperation definition
|
|
99
99
|
*
|
|
@@ -116,7 +116,7 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
|
|
|
116
116
|
/**
|
|
117
117
|
* Queue for execution
|
|
118
118
|
*/
|
|
119
|
-
protected queue
|
|
119
|
+
protected queue?: Queue<AsyncActionQueueItem>;
|
|
120
120
|
/**
|
|
121
121
|
* Runner to use
|
|
122
122
|
*/
|
|
@@ -132,7 +132,7 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
|
|
|
132
132
|
/**
|
|
133
133
|
* Model to use when launching operation
|
|
134
134
|
*/
|
|
135
|
-
operationModel
|
|
135
|
+
operationModel?: new (operationId: string, context: OperationContext, logLevel?: WorkerLogLevel) => AsyncOperationAction;
|
|
136
136
|
/**
|
|
137
137
|
* Operations definition
|
|
138
138
|
*/
|
|
@@ -262,7 +262,7 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
|
|
|
262
262
|
* @param message - the status report
|
|
263
263
|
* @returns the updated action
|
|
264
264
|
*/
|
|
265
|
-
postHook(jobInfo: JobInfo, message: any): Promise<AsyncWebdaAction>;
|
|
265
|
+
postHook(jobInfo: JobInfo, message: any): Promise<AsyncWebdaAction | AsyncOperationAction>;
|
|
266
266
|
/**
|
|
267
267
|
* Launch a service.method as an AsyncAction
|
|
268
268
|
* @param serviceName - the service
|
|
@@ -294,12 +294,16 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
|
|
|
294
294
|
runAsyncOperationAction(jobInfo?: JobInfo): Promise<void>;
|
|
295
295
|
/**
|
|
296
296
|
* Get the cron callback function
|
|
297
|
+
*
|
|
298
|
+
* Each tick launches the cron operation as an AsyncOperationAction, called as the system with the cron input
|
|
297
299
|
* @param cron - the cron definition
|
|
298
300
|
* @returns the cron callback
|
|
299
301
|
*/
|
|
300
302
|
getCronExecutor(cron: CronDefinition): () => Promise<void>;
|
|
301
303
|
/**
|
|
302
304
|
* Manage scheduled actions and crontab actions
|
|
305
|
+
*
|
|
306
|
+
* The crons are scheduled on the cluster leader only: each tick launches one action across the replicas
|
|
303
307
|
* @returns a cancelable loop promise
|
|
304
308
|
*/
|
|
305
309
|
scheduler(): CancelableLoopPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncjobservice.service.d.ts","
|
|
1
|
+
{"version":3,"file":"asyncjobservice.service.d.ts","sources":["../../src/services/asyncjobservice.service.ts"],"names":[],"mappings":"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"}
|