@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.
@@ -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 v = rv.Ok();
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 v = rv.Ok();
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 v = rv.Ok();
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