@adviser/cement 0.5.11 → 0.5.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/cjs/evento.cjs +138 -22
- package/cjs/evento.cjs.map +1 -1
- package/cjs/evento.d.ts +53 -7
- package/cjs/evento.d.ts.map +1 -1
- package/cjs/evento.test.cjs +505 -18
- package/cjs/evento.test.cjs.map +1 -1
- package/cjs/version.cjs +1 -1
- package/deno.json +1 -1
- package/esm/evento.d.ts +53 -7
- package/esm/evento.d.ts.map +1 -1
- package/esm/evento.js +135 -21
- package/esm/evento.js.map +1 -1
- package/esm/evento.test.js +506 -19
- package/esm/evento.test.js.map +1 -1
- package/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/evento.ts +200 -41
- package/ts/cjs/evento.d.ts +53 -7
- package/ts/cjs/evento.d.ts.map +1 -1
- package/ts/cjs/evento.js +138 -22
- package/ts/cjs/evento.js.map +1 -1
- package/ts/cjs/evento.test.js +505 -18
- package/ts/cjs/evento.test.js.map +1 -1
- package/ts/cjs/version.js +1 -1
- package/ts/esm/evento.d.ts +53 -7
- package/ts/esm/evento.d.ts.map +1 -1
- package/ts/esm/evento.js +135 -21
- package/ts/esm/evento.js.map +1 -1
- package/ts/esm/evento.test.js +506 -19
- package/ts/esm/evento.test.js.map +1 -1
- package/ts/esm/version.js +1 -1
package/ts/cjs/evento.test.js
CHANGED
|
@@ -4,6 +4,7 @@ const vitest_1 = require("vitest");
|
|
|
4
4
|
const evento_js_1 = require("./evento.js");
|
|
5
5
|
const result_js_1 = require("./result.js");
|
|
6
6
|
const option_js_1 = require("./option.js");
|
|
7
|
+
const promise_sleep_js_1 = require("./promise-sleep.js");
|
|
7
8
|
class ReqResEventoEnDecoder {
|
|
8
9
|
async encode(args) {
|
|
9
10
|
const body = (await args.json());
|
|
@@ -138,6 +139,7 @@ class TestSend {
|
|
|
138
139
|
const reqRes = new ReqResEventoEnDecoder();
|
|
139
140
|
const evo = new evento_js_1.Evento(reqRes);
|
|
140
141
|
const send = new TestSend();
|
|
142
|
+
const sendEvent = new evento_js_1.EventoSend(send);
|
|
141
143
|
evo.push({
|
|
142
144
|
type: evento_js_1.EventoType.WildCard,
|
|
143
145
|
hash: "wildcard-handler-first",
|
|
@@ -159,7 +161,8 @@ class TestSend {
|
|
|
159
161
|
req: ctx.validated,
|
|
160
162
|
})
|
|
161
163
|
.then((rv) => {
|
|
162
|
-
const
|
|
164
|
+
const { item } = rv.Ok();
|
|
165
|
+
const v = item.Ok();
|
|
163
166
|
let ret = result_js_1.Result.Ok(evento_js_1.EventoResult.Continue);
|
|
164
167
|
if (v.req.stop) {
|
|
165
168
|
ret = result_js_1.Result.Ok(evento_js_1.EventoResult.Stop);
|
|
@@ -190,7 +193,7 @@ class TestSend {
|
|
|
190
193
|
req: ctx.validated,
|
|
191
194
|
})
|
|
192
195
|
.then((rv) => {
|
|
193
|
-
const v = rv.Ok();
|
|
196
|
+
const { item: v } = rv.Ok();
|
|
194
197
|
const ret = result_js_1.Result.Ok(evento_js_1.EventoResult.Continue);
|
|
195
198
|
send.fn("wildcard-second-handle", ctx, v, ret);
|
|
196
199
|
return ret;
|
|
@@ -217,7 +220,8 @@ class TestSend {
|
|
|
217
220
|
req: ctx.validated,
|
|
218
221
|
})
|
|
219
222
|
.then((rv) => {
|
|
220
|
-
const
|
|
223
|
+
const { item } = rv.Ok();
|
|
224
|
+
const v = item.Ok();
|
|
221
225
|
let ret = result_js_1.Result.Ok(evento_js_1.EventoResult.Continue);
|
|
222
226
|
if (v.req.stop) {
|
|
223
227
|
ret = result_js_1.Result.Ok(evento_js_1.EventoResult.Stop);
|
|
@@ -247,7 +251,8 @@ class TestSend {
|
|
|
247
251
|
req: ctx.validated,
|
|
248
252
|
})
|
|
249
253
|
.then((rv) => {
|
|
250
|
-
const
|
|
254
|
+
const { item } = rv.Ok();
|
|
255
|
+
const v = item.Ok();
|
|
251
256
|
const ret = result_js_1.Result.Ok(evento_js_1.EventoResult.Continue);
|
|
252
257
|
send.fn("regular-second-handle", ctx, v, ret);
|
|
253
258
|
return ret;
|
|
@@ -280,10 +285,11 @@ class TestSend {
|
|
|
280
285
|
"wildcard-first-validate",
|
|
281
286
|
vitest_1.expect.objectContaining({
|
|
282
287
|
ctx: vitest_1.expect.anything(),
|
|
288
|
+
stats: vitest_1.expect.anything(),
|
|
283
289
|
enRequest: { x: 1 },
|
|
284
290
|
encoder: reqRes,
|
|
285
291
|
request,
|
|
286
|
-
send,
|
|
292
|
+
send: sendEvent,
|
|
287
293
|
}),
|
|
288
294
|
result_js_1.Result.Ok(option_js_1.Option.Some({ validated: true, x: 1, step: "wildcard-first" })),
|
|
289
295
|
]);
|
|
@@ -291,10 +297,11 @@ class TestSend {
|
|
|
291
297
|
"wildcard-first-handle",
|
|
292
298
|
vitest_1.expect.objectContaining({
|
|
293
299
|
ctx: vitest_1.expect.anything(),
|
|
300
|
+
stats: vitest_1.expect.anything(),
|
|
294
301
|
enRequest: { x: 1 },
|
|
295
302
|
encoder: reqRes,
|
|
296
303
|
request,
|
|
297
|
-
send,
|
|
304
|
+
send: sendEvent,
|
|
298
305
|
validated: { validated: true, x: 1, step: "wildcard-first" },
|
|
299
306
|
}),
|
|
300
307
|
{
|
|
@@ -312,10 +319,11 @@ class TestSend {
|
|
|
312
319
|
"wildcard-second-validate",
|
|
313
320
|
vitest_1.expect.objectContaining({
|
|
314
321
|
ctx: vitest_1.expect.anything(),
|
|
322
|
+
stats: vitest_1.expect.anything(),
|
|
315
323
|
enRequest: { x: 1 },
|
|
316
324
|
encoder: reqRes,
|
|
317
325
|
request,
|
|
318
|
-
send,
|
|
326
|
+
send: sendEvent,
|
|
319
327
|
}),
|
|
320
328
|
result_js_1.Result.Ok(option_js_1.Option.Some({ validated: true, x: 1, step: "wildcard-second" })),
|
|
321
329
|
]);
|
|
@@ -323,13 +331,14 @@ class TestSend {
|
|
|
323
331
|
"wildcard-second-handle",
|
|
324
332
|
vitest_1.expect.objectContaining({
|
|
325
333
|
ctx: vitest_1.expect.anything(),
|
|
334
|
+
stats: vitest_1.expect.anything(),
|
|
326
335
|
enRequest: { x: 1 },
|
|
327
336
|
encoder: reqRes,
|
|
328
337
|
request,
|
|
329
|
-
send,
|
|
338
|
+
send: sendEvent,
|
|
330
339
|
validated: { validated: true, x: 1, step: "wildcard-second" },
|
|
331
340
|
}),
|
|
332
|
-
{
|
|
341
|
+
result_js_1.Result.Ok({
|
|
333
342
|
encoderInfo: "test-encoder",
|
|
334
343
|
req: {
|
|
335
344
|
step: "wildcard-second",
|
|
@@ -337,7 +346,7 @@ class TestSend {
|
|
|
337
346
|
x: 1,
|
|
338
347
|
},
|
|
339
348
|
response: "ok",
|
|
340
|
-
},
|
|
349
|
+
}),
|
|
341
350
|
result_js_1.Result.Ok(evento_js_1.EventoResult.Continue),
|
|
342
351
|
]);
|
|
343
352
|
});
|
|
@@ -360,10 +369,11 @@ class TestSend {
|
|
|
360
369
|
"wildcard-first-validate",
|
|
361
370
|
vitest_1.expect.objectContaining({
|
|
362
371
|
ctx: vitest_1.expect.anything(),
|
|
372
|
+
stats: vitest_1.expect.anything(),
|
|
363
373
|
enRequest: { x: 1, stop: true },
|
|
364
374
|
encoder: reqRes,
|
|
365
375
|
request,
|
|
366
|
-
send,
|
|
376
|
+
send: sendEvent,
|
|
367
377
|
}),
|
|
368
378
|
result_js_1.Result.Ok(option_js_1.Option.Some({ validated: true, x: 1, stop: true, step: "wildcard-first" })),
|
|
369
379
|
]);
|
|
@@ -371,10 +381,11 @@ class TestSend {
|
|
|
371
381
|
"wildcard-first-handle",
|
|
372
382
|
vitest_1.expect.objectContaining({
|
|
373
383
|
ctx: vitest_1.expect.anything(),
|
|
384
|
+
stats: vitest_1.expect.anything(),
|
|
374
385
|
enRequest: { x: 1, stop: true },
|
|
375
386
|
encoder: reqRes,
|
|
376
387
|
request,
|
|
377
|
-
send,
|
|
388
|
+
send: sendEvent,
|
|
378
389
|
validated: { validated: true, x: 1, stop: true, step: "wildcard-first" },
|
|
379
390
|
}),
|
|
380
391
|
{
|
|
@@ -410,10 +421,11 @@ class TestSend {
|
|
|
410
421
|
"regular-first-validate",
|
|
411
422
|
vitest_1.expect.objectContaining({
|
|
412
423
|
ctx: vitest_1.expect.anything(),
|
|
424
|
+
stats: vitest_1.expect.anything(),
|
|
413
425
|
enRequest: { x: 2 },
|
|
414
426
|
encoder: reqRes,
|
|
415
427
|
request,
|
|
416
|
-
send,
|
|
428
|
+
send: sendEvent,
|
|
417
429
|
}),
|
|
418
430
|
result_js_1.Result.Ok(option_js_1.Option.Some({ validated: true, x: 2, step: "regular-first" })),
|
|
419
431
|
]);
|
|
@@ -421,10 +433,11 @@ class TestSend {
|
|
|
421
433
|
"regular-first-handle",
|
|
422
434
|
vitest_1.expect.objectContaining({
|
|
423
435
|
ctx: vitest_1.expect.anything(),
|
|
436
|
+
stats: vitest_1.expect.anything(),
|
|
424
437
|
enRequest: { x: 2 },
|
|
425
438
|
encoder: reqRes,
|
|
426
439
|
request,
|
|
427
|
-
send,
|
|
440
|
+
send: sendEvent,
|
|
428
441
|
validated: { validated: true, x: 2, step: "regular-first" },
|
|
429
442
|
}),
|
|
430
443
|
{
|
|
@@ -442,10 +455,11 @@ class TestSend {
|
|
|
442
455
|
"regular-second-validate",
|
|
443
456
|
vitest_1.expect.objectContaining({
|
|
444
457
|
ctx: vitest_1.expect.anything(),
|
|
458
|
+
stats: vitest_1.expect.anything(),
|
|
445
459
|
enRequest: { x: 2 },
|
|
446
460
|
encoder: reqRes,
|
|
447
461
|
request,
|
|
448
|
-
send,
|
|
462
|
+
send: sendEvent,
|
|
449
463
|
}),
|
|
450
464
|
result_js_1.Result.Ok(option_js_1.Option.Some({ validated: true, x: 2, step: "regular-second" })),
|
|
451
465
|
]);
|
|
@@ -453,10 +467,11 @@ class TestSend {
|
|
|
453
467
|
"regular-second-handle",
|
|
454
468
|
vitest_1.expect.objectContaining({
|
|
455
469
|
ctx: vitest_1.expect.anything(),
|
|
470
|
+
stats: vitest_1.expect.anything(),
|
|
456
471
|
enRequest: { x: 2 },
|
|
457
472
|
encoder: reqRes,
|
|
458
473
|
request,
|
|
459
|
-
send,
|
|
474
|
+
send: sendEvent,
|
|
460
475
|
validated: { validated: true, x: 2, step: "regular-second" },
|
|
461
476
|
}),
|
|
462
477
|
{
|
|
@@ -488,10 +503,11 @@ class TestSend {
|
|
|
488
503
|
"regular-first-validate",
|
|
489
504
|
vitest_1.expect.objectContaining({
|
|
490
505
|
ctx: vitest_1.expect.anything(),
|
|
506
|
+
stats: vitest_1.expect.anything(),
|
|
491
507
|
enRequest: { x: 2, stop: true },
|
|
492
508
|
encoder: reqRes,
|
|
493
509
|
request,
|
|
494
|
-
send,
|
|
510
|
+
send: sendEvent,
|
|
495
511
|
}),
|
|
496
512
|
result_js_1.Result.Ok(option_js_1.Option.Some({ validated: true, x: 2, stop: true, step: "regular-first" })),
|
|
497
513
|
]);
|
|
@@ -499,10 +515,11 @@ class TestSend {
|
|
|
499
515
|
"regular-first-handle",
|
|
500
516
|
vitest_1.expect.objectContaining({
|
|
501
517
|
ctx: vitest_1.expect.anything(),
|
|
518
|
+
stats: vitest_1.expect.anything(),
|
|
502
519
|
enRequest: { x: 2, stop: true },
|
|
503
520
|
encoder: reqRes,
|
|
504
521
|
request,
|
|
505
|
-
send,
|
|
522
|
+
send: sendEvent,
|
|
506
523
|
validated: { validated: true, x: 2, stop: true, step: "regular-first" },
|
|
507
524
|
}),
|
|
508
525
|
{
|
|
@@ -518,5 +535,475 @@ class TestSend {
|
|
|
518
535
|
result_js_1.Result.Ok(evento_js_1.EventoResult.Stop),
|
|
519
536
|
]);
|
|
520
537
|
});
|
|
538
|
+
(0, vitest_1.it)("validate throw encode error trigger", async () => {
|
|
539
|
+
class ErrorEncoder {
|
|
540
|
+
encode(_args) {
|
|
541
|
+
throw new Error("test encode error");
|
|
542
|
+
}
|
|
543
|
+
decode(data) {
|
|
544
|
+
return Promise.resolve(result_js_1.Result.Ok(JSON.stringify(data)));
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
const evo = new evento_js_1.Evento(new ErrorEncoder());
|
|
548
|
+
const send = new TestSend();
|
|
549
|
+
const sendEvent = new evento_js_1.EventoSend(send);
|
|
550
|
+
evo.push({
|
|
551
|
+
type: evento_js_1.EventoType.Error,
|
|
552
|
+
hash: "error-handler-0",
|
|
553
|
+
handle: async (ctx) => {
|
|
554
|
+
send.fn("error-handler-0-handle", ctx);
|
|
555
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
556
|
+
},
|
|
557
|
+
});
|
|
558
|
+
evo.push({
|
|
559
|
+
type: evento_js_1.EventoType.Error,
|
|
560
|
+
hash: "error-handler-1",
|
|
561
|
+
handle: async (ctx) => {
|
|
562
|
+
send.fn("error-handler-1-handle", ctx);
|
|
563
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
564
|
+
},
|
|
565
|
+
});
|
|
566
|
+
evo.push({
|
|
567
|
+
hash: "regular-handler-0",
|
|
568
|
+
handle: async (ctx) => {
|
|
569
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
570
|
+
return Promise.reject(new Error("test error"));
|
|
571
|
+
},
|
|
572
|
+
});
|
|
573
|
+
const request = new Request("http://example.com", { method: "GET" });
|
|
574
|
+
await evo.trigger({
|
|
575
|
+
send,
|
|
576
|
+
request,
|
|
577
|
+
});
|
|
578
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual(["error-handler-0-handle", "error-handler-1-handle"]);
|
|
579
|
+
(0, vitest_1.expect)(send.fn.mock.calls[0][1].error.message).toContain("test encode error");
|
|
580
|
+
(0, vitest_1.expect)(send.fn.mock.calls[0]).toEqual([
|
|
581
|
+
"error-handler-0-handle",
|
|
582
|
+
vitest_1.expect.objectContaining({
|
|
583
|
+
ctx: vitest_1.expect.anything(),
|
|
584
|
+
stats: vitest_1.expect.anything(),
|
|
585
|
+
encoder: reqRes,
|
|
586
|
+
request,
|
|
587
|
+
error: send.fn.mock.calls[0][1].error,
|
|
588
|
+
send: sendEvent,
|
|
589
|
+
}),
|
|
590
|
+
]);
|
|
591
|
+
});
|
|
592
|
+
(0, vitest_1.it)("validate result encode error trigger", async () => {
|
|
593
|
+
class ErrorEncoder {
|
|
594
|
+
encode(_args) {
|
|
595
|
+
return Promise.resolve(result_js_1.Result.Err(new Error("test encode error")));
|
|
596
|
+
}
|
|
597
|
+
decode(data) {
|
|
598
|
+
return Promise.resolve(result_js_1.Result.Ok(JSON.stringify(data)));
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
const evo = new evento_js_1.Evento(new ErrorEncoder());
|
|
602
|
+
const send = new TestSend();
|
|
603
|
+
const sendEvent = new evento_js_1.EventoSend(send);
|
|
604
|
+
evo.push({
|
|
605
|
+
type: evento_js_1.EventoType.Error,
|
|
606
|
+
hash: "error-handler-0",
|
|
607
|
+
handle: async (ctx) => {
|
|
608
|
+
send.fn("error-handler-0-handle", ctx);
|
|
609
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
610
|
+
},
|
|
611
|
+
});
|
|
612
|
+
evo.push({
|
|
613
|
+
type: evento_js_1.EventoType.Error,
|
|
614
|
+
hash: "error-handler-1",
|
|
615
|
+
handle: async (ctx) => {
|
|
616
|
+
send.fn("error-handler-1-handle", ctx);
|
|
617
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
618
|
+
},
|
|
619
|
+
});
|
|
620
|
+
evo.push({
|
|
621
|
+
hash: "regular-handler-0",
|
|
622
|
+
handle: async (ctx) => {
|
|
623
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
624
|
+
return Promise.reject(new Error("test error"));
|
|
625
|
+
},
|
|
626
|
+
});
|
|
627
|
+
const request = new Request("http://example.com", { method: "GET" });
|
|
628
|
+
await evo.trigger({
|
|
629
|
+
send,
|
|
630
|
+
request,
|
|
631
|
+
});
|
|
632
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual(["error-handler-0-handle", "error-handler-1-handle"]);
|
|
633
|
+
(0, vitest_1.expect)(send.fn.mock.calls[0][1].error.message).toContain("test encode error");
|
|
634
|
+
(0, vitest_1.expect)(send.fn.mock.calls[0]).toEqual([
|
|
635
|
+
"error-handler-0-handle",
|
|
636
|
+
vitest_1.expect.objectContaining({
|
|
637
|
+
ctx: vitest_1.expect.anything(),
|
|
638
|
+
stats: vitest_1.expect.anything(),
|
|
639
|
+
encoder: reqRes,
|
|
640
|
+
request,
|
|
641
|
+
error: send.fn.mock.calls[0][1].error,
|
|
642
|
+
send: sendEvent,
|
|
643
|
+
}),
|
|
644
|
+
]);
|
|
645
|
+
});
|
|
646
|
+
(0, vitest_1.it)("validate throw error trigger", async () => {
|
|
647
|
+
const evo = new evento_js_1.Evento(reqRes);
|
|
648
|
+
const send = new TestSend();
|
|
649
|
+
const sendEvent = new evento_js_1.EventoSend(send);
|
|
650
|
+
evo.push({
|
|
651
|
+
type: evento_js_1.EventoType.Error,
|
|
652
|
+
hash: "error-handler-0",
|
|
653
|
+
handle: async (ctx) => {
|
|
654
|
+
send.fn("error-handler-0-handle", ctx);
|
|
655
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
656
|
+
},
|
|
657
|
+
});
|
|
658
|
+
evo.push({
|
|
659
|
+
type: evento_js_1.EventoType.Error,
|
|
660
|
+
hash: "error-handler-1",
|
|
661
|
+
handle: async (ctx) => {
|
|
662
|
+
send.fn("error-handler-1-handle", ctx);
|
|
663
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
664
|
+
},
|
|
665
|
+
});
|
|
666
|
+
const error = new Error("test validate error");
|
|
667
|
+
evo.push({
|
|
668
|
+
hash: "regular-handler-0",
|
|
669
|
+
validate: async (ctx) => {
|
|
670
|
+
send.fn("regular-handler-0-validate", ctx);
|
|
671
|
+
return Promise.reject(error);
|
|
672
|
+
},
|
|
673
|
+
handle: async (ctx) => {
|
|
674
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
675
|
+
return Promise.reject(new Error("test error"));
|
|
676
|
+
},
|
|
677
|
+
});
|
|
678
|
+
const request = new Request("http://example.com", { method: "POST", body: JSON.stringify({ x: 2, stop: true }) });
|
|
679
|
+
await evo.trigger({
|
|
680
|
+
send,
|
|
681
|
+
request,
|
|
682
|
+
});
|
|
683
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual([
|
|
684
|
+
"regular-handler-0-validate",
|
|
685
|
+
"error-handler-0-handle",
|
|
686
|
+
"error-handler-1-handle",
|
|
687
|
+
]);
|
|
688
|
+
(0, vitest_1.expect)(send.fn.mock.calls[1]).toEqual([
|
|
689
|
+
"error-handler-0-handle",
|
|
690
|
+
vitest_1.expect.objectContaining({
|
|
691
|
+
ctx: vitest_1.expect.anything(),
|
|
692
|
+
stats: vitest_1.expect.anything(),
|
|
693
|
+
encoder: reqRes,
|
|
694
|
+
enRequest: { x: 2, stop: true },
|
|
695
|
+
request,
|
|
696
|
+
error,
|
|
697
|
+
send: sendEvent,
|
|
698
|
+
}),
|
|
699
|
+
]);
|
|
700
|
+
});
|
|
701
|
+
(0, vitest_1.it)("validate result error trigger", async () => {
|
|
702
|
+
const evo = new evento_js_1.Evento(reqRes);
|
|
703
|
+
const send = new TestSend();
|
|
704
|
+
const sendEvent = new evento_js_1.EventoSend(send);
|
|
705
|
+
evo.push({
|
|
706
|
+
type: evento_js_1.EventoType.Error,
|
|
707
|
+
hash: "error-handler-0",
|
|
708
|
+
handle: async (ctx) => {
|
|
709
|
+
send.fn("error-handler-0-handle", ctx);
|
|
710
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
711
|
+
},
|
|
712
|
+
});
|
|
713
|
+
evo.push({
|
|
714
|
+
type: evento_js_1.EventoType.Error,
|
|
715
|
+
hash: "error-handler-1",
|
|
716
|
+
handle: async (ctx) => {
|
|
717
|
+
send.fn("error-handler-1-handle", ctx);
|
|
718
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
719
|
+
},
|
|
720
|
+
});
|
|
721
|
+
const error = new Error("test validate error");
|
|
722
|
+
evo.push({
|
|
723
|
+
hash: "regular-handler-0",
|
|
724
|
+
validate: async (ctx) => {
|
|
725
|
+
send.fn("regular-handler-0-validate", ctx);
|
|
726
|
+
return Promise.resolve(result_js_1.Result.Err(error));
|
|
727
|
+
},
|
|
728
|
+
handle: async (ctx) => {
|
|
729
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
730
|
+
return Promise.reject(new Error("test error"));
|
|
731
|
+
},
|
|
732
|
+
});
|
|
733
|
+
const request = new Request("http://example.com", { method: "POST", body: JSON.stringify({ x: 2, stop: true }) });
|
|
734
|
+
await evo.trigger({
|
|
735
|
+
send,
|
|
736
|
+
request,
|
|
737
|
+
});
|
|
738
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual([
|
|
739
|
+
"regular-handler-0-validate",
|
|
740
|
+
"error-handler-0-handle",
|
|
741
|
+
"error-handler-1-handle",
|
|
742
|
+
]);
|
|
743
|
+
(0, vitest_1.expect)(send.fn.mock.calls[1]).toEqual([
|
|
744
|
+
"error-handler-0-handle",
|
|
745
|
+
vitest_1.expect.objectContaining({
|
|
746
|
+
ctx: vitest_1.expect.anything(),
|
|
747
|
+
stats: vitest_1.expect.anything(),
|
|
748
|
+
encoder: reqRes,
|
|
749
|
+
enRequest: { x: 2, stop: true },
|
|
750
|
+
request,
|
|
751
|
+
error,
|
|
752
|
+
send: sendEvent,
|
|
753
|
+
}),
|
|
754
|
+
]);
|
|
755
|
+
});
|
|
756
|
+
(0, vitest_1.it)("handle throw error trigger", async () => {
|
|
757
|
+
const evo = new evento_js_1.Evento(reqRes);
|
|
758
|
+
const send = new TestSend();
|
|
759
|
+
const sendEvent = new evento_js_1.EventoSend(send);
|
|
760
|
+
evo.push({
|
|
761
|
+
type: evento_js_1.EventoType.Error,
|
|
762
|
+
hash: "error-handler-0",
|
|
763
|
+
handle: async (ctx) => {
|
|
764
|
+
send.fn("error-handler-0-handle", ctx);
|
|
765
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
766
|
+
},
|
|
767
|
+
});
|
|
768
|
+
evo.push({
|
|
769
|
+
type: evento_js_1.EventoType.Error,
|
|
770
|
+
hash: "error-handler-1",
|
|
771
|
+
handle: async (ctx) => {
|
|
772
|
+
send.fn("error-handler-1-handle", ctx);
|
|
773
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
774
|
+
},
|
|
775
|
+
});
|
|
776
|
+
const error = new Error("test handle error");
|
|
777
|
+
evo.push({
|
|
778
|
+
hash: "regular-handler-0",
|
|
779
|
+
handle: async (ctx) => {
|
|
780
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
781
|
+
return Promise.reject(error);
|
|
782
|
+
},
|
|
783
|
+
});
|
|
784
|
+
const request = new Request("http://example.com", { method: "POST", body: JSON.stringify({ x: 2, stop: true }) });
|
|
785
|
+
await evo.trigger({
|
|
786
|
+
send,
|
|
787
|
+
request,
|
|
788
|
+
});
|
|
789
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual([
|
|
790
|
+
"start",
|
|
791
|
+
"regular-handler-0-handle",
|
|
792
|
+
"error-handler-0-handle",
|
|
793
|
+
"error-handler-1-handle",
|
|
794
|
+
"done",
|
|
795
|
+
]);
|
|
796
|
+
(0, vitest_1.expect)(send.fn.mock.calls[2]).toEqual([
|
|
797
|
+
"error-handler-0-handle",
|
|
798
|
+
vitest_1.expect.objectContaining({
|
|
799
|
+
ctx: vitest_1.expect.anything(),
|
|
800
|
+
stats: vitest_1.expect.anything(),
|
|
801
|
+
encoder: reqRes,
|
|
802
|
+
enRequest: { x: 2, stop: true },
|
|
803
|
+
request,
|
|
804
|
+
error,
|
|
805
|
+
send: sendEvent,
|
|
806
|
+
validated: {
|
|
807
|
+
stop: true,
|
|
808
|
+
x: 2,
|
|
809
|
+
},
|
|
810
|
+
}),
|
|
811
|
+
]);
|
|
812
|
+
});
|
|
813
|
+
(0, vitest_1.it)("handle result error trigger", async () => {
|
|
814
|
+
const evo = new evento_js_1.Evento(reqRes);
|
|
815
|
+
const send = new TestSend();
|
|
816
|
+
const sendEvent = new evento_js_1.EventoSend(send);
|
|
817
|
+
evo.push({
|
|
818
|
+
type: evento_js_1.EventoType.Error,
|
|
819
|
+
hash: "error-handler-0",
|
|
820
|
+
handle: async (ctx) => {
|
|
821
|
+
send.fn("error-handler-0-handle", ctx);
|
|
822
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
823
|
+
},
|
|
824
|
+
});
|
|
825
|
+
evo.push({
|
|
826
|
+
type: evento_js_1.EventoType.Error,
|
|
827
|
+
hash: "error-handler-1",
|
|
828
|
+
handle: async (ctx) => {
|
|
829
|
+
send.fn("error-handler-1-handle", ctx);
|
|
830
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
831
|
+
},
|
|
832
|
+
});
|
|
833
|
+
const error = new Error("test handle error");
|
|
834
|
+
evo.push({
|
|
835
|
+
hash: "regular-handler-0",
|
|
836
|
+
handle: async (ctx) => {
|
|
837
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
838
|
+
return Promise.resolve(result_js_1.Result.Err(error));
|
|
839
|
+
},
|
|
840
|
+
post: async (ctx) => {
|
|
841
|
+
send.fn("regular-handler-0-post", ctx);
|
|
842
|
+
return Promise.resolve();
|
|
843
|
+
},
|
|
844
|
+
});
|
|
845
|
+
const request = new Request("http://example.com", { method: "POST", body: JSON.stringify({ x: 2, stop: true }) });
|
|
846
|
+
await evo.trigger({
|
|
847
|
+
send,
|
|
848
|
+
request,
|
|
849
|
+
});
|
|
850
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual([
|
|
851
|
+
"start",
|
|
852
|
+
"regular-handler-0-handle",
|
|
853
|
+
"regular-handler-0-post",
|
|
854
|
+
"error-handler-0-handle",
|
|
855
|
+
"error-handler-1-handle",
|
|
856
|
+
"done",
|
|
857
|
+
]);
|
|
858
|
+
(0, vitest_1.expect)(send.fn.mock.calls[3]).toEqual([
|
|
859
|
+
"error-handler-0-handle",
|
|
860
|
+
vitest_1.expect.objectContaining({
|
|
861
|
+
ctx: vitest_1.expect.anything(),
|
|
862
|
+
stats: vitest_1.expect.anything(),
|
|
863
|
+
encoder: reqRes,
|
|
864
|
+
enRequest: { x: 2, stop: true },
|
|
865
|
+
request,
|
|
866
|
+
error,
|
|
867
|
+
send: sendEvent,
|
|
868
|
+
validated: {
|
|
869
|
+
stop: true,
|
|
870
|
+
x: 2,
|
|
871
|
+
},
|
|
872
|
+
}),
|
|
873
|
+
]);
|
|
874
|
+
});
|
|
875
|
+
(0, vitest_1.it)("call post", async () => {
|
|
876
|
+
const evo = new evento_js_1.Evento(reqRes);
|
|
877
|
+
const send = new TestSend();
|
|
878
|
+
evo.push({
|
|
879
|
+
hash: "regular-handler-0",
|
|
880
|
+
handle: async (ctx) => {
|
|
881
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
882
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
883
|
+
},
|
|
884
|
+
post: async (ctx) => {
|
|
885
|
+
send.fn("regular-handler-0-post", ctx);
|
|
886
|
+
return Promise.reject(new Error("test post-0 error"));
|
|
887
|
+
},
|
|
888
|
+
});
|
|
889
|
+
evo.push({
|
|
890
|
+
hash: "regular-handler-1",
|
|
891
|
+
handle: async (ctx) => {
|
|
892
|
+
send.fn("regular-handler-1-handle", ctx);
|
|
893
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
894
|
+
},
|
|
895
|
+
});
|
|
896
|
+
evo.push({
|
|
897
|
+
hash: "regular-handler-2",
|
|
898
|
+
handle: async (ctx) => {
|
|
899
|
+
send.fn("regular-handler-2-handle", ctx);
|
|
900
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
901
|
+
},
|
|
902
|
+
post: async (ctx) => {
|
|
903
|
+
send.fn("regular-handler-2-post", ctx);
|
|
904
|
+
return Promise.resolve();
|
|
905
|
+
},
|
|
906
|
+
});
|
|
907
|
+
const request = new Request("http://example.com", { method: "POST", body: JSON.stringify({ x: 2, stop: true }) });
|
|
908
|
+
await evo.trigger({
|
|
909
|
+
send,
|
|
910
|
+
request,
|
|
911
|
+
});
|
|
912
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual([
|
|
913
|
+
"start",
|
|
914
|
+
"regular-handler-0-handle",
|
|
915
|
+
"regular-handler-1-handle",
|
|
916
|
+
"regular-handler-2-handle",
|
|
917
|
+
"regular-handler-0-post",
|
|
918
|
+
"regular-handler-2-post",
|
|
919
|
+
"done",
|
|
920
|
+
]);
|
|
921
|
+
});
|
|
922
|
+
(0, vitest_1.it)("check stat", async () => {
|
|
923
|
+
const evo = new evento_js_1.Evento(reqRes);
|
|
924
|
+
const send = new TestSend();
|
|
925
|
+
evo.push({
|
|
926
|
+
hash: "regular-handler-0",
|
|
927
|
+
validate: async (ctx) => {
|
|
928
|
+
send.fn("regular-handler-0-validate", ctx);
|
|
929
|
+
return (0, promise_sleep_js_1.sleep)(10).then(() => result_js_1.Result.Ok(option_js_1.Option.Some({ x: 2, stop: true })));
|
|
930
|
+
},
|
|
931
|
+
handle: async (ctx) => {
|
|
932
|
+
send.fn("regular-handler-0-handle", ctx);
|
|
933
|
+
for (let i = 0; i < 3; i++) {
|
|
934
|
+
await ctx.send.send(ctx, {
|
|
935
|
+
response: "ok0",
|
|
936
|
+
req: ctx.validated,
|
|
937
|
+
cnt: i,
|
|
938
|
+
});
|
|
939
|
+
}
|
|
940
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
941
|
+
},
|
|
942
|
+
post: async (ctx) => {
|
|
943
|
+
send.fn("regular-handler-0-post", ctx);
|
|
944
|
+
return (0, promise_sleep_js_1.sleep)(10).then(() => {
|
|
945
|
+
return;
|
|
946
|
+
});
|
|
947
|
+
},
|
|
948
|
+
});
|
|
949
|
+
evo.push({
|
|
950
|
+
hash: "regular-handler-1",
|
|
951
|
+
handle: async (ctx) => {
|
|
952
|
+
send.fn("regular-handler-1-handle", ctx);
|
|
953
|
+
for (let i = 0; i < 3; i++) {
|
|
954
|
+
await ctx.send.send(ctx, {
|
|
955
|
+
response: "ok1",
|
|
956
|
+
req: ctx.validated,
|
|
957
|
+
cnt: i,
|
|
958
|
+
});
|
|
959
|
+
}
|
|
960
|
+
return Promise.resolve(result_js_1.Result.Ok(evento_js_1.EventoResult.Continue));
|
|
961
|
+
},
|
|
962
|
+
});
|
|
963
|
+
const request = new Request("http://example.com", { method: "POST", body: JSON.stringify({ x: 2, stop: true }) });
|
|
964
|
+
await evo.trigger({
|
|
965
|
+
send,
|
|
966
|
+
request,
|
|
967
|
+
});
|
|
968
|
+
(0, vitest_1.expect)(send.fn.mock.calls.map((i) => i[0])).toEqual([
|
|
969
|
+
"regular-handler-0-validate",
|
|
970
|
+
"start",
|
|
971
|
+
"regular-handler-0-handle",
|
|
972
|
+
"send",
|
|
973
|
+
"send",
|
|
974
|
+
"send",
|
|
975
|
+
"regular-handler-1-handle",
|
|
976
|
+
"send",
|
|
977
|
+
"send",
|
|
978
|
+
"send",
|
|
979
|
+
"regular-handler-0-post",
|
|
980
|
+
"done",
|
|
981
|
+
]);
|
|
982
|
+
const stats = send.fn.mock.calls[3][1].stats;
|
|
983
|
+
(0, vitest_1.expect)(stats.request.doneTime.getTime()).toBeGreaterThanOrEqual(stats.request.startTime.getTime());
|
|
984
|
+
(0, vitest_1.expect)(stats.encode.doneTime.getTime()).toBeGreaterThanOrEqual(stats.encode.startTime.getTime());
|
|
985
|
+
(0, vitest_1.expect)(stats.handlers.length).toBe(2);
|
|
986
|
+
for (const hdl of stats.handlers) {
|
|
987
|
+
(0, vitest_1.expect)(hdl.handled.doneTime.getTime()).toBeGreaterThanOrEqual(hdl.handled.startTime.getTime());
|
|
988
|
+
(0, vitest_1.expect)(hdl.handler.hash).toMatch(/regular-handler/);
|
|
989
|
+
(0, vitest_1.expect)(hdl.validated.doneTime.getTime()).toBeGreaterThanOrEqual(hdl.validated.startTime.getTime());
|
|
990
|
+
(0, vitest_1.expect)(hdl.total.doneTime.getTime()).toBeGreaterThanOrEqual(hdl.total.startTime.getTime());
|
|
991
|
+
}
|
|
992
|
+
(0, vitest_1.expect)(stats.send.doneTime.getTime()).toBeGreaterThanOrEqual(stats.send.startTime.getTime());
|
|
993
|
+
(0, vitest_1.expect)(stats.send.items.length).toBe(6);
|
|
994
|
+
let sendCount = 0;
|
|
995
|
+
for (const item of stats.send.items) {
|
|
996
|
+
(0, vitest_1.expect)(item.doneTime.getTime()).toBeGreaterThanOrEqual(item.startTime.getTime());
|
|
997
|
+
(0, vitest_1.expect)(item.item).toEqual(result_js_1.Result.Ok({
|
|
998
|
+
cnt: sendCount++ % 3,
|
|
999
|
+
encoderInfo: "test-encoder",
|
|
1000
|
+
req: {
|
|
1001
|
+
stop: true,
|
|
1002
|
+
x: 2,
|
|
1003
|
+
},
|
|
1004
|
+
response: `ok${sendCount > 3 ? 1 : 0}`,
|
|
1005
|
+
}));
|
|
1006
|
+
}
|
|
1007
|
+
});
|
|
521
1008
|
});
|
|
522
1009
|
//# sourceMappingURL=evento.test.js.map
|