@webda/async 4.0.0-beta.1 → 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 +3 -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 +3 -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 +1 -1
  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 +19 -13
  38. package/webda.module.json +24 -21
@@ -0,0 +1,561 @@
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 { CancelablePromise, Cron, HttpContext, OperationContext, Service, WebdaError } from "@webda/core";
9
+ import { WebdaTest } from "@webda/core/lib/test.js";
10
+ import * as assert from "assert";
11
+ import axios from "axios";
12
+ import * as crypto from "crypto";
13
+ import * as sinon from "sinon";
14
+ import { stub } from "sinon";
15
+ import AsyncAction, { AsyncOperationAction, AsyncWebdaAction } from "../models.js";
16
+ import AsyncJobService from "./asyncjobservice.js";
17
+ import { Runner } from "./runner.js";
18
+ class FakeService extends Service {
19
+ cron1() { }
20
+ cron2() { }
21
+ scheduled() { }
22
+ }
23
+ __decorate([
24
+ Cron("0 4 * * *")
25
+ ], FakeService.prototype, "cron1", null);
26
+ __decorate([
27
+ Cron("0 8 * * *")
28
+ ], FakeService.prototype, "cron2", null);
29
+ let AsyncJobServiceTest = class AsyncJobServiceTest extends WebdaTest {
30
+ async worker() {
31
+ const service = this.getValidService();
32
+ // @ts-ignore
33
+ service.queue = {
34
+ // @ts-ignore
35
+ consume: async (callback) => { }
36
+ };
37
+ await service.worker();
38
+ service.getParameters().includeSchedulerInWorker = true;
39
+ // @ts-ignore
40
+ service.queue = {
41
+ // @ts-ignore
42
+ consume: async (callback) => {
43
+ return new CancelablePromise();
44
+ }
45
+ };
46
+ await service.worker().cancel();
47
+ // @ts-ignore
48
+ service.runners = [];
49
+ assert.rejects(() => service.worker(), /AsyncJobService.worker requires runners/);
50
+ }
51
+ /**
52
+ * Return a good initialized service
53
+ * @returns
54
+ */
55
+ getValidService() {
56
+ const service = new AsyncJobService(this.webda, "async", {
57
+ queue: "AsyncQueue",
58
+ runners: ["LocalRunner"]
59
+ });
60
+ service.resolve();
61
+ return service;
62
+ }
63
+ async resolve() {
64
+ this.service = new AsyncJobService(this.webda, "async", {});
65
+ assert.throws(() => this.service.resolve(), /requires a valid queue/);
66
+ this.service = new AsyncJobService(this.webda, "async", { queue: "AsyncQueue" });
67
+ this.service.resolve();
68
+ // @ts-ignore
69
+ assert.strictEqual(this.service.runners.length, 0);
70
+ this.service = new AsyncJobService(this.webda, "async", {
71
+ queue: "AsyncQueue",
72
+ runners: ["unknown"],
73
+ url: "/cov"
74
+ });
75
+ this.service.resolve();
76
+ // Just for COV
77
+ const stubAction = stub(this.service, "launchAction").callsFake(async () => new AsyncAction());
78
+ await this.service.launchAsAsyncAction("myService", "myMethod", 2);
79
+ assert.deepStrictEqual(stubAction.getCall(0).args, [new AsyncWebdaAction("myService", "myMethod", 2)]);
80
+ assert.strictEqual(new AsyncAction().isInternal(), false);
81
+ assert.strictEqual(new AsyncWebdaAction().isInternal(), true);
82
+ assert.strictEqual(new AsyncOperationAction("ope.id", new OperationContext(this.webda)).isInternal(), true);
83
+ await this.service.executeAsAsyncAction("myService", "myMethod", 2);
84
+ }
85
+ async checkRequest() {
86
+ this.service = this.getValidService();
87
+ // @ts-ignore
88
+ const action = await AsyncAction.create({ uuid: "plop", __secretKey: "plop" });
89
+ const jobTime = Date.now().toString();
90
+ const jobHash = crypto.createHmac(AsyncJobService.HMAC_ALGO, action.__secretKey).update(jobTime).digest("hex");
91
+ const context = await this.newContext();
92
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {}));
93
+ assert.strictEqual(await this.service.checkRequest(context), false);
94
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
95
+ "X-Job-Id": "plop"
96
+ }));
97
+ assert.strictEqual(await this.service.checkRequest(context), false);
98
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
99
+ "X-Job-Id": "plop",
100
+ "X-Job-Time": jobTime
101
+ }));
102
+ assert.strictEqual(await this.service.checkRequest(context), false);
103
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
104
+ "X-Job-Id": "plop",
105
+ "X-Job-Time": jobTime,
106
+ "X-Job-Hash": jobHash
107
+ }));
108
+ assert.strictEqual(await this.service.checkRequest(context), false);
109
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/status", "https", 443, {
110
+ "X-Job-Id": "plop",
111
+ "X-Job-Time": jobTime,
112
+ "X-Job-Hash": jobHash
113
+ }));
114
+ assert.strictEqual(await this.service.checkRequest(context), false);
115
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/async/status", "https", 443, {
116
+ "X-Job-Id": "plop",
117
+ "X-Job-Time": jobTime,
118
+ "X-Job-Hash": jobHash
119
+ }));
120
+ assert.strictEqual(await this.service.checkRequest(context), true);
121
+ }
122
+ async launchAction() {
123
+ const service = this.getValidService();
124
+ // @ts-ignore protected field
125
+ const stub = sinon.stub(service, "handleEvent");
126
+ await service.launchAction(new AsyncAction());
127
+ const actions = (await AsyncAction.query()).results;
128
+ assert.strictEqual(actions.length, 1);
129
+ assert.strictEqual(await service.getService("AsyncQueue").size(), 1);
130
+ assert.strictEqual(actions[0].status, "QUEUED");
131
+ assert.strictEqual(actions[0].type, "AsyncAction");
132
+ assert.notStrictEqual(actions[0].__secretKey, undefined);
133
+ // @ts-ignore
134
+ const msg = (await service.getService("AsyncQueue").receiveMessage()).shift().Message;
135
+ assert.strictEqual(msg.type, actions[0].type);
136
+ assert.strictEqual(msg.uuid, actions[0].getUuid());
137
+ assert.strictEqual(msg.__secretKey, actions[0].__secretKey);
138
+ assert.strictEqual(stub.callCount, 0);
139
+ service.getParameters().localLaunch = true;
140
+ await service.launchAction(new AsyncAction());
141
+ assert.strictEqual(stub.callCount, 1);
142
+ // Try to launch an existing action
143
+ const action = await service.getService("AsyncJobs").create({});
144
+ await service.launchAction(action);
145
+ }
146
+ async statusHook() {
147
+ const service = this.getValidService();
148
+ service.getParameters().logsLimit = 100;
149
+ const context = await this.newContext();
150
+ // @ts-ignore
151
+ const hook = service.statusHook.bind(service);
152
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
153
+ "X-Job-Time": "12345",
154
+ "X-Job-Hash": "myhash"
155
+ }));
156
+ await assert.rejects(() => hook(context), WebdaError.NotFound);
157
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
158
+ "X-Job-Time": "12345",
159
+ "X-Job-Hash": "myhash",
160
+ "X-Job-Id": "plop"
161
+ }));
162
+ await assert.rejects(() => hook(context), WebdaError.NotFound);
163
+ await AsyncAction.create({
164
+ uuid: "plop",
165
+ __secretKey: "mine",
166
+ logs: ["prev1"],
167
+ job: {
168
+ param1: "plop"
169
+ }
170
+ });
171
+ await assert.rejects(() => hook(context), WebdaError.Forbidden);
172
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
173
+ "X-Job-Time": "12345",
174
+ "X-Job-Hash": crypto.createHmac("sha256", "mine2").update("12345").digest("hex"),
175
+ "X-Job-Id": "plop"
176
+ }));
177
+ await assert.rejects(() => hook(context), WebdaError.Forbidden);
178
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
179
+ "X-Job-Time": "12345",
180
+ "X-Job-Hash": crypto.createHmac("sha256", "mine").update("12345").digest("hex"),
181
+ "X-Job-Id": "plop"
182
+ }));
183
+ context.getHttpContext().setBody({
184
+ logs: ["line 1", "line 2"],
185
+ status: "RUNNING"
186
+ });
187
+ await hook(context);
188
+ const now = Date.now().toString();
189
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
190
+ "X-Job-Time": now,
191
+ "X-Job-Hash": crypto.createHmac("sha256", "mine").update(now).digest("hex"),
192
+ "X-Job-Id": "plop"
193
+ }));
194
+ context.getHttpContext().setBody({
195
+ statusDetails: {
196
+ progress: 100
197
+ }
198
+ });
199
+ await hook(context);
200
+ const res = JSON.parse(context.getResponseBody());
201
+ assert.strictEqual(res.job.param1, "plop");
202
+ const logs = [];
203
+ for (let i = 1; i < 1100; i++) {
204
+ logs.push(`newline ${i}`);
205
+ }
206
+ context.setHttpContext(new HttpContext("test.webda.io", "GET", "/", "https", 443, {
207
+ "X-Job-Time": "bouzouf",
208
+ "X-Job-Hash": crypto.createHmac("sha256", "mine").update("bouzouf").digest("hex"),
209
+ "X-Job-Id": "plop"
210
+ }));
211
+ context.getHttpContext().setBody({
212
+ logs
213
+ });
214
+ await hook(context);
215
+ assert.strictEqual(JSON.parse(context.getResponseBody())._lastJobUpdate - res._lastJobUpdate > 0, true);
216
+ assert.strictEqual((await AsyncAction.ref("plop").get()).logs.length, 1000);
217
+ }
218
+ async handleEvent() {
219
+ const service = this.getValidService();
220
+ // @ts-ignore
221
+ const handler = service.handleEvent.bind(service, { uuid: "plop", type: "Async", isInternal: () => false });
222
+ const action = new AsyncAction();
223
+ assert.strictEqual(action.__class.name, "AsyncAction");
224
+ action.uuid = "plop";
225
+ await AsyncAction.create(action);
226
+ // @ts-ignore
227
+ service.runners = [
228
+ // @ts-ignore
229
+ {
230
+ handleType: () => true,
231
+ launchAction: async () => ({ mocked: true })
232
+ }
233
+ ];
234
+ await handler();
235
+ assert.strictEqual((await AsyncAction.ref("plop").get()).status, "STARTING");
236
+ // @ts-ignore
237
+ service.runners = [
238
+ // @ts-ignore
239
+ {
240
+ handleType: () => false,
241
+ launchAction: async () => ({ mocked: true })
242
+ }
243
+ ];
244
+ await handler();
245
+ assert.strictEqual((await AsyncAction.ref("plop").get()).status, "ERROR");
246
+ service.getParameters().fallbackOnFirst = true;
247
+ await handler();
248
+ assert.strictEqual((await AsyncAction.ref("plop").get()).status, "STARTING");
249
+ }
250
+ async postHook() {
251
+ const service = this.getValidService();
252
+ const action = await AsyncAction.create({ __secretKey: "plop" });
253
+ const stub = sinon.stub(axios, "post").callsFake(async () => ({
254
+ data: {}
255
+ }));
256
+ const jobInfo = {
257
+ JOB_ORCHESTRATOR: "mine",
258
+ JOB_ID: action.getUuid(),
259
+ JOB_SECRET_KEY: action.__secretKey,
260
+ JOB_HOOK: "http://plop"
261
+ };
262
+ await service.postHook(jobInfo, { status: "RUNNING", logs: ["axios"] });
263
+ assert.strictEqual(stub.callCount, 1);
264
+ assert.deepStrictEqual(stub.getCall(0).args[0], "http://plop");
265
+ assert.deepStrictEqual(stub.getCall(0).args[1], { status: "RUNNING", logs: ["axios"] });
266
+ assert.strictEqual(((stub.getCall(0).args[2] || {}).headers || {})["X-Job-Id"], action.getUuid());
267
+ await service.postHook({
268
+ JOB_ORCHESTRATOR: "mine",
269
+ JOB_ID: action.getUuid(),
270
+ JOB_SECRET_KEY: action.__secretKey,
271
+ JOB_HOOK: "store"
272
+ }, { status: "RUNNING", logs: ["store"] });
273
+ await action.refresh();
274
+ assert.deepStrictEqual(action.logs, ["store"]);
275
+ }
276
+ async runAsyncOperationAction(hook = "http://...", service = this.getValidService()) {
277
+ // @ts-ignore
278
+ await assert.rejects(() => service.runAsyncOperationAction({}), /Cannot run AsyncAction/);
279
+ await assert.rejects(() =>
280
+ // @ts-ignore
281
+ service.runAsyncOperationAction({
282
+ JOB_ORCHESTRATOR: "a"
283
+ }), /Cannot run AsyncAction/);
284
+ await assert.rejects(() =>
285
+ // @ts-ignore
286
+ service.runAsyncOperationAction({
287
+ JOB_ORCHESTRATOR: "a",
288
+ JOB_ID: "a"
289
+ }), /Cannot run AsyncAction/);
290
+ await assert.rejects(() =>
291
+ // @ts-ignore
292
+ service.runAsyncOperationAction({
293
+ JOB_ORCHESTRATOR: "a",
294
+ JOB_ID: "a",
295
+ JOB_SECRET_KEY: "p"
296
+ }), /Cannot run AsyncAction/);
297
+ let calledInfo;
298
+ let subcall;
299
+ this.registerService({
300
+ // @ts-ignore
301
+ runAsyncOperationAction: async (info) => {
302
+ calledInfo = info;
303
+ },
304
+ myMethod: async (...args) => {
305
+ return {
306
+ myMethod: "async",
307
+ success: true,
308
+ args
309
+ };
310
+ }
311
+ }, "mine");
312
+ process.env = {
313
+ ...process.env,
314
+ JOB_ORCHESTRATOR: "mine",
315
+ JOB_ID: "a",
316
+ JOB_SECRET_KEY: "a",
317
+ JOB_HOOK: hook
318
+ };
319
+ // Check redirection to good service
320
+ await service.runAsyncOperationAction();
321
+ assert.deepStrictEqual(calledInfo, {
322
+ JOB_ORCHESTRATOR: "mine",
323
+ JOB_ID: "a",
324
+ JOB_SECRET_KEY: "a",
325
+ JOB_HOOK: hook
326
+ });
327
+ // Now test hook
328
+ try {
329
+ this.registerService(service);
330
+ // Set a true action
331
+ const action = await new AsyncWebdaAction("mine", "myMethod").save();
332
+ service.getParameters().onlyHttpHook = true;
333
+ service.launchAction(action);
334
+ process.env.JOB_ORCHESTRATOR = "async";
335
+ process.env.JOB_ID = action.getUuid();
336
+ process.env.JOB_SECRET_KEY = action.__secretKey;
337
+ process.env.JOB_HOOK = hook;
338
+ const stub = sinon.stub(service, "postHook").callsFake(async (...args) => {
339
+ const ctx = await this.newContext(args[1]);
340
+ // @ts-ignore
341
+ if (args.length > 2 && args[2].headers) {
342
+ // @ts-ignore
343
+ for (const k in args[2].headers) {
344
+ // @ts-ignore
345
+ }
346
+ }
347
+ const headers = ctx.getHttpContext()?.headers || {};
348
+ headers["x-job-id"] = action.getUuid();
349
+ headers["x-job-time"] = Date.now().toString();
350
+ headers["x-job-hash"] = crypto
351
+ .createHmac("sha256", action.__secretKey)
352
+ .update(headers["x-job-time"])
353
+ .digest("hex");
354
+ // @ts-ignore
355
+ await service.statusHook(ctx);
356
+ return JSON.parse(ctx.getResponseBody());
357
+ });
358
+ // First run call with no method
359
+ stub.onCall(0).returns({
360
+ // @ts-ignore
361
+ serviceName: "plop"
362
+ });
363
+ await service.runAsyncOperationAction();
364
+ const args = stub.getCall(0).args;
365
+ assert.deepStrictEqual(args[1], {
366
+ agent: { ...Runner.getAgentInfo(), nodeVersion: process.version },
367
+ status: "RUNNING"
368
+ });
369
+ await action.refresh();
370
+ assert.strictEqual(action.status, "ERROR");
371
+ assert.strictEqual(action.errorMessage, "WebdaAsyncAction must have method and serviceName defined at least");
372
+ // Run without serviceName
373
+ await action.patch({
374
+ status: "RUNNING",
375
+ errorMessage: ""
376
+ });
377
+ stub.resetHistory();
378
+ stub.onCall(0).returns({
379
+ // @ts-ignore
380
+ method: "plop"
381
+ });
382
+ await service.runAsyncOperationAction();
383
+ await action.refresh();
384
+ assert.strictEqual(action.status, "ERROR");
385
+ assert.strictEqual(action.errorMessage, "WebdaAsyncAction must have method and serviceName defined at least");
386
+ // Run with unknown service
387
+ await action.patch({
388
+ status: "RUNNING",
389
+ errorMessage: ""
390
+ });
391
+ stub.resetHistory();
392
+ stub.onCall(0).returns({
393
+ // @ts-ignore
394
+ serviceName: "plop",
395
+ method: "plop"
396
+ });
397
+ await service.runAsyncOperationAction();
398
+ await action.refresh();
399
+ assert.strictEqual(action.status, "ERROR");
400
+ assert.strictEqual(action.errorMessage, "WebdaAsyncAction Service 'plop' not found: mismatch app version");
401
+ // Run with known service but incorrect method
402
+ await action.patch({
403
+ uuid: action.getUuid(),
404
+ status: "RUNNING",
405
+ errorMessage: ""
406
+ });
407
+ stub.resetHistory();
408
+ stub.onCall(0).returns({
409
+ // @ts-ignore
410
+ serviceName: "mine",
411
+ method: "plop"
412
+ });
413
+ await service.runAsyncOperationAction();
414
+ await action.refresh();
415
+ assert.strictEqual(action.status, "ERROR");
416
+ assert.strictEqual(action.errorMessage, "WebdaAsyncAction Method 'plop' not found in service mine: mismatch app version");
417
+ // Run with known service but incorrect method
418
+ await action.patch({
419
+ uuid: action.getUuid(),
420
+ status: "RUNNING",
421
+ errorMessage: ""
422
+ });
423
+ stub.resetHistory();
424
+ stub.onCall(0).returns({
425
+ // @ts-ignore
426
+ serviceName: "mine",
427
+ method: "myMethod",
428
+ arguments: ["plop", 666]
429
+ });
430
+ await service.runAsyncOperationAction();
431
+ await action.refresh();
432
+ assert.strictEqual(action.status, "SUCCESS");
433
+ assert.deepStrictEqual(action.results, { myMethod: "async", success: true, args: ["plop", 666] });
434
+ }
435
+ finally {
436
+ sinon.restore();
437
+ }
438
+ }
439
+ async scheduledAction() {
440
+ const fakeService = new FakeService(this.webda, "fake");
441
+ this.registerService(fakeService);
442
+ const service = this.getValidService();
443
+ const action = new AsyncWebdaAction("fake", "schedule");
444
+ const time = Date.now() + 1;
445
+ await service.scheduleAction(action, time);
446
+ await action.refresh();
447
+ // It should be rounded to the prior minute
448
+ assert.strictEqual(action.scheduled, time - (time % 60000));
449
+ assert.strictEqual(action.status, "SCHEDULED");
450
+ service.getParameters().includeCron = false;
451
+ let p = service.scheduler();
452
+ await this.sleep(100);
453
+ await p.cancel();
454
+ const stubLaunch = stub(service, "launchAction").callsFake(async () => new AsyncAction());
455
+ await service.getCronExecutor({
456
+ cron: "* * * * *",
457
+ args: [],
458
+ method: "cron1",
459
+ serviceName: "fake",
460
+ description: ""
461
+ })();
462
+ stubLaunch.callsFake(() => {
463
+ throw new Error("");
464
+ });
465
+ // Should not fail if it cannot launch but log ERROR
466
+ await service.getCronExecutor({
467
+ cron: "* * * * *",
468
+ args: [],
469
+ method: "cron1",
470
+ serviceName: "fake",
471
+ description: ""
472
+ })();
473
+ assert.strictEqual(stubLaunch.getCalls().length, 2);
474
+ const stubExec = stub(service, "getCronExecutor").callsFake(() => {
475
+ return async () => { };
476
+ });
477
+ service.getParameters().includeCron = true;
478
+ p = service.scheduler();
479
+ await this.sleep(100);
480
+ await p.cancel();
481
+ assert.strictEqual(stubExec.getCalls().length, 2);
482
+ }
483
+ async operations() {
484
+ const service = await this.addService(AsyncJobService, {
485
+ queue: "AsyncQueue",
486
+ runners: ["LocalRunner"],
487
+ asyncOperationDefinition: "./test/asyncOperations.json"
488
+ }, "async");
489
+ service.resolve();
490
+ assert.ok(this.webda.getApplication().hasSchema("userservice.revoke.input"));
491
+ let context = await this.newContext();
492
+ await service.listOperations(context);
493
+ let res = JSON.parse(context.getOutput());
494
+ assert.deepStrictEqual(res, ["User.Revoke"]);
495
+ context.getParameters().full = true;
496
+ await service.listOperations(context);
497
+ res = JSON.parse(context.getOutput());
498
+ assert.notStrictEqual(res.schemas["userservice.revoke.input"], undefined);
499
+ assert.notStrictEqual(res.operations["User.Revoke"], undefined);
500
+ await context.newSession();
501
+ context.getSession().role = "hr";
502
+ context.getParameters().full = false;
503
+ await service.listOperations(context);
504
+ res = JSON.parse(context.getOutput());
505
+ assert.deepStrictEqual(res, ["User.Revoke", "User.Onboard"]);
506
+ context.getParameters().full = true;
507
+ await service.listOperations(context);
508
+ context.getSession().role = "no-hr";
509
+ context.getParameters().operationId = "User.Onboard";
510
+ await assert.rejects(() => service.launchOperation(context), WebdaError.Forbidden);
511
+ context.getParameters().operationId = "User.Onboard2";
512
+ await assert.rejects(() => service.launchOperation(context), WebdaError.NotFound);
513
+ context.getSession().role = "hr";
514
+ context.getParameters().operationId = "User.Revoke";
515
+ await assert.rejects(() => service.launchOperation(context), WebdaError.BadRequest);
516
+ context = await this.newContext({ id: "my-id" });
517
+ context.getSession().role = "hr";
518
+ context.getParameters().operationId = "User.Revoke";
519
+ await service.launchOperation(context);
520
+ context.getParameters().schedule = Date.now() + 86400000;
521
+ await service.launchOperation(context);
522
+ sinon.stub(service.getWebda(), "checkOperation").callsFake(async () => {
523
+ throw new Error("Plop");
524
+ });
525
+ await assert.rejects(() => service.launchOperation(context), /Plop/);
526
+ }
527
+ };
528
+ __decorate([
529
+ test
530
+ ], AsyncJobServiceTest.prototype, "worker", null);
531
+ __decorate([
532
+ test
533
+ ], AsyncJobServiceTest.prototype, "resolve", null);
534
+ __decorate([
535
+ test
536
+ ], AsyncJobServiceTest.prototype, "checkRequest", null);
537
+ __decorate([
538
+ test
539
+ ], AsyncJobServiceTest.prototype, "launchAction", null);
540
+ __decorate([
541
+ test
542
+ ], AsyncJobServiceTest.prototype, "statusHook", null);
543
+ __decorate([
544
+ test
545
+ ], AsyncJobServiceTest.prototype, "handleEvent", null);
546
+ __decorate([
547
+ test
548
+ ], AsyncJobServiceTest.prototype, "postHook", null);
549
+ __decorate([
550
+ test
551
+ ], AsyncJobServiceTest.prototype, "runAsyncOperationAction", null);
552
+ __decorate([
553
+ test
554
+ ], AsyncJobServiceTest.prototype, "scheduledAction", null);
555
+ __decorate([
556
+ test
557
+ ], AsyncJobServiceTest.prototype, "operations", null);
558
+ AsyncJobServiceTest = __decorate([
559
+ suite
560
+ ], AsyncJobServiceTest);
561
+ //# sourceMappingURL=asyncjobservice.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncjobservice.spec.js","sourceRoot":"","sources":["../../src/services/asyncjobservice.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAS,OAAO,EAAS,UAAU,EAAE,MAAM,aAAa,CAAC;AACxH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,WAAW,EAAE,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAY,SAAQ,OAAO;IAE/B,KAAK,KAAI,CAAC;IAGV,KAAK,KAAI,CAAC;IAEV,SAAS,KAAI,CAAC;CACf;AANC;IADC,IAAI,CAAC,WAAW,CAAC;wCACR;AAGV;IADC,IAAI,CAAC,WAAW,CAAC;wCACR;AAMZ,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,SAAS;IAInC,AAAN,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,aAAa;QACb,OAAO,CAAC,KAAK,GAAG;YACd,aAAa;YACb,OAAO,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE,GAAE,CAAC;SAC9B,CAAC;QACF,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,aAAa,EAAE,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACxD,aAAa;QACb,OAAO,CAAC,KAAK,GAAG;YACd,aAAa;YACb,OAAO,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE;gBACxB,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACjC,CAAC;SACF,CAAC;QACF,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;QAChC,aAAa;QACb,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,yCAAyC,CAAC,CAAC;IACpF,CAAC;IACD;;;OAGG;IACH,eAAe;QACb,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;YACvD,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,CAAC,aAAa,CAAC;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,aAAa;QACb,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;YACtD,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,CAAC,SAAS,CAAC;YACpB,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAEvB,eAAe;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QAC/F,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvG,MAAM,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,QAAQ,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;QAE5G,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,aAAa;QACb,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/G,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,UAAU,EAAE,MAAM;SACnB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,OAAO;SACtB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,OAAO;SACtB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;YAC/D,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,OAAO;SACtB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE;YACrE,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,OAAO;SACtB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,6BAA6B;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,UAAU,CAAQ,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACzD,aAAa;QACb,MAAM,GAAG,GAAQ,CAAC,MAAM,OAAO,CAAC,UAAU,CAAa,YAAY,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC;QACvG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAE5D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;QAC3C,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEtC,mCAAmC;QACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAqB,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpF,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,aAAa,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,aAAa;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,QAAQ;SACvB,CAAC,CACH,CAAC;QACF,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/D,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,QAAQ;YACtB,UAAU,EAAE,MAAM;SACnB,CAAC,CACH,CAAC;QACF,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,WAAW,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,GAAG,EAAE;gBACH,MAAM,EAAE,MAAM;aACf;SACF,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAChE,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAChF,UAAU,EAAE,MAAM;SACnB,CAAC,CACH,CAAC;QACF,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAChE,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/E,UAAU,EAAE,MAAM;SACnB,CAAC,CACH,CAAC;QACF,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC;YAC/B,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC1B,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,YAAY,EAAE,GAAG;YACjB,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3E,UAAU,EAAE,MAAM;SACnB,CAAC,CACH,CAAC;QACF,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC;YAC/B,aAAa,EAAE;gBACb,QAAQ,EAAE,GAAG;aACd;SACF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAS,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,cAAc,CACpB,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;YACzD,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACjF,UAAU,EAAE,MAAM;SACnB,CAAC,CACH,CAAC;QACF,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC;YAC/B,IAAI;SACL,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAS,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAChH,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,aAAa;QACb,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;QACrB,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,aAAa;QACb,OAAO,CAAC,OAAO,GAAG;YAChB,aAAa;YACb;gBACE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;gBACtB,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aAC7C;SACF,CAAC;QACF,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7E,aAAa;QACb,OAAO,CAAC,OAAO,GAAG;YAChB,aAAa;YACb;gBACE,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;gBACvB,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aAC7C;SACF,CAAC;QACF,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1E,OAAO,CAAC,aAAa,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;QAC/C,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/E,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5D,IAAI,EAAE,EAAE;SACT,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG;YACd,gBAAgB,EAAE,MAAM;YACxB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;YACxB,cAAc,EAAE,MAAM,CAAC,WAAW;YAClC,QAAQ,EAAE,aAAa;SACxB,CAAC;QACF,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAC/D,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClG,MAAM,OAAO,CAAC,QAAQ,CACpB;YACE,gBAAgB,EAAE,MAAM;YACxB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;YACxB,cAAc,EAAE,MAAM,CAAC,WAAW;YAClC,QAAQ,EAAE,OAAO;SAClB,EACD,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CACvC,CAAC;QACF,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAGK,AAAN,KAAK,CAAC,uBAAuB,CAAC,IAAI,GAAG,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACjF,aAAa;QACb,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;QAC1F,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE;QACH,aAAa;QACb,OAAO,CAAC,uBAAuB,CAAC;YAC9B,gBAAgB,EAAE,GAAG;SACtB,CAAC,EACJ,wBAAwB,CACzB,CAAC;QACF,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE;QACH,aAAa;QACb,OAAO,CAAC,uBAAuB,CAAC;YAC9B,gBAAgB,EAAE,GAAG;YACrB,MAAM,EAAE,GAAG;SACZ,CAAC,EACJ,wBAAwB,CACzB,CAAC;QAEF,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE;QACH,aAAa;QACb,OAAO,CAAC,uBAAuB,CAAC;YAC9B,gBAAgB,EAAE,GAAG;YACrB,MAAM,EAAE,GAAG;YACX,cAAc,EAAE,GAAG;SACpB,CAAC,EACJ,wBAAwB,CACzB,CAAC;QACF,IAAI,UAAU,CAAC;QACf,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC,eAAe,CAClB;YACE,aAAa;YACb,uBAAuB,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;gBACpC,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;gBACjC,OAAO;oBACL,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,IAAI;oBACb,IAAI;iBACL,CAAC;YACJ,CAAC;SACF,EACD,MAAM,CACP,CAAC;QACF,OAAO,CAAC,GAAG,GAAG;YACZ,GAAG,OAAO,CAAC,GAAG;YACd,gBAAgB,EAAE,MAAM;YACxB,MAAM,EAAE,GAAG;YACX,cAAc,EAAE,GAAG;YACnB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,oCAAoC;QACpC,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE;YACjC,gBAAgB,EAAE,MAAM;YACxB,MAAM,EAAE,GAAG;YACX,cAAc,EAAE,GAAG;YACnB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,gBAAgB;QAChB,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE9B,oBAAoB;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,OAAO,CAAC,aAAa,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;YAC5C,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;YAE5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,aAAa;gBACb,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBACvC,aAAa;oBACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;wBAChC,aAAa;oBACf,CAAC;gBACH,CAAC;gBACD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC;gBACpD,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC9C,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM;qBAC3B,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;qBACxC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;qBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjB,aAAa;gBACb,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC,KAAK,CAAS,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,gCAAgC;YAChC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACrB,aAAa;gBACb,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAExC,MAAM,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC9B,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE;gBACjE,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,oEAAoE,CAAC,CAAC;YAE9G,0BAA0B;YAC1B,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,EAAE;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACrB,aAAa;gBACb,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,oEAAoE,CAAC,CAAC;YAE9G,2BAA2B;YAC3B,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,EAAE;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACrB,aAAa;gBACb,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,iEAAiE,CAAC,CAAC;YAE3G,8CAA8C;YAC9C,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;gBACtB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,EAAE;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACrB,aAAa;gBACb,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,YAAY,EACnB,gFAAgF,CACjF,CAAC;YAEF,8CAA8C;YAC9C,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;gBACtB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,EAAE;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACrB,aAAa;gBACb,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC;aACzB,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe;QACnB,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,2CAA2C;QAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/C,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC;QAC5C,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QAC1F,MAAM,OAAO,CAAC,eAAe,CAAC;YAC5B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,OAAO;YACf,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,EAAE;SAChB,CAAC,EAAE,CAAC;QACL,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,oDAAoD;QACpD,MAAM,OAAO,CAAC,eAAe,CAAC;YAC5B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,OAAO;YACf,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,EAAE;SAChB,CAAC,EAAE,CAAC;QACL,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YAC/D,OAAO,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;QAC3C,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CACnC,eAAe,EACf;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,wBAAwB,EAAE,6BAA6B;SACxD,EACD,OAAO,CACR,CAAC;QACF,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC7E,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QACpC,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1E,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,UAAU,EAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtC,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;QACrC,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QACpC,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,UAAU,EAAO,CAAC,IAAI,GAAG,OAAO,CAAC;QACzC,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,GAAG,cAAc,CAAC;QACrD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QACnF,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,GAAG,eAAe,CAAC;QACtD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClF,OAAO,CAAC,UAAU,EAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtC,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,GAAG,aAAa,CAAC;QACpD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACpF,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,UAAU,EAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtC,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,GAAG,aAAa,CAAC;QACpD,MAAM,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QACzD,MAAM,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACpE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;CACF,CAAA;AAtkBO;IADL,IAAI;iDAqBJ;AAeK;IADL,IAAI;kDAyBJ;AAGK;IADL,IAAI;uDA+CJ;AAGK;IADL,IAAI;uDA0BJ;AAGK;IADL,IAAI;qDAqFJ;AAGK;IADL,IAAI;sDAgCJ;AAGK;IADL,IAAI;mDA6BJ;AAGK;IADL,IAAI;kEAkMJ;AAGK;IADL,IAAI;0DA6CJ;AAGK;IADL,IAAI;qDAgDJ;AAzkBG,mBAAmB;IADxB,KAAK;GACA,mBAAmB,CA0kBxB"}
@@ -47,3 +47,4 @@ export default class LocalRunner<T extends LocalRunnerParameters = LocalRunnerPa
47
47
  */
48
48
  launchAction(action: AsyncAction, info: JobInfo): Promise<ProcessAction>;
49
49
  }
50
+ //# sourceMappingURL=localrunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localrunner.d.ts","sourceRoot":"","sources":["../../src/services/localrunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;gBAET,MAAM,EAAE,GAAG;CAKxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACzG;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,iBAAiB;IAI9C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS;IAKzE;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;CAgD/E"}
@@ -28,7 +28,7 @@ export default class LocalRunner extends Runner {
28
28
  * @inheritdoc
29
29
  */
30
30
  async launchAction(action, info) {
31
- let envs = {
31
+ const envs = {
32
32
  ...this.parameters.options?.env,
33
33
  ...info
34
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"localrunner.js","sourceRoot":"","sources":["../../src/services/localrunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localrunner.js","sourceRoot":"","sources":["../../src/services/localrunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=localrunner.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localrunner.spec.d.ts","sourceRoot":"","sources":["../../src/services/localrunner.spec.ts"],"names":[],"mappings":""}