@adviser/cement 0.5.12 → 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/src/evento.ts CHANGED
@@ -36,7 +36,7 @@ export interface EventoEnDecoder<REQ, RES> {
36
36
  * @typeParam REQ - The validated request type
37
37
  * @typeParam RES - The response type
38
38
  */
39
- export interface EventoSend<INREQ, REQ, RES> {
39
+ export interface EventoSendProvider<INREQ, REQ, RES> {
40
40
  /**
41
41
  * Optional hook called once before the first handler processes the event.
42
42
  *
@@ -65,14 +65,67 @@ export interface EventoSend<INREQ, REQ, RES> {
65
65
  done?(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>>;
66
66
  }
67
67
 
68
- // export interface ActiveTriggerCtx<INREQ, REQ, RES> {
69
- // request?: INREQ;
70
- // ctx: AppContext;
71
- // enRequest?: unknown;
72
- // validated?: REQ;
73
- // send: EventoSend<INREQ, REQ, RES>;
74
- // encoder: EventoEnDecoder<INREQ, RES>;
75
- // }
68
+ export interface ActionStat {
69
+ startTime: Date;
70
+ doneTime: Date;
71
+ }
72
+ export interface SendStatItem<T> extends ActionStat {
73
+ readonly item: Result<T>;
74
+ }
75
+ export interface SendStat extends ActionStat {
76
+ items: SendStatItem<unknown>[];
77
+ }
78
+
79
+ export type RequestStat = ActionStat;
80
+
81
+ export interface TriggerStats {
82
+ readonly request: RequestStat;
83
+ readonly encode: ActionStat;
84
+ readonly handlers: {
85
+ readonly handler: EventoHandler;
86
+ readonly total: ActionStat;
87
+ readonly validated: ActionStat;
88
+ readonly handled: ActionStat;
89
+ }[];
90
+ readonly send: SendStat;
91
+ }
92
+
93
+ export class EventoSend<INREQ, REQ, RES> {
94
+ readonly provider: EventoSendProvider<INREQ, REQ, RES>;
95
+
96
+ constructor(provider: EventoSendProvider<INREQ, REQ, RES>) {
97
+ this.provider = provider;
98
+ }
99
+
100
+ start(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>> {
101
+ trigger.stats.send.startTime = new Date();
102
+ if (this.provider.start) {
103
+ return this.provider.start(trigger);
104
+ }
105
+ return Promise.resolve(Result.Ok());
106
+ }
107
+
108
+ done(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>> {
109
+ trigger.stats.send.doneTime = new Date();
110
+ if (this.provider.done) {
111
+ return this.provider.done(trigger);
112
+ }
113
+ return Promise.resolve(Result.Ok());
114
+ }
115
+
116
+ async send<IS, OS>(trigger: HandleTriggerCtx<INREQ, REQ, RES>, data: IS): Promise<Result<SendStatItem<OS>>> {
117
+ const start = new Date();
118
+ const rSend = await this.provider.send<IS, OS>(trigger, data);
119
+ const done = new Date();
120
+ const item: SendStatItem<OS> = {
121
+ startTime: start,
122
+ doneTime: done,
123
+ item: rSend,
124
+ };
125
+ trigger.stats.send.items.push(item);
126
+ return Result.Ok(item);
127
+ }
128
+ }
76
129
 
77
130
  /**
78
131
  * Base interface for trigger context containing core dependencies.
@@ -81,8 +134,7 @@ export interface EventoSend<INREQ, REQ, RES> {
81
134
  * @typeParam REQ - The validated request type
82
135
  * @typeParam RES - The response type
83
136
  */
84
- export interface TriggerCtxBase<INREQ, REQ, RES> {
85
- send: EventoSend<INREQ, REQ, RES>;
137
+ export interface TriggerCtxBase<INREQ, RES> {
86
138
  ctx: AppContext;
87
139
  encoder: EventoEnDecoder<INREQ, RES>;
88
140
  }
@@ -90,14 +142,20 @@ export interface TriggerCtxBase<INREQ, REQ, RES> {
90
142
  /**
91
143
  * Readonly version of the base trigger context.
92
144
  */
93
- export type ReadonlyTriggerCtxBase<INREQ, REQ, RES> = Readonly<TriggerCtxBase<INREQ, REQ, RES>>;
145
+ export type ReadonlyTriggerCtxBase<INREQ, REQ, RES> = Readonly<TriggerCtxBase<INREQ, RES>> & {
146
+ readonly send: EventoSend<INREQ, REQ, RES>;
147
+ readonly stats: TriggerStats;
148
+ };
94
149
 
95
150
  /**
96
151
  * Parameters for creating a trigger context.
97
152
  * Requires send, but ctx and encoder are optional and will use defaults.
98
153
  */
99
- export type TriggerCtxBaseParams<INREQ, REQ, RES> = Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send"> &
100
- Partial<Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "ctx" | "encoder">>;
154
+ export type TriggerCtxBaseParams<INREQ, REQ, RES> = Partial<Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send">> &
155
+ Partial<Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "ctx" | "encoder">> & {
156
+ send: EventoSendProvider<INREQ, REQ, RES>;
157
+ stats?: TriggerStats;
158
+ };
101
159
 
102
160
  /**
103
161
  * Complete parameters for triggering an event, including optional request data.
@@ -113,6 +171,19 @@ export type TriggerCtx<INREQ, REQ, RES> =
113
171
  | (ReadonlyTriggerCtxBase<INREQ, REQ, RES> & { enRequest: unknown })
114
172
  | (ReadonlyTriggerCtxBase<INREQ, REQ, RES> & { enRequest: unknown; request: INREQ });
115
173
 
174
+ export type TriggerResult<INREQ, REQ, RES> = Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send"> & {
175
+ readonly send: EventoSend<INREQ, REQ, RES>;
176
+ readonly stats: TriggerStats;
177
+ } & Partial<MutableHandleTriggerCtx<INREQ, REQ>>;
178
+
179
+ export class TriggerResultError<INREQ, REQ, RES> extends Error {
180
+ readonly ctx: TriggerResult<INREQ, REQ, RES>;
181
+ constructor(message: string, ctx: TriggerResult<INREQ, REQ, RES>) {
182
+ super(message);
183
+ this.ctx = ctx;
184
+ }
185
+ }
186
+
116
187
  /**
117
188
  * Context provided to validation handlers.
118
189
  * Contains the encoded request data for validation.
@@ -131,7 +202,6 @@ export interface MutableHandleTriggerCtx<INREQ, REQ> {
131
202
  enRequest: unknown;
132
203
  validated: REQ;
133
204
  error?: Error;
134
- triggerResult?: string[];
135
205
  }
136
206
 
137
207
  /**
@@ -458,25 +528,45 @@ export class Evento {
458
528
  * @param ictx - The trigger context parameters
459
529
  * @returns A Result containing an array of handler hashes that processed the event
460
530
  */
461
- async trigger<INREQ, REQ, RES>(ictx: TriggerCtxParams<INREQ, REQ, RES>): Promise<Result<string[]>> {
462
- let stepCtx:
463
- | HandleTriggerCtx<INREQ, REQ, RES>
464
- | ValidateTriggerCtx<INREQ, REQ, RES>
465
- | (ReadonlyTriggerCtxBase<INREQ, REQ, RES> & Partial<MutableHandleTriggerCtx<INREQ, REQ>>)
466
- | object = {};
531
+
532
+ async trigger<INREQ, REQ, RES>(ictx: TriggerCtxParams<INREQ, REQ, RES>): Promise<Result<TriggerResult<INREQ, REQ, RES>>> {
533
+ let stepCtx: TriggerResult<INREQ, REQ, RES> | null = null;
467
534
  const toPost: EventoHandler[] = [];
468
535
  const startOnce = new ResolveOnce<Result<HandleTriggerCtx<INREQ, REQ, RES>>>();
469
536
  const res = await exception2Result(async (): Promise<Result<string[]>> => {
470
- const ctx: ReadonlyTriggerCtxBase<INREQ, REQ, RES> & Partial<MutableHandleTriggerCtx<INREQ, REQ>> = {
537
+ const nullDate = new Date(0);
538
+ const ctx: Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send"> & {
539
+ readonly send: EventoSend<INREQ, REQ, RES>;
540
+ readonly stats: TriggerStats;
541
+ } & Partial<MutableHandleTriggerCtx<INREQ, REQ>> = {
471
542
  ...ictx,
472
543
  encoder: ictx.encoder ?? (this.encoder as EventoEnDecoder<INREQ, RES>),
544
+ stats: ictx.stats ?? {
545
+ request: {
546
+ startTime: new Date(),
547
+ doneTime: nullDate,
548
+ },
549
+ encode: {
550
+ startTime: nullDate,
551
+ doneTime: nullDate,
552
+ },
553
+ handlers: [],
554
+ send: {
555
+ startTime: nullDate,
556
+ doneTime: nullDate,
557
+ items: [],
558
+ },
559
+ },
560
+ send: new EventoSend(ictx.send),
473
561
  ctx: ictx.ctx ?? new AppContext(),
474
562
  };
475
563
  stepCtx = ctx;
476
564
  const results: string[] = [];
477
565
  // this skips encoding if already encoded
478
566
  if (!ctx.enRequest) {
567
+ ctx.stats.encode.startTime = new Date();
479
568
  const rUnk = await this.encoder.encode(ctx.request as never);
569
+ ctx.stats.encode.doneTime = new Date();
480
570
  if (rUnk.isErr()) {
481
571
  return Result.Err(rUnk);
482
572
  }
@@ -499,8 +589,27 @@ export class Evento {
499
589
  if (hdl.post) {
500
590
  toPost.push(hdl);
501
591
  }
592
+ const stat = {
593
+ handler: hdl,
594
+ total: {
595
+ startTime: new Date(),
596
+ doneTime: nullDate,
597
+ },
598
+ validated: {
599
+ startTime: nullDate,
600
+ doneTime: nullDate,
601
+ },
602
+ handled: {
603
+ startTime: nullDate,
604
+ doneTime: nullDate,
605
+ },
606
+ };
607
+ ctx.stats.handlers.push(stat);
608
+ stat.validated.startTime = new Date();
502
609
  const rData = await Promise.resolve(hdl.validate ? hdl.validate(validateCtx) : Result.Ok(Option.Some(ctx.enRequest)));
610
+ stat.validated.doneTime = new Date();
503
611
  if (rData.isErr()) {
612
+ stat.total.doneTime = new Date();
504
613
  return Result.Err(rData);
505
614
  }
506
615
  const data = rData.Ok();
@@ -513,22 +622,24 @@ export class Evento {
513
622
  request: ctx.request as INREQ,
514
623
  enRequest: ctx.enRequest,
515
624
  }); // satisfies HandleTriggerCtx<INREQ, REQ, RES>;
516
- if (ctx.send.start) {
517
- const rStart = await startOnce.once(() =>
518
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
519
- ctx.send.start!(hdlCtx).then((rv): Result<HandleTriggerCtx<INREQ, REQ, RES>> => {
520
- if (rv.isErr()) {
521
- return Result.Err(rv);
522
- }
523
- return Result.Ok(hdlCtx);
524
- }),
525
- );
526
- if (rStart.isErr()) {
527
- return Result.Err(rStart);
528
- }
625
+ const rStart = await startOnce.once(() =>
626
+ ctx.send.start(hdlCtx).then((rv): Result<HandleTriggerCtx<INREQ, REQ, RES>> => {
627
+ if (rv.isErr()) {
628
+ return Result.Err(rv);
629
+ }
630
+ return Result.Ok(hdlCtx);
631
+ }),
632
+ );
633
+ if (rStart.isErr()) {
634
+ stat.total.doneTime = new Date();
635
+ return Result.Err(rStart);
529
636
  }
637
+ stat.handled.startTime = new Date();
530
638
  const rHandle = await hdl.handle(hdlCtx);
639
+ stat.handled.doneTime = new Date();
640
+ stat.total.doneTime = new Date();
531
641
  if (rHandle.isErr()) {
642
+ stat.total.doneTime = new Date();
532
643
  return Result.Err(rHandle);
533
644
  }
534
645
  results.push(hdl.hash);
@@ -536,13 +647,12 @@ export class Evento {
536
647
  break;
537
648
  }
538
649
  }
539
-
540
650
  return Result.Ok(results);
541
651
  });
652
+ if (!stepCtx) {
653
+ throw new Error("Internal error: stepCtx is null");
654
+ }
542
655
  for (const hdl of toPost) {
543
- if (res.isOk()) {
544
- (stepCtx as MutableHandleTriggerCtx<INREQ, REQ>).triggerResult = res.Ok();
545
- }
546
656
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
547
657
  await exception2Result(() => hdl.post!(stepCtx as HandleTriggerCtx<INREQ, REQ, RES>));
548
658
  }
@@ -552,12 +662,11 @@ export class Evento {
552
662
  await exception2Result(() => hdl.handle(stepCtx as HandleTriggerCtx<INREQ, REQ, RES>));
553
663
  }
554
664
  }
555
- const send = stepCtx && "send" in stepCtx ? (stepCtx.send as HandleTriggerCtx<INREQ, REQ, RES>["send"]) : undefined;
556
- if (send && send.done && startOnce.state === "processed" && startOnce.value) {
557
- if (startOnce.value.isOk()) {
558
- await send.done(startOnce.value.Ok());
559
- }
665
+ if (startOnce.value?.isOk()) {
666
+ const ctx = startOnce.value.Ok();
667
+ ctx.stats.request.doneTime = new Date();
668
+ await startOnce.value.Ok().send.done(ctx);
560
669
  }
561
- return res;
670
+ return Result.Ok(stepCtx);
562
671
  }
563
672
  }
@@ -5,18 +5,52 @@ export interface EventoEnDecoder<REQ, RES> {
5
5
  encode(args: REQ): Promise<Result<unknown>>;
6
6
  decode(data: unknown): Promise<Result<RES>>;
7
7
  }
8
- export interface EventoSend<INREQ, REQ, RES> {
8
+ export interface EventoSendProvider<INREQ, REQ, RES> {
9
9
  start?(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>>;
10
10
  send<IS, OS>(trigger: HandleTriggerCtx<INREQ, REQ, RES>, data: IS): Promise<Result<OS>>;
11
11
  done?(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>>;
12
12
  }
13
- export interface TriggerCtxBase<INREQ, REQ, RES> {
14
- send: EventoSend<INREQ, REQ, RES>;
13
+ export interface ActionStat {
14
+ startTime: Date;
15
+ doneTime: Date;
16
+ }
17
+ export interface SendStatItem<T> extends ActionStat {
18
+ readonly item: Result<T>;
19
+ }
20
+ export interface SendStat extends ActionStat {
21
+ items: SendStatItem<unknown>[];
22
+ }
23
+ export type RequestStat = ActionStat;
24
+ export interface TriggerStats {
25
+ readonly request: RequestStat;
26
+ readonly encode: ActionStat;
27
+ readonly handlers: {
28
+ readonly handler: EventoHandler;
29
+ readonly total: ActionStat;
30
+ readonly validated: ActionStat;
31
+ readonly handled: ActionStat;
32
+ }[];
33
+ readonly send: SendStat;
34
+ }
35
+ export declare class EventoSend<INREQ, REQ, RES> {
36
+ readonly provider: EventoSendProvider<INREQ, REQ, RES>;
37
+ constructor(provider: EventoSendProvider<INREQ, REQ, RES>);
38
+ start(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>>;
39
+ done(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>>;
40
+ send<IS, OS>(trigger: HandleTriggerCtx<INREQ, REQ, RES>, data: IS): Promise<Result<SendStatItem<OS>>>;
41
+ }
42
+ export interface TriggerCtxBase<INREQ, RES> {
15
43
  ctx: AppContext;
16
44
  encoder: EventoEnDecoder<INREQ, RES>;
17
45
  }
18
- export type ReadonlyTriggerCtxBase<INREQ, REQ, RES> = Readonly<TriggerCtxBase<INREQ, REQ, RES>>;
19
- export type TriggerCtxBaseParams<INREQ, REQ, RES> = Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send"> & Partial<Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "ctx" | "encoder">>;
46
+ export type ReadonlyTriggerCtxBase<INREQ, REQ, RES> = Readonly<TriggerCtxBase<INREQ, RES>> & {
47
+ readonly send: EventoSend<INREQ, REQ, RES>;
48
+ readonly stats: TriggerStats;
49
+ };
50
+ export type TriggerCtxBaseParams<INREQ, REQ, RES> = Partial<Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send">> & Partial<Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "ctx" | "encoder">> & {
51
+ send: EventoSendProvider<INREQ, REQ, RES>;
52
+ stats?: TriggerStats;
53
+ };
20
54
  export type TriggerCtxParams<INREQ, REQ, RES> = TriggerCtxBaseParams<INREQ, REQ, RES> & {
21
55
  request?: INREQ;
22
56
  enRequest?: unknown;
@@ -29,6 +63,14 @@ export type TriggerCtx<INREQ, REQ, RES> = (ReadonlyTriggerCtxBase<INREQ, REQ, RE
29
63
  enRequest: unknown;
30
64
  request: INREQ;
31
65
  });
66
+ export type TriggerResult<INREQ, REQ, RES> = Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send"> & {
67
+ readonly send: EventoSend<INREQ, REQ, RES>;
68
+ readonly stats: TriggerStats;
69
+ } & Partial<MutableHandleTriggerCtx<INREQ, REQ>>;
70
+ export declare class TriggerResultError<INREQ, REQ, RES> extends Error {
71
+ readonly ctx: TriggerResult<INREQ, REQ, RES>;
72
+ constructor(message: string, ctx: TriggerResult<INREQ, REQ, RES>);
73
+ }
32
74
  export interface ValidateTriggerCtx<INREQ, REQ, RES> extends ReadonlyTriggerCtxBase<INREQ, REQ, RES> {
33
75
  readonly request?: INREQ;
34
76
  readonly enRequest: unknown;
@@ -38,7 +80,6 @@ export interface MutableHandleTriggerCtx<INREQ, REQ> {
38
80
  enRequest: unknown;
39
81
  validated: REQ;
40
82
  error?: Error;
41
- triggerResult?: string[];
42
83
  }
43
84
  export type HandleTriggerCtx<INREQ, REQ, RES> = Readonly<MutableHandleTriggerCtx<INREQ, REQ>> & ReadonlyTriggerCtxBase<INREQ, REQ, RES>;
44
85
  export declare const EventoResult: {
@@ -88,6 +129,6 @@ export declare class Evento {
88
129
  push(...hdls: (EventoHandler | EventoHandler[])[]): (() => void)[];
89
130
  unshift(...hdls: (EventoHandler | EventoHandler[])[]): (() => void)[];
90
131
  register(...hdls: EventoHandlerOp[]): (() => void)[];
91
- trigger<INREQ, REQ, RES>(ictx: TriggerCtxParams<INREQ, REQ, RES>): Promise<Result<string[]>>;
132
+ trigger<INREQ, REQ, RES>(ictx: TriggerCtxParams<INREQ, REQ, RES>): Promise<Result<TriggerResult<INREQ, REQ, RES>>>;
92
133
  }
93
134
  //# sourceMappingURL=evento.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evento.d.ts","sourceRoot":"","sources":["../../../src/evento.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evento.d.ts","sourceRoot":"","sources":["../../../src/evento.ts"],"names":[],"mappings":"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"}
package/ts/cjs/evento.js CHANGED
@@ -1,10 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Evento = exports.EventoType = exports.EventoOp = exports.EventoResult = void 0;
3
+ exports.Evento = exports.EventoType = exports.EventoOp = exports.EventoResult = exports.TriggerResultError = exports.EventoSend = void 0;
4
4
  const app_context_js_1 = require("./app-context.js");
5
5
  const option_js_1 = require("./option.js");
6
6
  const resolve_once_js_1 = require("./resolve-once.js");
7
7
  const result_js_1 = require("./result.js");
8
+ class EventoSend {
9
+ provider;
10
+ constructor(provider) {
11
+ this.provider = provider;
12
+ }
13
+ start(trigger) {
14
+ trigger.stats.send.startTime = new Date();
15
+ if (this.provider.start) {
16
+ return this.provider.start(trigger);
17
+ }
18
+ return Promise.resolve(result_js_1.Result.Ok());
19
+ }
20
+ done(trigger) {
21
+ trigger.stats.send.doneTime = new Date();
22
+ if (this.provider.done) {
23
+ return this.provider.done(trigger);
24
+ }
25
+ return Promise.resolve(result_js_1.Result.Ok());
26
+ }
27
+ async send(trigger, data) {
28
+ const start = new Date();
29
+ const rSend = await this.provider.send(trigger, data);
30
+ const done = new Date();
31
+ const item = {
32
+ startTime: start,
33
+ doneTime: done,
34
+ item: rSend,
35
+ };
36
+ trigger.stats.send.items.push(item);
37
+ return result_js_1.Result.Ok(item);
38
+ }
39
+ }
40
+ exports.EventoSend = EventoSend;
41
+ class TriggerResultError extends Error {
42
+ ctx;
43
+ constructor(message, ctx) {
44
+ super(message);
45
+ this.ctx = ctx;
46
+ }
47
+ }
48
+ exports.TriggerResultError = TriggerResultError;
8
49
  exports.EventoResult = {
9
50
  Continue: "continue",
10
51
  Stop: "stop",
@@ -96,19 +137,39 @@ class Evento {
96
137
  });
97
138
  }
98
139
  async trigger(ictx) {
99
- let stepCtx = {};
140
+ let stepCtx = null;
100
141
  const toPost = [];
101
142
  const startOnce = new resolve_once_js_1.ResolveOnce();
102
143
  const res = await (0, result_js_1.exception2Result)(async () => {
144
+ const nullDate = new Date(0);
103
145
  const ctx = {
104
146
  ...ictx,
105
147
  encoder: ictx.encoder ?? this.encoder,
148
+ stats: ictx.stats ?? {
149
+ request: {
150
+ startTime: new Date(),
151
+ doneTime: nullDate,
152
+ },
153
+ encode: {
154
+ startTime: nullDate,
155
+ doneTime: nullDate,
156
+ },
157
+ handlers: [],
158
+ send: {
159
+ startTime: nullDate,
160
+ doneTime: nullDate,
161
+ items: [],
162
+ },
163
+ },
164
+ send: new EventoSend(ictx.send),
106
165
  ctx: ictx.ctx ?? new app_context_js_1.AppContext(),
107
166
  };
108
167
  stepCtx = ctx;
109
168
  const results = [];
110
169
  if (!ctx.enRequest) {
170
+ ctx.stats.encode.startTime = new Date();
111
171
  const rUnk = await this.encoder.encode(ctx.request);
172
+ ctx.stats.encode.doneTime = new Date();
112
173
  if (rUnk.isErr()) {
113
174
  return result_js_1.Result.Err(rUnk);
114
175
  }
@@ -130,8 +191,27 @@ class Evento {
130
191
  if (hdl.post) {
131
192
  toPost.push(hdl);
132
193
  }
194
+ const stat = {
195
+ handler: hdl,
196
+ total: {
197
+ startTime: new Date(),
198
+ doneTime: nullDate,
199
+ },
200
+ validated: {
201
+ startTime: nullDate,
202
+ doneTime: nullDate,
203
+ },
204
+ handled: {
205
+ startTime: nullDate,
206
+ doneTime: nullDate,
207
+ },
208
+ };
209
+ ctx.stats.handlers.push(stat);
210
+ stat.validated.startTime = new Date();
133
211
  const rData = await Promise.resolve(hdl.validate ? hdl.validate(validateCtx) : result_js_1.Result.Ok(option_js_1.Option.Some(ctx.enRequest)));
212
+ stat.validated.doneTime = new Date();
134
213
  if (rData.isErr()) {
214
+ stat.total.doneTime = new Date();
135
215
  return result_js_1.Result.Err(rData);
136
216
  }
137
217
  const data = rData.Ok();
@@ -144,19 +224,22 @@ class Evento {
144
224
  request: ctx.request,
145
225
  enRequest: ctx.enRequest,
146
226
  });
147
- if (ctx.send.start) {
148
- const rStart = await startOnce.once(() => ctx.send.start(hdlCtx).then((rv) => {
149
- if (rv.isErr()) {
150
- return result_js_1.Result.Err(rv);
151
- }
152
- return result_js_1.Result.Ok(hdlCtx);
153
- }));
154
- if (rStart.isErr()) {
155
- return result_js_1.Result.Err(rStart);
227
+ const rStart = await startOnce.once(() => ctx.send.start(hdlCtx).then((rv) => {
228
+ if (rv.isErr()) {
229
+ return result_js_1.Result.Err(rv);
156
230
  }
231
+ return result_js_1.Result.Ok(hdlCtx);
232
+ }));
233
+ if (rStart.isErr()) {
234
+ stat.total.doneTime = new Date();
235
+ return result_js_1.Result.Err(rStart);
157
236
  }
237
+ stat.handled.startTime = new Date();
158
238
  const rHandle = await hdl.handle(hdlCtx);
239
+ stat.handled.doneTime = new Date();
240
+ stat.total.doneTime = new Date();
159
241
  if (rHandle.isErr()) {
242
+ stat.total.doneTime = new Date();
160
243
  return result_js_1.Result.Err(rHandle);
161
244
  }
162
245
  results.push(hdl.hash);
@@ -166,10 +249,10 @@ class Evento {
166
249
  }
167
250
  return result_js_1.Result.Ok(results);
168
251
  });
252
+ if (!stepCtx) {
253
+ throw new Error("Internal error: stepCtx is null");
254
+ }
169
255
  for (const hdl of toPost) {
170
- if (res.isOk()) {
171
- stepCtx.triggerResult = res.Ok();
172
- }
173
256
  await (0, result_js_1.exception2Result)(() => hdl.post(stepCtx));
174
257
  }
175
258
  if (res.isErr()) {
@@ -178,13 +261,12 @@ class Evento {
178
261
  await (0, result_js_1.exception2Result)(() => hdl.handle(stepCtx));
179
262
  }
180
263
  }
181
- const send = stepCtx && "send" in stepCtx ? stepCtx.send : undefined;
182
- if (send && send.done && startOnce.state === "processed" && startOnce.value) {
183
- if (startOnce.value.isOk()) {
184
- await send.done(startOnce.value.Ok());
185
- }
264
+ if (startOnce.value?.isOk()) {
265
+ const ctx = startOnce.value.Ok();
266
+ ctx.stats.request.doneTime = new Date();
267
+ await startOnce.value.Ok().send.done(ctx);
186
268
  }
187
- return res;
269
+ return result_js_1.Result.Ok(stepCtx);
188
270
  }
189
271
  }
190
272
  exports.Evento = Evento;
@@ -1 +1 @@
1
- {"version":3,"file":"evento.js","sourceRoot":"","sources":["../../../src/evento.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAC9C,2CAAqC;AACrC,uDAAgD;AAChD,2CAAuD;AA+I1C,QAAA,YAAY,GAAG;IAE1B,QAAQ,EAAE,UAAU;IAEpB,IAAI,EAAE,MAAM;CACJ,CAAC;AAOX,IAAY,QAOX;AAPD,WAAY,QAAQ;IAElB,yBAAa,CAAA;IAEb,+BAAmB,CAAA;IAEnB,iCAAqB,CAAA;AAAC,CACxB,EAPY,QAAQ,aAAR,QAAQ,GAAR,QAAQ,QAOnB;AAKD,IAAY,UAOX;AAPD,WAAY,UAAU;IAEpB,mCAAqB,CAAA;IAErB,iCAAmB,CAAA;IAEnB,6BAAe,CAAA;AAAC,CAClB,EAPY,UAAU,aAAV,UAAU,GAAV,UAAU,QAOrB;AAyED,SAAS,SAAS,CAAC,IAAmB,EAAE,OAAwB,EAAc;IAC5E,OAAO,GAAS,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;IAAA,CACF,CAAC;AAAA,CACH;AA4ED;IACU,OAAO,GAAoB,EAAE,CAAC;IAC9B,SAAS,GAAoB,EAAE,CAAC;IAChC,MAAM,GAAoB,EAAE,CAAC;IAE7B,OAAO,CAAoC;IAOnD,YAAY,OAA0C,EAAE;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAAA,CACxB;IAOD,QAAQ,GAGN;QACA,OAAO;YACL,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAC/B,CAAC;IAAA,CACH;IAQD,IAAI,CAAC,GAAG,IAAyC,EAAkB;QACjE,OAAO,IAAI,CAAC,QAAQ,CAClB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO;gBACxC,EAAE,EAAE,QAAQ,CAAC,IAAa;aAC3B,CAAC;QAAA,CACH,CAAC,CACH,CAAC;IAAA,CACH;IAQD,OAAO,CAAC,GAAG,IAAyC,EAAkB;QACpE,OAAO,IAAI,CAAC,QAAQ,CAClB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO;gBACxC,EAAE,EAAE,QAAQ,CAAC,OAAgB;aAC9B,CAAC;QAAA,CACH,CAAC,CACH,CAAC;IAAA,CACH;IAWD,QAAQ,CAAC,GAAG,IAAuB,EAAkB;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,IAAI,QAAyB,CAAC;YAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,UAAU,CAAC,QAAQ;oBACtB,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC1B,MAAM;gBACR,KAAK,UAAU,CAAC,KAAK;oBACnB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;oBACvB,MAAM;gBACR,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB;oBACE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;oBACxB,MAAM;YACV,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;YACD,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChB,KAAK,QAAQ,CAAC,IAAI;oBAChB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC5B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC3C,KAAK,QAAQ,CAAC,OAAO;oBACnB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC3C,KAAK,QAAQ,CAAC,QAAQ;oBACpB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3C,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC3C;oBACE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACxC,CAAC;QAAA,CACF,CAAC,CAAC;IAAA,CACJ;IAkBD,KAAK,CAAC,OAAO,CAAkB,IAAuC,EAA6B;QACjG,IAAI,OAAO,GAIE,EAAE,CAAC;QAChB,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,6BAAW,EAA6C,CAAC;QAC/E,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAgB,EAAC,KAAK,IAA+B,EAAE,CAAC;YACxE,MAAM,GAAG,GAA2F;gBAClG,GAAG,IAAI;gBACP,OAAO,EAAE,IAAI,CAAC,OAAO,IAAK,IAAI,CAAC,OAAuC;gBACtE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,2BAAU,EAAE;aAClC,CAAC;YACF,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAgB,CAAC,CAAC;gBAC7D,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;oBACjB,OAAO,kBAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;YACtB,CAAC;YACD,MAAM,WAAW,GAAG,CAAC,OAAO,GAAG;gBAC7B,GAAG,GAAG;gBACN,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAEvB,MAAM;oBACR,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAM,CAAC,EAAE,CAAC,kBAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtH,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;oBAClB,OAAO,kBAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,CAAC,OAAO,GAAG;oBACxB,GAAG,GAAG;oBACN,SAAS,EAAE,IAAI,CAAC,MAAM,EAAS;oBAC/B,OAAO,EAAE,GAAG,CAAC,OAAgB;oBAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAEvC,GAAG,CAAC,IAAI,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAA6C,EAAE,CAAC;wBAC9E,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;4BACf,OAAO,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACxB,CAAC;wBACD,OAAO,kBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBAAA,CAC1B,CAAC,CACH,CAAC;oBACF,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;wBACnB,OAAO,kBAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;oBACpB,OAAO,kBAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,OAAO,CAAC,EAAE,EAAE,KAAK,QAAA,YAAY,CAAC,IAAI,EAAE,CAAC;oBACvC,MAAM;gBACR,CAAC;YACH,CAAC;YAED,OAAO,kBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAAA,CAC3B,CAAC,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACd,OAA+C,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;YAC5E,CAAC;YAED,MAAM,IAAA,4BAAgB,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAK,CAAC,OAA4C,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;YACf,OAA+C,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACnE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAA,4BAAgB,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAA4C,CAAC,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,IAAI,MAAM,IAAI,OAAO,CAAC,CAAC,CAAE,OAAO,CAAC,IAAkD,CAAC,CAAC,CAAC,SAAS,CAAC;QACpH,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YAC5E,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IAAA,CACZ;CACF"}
1
+ {"version":3,"file":"evento.js","sourceRoot":"","sources":["../../../src/evento.ts"],"names":[],"mappings":"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"}